Changes
3 changed files (+106/-78)
-
-
@@ -231,50 +231,7 @@ plugins = with pkgs.vimPlugins; [{ plugin = mini-completion; type = "lua"; config = '' require("mini.completion").setup({ window = { info = { border = "single" }, signature = { border = "single" }, }, lsp_completion = { snippet_insert = vim.snippet.expand, }, fallback_action = function() end, }) -- from :h mini-completion local imap_expr = function(lhs, rhs) vim.keymap.set("i", lhs, rhs, { expr = true }) end imap_expr("<Tab>", [[pumvisible() ? "\<C-n>" : "\<Tab>"]]) imap_expr("<S-Tab>", [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]]) local keycode = vim.keycode or function(x) return vim.api.nvim_replace_termcodes(x, true, true, true) end local keys = { ['cr'] = keycode('<CR>'), ['ctrl-y'] = keycode('<C-y>'), ['ctrl-y_cr'] = keycode('<C-y><CR>'), } _G.cr_action = function() if vim.fn.pumvisible() ~= 0 then -- If popup is visible, confirm selected item or add new line otherwise local item_selected = vim.fn.complete_info()['selected'] ~= -1 return item_selected and keys['ctrl-y'] or keys['ctrl-y_cr'] else -- If popup is not visible, use plain `<CR>`. You might want to customize -- according to other plugins. For example, to use 'mini.pairs', replace -- next line with `return require('mini.pairs').cr()` return keys['cr'] end end vim.keymap.set('i', '<CR>', 'v:lua._G.cr_action()', { expr = true }) ''; config = builtins.readFile ./neovim/mini-completion.lua; } { plugin = nvim-lspconfig;
-
@@ -290,40 +247,7 @@'' ] ++ (builtins.map lsToSetupStmt cfg.langs) ++ [ '' -- [LSP] vim.api.nvim_create_autocmd("LspAttach", { group = vim.api.nvim_create_augroup("UserLspConfig", {}), callback = function(ev) vim.keymap.set("n", "K", function() vim.lsp.buf.hover({ border = "rounded" }) end, { buffer = ev.buf }) end, }) -- Rename -- <https://neovim.io/doc/user/lsp.html#vim.lsp.buf.rename()> vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename, {}) -- Highlight a token under a cursor -- <https://neovim.io/doc/user/lsp.html#vim.lsp.buf.document_highlight()> vim.keymap.set("n", "<leader>lh", function() -- Previous highlights need to be manually cleared. vim.lsp.buf.clear_references() vim.lsp.buf.document_highlight() end, {}) -- Go to definition -- <https://neovim.io/doc/user/lsp.html#vim.lsp.buf.definition()> vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition, {}) -- Clear LSP highlights -- <https://neovim.io/doc/user/lsp.html#vim.lsp.buf.clear_references()> vim.keymap.set("n", "<leader>lc", vim.lsp.buf.clear_references, {}) '' ] ++ [ (builtins.readFile ./neovim/lspconfig.lua) ] ); } { plugin = luasnip; }
-
-
-
@@ -0,0 +1,45 @@-- lspconfig.lua -- LSP keybindings -- -- Copyright 2025 Shota FUJI <pockawoooh@gmail.com> -- -- Permission to use, copy, modify, and/or distribute this software for any -- purpose with or without fee is hereby granted. -- -- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -- PERFORMANCE OF THIS SOFTWARE. -- -- SPDX-License-Identifier: 0BSD vim.api.nvim_create_autocmd("LspAttach", { group = vim.api.nvim_create_augroup("UserLspConfig", {}), callback = function(ev) vim.keymap.set("n", "K", function() vim.lsp.buf.hover({ border = "rounded" }) end, { buffer = ev.buf }) end, }) -- Rename -- <https://neovim.io/doc/user/lsp.html#vim.lsp.buf.rename()> vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename, {}) -- Highlight a token under a cursor -- <https://neovim.io/doc/user/lsp.html#vim.lsp.buf.document_highlight()> vim.keymap.set("n", "<leader>lh", function() -- Previous highlights need to be manually cleared. vim.lsp.buf.clear_references() vim.lsp.buf.document_highlight() end, {}) -- Go to definition -- <https://neovim.io/doc/user/lsp.html#vim.lsp.buf.definition()> vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition, {}) -- Clear LSP highlights -- <https://neovim.io/doc/user/lsp.html#vim.lsp.buf.clear_references()> vim.keymap.set("n", "<leader>lc", vim.lsp.buf.clear_references, {})
-
-
-
@@ -0,0 +1,59 @@-- mini-completion.lua -- Setup mini.completion -- -- Copyright 2025 Shota FUJI <pockawoooh@gmail.com> -- -- Permission to use, copy, modify, and/or distribute this software for any -- purpose with or without fee is hereby granted. -- -- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -- PERFORMANCE OF THIS SOFTWARE. -- -- SPDX-License-Identifier: 0BSD require("mini.completion").setup({ window = { info = { border = "single" }, signature = { border = "single" }, }, lsp_completion = { snippet_insert = vim.snippet.expand, }, fallback_action = function() end, }) -- from :h mini-completion local imap_expr = function(lhs, rhs) vim.keymap.set("i", lhs, rhs, { expr = true }) end imap_expr("<Tab>", [[pumvisible() ? "\<C-n>" : "\<Tab>"]]) imap_expr("<S-Tab>", [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]]) local keycode = vim.keycode or function(x) return vim.api.nvim_replace_termcodes(x, true, true, true) end local keys = { ["cr"] = keycode("<CR>"), ["ctrl-y"] = keycode("<C-y>"), ["ctrl-y_cr"] = keycode("<C-y><CR>"), } _G.cr_action = function() if vim.fn.pumvisible() ~= 0 then -- If popup is visible, confirm selected item or add new line otherwise local item_selected = vim.fn.complete_info()["selected"] ~= -1 return item_selected and keys["ctrl-y"] or keys["ctrl-y_cr"] else -- If popup is not visible, use plain `<CR>`. You might want to customize -- according to other plugins. For example, to use 'mini.pairs', replace -- next line with `return require('mini.pairs').cr()` return keys["cr"] end end vim.keymap.set("i", "<CR>", "v:lua._G.cr_action()", { expr = true })
-