Migrate to Snowfall (#1)
Reviewed-on: #1 Co-authored-by: Evan Reichard <evan@reichard.io> Co-committed-by: Evan Reichard <evan@reichard.io>
This commit was merged in pull request #1.
This commit is contained in:
3
modules/home/programs/terminal/nvim/config/lua/.luarc.json
Executable file
3
modules/home/programs/terminal/nvim/config/lua/.luarc.json
Executable file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"diagnostics.globals": ["vim"]
|
||||
}
|
||||
8
modules/home/programs/terminal/nvim/config/lua/aerial-config.lua
Executable file
8
modules/home/programs/terminal/nvim/config/lua/aerial-config.lua
Executable file
@@ -0,0 +1,8 @@
|
||||
require('aerial').setup({
|
||||
on_attach = function(bufnr)
|
||||
vim.keymap.set('n', '{', '<cmd>AerialPrev<CR>', {buffer = bufnr})
|
||||
vim.keymap.set('n', '}', '<cmd>AerialNext<CR>', {buffer = bufnr})
|
||||
end
|
||||
})
|
||||
|
||||
vim.keymap.set('n', '<leader>a', '<cmd>AerialToggle!<CR>')
|
||||
1
modules/home/programs/terminal/nvim/config/lua/autopairs-config.lua
Executable file
1
modules/home/programs/terminal/nvim/config/lua/autopairs-config.lua
Executable file
@@ -0,0 +1 @@
|
||||
require("nvim-autopairs").setup()
|
||||
69
modules/home/programs/terminal/nvim/config/lua/base.lua
Executable file
69
modules/home/programs/terminal/nvim/config/lua/base.lua
Executable file
@@ -0,0 +1,69 @@
|
||||
-- Set Theme
|
||||
-- vim.g.nord_borders = true
|
||||
-- vim.g.nord_contrast = true
|
||||
-- vim.cmd('colorscheme nord')
|
||||
-- vim.cmd('colorscheme melange')
|
||||
vim.cmd("colorscheme catppuccin-mocha")
|
||||
|
||||
-- Set Leader
|
||||
vim.keymap.set("n", "<Space>", "<Nop>", { silent = true })
|
||||
vim.g.mapleader = " "
|
||||
|
||||
-- Set Timeout
|
||||
vim.opt.timeoutlen = 250
|
||||
|
||||
-- Disable NetRW
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
|
||||
-- Set Term Colors
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
-- Synchronize with system clipboard
|
||||
vim.opt.clipboard = "unnamed"
|
||||
|
||||
-- Always show the signcolumn
|
||||
vim.opt.signcolumn = "yes"
|
||||
|
||||
-- Set nowrap, line numbers, hightlight search
|
||||
vim.opt.wrap = false
|
||||
vim.opt.nu = true
|
||||
vim.opt.hlsearch = true
|
||||
vim.opt.shiftwidth = 2
|
||||
|
||||
-- Set fold settings
|
||||
vim.opt.foldmethod = "indent"
|
||||
vim.opt.foldnestmax = 10
|
||||
vim.opt.foldlevel = 2
|
||||
|
||||
-- Diagnostics Mappings
|
||||
local diagnostics_active = true
|
||||
local toggle_diagnostics = function()
|
||||
diagnostics_active = not diagnostics_active
|
||||
if diagnostics_active then
|
||||
vim.diagnostic.enable()
|
||||
else
|
||||
vim.diagnostic.disable()
|
||||
end
|
||||
end
|
||||
|
||||
local diagnostics_loclist_active = false
|
||||
local toggle_diagnostics_loclist = function()
|
||||
diagnostics_loclist_active = not diagnostics_loclist_active
|
||||
if diagnostics_loclist_active then
|
||||
vim.diagnostic.setloclist()
|
||||
else
|
||||
vim.cmd("lclose")
|
||||
end
|
||||
end
|
||||
|
||||
local opts = { noremap = true, silent = true }
|
||||
vim.keymap.set("n", "<leader>qt", toggle_diagnostics, opts)
|
||||
vim.keymap.set("n", "<leader>qN", function()
|
||||
vim.diagnostic.goto_prev({ float = false })
|
||||
end, opts)
|
||||
vim.keymap.set("n", "<leader>qn", function()
|
||||
vim.diagnostic.goto_next({ float = false })
|
||||
end, opts)
|
||||
vim.keymap.set("n", "<leader>qq", toggle_diagnostics_loclist, opts)
|
||||
vim.keymap.set("n", "<leader>qe", vim.diagnostic.open_float, opts)
|
||||
71
modules/home/programs/terminal/nvim/config/lua/cmp-config.lua
Executable file
71
modules/home/programs/terminal/nvim/config/lua/cmp-config.lua
Executable file
@@ -0,0 +1,71 @@
|
||||
local cmp = require('cmp')
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
-- Check Tab Completion
|
||||
local has_words_before = function()
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and
|
||||
vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col,
|
||||
col)
|
||||
:match("%s") == nil
|
||||
end
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args) require'luasnip'.lsp_expand(args.body) end
|
||||
},
|
||||
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
|
||||
-- Tab Completion
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, {"i", "s"}),
|
||||
|
||||
-- Reverse Tab Completion
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, {"i", "s"}),
|
||||
|
||||
-- Misc Mappings
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
['<CR>'] = cmp.mapping.confirm({select = true})
|
||||
|
||||
}),
|
||||
|
||||
-- Default Sources
|
||||
sources = cmp.config.sources({
|
||||
{name = 'nvim_lsp'}, {name = 'luasnip'}, {name = 'path'},
|
||||
{name = 'buffer'}
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
-- Completion - `/` and `?`
|
||||
cmp.setup.cmdline({'/', '?'}, {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {{name = 'buffer'}}
|
||||
})
|
||||
|
||||
-- Completion = `:`
|
||||
cmp.setup.cmdline(':', {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({{name = 'path'}, {name = 'cmdline'}})
|
||||
})
|
||||
|
||||
-- Autopairs
|
||||
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
|
||||
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())
|
||||
1
modules/home/programs/terminal/nvim/config/lua/comment-config.lua
Executable file
1
modules/home/programs/terminal/nvim/config/lua/comment-config.lua
Executable file
@@ -0,0 +1 @@
|
||||
require('Comment').setup()
|
||||
70
modules/home/programs/terminal/nvim/config/lua/dap-config.lua
Executable file
70
modules/home/programs/terminal/nvim/config/lua/dap-config.lua
Executable file
@@ -0,0 +1,70 @@
|
||||
local dap = require("dap")
|
||||
local dapui = require("dapui")
|
||||
local dapgo = require("dap-go")
|
||||
|
||||
dapui.setup({
|
||||
controls = {
|
||||
element = "repl",
|
||||
enabled = true,
|
||||
icons = {
|
||||
disconnect = "",
|
||||
pause = "",
|
||||
play = "",
|
||||
run_last = "",
|
||||
step_back = "",
|
||||
step_into = "",
|
||||
step_out = "",
|
||||
step_over = "",
|
||||
terminate = ""
|
||||
}
|
||||
},
|
||||
element_mappings = {},
|
||||
expand_lines = false,
|
||||
floating = {border = "single", mappings = {close = {"q", "<Esc>"}}},
|
||||
force_buffers = true,
|
||||
icons = {collapsed = "", current_frame = "", expanded = ""},
|
||||
layouts = {
|
||||
{
|
||||
elements = {{id = "repl", size = 0.5}, {id = "scopes", size = 0.5}},
|
||||
position = "bottom",
|
||||
size = 10
|
||||
}, {
|
||||
elements = {
|
||||
{id = "breakpoints", size = 0.5}, {id = "stacks", size = 0.5}
|
||||
},
|
||||
position = "left",
|
||||
size = 40
|
||||
}
|
||||
},
|
||||
mappings = {
|
||||
edit = "e",
|
||||
expand = {"<CR>", "<2-LeftMouse>"},
|
||||
open = "o",
|
||||
remove = "d",
|
||||
repl = "r",
|
||||
toggle = "t"
|
||||
},
|
||||
render = {indent = 1, max_value_lines = 100}
|
||||
})
|
||||
dapgo.setup()
|
||||
|
||||
-- Auto Open UI
|
||||
dap.listeners.before.attach.dapui_config = function() dapui.open() end
|
||||
dap.listeners.before.launch.dapui_config = function() dapui.open() end
|
||||
|
||||
-- Continue Hotkey ("c")
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "dap-repl",
|
||||
callback = function()
|
||||
vim.api.nvim_buf_set_keymap(0, 'n', 'c',
|
||||
"<cmd>lua require'dap'.continue()<CR>",
|
||||
{noremap = true, silent = true})
|
||||
end
|
||||
})
|
||||
|
||||
-- Leader Keys
|
||||
local opts = {noremap = true, silent = true}
|
||||
vim.keymap.set('n', '<leader>db', dap.toggle_breakpoint, opts)
|
||||
vim.keymap.set('n', '<leader>du', dapui.toggle, opts)
|
||||
vim.keymap.set('n', '<leader>dc', dap.continue, opts)
|
||||
vim.keymap.set('n', '<leader>dt', dapgo.debug_test, opts)
|
||||
6
modules/home/programs/terminal/nvim/config/lua/diffview-config.lua
Executable file
6
modules/home/programs/terminal/nvim/config/lua/diffview-config.lua
Executable file
@@ -0,0 +1,6 @@
|
||||
vim.keymap.set('n', '<leader>go', '<cmd>DiffviewOpen<CR>')
|
||||
vim.keymap.set('n', '<leader>gO', '<cmd>DiffviewOpen origin/main...HEAD<CR>')
|
||||
vim.keymap.set('n', '<leader>gh', '<cmd>DiffviewFileHistory<CR>')
|
||||
vim.keymap.set('n', '<leader>gH',
|
||||
'<cmd>DiffviewFileHistory --range=origin..HEAD<CR>')
|
||||
vim.keymap.set('n', '<leader>gc', '<cmd>DiffviewClose<CR>')
|
||||
41
modules/home/programs/terminal/nvim/config/lua/git-ref.lua
Executable file
41
modules/home/programs/terminal/nvim/config/lua/git-ref.lua
Executable file
@@ -0,0 +1,41 @@
|
||||
function get_git_info()
|
||||
local abs_path = vim.fn.expand("%:p")
|
||||
local git_root = vim.fn.systemlist(
|
||||
"git -C " .. vim.fn.escape(vim.fn.fnamemodify(abs_path, ":h"), " ") .. " rev-parse --show-toplevel"
|
||||
)[1]
|
||||
|
||||
if vim.v.shell_error ~= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local git_repo = vim.fn.system("git remote get-url origin"):match("([^/:]+/[^/.]+)%.?[^/]*$"):gsub("\n", "")
|
||||
local git_branch = vim.fn.system("git rev-parse --abbrev-ref HEAD"):gsub("\n", "")
|
||||
|
||||
return {
|
||||
file = vim.fn.fnamemodify(abs_path, ":s?" .. git_root .. "/??"),
|
||||
branch = git_branch,
|
||||
repo = git_repo,
|
||||
}
|
||||
end
|
||||
|
||||
vim.keymap.set("v", "<Leader>gy", function()
|
||||
local git_info = get_git_info()
|
||||
if git_info == nil then
|
||||
vim.notify("Failed to get git info", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
local start_line = vim.fn.line("v")
|
||||
local end_line = vim.fn.line(".")
|
||||
|
||||
local message = string.format(
|
||||
"https://github.com/%s/blob/%s/%s#L%d-L%d",
|
||||
git_info.repo,
|
||||
git_info.branch,
|
||||
git_info.file,
|
||||
start_line,
|
||||
end_line
|
||||
)
|
||||
vim.fn.setreg("+", message)
|
||||
vim.notify("Copied:\n\t" .. message, vim.log.levels.INFO)
|
||||
end, { noremap = true, silent = true, desc = "Copy GitHub Link" })
|
||||
16
modules/home/programs/terminal/nvim/config/lua/git-signs.lua
Executable file
16
modules/home/programs/terminal/nvim/config/lua/git-signs.lua
Executable file
@@ -0,0 +1,16 @@
|
||||
require('gitsigns').setup {
|
||||
on_attach = function(bufnr)
|
||||
local gitsigns = require('gitsigns')
|
||||
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
map('n', '<leader>gb', gitsigns.toggle_current_line_blame)
|
||||
map('n', '<leader>gB', function()
|
||||
gitsigns.blame_line {full = true}
|
||||
end)
|
||||
end
|
||||
}
|
||||
23
modules/home/programs/terminal/nvim/config/lua/init.lua
Executable file
23
modules/home/programs/terminal/nvim/config/lua/init.lua
Executable file
@@ -0,0 +1,23 @@
|
||||
require("base")
|
||||
require("aerial-config")
|
||||
require("autopairs-config")
|
||||
require("cmp-config")
|
||||
require("comment-config")
|
||||
require("dap-config")
|
||||
require("diffview-config")
|
||||
require("git-ref")
|
||||
require("git-signs")
|
||||
require("llm")
|
||||
require("leap-config")
|
||||
require("lsp-config")
|
||||
require("lsp-lines-config")
|
||||
require("lualine-config")
|
||||
require("neotree-config")
|
||||
require("noice-config")
|
||||
require("numb-config")
|
||||
require("silicon-config")
|
||||
require("telescope-config")
|
||||
require("toggleterm-config")
|
||||
require("ts-config")
|
||||
require("which-key-config")
|
||||
require("weird-chars")
|
||||
1
modules/home/programs/terminal/nvim/config/lua/leap-config.lua
Executable file
1
modules/home/programs/terminal/nvim/config/lua/leap-config.lua
Executable file
@@ -0,0 +1 @@
|
||||
require('leap').add_default_mappings()
|
||||
20
modules/home/programs/terminal/nvim/config/lua/llm.lua
Executable file
20
modules/home/programs/terminal/nvim/config/lua/llm.lua
Executable file
@@ -0,0 +1,20 @@
|
||||
-- Configure LLama LLM
|
||||
vim.g.llama_config = {
|
||||
endpoint = "http://10.0.50.120:8080/infill",
|
||||
api_key = "",
|
||||
n_prefix = 256,
|
||||
n_suffix = 64,
|
||||
n_predict = 256,
|
||||
t_max_prompt_ms = 500,
|
||||
t_max_predict_ms = 500,
|
||||
show_info = 2,
|
||||
auto_fim = true,
|
||||
max_line_suffix = 8,
|
||||
max_cache_keys = 256,
|
||||
ring_n_chunks = 8,
|
||||
ring_chunk_size = 32,
|
||||
ring_scope = 512,
|
||||
ring_update_ms = 1000,
|
||||
}
|
||||
|
||||
-- require("gen").setup({ model = "codegemma" })
|
||||
238
modules/home/programs/terminal/nvim/config/lua/lsp-config.lua
Executable file
238
modules/home/programs/terminal/nvim/config/lua/lsp-config.lua
Executable file
@@ -0,0 +1,238 @@
|
||||
------------------------------------------------------
|
||||
------------------- Custom Settings ------------------
|
||||
------------------------------------------------------
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "go",
|
||||
callback = function()
|
||||
vim.bo.textwidth = 120
|
||||
end,
|
||||
})
|
||||
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
templ = "templ",
|
||||
},
|
||||
})
|
||||
|
||||
------------------------------------------------------
|
||||
-------------------- Built-in LSP --------------------
|
||||
------------------------------------------------------
|
||||
local nix_vars = require("nix-vars")
|
||||
local nvim_lsp = require("lspconfig")
|
||||
|
||||
local on_attach = function(client, bufnr)
|
||||
local bufopts = { noremap = true, silent = true, buffer = bufnr }
|
||||
|
||||
if client.supports_method("textDocument/formatting") then
|
||||
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
group = augroup,
|
||||
buffer = bufnr,
|
||||
callback = function()
|
||||
vim.lsp.buf.format({ async = false, timeout_ms = 2000 })
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, bufopts)
|
||||
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, bufopts)
|
||||
vim.keymap.set("n", "<leader>lD", vim.lsp.buf.declaration, bufopts)
|
||||
vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition, bufopts)
|
||||
vim.keymap.set("n", "<leader>li", vim.lsp.buf.implementation, bufopts)
|
||||
vim.keymap.set("n", "<leader>ln", vim.lsp.buf.rename, bufopts)
|
||||
vim.keymap.set("n", "<leader>lr", vim.lsp.buf.references, bufopts)
|
||||
vim.keymap.set("n", "<leader>lt", vim.lsp.buf.type_definition, bufopts)
|
||||
vim.keymap.set("n", "<leader>lf", function()
|
||||
vim.lsp.buf.format({ async = true, timeout_ms = 2000 })
|
||||
end, bufopts)
|
||||
end
|
||||
|
||||
local on_attach_no_formatting = function(client, bufnr)
|
||||
-- Disable Formatting
|
||||
client.server_capabilities.documentFormattingProvider = false
|
||||
client.server_capabilities.documentRangeFormattingProvider = false
|
||||
on_attach(client, bufnr)
|
||||
end
|
||||
|
||||
local organize_go_imports = function()
|
||||
local encoding = vim.lsp.util._get_offset_encoding()
|
||||
local params = vim.lsp.util.make_range_params(nil, encoding)
|
||||
params.context = { only = { "source.organizeImports" } }
|
||||
|
||||
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
|
||||
for _, res in pairs(result or {}) do
|
||||
for _, r in pairs(res.result or {}) do
|
||||
if r.edit then
|
||||
vim.lsp.util.apply_workspace_edit(r.edit, encoding)
|
||||
else
|
||||
vim.lsp.buf.execute_command(r.command)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Define LSP Flags & Capabilities
|
||||
local lsp_flags = { debounce_text_changes = 150 }
|
||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||
|
||||
-- Python LSP Configuration
|
||||
nvim_lsp.pyright.setup({
|
||||
on_attach = on_attach,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
-- HTML LSP Configuration
|
||||
nvim_lsp.html.setup({
|
||||
on_attach = on_attach_no_formatting,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
cmd = { nix_vars.vscls .. "/bin/vscode-html-language-server", "--stdio" },
|
||||
})
|
||||
|
||||
-- JSON LSP Configuration
|
||||
nvim_lsp.jsonls.setup({
|
||||
on_attach = on_attach_no_formatting,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
cmd = { nix_vars.vscls .. "/bin/vscode-html-language-server", "--stdio" },
|
||||
})
|
||||
|
||||
-- CSS LSP Configuration
|
||||
nvim_lsp.cssls.setup({
|
||||
on_attach = on_attach_no_formatting,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
cmd = { nix_vars.vscls .. "/bin/vscode-html-language-server", "--stdio" },
|
||||
})
|
||||
|
||||
-- Typescript / Javascript LSP Configuration
|
||||
nvim_lsp.ts_ls.setup({
|
||||
on_attach = on_attach_no_formatting,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
cmd = { nix_vars.tsls, "--stdio" },
|
||||
})
|
||||
|
||||
-- Svelte LSP Configuration
|
||||
nvim_lsp.svelte.setup({
|
||||
on_attach = on_attach_no_formatting,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
cmd = { nix_vars.sveltels, "--stdio" },
|
||||
})
|
||||
|
||||
-- Lua LSP Configuration
|
||||
nvim_lsp.lua_ls.setup({
|
||||
on_attach = on_attach_no_formatting,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
cmd = { nix_vars.luals },
|
||||
})
|
||||
|
||||
-- Templ LSP Configuration
|
||||
nvim_lsp.templ.setup({
|
||||
on_attach = on_attach,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
-- Nix LSP Configuration
|
||||
nvim_lsp.nil_ls.setup({
|
||||
on_attach = on_attach,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
-- Go LSP Configuration
|
||||
nvim_lsp.gopls.setup({
|
||||
on_attach = function(client, bufnr)
|
||||
on_attach(client, bufnr)
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
group = augroup,
|
||||
buffer = bufnr,
|
||||
callback = organize_go_imports,
|
||||
})
|
||||
end,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
cmd = { nix_vars.gopls },
|
||||
settings = {
|
||||
gopls = {
|
||||
buildFlags = { "-tags=e2e" },
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Go LSP Linting
|
||||
nvim_lsp.golangci_lint_ls.setup({
|
||||
on_attach = on_attach_no_formatting,
|
||||
flags = lsp_flags,
|
||||
capabilities = capabilities,
|
||||
cmd = { nix_vars.golintls },
|
||||
init_options = {
|
||||
command = {
|
||||
"golangci-lint",
|
||||
"run",
|
||||
"--output.json.path",
|
||||
"stdout",
|
||||
"--show-stats=false",
|
||||
"--issues-exit-code=1",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
------------------------------------------------------
|
||||
--------------------- Null-LS LSP --------------------
|
||||
------------------------------------------------------
|
||||
local null_ls = require("null-ls")
|
||||
|
||||
local eslintFiles = {
|
||||
".eslintrc",
|
||||
".eslintrc.js",
|
||||
".eslintrc.cjs",
|
||||
".eslintrc.yaml",
|
||||
".eslintrc.yml",
|
||||
".eslintrc.json",
|
||||
"eslint.config.js",
|
||||
"eslint.config.mjs",
|
||||
"eslint.config.cjs",
|
||||
"eslint.config.ts",
|
||||
"eslint.config.mts",
|
||||
"eslint.config.cts",
|
||||
}
|
||||
|
||||
has_eslint_in_parents = function(fname)
|
||||
root_file = nvim_lsp.util.insert_package_json(eslintFiles, "eslintConfig", fname)
|
||||
return nvim_lsp.util.root_pattern(unpack(root_file))(fname)
|
||||
end
|
||||
|
||||
null_ls.setup({
|
||||
sources = {
|
||||
-- Prettier Formatting
|
||||
null_ls.builtins.formatting.prettier,
|
||||
null_ls.builtins.formatting.prettier.with({ filetypes = { "template" } }),
|
||||
require("none-ls.diagnostics.eslint_d").with({
|
||||
condition = function(utils)
|
||||
return has_eslint_in_parents(vim.fn.getcwd())
|
||||
end,
|
||||
}),
|
||||
null_ls.builtins.completion.spell,
|
||||
null_ls.builtins.formatting.nixpkgs_fmt,
|
||||
null_ls.builtins.formatting.stylua,
|
||||
null_ls.builtins.diagnostics.sqlfluff,
|
||||
null_ls.builtins.formatting.sqlfluff,
|
||||
},
|
||||
on_attach = function(client, bufnr)
|
||||
if client.supports_method("textDocument/formatting") then
|
||||
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
group = augroup,
|
||||
buffer = bufnr,
|
||||
callback = function()
|
||||
vim.lsp.buf.format({ async = false, timeout_ms = 2000 })
|
||||
end,
|
||||
})
|
||||
end
|
||||
end,
|
||||
})
|
||||
2
modules/home/programs/terminal/nvim/config/lua/lsp-lines-config.lua
Executable file
2
modules/home/programs/terminal/nvim/config/lua/lsp-lines-config.lua
Executable file
@@ -0,0 +1,2 @@
|
||||
require("lsp_lines").setup()
|
||||
vim.diagnostic.config({virtual_text = false})
|
||||
49
modules/home/programs/terminal/nvim/config/lua/lualine-config.lua
Executable file
49
modules/home/programs/terminal/nvim/config/lua/lualine-config.lua
Executable file
@@ -0,0 +1,49 @@
|
||||
-- Cached variable
|
||||
local cached_pr_status = ""
|
||||
|
||||
-- Read process output
|
||||
local function read_output(err, data)
|
||||
if err then return end
|
||||
if not data then return end
|
||||
cached_pr_status = data
|
||||
end
|
||||
|
||||
-- Spawn process
|
||||
local function execute_command()
|
||||
local stdout = vim.loop.new_pipe(false)
|
||||
|
||||
local spawn_opts = {
|
||||
detached = true,
|
||||
stdio = {nil, stdout, nil},
|
||||
args = {"-c", "gh pr checks | awk -F'\t' '{ print $2 }'"}
|
||||
}
|
||||
|
||||
vim.loop.spawn("bash", spawn_opts,
|
||||
function() stdout:read_start(read_output) end)
|
||||
end
|
||||
|
||||
-- Spawn & schedule process
|
||||
execute_command()
|
||||
vim.fn.timer_start(300000, execute_command)
|
||||
|
||||
-- Return status from cache
|
||||
function pr_status()
|
||||
--
|
||||
--
|
||||
--
|
||||
-- PENDING COLOR - #d29922
|
||||
-- PASS COLOR - #3fb950
|
||||
-- FAIL COLOR - #f85149
|
||||
return cached_pr_status:gsub("\n", ""):gsub("fail", " "):gsub("pass",
|
||||
" ")
|
||||
:gsub("pending", " "):gsub("skipping", " "):sub(1, -2)
|
||||
end
|
||||
|
||||
require('lualine').setup({
|
||||
options = {
|
||||
theme = "gruvbox_dark"
|
||||
-- theme = "nord"
|
||||
-- theme = "OceanicNext",
|
||||
},
|
||||
sections = {lualine_c = {{pr_status}}}
|
||||
})
|
||||
2
modules/home/programs/terminal/nvim/config/lua/neotree-config.lua
Executable file
2
modules/home/programs/terminal/nvim/config/lua/neotree-config.lua
Executable file
@@ -0,0 +1,2 @@
|
||||
require("neo-tree").setup({ window = { mappings = { ["<space>"] = "none" } } })
|
||||
vim.keymap.set("n", "<leader>t", ":Neotree toggle<CR>", { silent = true })
|
||||
26
modules/home/programs/terminal/nvim/config/lua/noice-config.lua
Executable file
26
modules/home/programs/terminal/nvim/config/lua/noice-config.lua
Executable file
@@ -0,0 +1,26 @@
|
||||
-- Noice Doc Scrolling
|
||||
vim.keymap.set("n", "<c-f>", function()
|
||||
if not require("noice.lsp").scroll(4) then return "<c-f>" end
|
||||
end, {silent = true, expr = true})
|
||||
|
||||
vim.keymap.set("n", "<c-b>", function()
|
||||
if not require("noice.lsp").scroll(-4) then return "<c-b>" end
|
||||
end, {silent = true, expr = true})
|
||||
|
||||
-- Noice Setup
|
||||
require("noice").setup({
|
||||
lsp = {
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = false
|
||||
},
|
||||
signature = {enabled = false}
|
||||
},
|
||||
presets = {
|
||||
command_palette = true, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = false -- add a border to hover docs and signature help
|
||||
}
|
||||
})
|
||||
1
modules/home/programs/terminal/nvim/config/lua/numb-config.lua
Executable file
1
modules/home/programs/terminal/nvim/config/lua/numb-config.lua
Executable file
@@ -0,0 +1 @@
|
||||
require('numb').setup()
|
||||
10
modules/home/programs/terminal/nvim/config/lua/silicon-config.lua
Executable file
10
modules/home/programs/terminal/nvim/config/lua/silicon-config.lua
Executable file
@@ -0,0 +1,10 @@
|
||||
local silicon = require('silicon')
|
||||
silicon.setup({})
|
||||
|
||||
vim.keymap.set('v', '<Leader>ss', function() silicon.visualise_api({}) end)
|
||||
vim.keymap.set('v', '<Leader>sb',
|
||||
function() silicon.visualise_api({show_buf = true}) end)
|
||||
vim.keymap.set('n', '<Leader>sv',
|
||||
function() silicon.visualise_api({visible = true}) end)
|
||||
vim.keymap.set('n', '<Leader>sb',
|
||||
function() silicon.visualise_api({show_buf = true}) end)
|
||||
20
modules/home/programs/terminal/nvim/config/lua/telescope-config.lua
Executable file
20
modules/home/programs/terminal/nvim/config/lua/telescope-config.lua
Executable file
@@ -0,0 +1,20 @@
|
||||
require('telescope').setup {
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true,
|
||||
override_generic_sorter = true,
|
||||
override_file_sorter = true,
|
||||
case_mode = "smart_case"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
require('telescope').load_extension('fzf')
|
||||
require("telescope").load_extension("ui-select")
|
||||
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
|
||||
vim.keymap.set('n', '<leader>fj', builtin.jumplist, {})
|
||||
20
modules/home/programs/terminal/nvim/config/lua/toggleterm-config.lua
Executable file
20
modules/home/programs/terminal/nvim/config/lua/toggleterm-config.lua
Executable file
@@ -0,0 +1,20 @@
|
||||
require("toggleterm").setup({open_mapping = [[<c-\>]]})
|
||||
|
||||
-- Get PR status on terminal load
|
||||
-- require("toggleterm").setup({
|
||||
-- open_mapping = [[<c-\>]],
|
||||
-- on_create = function(term)
|
||||
-- vim.cmd("startinsert")
|
||||
-- term:send("gh pr checks")
|
||||
-- end
|
||||
-- })
|
||||
|
||||
-- Duplicate C-w & Esc Behavior
|
||||
function _G.set_terminal_keymaps()
|
||||
local opts = {buffer = 0}
|
||||
vim.opt.signcolumn = "no"
|
||||
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
|
||||
end
|
||||
|
||||
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
|
||||
3
modules/home/programs/terminal/nvim/config/lua/ts-config.lua
Executable file
3
modules/home/programs/terminal/nvim/config/lua/ts-config.lua
Executable file
@@ -0,0 +1,3 @@
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
highlight = {enable = true, additional_vim_regex_highlighting = false}
|
||||
}
|
||||
66
modules/home/programs/terminal/nvim/config/lua/weird-chars.lua
Executable file
66
modules/home/programs/terminal/nvim/config/lua/weird-chars.lua
Executable file
@@ -0,0 +1,66 @@
|
||||
local ns = vim.api.nvim_create_namespace("weird-chars")
|
||||
|
||||
local weird_chars = {
|
||||
["–"] = "en dash found, consider using regular hyphen (-)",
|
||||
["—"] = "em dash found, consider using regular hyphen (-)",
|
||||
["“"] = 'left double quote found, consider using straight quote (")',
|
||||
["”"] = 'right double quote found, consider using straight quote (")',
|
||||
["‘"] = "left single quote found, consider using straight quote (')",
|
||||
["’"] = "right single quote found, consider using straight quote (')",
|
||||
["•"] = "bullet found, consider using regular asterisk (*)",
|
||||
["·"] = "middle dot found",
|
||||
[" "] = "full-width space found, consider using regular space",
|
||||
}
|
||||
|
||||
local function check_weird_chars()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
|
||||
local diagnostics = {}
|
||||
|
||||
for linenr, line in ipairs(lines) do
|
||||
local i = 1
|
||||
while i <= #line do
|
||||
local b = line:byte(i)
|
||||
local char
|
||||
|
||||
-- Check for UTF-8 multi-byte sequences
|
||||
if b >= 0xE2 and b <= 0xEF then
|
||||
-- Likely a 3-byte UTF-8 sequence
|
||||
char = line:sub(i, i + 2)
|
||||
i = i + 3
|
||||
elseif b >= 0xC2 and b <= 0xDF then
|
||||
-- Likely a 2-byte UTF-8 sequence
|
||||
char = line:sub(i, i + 1)
|
||||
i = i + 2
|
||||
else
|
||||
-- Single byte character
|
||||
char = line:sub(i, i)
|
||||
i = i + 1
|
||||
end
|
||||
|
||||
if weird_chars[char] then
|
||||
table.insert(diagnostics, {
|
||||
bufnr = bufnr,
|
||||
lnum = linenr - 1,
|
||||
col = i - #char - 1,
|
||||
message = weird_chars[char],
|
||||
severity = vim.diagnostic.severity.WARN,
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
vim.diagnostic.set(ns, bufnr, diagnostics)
|
||||
end
|
||||
|
||||
-- Create autocommand group
|
||||
local group = vim.api.nvim_create_augroup("WeirdChars", { clear = true })
|
||||
|
||||
-- Set up autocommands
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "TextChanged", "InsertLeave" }, {
|
||||
group = group,
|
||||
callback = check_weird_chars,
|
||||
})
|
||||
|
||||
-- Create commands for manual checking
|
||||
vim.api.nvim_create_user_command("CheckWeirdChars", check_weird_chars, {})
|
||||
47
modules/home/programs/terminal/nvim/config/lua/which-key-config.lua
Executable file
47
modules/home/programs/terminal/nvim/config/lua/which-key-config.lua
Executable file
@@ -0,0 +1,47 @@
|
||||
local wk = require("which-key")
|
||||
|
||||
wk.setup({})
|
||||
|
||||
wk.add({
|
||||
{ "<C-k>", desc = "Signature Help" },
|
||||
{ "<leader>a", desc = "Aerial" },
|
||||
{ "<leader>d", group = "Debug" },
|
||||
{ "<leader>db", desc = "Toggle Breakpoint" },
|
||||
{ "<leader>dc", desc = "Continue" },
|
||||
{ "<leader>dt", desc = "Run Test" },
|
||||
{ "<leader>du", desc = "Toggle UI" },
|
||||
{ "<leader>f", group = "Find - Telescope" },
|
||||
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Find Buffer" },
|
||||
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find File" },
|
||||
{ "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
|
||||
{ "<leader>fh", "<cmd>Telescope help_tags<cr>", desc = "Help Tags" },
|
||||
{ "<leader>fj", "<cmd>Telescope jumplist<cr>", desc = "Jump List" },
|
||||
{ "<leader>g", group = "DiffView" },
|
||||
{ "<leader>gB", desc = "Git Blame Full" },
|
||||
{ "<leader>gH", "<cmd>DiffviewFileHistory --range=origin..HEAD<cr>", desc = "Diff History - Main" },
|
||||
{ "<leader>gO", "<cmd>DiffviewOpen origin/main...HEAD<cr>", desc = "Open Diff - Main" },
|
||||
{ "<leader>gb", desc = "Git Blame Line" },
|
||||
{ "<leader>gc", "<cmd>DiffviewClose<cr>", desc = "Close Diff" },
|
||||
{ "<leader>gh", "<cmd>DiffviewFileHistory<cr>", desc = "Diff History" },
|
||||
{ "<leader>go", "<cmd>DiffviewOpen<cr>", desc = "Open Diff - Current" },
|
||||
{ "<leader>l", group = "LSP" },
|
||||
{ "<leader>lD", desc = "Declaration" },
|
||||
{ "<leader>ld", desc = "Definition" },
|
||||
{ "<leader>lf", desc = "Format" },
|
||||
{ "<leader>li", desc = "Implementation" },
|
||||
{ "<leader>ln", desc = "Rename" },
|
||||
{ "<leader>lr", desc = "References" },
|
||||
{ "<leader>lt", desc = "Type Definition" },
|
||||
{ "<leader>q", group = "Diagnostics" },
|
||||
{ "<leader>qN", desc = "Previous Diagnostic" },
|
||||
{ "<leader>qe", desc = "Open Diagnostic Float" },
|
||||
{ "<leader>qn", desc = "Next Diagnostic" },
|
||||
{ "<leader>qq", desc = "Toggle Diagnostic List" },
|
||||
{ "<leader>qt", desc = "Toggle Inline Diagnostics" },
|
||||
{ "<leader>sv", desc = "Visual Screenshot" },
|
||||
{ "<leader>t", desc = "NeoTree" },
|
||||
{ "K", desc = "Definition Hover" },
|
||||
{ "<leader>ss", desc = "Selected Screenshot", mode = "v" },
|
||||
{ "<leader>s", group = "Screenshot", mode = { "n", "v" } },
|
||||
{ "<leader>sb", desc = "Buffer Screenshot", mode = { "n", "v" } },
|
||||
})
|
||||
204
modules/home/programs/terminal/nvim/default.nix
Executable file
204
modules/home/programs/terminal/nvim/default.nix
Executable file
@@ -0,0 +1,204 @@
|
||||
{ pkgs, lib, config, namespace, ... }:
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.${namespace}.programs.terminal.nvim;
|
||||
in
|
||||
{
|
||||
options.${namespace}.programs.terminal.nvim = {
|
||||
enable = lib.mkEnableOption "NeoVim";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
withNodeJs = true;
|
||||
withPython3 = true;
|
||||
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# ------------------
|
||||
# --- Completion ---
|
||||
# ------------------
|
||||
cmp-buffer # Buffer Word Completion
|
||||
cmp-cmdline # Command Line Completion
|
||||
cmp-nvim-lsp # Main LSP
|
||||
cmp-path # Path Completion
|
||||
cmp_luasnip # Snippets Completion
|
||||
friendly-snippets # Snippets
|
||||
lsp_lines-nvim # Inline Diagnostics
|
||||
luasnip # Snippets
|
||||
nvim-cmp # Completions
|
||||
nvim-lspconfig # LSP Config
|
||||
|
||||
# -------------------
|
||||
# ----- Helpers -----
|
||||
# -------------------
|
||||
aerial-nvim # Code Outline
|
||||
comment-nvim # Code Comments
|
||||
diffview-nvim # Diff View
|
||||
gitsigns-nvim # Git Blame
|
||||
leap-nvim # Quick Movement
|
||||
markdown-preview-nvim # Markdown Preview
|
||||
neo-tree-nvim # File Explorer
|
||||
none-ls-nvim # Formatters
|
||||
numb-nvim # Peek / Jump to Lines
|
||||
nvim-autopairs # Automatically Close Pairs (),[],{}
|
||||
telescope-fzf-native-nvim # Faster Telescope
|
||||
telescope-nvim # Fuzzy Finder
|
||||
telescope-ui-select-nvim # UI
|
||||
toggleterm-nvim # Terminal Helper
|
||||
vim-nix # Nix Helpers
|
||||
which-key-nvim # Shortcut Helper
|
||||
|
||||
# ------------------
|
||||
# --- Theme / UI ---
|
||||
# ------------------
|
||||
lualine-nvim # Bottom Line
|
||||
noice-nvim # UI Tweaks
|
||||
# nord-nvim # Theme
|
||||
# melange-nvim # Theme
|
||||
catppuccin-nvim # Theme
|
||||
nvim-notify # Noice Dependency
|
||||
nvim-web-devicons # Dev Icons
|
||||
|
||||
# ------------------
|
||||
# --- Treesitter ---
|
||||
# ------------------
|
||||
nvim-treesitter-context
|
||||
nvim-treesitter.withAllGrammars
|
||||
|
||||
# -------------------
|
||||
# ------- DAP -------
|
||||
# -------------------
|
||||
nvim-dap
|
||||
nvim-dap-go
|
||||
nvim-dap-ui
|
||||
|
||||
# --------------------
|
||||
# -- NONE-LS EXTRAS --
|
||||
# --------------------
|
||||
(
|
||||
pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "none-ls-extras.nvim";
|
||||
version = "2024-06-11";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvimtools";
|
||||
repo = "none-ls-extras.nvim";
|
||||
rev = "336e84b9e43c0effb735b08798ffac382920053b";
|
||||
sha256 = "sha256-UtU4oWSRTKdEoMz3w8Pk95sROuo3LEwxSDAm169wxwk=";
|
||||
};
|
||||
meta.homepage = "https://github.com/nvimtools/none-ls-extras.nvim/";
|
||||
}
|
||||
)
|
||||
|
||||
# -------------------
|
||||
# ----- Silicon -----
|
||||
# -------------------
|
||||
(
|
||||
pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "silicon.lua";
|
||||
version = "2022-12-03";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "mhanberg";
|
||||
repo = "silicon.lua";
|
||||
rev = "5ca462bee0a39b058786bc7fbeb5d16ea49f3a23";
|
||||
sha256 = "0vlp645d5mmii513v72jca931miyrhkvhwb9bfzhix1199zx7vi2";
|
||||
};
|
||||
meta.homepage = "https://github.com/mhanberg/silicon.lua/";
|
||||
}
|
||||
)
|
||||
|
||||
# -------------------
|
||||
# ------- LLM -------
|
||||
# -------------------
|
||||
(
|
||||
pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "llm.nvim";
|
||||
version = "2024-05-25";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "David-Kunz";
|
||||
repo = "gen.nvim";
|
||||
rev = "bd19cf584b5b82123de977b44105e855e61e5f39";
|
||||
sha256 = "sha256-0AEB6im8Jz5foYzmL6KEGSAYo48g1bkFpjlCSWT6JeE=";
|
||||
};
|
||||
meta.homepage = "https://github.com/David-Kunz/gen.nvim/";
|
||||
}
|
||||
)
|
||||
|
||||
# -------------------
|
||||
# ---- LLAMA.VIM ----
|
||||
# -------------------
|
||||
(
|
||||
pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "llama.vim";
|
||||
version = "2025-01-23";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "ggml-org";
|
||||
repo = "llama.vim";
|
||||
rev = "143fe910b8d47a054ed464c38d8b7c17d5354468";
|
||||
sha256 = "sha256-PW0HKzhSxcZiWzpDOuy98rl/X0o2nE7tMjZjwwh0qLE=";
|
||||
};
|
||||
meta.homepage = "https://github.com/ggml-org/llama.vim/";
|
||||
}
|
||||
)
|
||||
|
||||
];
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
# Telescope Dependencies
|
||||
fd
|
||||
ripgrep
|
||||
tree-sitter
|
||||
|
||||
# LSP Dependencies
|
||||
go
|
||||
golangci-lint
|
||||
golangci-lint-langserver
|
||||
gopls
|
||||
lua-language-server
|
||||
nil
|
||||
nodePackages.eslint
|
||||
nodePackages.svelte-language-server
|
||||
nodePackages.typescript
|
||||
nodePackages.typescript-language-server
|
||||
nodePackages.vscode-langservers-extracted
|
||||
pyright
|
||||
eslint_d
|
||||
|
||||
# Formatters
|
||||
luaformatter
|
||||
nixpkgs-fmt
|
||||
nodePackages.prettier
|
||||
sqlfluff
|
||||
stylua
|
||||
|
||||
# Silicon
|
||||
silicon
|
||||
];
|
||||
|
||||
extraConfig = ":luafile ~/.config/nvim/lua/init.lua";
|
||||
};
|
||||
|
||||
xdg.configFile = {
|
||||
# Copy Configuration
|
||||
nvim = {
|
||||
source = ./config;
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
# Generate Nix Vars
|
||||
"nvim/lua/nix-vars.lua".text = ''
|
||||
local nix_vars = {
|
||||
gopls = "${pkgs.gopls}/bin/gopls",
|
||||
luals = "${pkgs.lua-language-server}/bin/lua-language-server",
|
||||
sveltels = "${pkgs.nodePackages.svelte-language-server}/bin/svelteserver",
|
||||
tsls = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server",
|
||||
golintls = "${pkgs.golangci-lint-langserver}/bin/golangci-lint-langserver",
|
||||
vscls = "${pkgs.nodePackages.vscode-langservers-extracted}",
|
||||
}
|
||||
return nix_vars
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user