diff --git a/nix/base-system/init.lua b/nix/base-system/init.lua index 620b98b..64cd755 100644 --- a/nix/base-system/init.lua +++ b/nix/base-system/init.lua @@ -71,40 +71,40 @@ au BufNewFile,BufRead *.hrl filetype indent off local cmp = require('cmp') cmp.setup({ - -- Enable LSP snippets - snippet = { - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) - end, - }, - mapping = cmp.mapping.preset.insert { - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, + -- Enable LSP snippets + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = cmp.mapping.preset.insert { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + }, + -- Installed sources: + sources = cmp.config.sources( + { + { name = 'nvim_lsp', keyword_length = 3 }, -- from language server + { name = 'nvim_lsp_signature_help' }, -- display function signatures with current parameter emphasized + }, + { + { name = 'path' }, -- file paths + }, + { + { name = 'nvim_lua', keyword_length = 2 }, -- complete neovim's Lua runtime API such vim.lsp.* + { name = 'buffer', keyword_length = 2 }, -- source current buffer + { name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip + }), + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), }, - }, - -- Installed sources: - sources = cmp.config.sources( - { - { name = 'nvim_lsp', keyword_length = 3 }, -- from language server - { name = 'nvim_lsp_signature_help'}, -- display function signatures with current parameter emphasized - }, - { - { name = 'path' }, -- file paths - }, - { - { name = 'nvim_lua', keyword_length = 2}, -- complete neovim's Lua runtime API such vim.lsp.* - { name = 'buffer', keyword_length = 2 }, -- source current buffer - { name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip - }), - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered(), - }, }) -- logging @@ -114,21 +114,21 @@ cmp.setup({ local roslyn_lsp_dll = vim.fs.normalize("~/bin/Microsoft.CodeAnalysis.LanguageServer.dll") local caps = vim.tbl_deep_extend( - 'force', - vim.lsp.protocol.make_client_capabilities(), - require('cmp_nvim_lsp').default_capabilities(), - -- File watching is disabled by default for neovim. - -- See: https://github.com/neovim/neovim/pull/22405 - { workspace = { didChangeWatchedFiles = { dynamicRegistration = true } } }, - { window = { progress = false } } + 'force', + vim.lsp.protocol.make_client_capabilities(), + require('cmp_nvim_lsp').default_capabilities(), + -- File watching is disabled by default for neovim. + -- See: https://github.com/neovim/neovim/pull/22405 + { workspace = { didChangeWatchedFiles = { dynamicRegistration = true } } }, + { window = { progress = false } } ); local lspconfig = require("lspconfig") -- Terraform lsp setup -lspconfig.terraformls.setup{} +lspconfig.terraformls.setup {} -- Nix language server support -lspconfig.nil_ls.setup{ +lspconfig.nil_ls.setup { --single_file_support = true, --on_attach = function(client, bufnr) -- -- disable the semanticTokens because it has issues. @@ -139,11 +139,11 @@ lspconfig.nil_ls.setup{ local vim_pid = vim.fn.getpid() --- "FormatterOptions:EnableEditorConfigSupport=true" -local omnisharp_cmd = { 'omnisharp', '--languageserver', '-v', '--hostPID', tostring(vim_pid), } +-- "FormatterOptions:EnableEditorConfigSupport=true" +local omnisharp_cmd = { 'omnisharp', '--languageserver', '-v', '--hostPID', tostring(vim_pid), } local function toSnakeCase(str) - return string.gsub(str, "%s*[- ]%s*", "_") + return string.gsub(str, "%s*[- ]%s*", "_") end lspconfig.omnisharp.setup { @@ -153,82 +153,82 @@ lspconfig.omnisharp.setup { enable_import_completion = true, -- Omnisharp has issues with the semanticTokens feature we need to massage it a bit. on_attach = function(client, bufnr) - -- https://github.com/OmniSharp/omnisharp-roslyn/issues/2483#issuecomment-1492605642 - local tokenModifiers = client.server_capabilities.semanticTokensProvider.legend.tokenModifiers - for i, v in ipairs(tokenModifiers) do - tokenModifiers[i] = toSnakeCase(v) - end - local tokenTypes = client.server_capabilities.semanticTokensProvider.legend.tokenTypes - for i, v in ipairs(tokenTypes) do - tokenTypes[i] = toSnakeCase(v) - end + -- https://github.com/OmniSharp/omnisharp-roslyn/issues/2483#issuecomment-1492605642 + local tokenModifiers = client.server_capabilities.semanticTokensProvider.legend.tokenModifiers + for i, v in ipairs(tokenModifiers) do + tokenModifiers[i] = toSnakeCase(v) + end + local tokenTypes = client.server_capabilities.semanticTokensProvider.legend.tokenTypes + for i, v in ipairs(tokenTypes) do + tokenTypes[i] = toSnakeCase(v) + end end, - handlers = { - ["textDocument/definition"] = require('omnisharp_extended').handler, - }, + handlers = { + ["textDocument/definition"] = require('omnisharp_extended').handler, + }, capabilities = caps, } --ocaml -lspconfig.ocamllsp.setup{ +lspconfig.ocamllsp.setup { capabilities = caps } -- Java language server support -lspconfig.java_language_server.setup{ +lspconfig.java_language_server.setup { capabilities = caps } -- Typescript language server support -lspconfig.tsserver.setup{ +lspconfig.tsserver.setup { capabilities = caps } -- Rust language server support -lspconfig.rust_analyzer.setup{ +lspconfig.rust_analyzer.setup { capabilities = caps } -- lua language server setup. -lspconfig.lua_ls.setup{ - settings = { - Lua = { - runtime = { version = 'LuaJIT', }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'}, - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = vim.api.nvim_get_runtime_file("", true), - -- Disable the checkThirdParty prompts. - checkThirdParty = false, +lspconfig.lua_ls.setup { + settings = { + Lua = { + runtime = { version = 'LuaJIT', }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { 'vim' }, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + -- Disable the checkThirdParty prompts. + checkThirdParty = false, + }, + telemetry = { + enable = false, + }, }, - telemetry = { - enable = false, - }, - }, - }, + }, capabilities = caps } -- lsp configuration vim.api.nvim_create_autocmd('LspAttach', { - callback = function(args) - local opts = { buffer = args.buf } - vim.keymap.set("n", '', function() - vim.lsp.buf.hover() - end, opts) - vim.keymap.set({"n", "v"}, "a", vim.lsp.buf.code_action, opts) - vim.keymap.set("n", "f", vim.lsp.buf.format, opts) - local client = vim.lsp.get_client_by_id(args.data.client_id) - if client.server_capabilities.codelens then - vim.lsp.codelens.refresh() - end - end, + callback = function(args) + local opts = { buffer = args.buf } + vim.keymap.set("n", '', function() + vim.lsp.buf.hover() + end, opts) + vim.keymap.set({ "n", "v" }, "a", vim.lsp.buf.code_action, opts) + vim.keymap.set("n", "f", vim.lsp.buf.format, opts) + local client = vim.lsp.get_client_by_id(args.data.client_id) + if client.server_capabilities.codelens then + vim.lsp.codelens.refresh() + end + end, }) -vim.api.nvim_create_autocmd({'BufEnter', 'InsertLeave', 'CursorHold'}, { +vim.api.nvim_create_autocmd({ 'BufEnter', 'InsertLeave', 'CursorHold' }, { callback = function(_) local clients = vim.lsp.get_active_clients() for cid = 1, #clients do @@ -240,19 +240,19 @@ vim.api.nvim_create_autocmd({'BufEnter', 'InsertLeave', 'CursorHold'}, { end, }) --- LSP Diagnostics Options Setup +-- LSP Diagnostics Options Setup local sign = function(opts) - vim.fn.sign_define(opts.name, { - texthl = opts.name, - text = opts.text, - numhl = '' - }) + vim.fn.sign_define(opts.name, { + texthl = opts.name, + text = opts.text, + numhl = '' + }) end -sign({name = 'DiagnosticSignError', text = '🔥'}) -sign({name = 'DiagnosticSignWarn', text = '⚠️'}) -sign({name = 'DiagnosticSignHint', text = '➡️'}) -sign({name = 'DiagnosticSignInfo', text = '🗒️'}) +sign({ name = 'DiagnosticSignError', text = '🔥' }) +sign({ name = 'DiagnosticSignWarn', text = '⚠️' }) +sign({ name = 'DiagnosticSignHint', text = '➡️' }) +sign({ name = 'DiagnosticSignInfo', text = '🗒️' }) vim.diagnostic.config({ virtual_text = false, @@ -280,72 +280,72 @@ autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) -- noselect: Do not select, force to select one from the menu -- shortness: avoid showing extra messages when using completion -- updatetime: set updatetime for CursorHold -vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'} -vim.opt.shortmess = vim.opt.shortmess + { c = true} +vim.opt.completeopt = { 'menuone', 'noselect', 'noinsert' } +vim.opt.shortmess = vim.opt.shortmess + { c = true } vim.api.nvim_set_option('updatetime', 300) -vim.opt.sessionoptions = {'buffers', 'curdir', 'skiprtp', 'localoptions', 'terminal', 'tabpages' } +vim.opt.sessionoptions = { 'buffers', 'curdir', 'skiprtp', 'localoptions', 'terminal', 'tabpages' } -- Fixed column for diagnostics to appear -- Show autodiagnostic popup on cursor hover_range --- Goto previous / next diagnostic warning / error --- Show inlay_hints more frequently +-- Goto previous / next diagnostic warning / error +-- Show inlay_hints more frequently vim.cmd([[ set signcolumn=yes autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) ]]) --- Treesitter Plugin Setup +-- Treesitter Plugin Setup require('nvim-treesitter.configs').setup { - highlight = { - enable = true, - additional_vim_regex_highlighting=false, - }, - --indent = { enable = true }, - rainbow = { - enable = true, - extended_mode = true, - max_file_lines = nil, - }, - --textobjects = { - -- enable = true, - -- select = { - -- enable = true, - -- lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim - -- keymaps = { - -- -- You can use the capture groups defined in textobjects.scm - -- ['aa'] = '@parameter.outer', - -- ['ia'] = '@parameter.inner', - -- ['af'] = '@function.outer', - -- ['if'] = '@function.inner', - -- ['ac'] = '@class.outer', - -- ['ic'] = '@class.inner', - -- }, - -- }, - --}, - --incremental_selection = { - -- enable = true, - -- keymaps = { - -- init_selection = 'c', - -- node_incremental = 'c', - -- scope_incremental = 'ci', - -- node_decremental = 'cx', - -- }, - --}, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, + --indent = { enable = true }, + rainbow = { + enable = true, + extended_mode = true, + max_file_lines = nil, + }, + --textobjects = { + -- enable = true, + -- select = { + -- enable = true, + -- lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim + -- keymaps = { + -- -- You can use the capture groups defined in textobjects.scm + -- ['aa'] = '@parameter.outer', + -- ['ia'] = '@parameter.inner', + -- ['af'] = '@function.outer', + -- ['if'] = '@function.inner', + -- ['ac'] = '@class.outer', + -- ['ic'] = '@class.inner', + -- }, + -- }, + --}, + --incremental_selection = { + -- enable = true, + -- keymaps = { + -- init_selection = 'c', + -- node_incremental = 'c', + -- scope_incremental = 'ci', + -- node_decremental = 'cx', + -- }, + --}, } -require'treesitter-context'.setup { - enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) - max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit. - min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit. - line_numbers = true, - multiline_threshold = 20, -- Maximum number of lines to collapse for a single context line - trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer' - mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline' - -- Separator between context and content. Should be a single character string, like '-'. - -- When separator is set, the context will only show up when there are at least 2 lines above cursorline. - separator = nil, - zindex = 20, -- The Z-index of the context window - on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching +require 'treesitter-context'.setup { + enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) + max_lines = 5, -- How many lines the window should span. Values <= 0 mean no limit. + min_window_height = 45, -- Minimum editor window height to enable context. Values <= 0 mean no limit. + line_numbers = true, + multiline_threshold = 20, -- Maximum number of lines to collapse for a single context line + trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer' + mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline' + -- Separator between context and content. Should be a single character string, like '-'. + -- When separator is set, the context will only show up when there are at least 2 lines above cursorline. + separator = nil, + zindex = 20, -- The Z-index of the context window + on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching } vim.g.loaded_netrw = 1 @@ -355,42 +355,42 @@ vim.g.loaded_netrwPlugin = 1 vim.opt.termguicolors = true -- setup nvim-tree -require("nvim-tree").setup{ +require("nvim-tree").setup { hijack_unnamed_buffer_when_opening = true, update_focused_file = { enable = true, }, renderer = { - icons = { + icons = { show = { file = false, }, glyphs = { - default = "-", - symlink = "S", - bookmark = "🎗", - modified = "●", - folder = { - arrow_closed = "→", - arrow_open = "↓", - default = "📁", - open = "📂", - empty = "📁", - empty_open = "📂", + default = "-", symlink = "S", - symlink_open = "S", - }, - git = { - unstaged = "✗", - staged = "✓", - unmerged = "∦", - renamed = "➜", - untracked = "★", - deleted = "X", - ignored = "◌", - }, + bookmark = "🎗", + modified = "●", + folder = { + arrow_closed = "→", + arrow_open = "↓", + default = "📁", + open = "📂", + empty = "📁", + empty_open = "📂", + symlink = "S", + symlink_open = "S", + }, + git = { + unstaged = "✗", + staged = "✓", + unmerged = "∦", + renamed = "➜", + untracked = "★", + deleted = "X", + ignored = "◌", + }, }, - }, + }, }, diagnostics = { enable = true, @@ -404,7 +404,7 @@ require("nvim-tree").setup{ }, } -require('trouble').setup{ +require('trouble').setup { icons = false, signs = { hint = "➡️", @@ -443,7 +443,7 @@ vim.keymap.set("n", "mg", function() vim.cmd("MagitOnly") end) -require('possession').setup{ +require('possession').setup { commands = { save = 'SSave', load = 'SLoad', @@ -474,16 +474,16 @@ local telescope_builtins = require('telescope.builtin') local telescope_actions = require('telescope.actions') telescope.load_extension('possession') --- https://github.com/nvim-telescope/telescope.nvim +-- https://github.com/nvim-telescope/telescope.nvim telescope.setup({ - defaults = { - initial_mode = "normal", + defaults = { + initial_mode = "normal", mappings = { - n = { - ["ql"] = telescope_actions.send_selected_to_qflist + telescope_actions.open_qflist, - }, + n = { + ["ql"] = telescope_actions.send_selected_to_qflist + telescope_actions.open_qflist, + }, }, - }, + }, }) local harpoon = require('harpoon') @@ -522,9 +522,9 @@ dap.adapters.lldb = { } dap.adapters.coreclr = { - type = 'executable', - command = '/run/current-system/sw/bin/netcoredbg', - args = {'--interpreter=vscode'} + type = 'executable', + command = '/run/current-system/sw/bin/netcoredbg', + args = { '--interpreter=vscode' } } dap.configurations.rust = { @@ -533,7 +533,7 @@ dap.configurations.rust = { type = 'lldb', request = 'launch', program = function() - return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') end, cwd = '${workspaceFolder}', stopOnEntry = false, @@ -551,4 +551,3 @@ dap.configurations.cs = { end, }, } - diff --git a/nix/darwin/flake.lock b/nix/darwin/flake.lock index 46152cc..df22af2 100644 --- a/nix/darwin/flake.lock +++ b/nix/darwin/flake.lock @@ -36,12 +36,12 @@ }, "locked": { "lastModified": 1, - "narHash": "sha256-cW76KH1n7bNW2wrMQCEg+7eH0lbcMNj+/JBVGG81HlU=", - "path": "/nix/store/5k2s8xq8c6rd1r4fwc3c1qlva0zns0ky-source/nix/base-system", + "narHash": "sha256-R0Q8QvXyxzRLuzBKW5ne9/FAFkv1QpMpqL6upo2dTFI=", + "path": "/nix/store/an6z19qb3z8nnlzdmnqldilbwdjcypxp-source/nix/base-system", "type": "path" }, "original": { - "path": "/nix/store/5k2s8xq8c6rd1r4fwc3c1qlva0zns0ky-source/nix/base-system", + "path": "/nix/store/an6z19qb3z8nnlzdmnqldilbwdjcypxp-source/nix/base-system", "type": "path" } },