diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 1d63b43..c4041aa 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,30 +1,30 @@ { - "codeium.nvim": { "branch": "main", "commit": "ebed4f7cc8a18184d8332d421ca10bed5f7d59a1" }, - "conform.nvim": { "branch": "master", "commit": "363243c03102a531a8203311d4f2ae704c620d9b" }, - "deadcolumn.nvim": { "branch": "master", "commit": "897c905aef1a268ce4cc507d5cce048ed808fa7a" }, - "git-messenger.vim": { "branch": "master", "commit": "edc603d4cda7894a743e383e16c638e206d03148" }, - "gitsigns.nvim": { "branch": "main", "commit": "9b36d497495436c135659902054ee637e0ba6021" }, - "indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" }, - "lazy.nvim": { "branch": "main", "commit": "7527af40ddd4a93a02911be570b32609b9d4ea53" }, - "lsp_signature.nvim": { "branch": "master", "commit": "5b64964ed02098c85613ee3d20f96bed1dfb64cc" }, - "lspsaga.nvim": { "branch": "main", "commit": "da8a66c53241876bba140980469876db3a183604" }, - "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "f75e877f5266e87523eb5a18fcde2081820d087b" }, - "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, - "mini.icons": { "branch": "main", "commit": "ec61af6e606fc89ee3b1d8f2f20166a3ca917a36" }, - "nord.nvim": { "branch": "master", "commit": "80c1e5321505aeb22b7a9f23eb82f1e193c12470" }, - "nvim-cmp": { "branch": "main", "commit": "12509903a5723a876abd65953109f926f4634c30" }, - "nvim-lspconfig": { "branch": "master", "commit": "f98fa715acc975c2dd5fb5ba7ceddeb1cc725ad2" }, - "nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" }, - "nvim-tree.lua": { "branch": "master", "commit": "d05881f65f0a653db8d830ccc4d2e07d6a720628" }, - "nvim-treesitter": { "branch": "master", "commit": "73b68cb943cd6718bdee318a70874620070255d4" }, - "nvim-web-devicons": { "branch": "master", "commit": "402377242b04be3f4f0f3720bd952df86e946c30" }, - "oil.nvim": { "branch": "master", "commit": "add50252b5e9147c0a09d36480d418c7e2737472" }, - "plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" }, - "refactoring.nvim": { "branch": "master", "commit": "2db6d378e873de31d18ade549c2edba64ff1c2e3" }, + "codeium.nvim": { "branch": "main", "commit": "821b570b526dbb05b57aa4ded578b709a704a38a" }, + "conform.nvim": { "branch": "master", "commit": "b529dd4897c85c3188cc787084089a9d55843093" }, + "deadcolumn.nvim": { "branch": "master", "commit": "6a144a32fd847a998095d2494f152e405c6ae7cb" }, + "git-messenger.vim": { "branch": "master", "commit": "fd124457378a295a5d1036af4954b35d6b807385" }, + "gitsigns.nvim": { "branch": "main", "commit": "d0f90ef51d4be86b824b012ec52ed715b5622e51" }, + "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lsp_signature.nvim": { "branch": "master", "commit": "d50e40b3bf9324128e71b0b7e589765ce89466d2" }, + "lspsaga.nvim": { "branch": "main", "commit": "920b1253e1a26732e53fac78412f6da7f674671d" }, + "lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "c2682b0d9732bf52cbc34862056f143e71dc4a6d" }, + "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, + "mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" }, + "nord.nvim": { "branch": "main", "commit": "57fb474a1d628bdf9d1e7964719464ed5675d7c7" }, + "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, + "nvim-lspconfig": { "branch": "master", "commit": "8adb3b5938f6074a1bcc36d3c3916f497d2e8ec4" }, + "nvim-surround": { "branch": "main", "commit": "8dd9150ca7eae5683660ea20cec86edcd5ca4046" }, + "nvim-tree.lua": { "branch": "master", "commit": "1c733e8c1957dc67f47580fe9c458a13b5612d5b" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, + "oil.nvim": { "branch": "master", "commit": "5b6068aad7d2057dd399fac73b7fb2cdf23ccd6e" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "refactoring.nvim": { "branch": "master", "commit": "9cd0186ffe76fe6abc64c0aafb775c8f776ab5ee" }, "stcursorword": { "branch": "main", "commit": "f6810ed5001eeee6061fdce77b292a5565823ded" }, "telescope-menufacture": { "branch": "main", "commit": "751aca3f022039874790024b3cf25d643e335612" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, - "which-key.nvim": { "branch": "main", "commit": "0e76a87ac51772569aec678dc74baa8e2a86100c" } + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } } diff --git a/nvim/lua/config/init.lua b/nvim/lua/config/init.lua index c09ad47..74db3ca 100644 --- a/nvim/lua/config/init.lua +++ b/nvim/lua/config/init.lua @@ -1,3 +1,2 @@ require('config.lazy') -require('config.settings') -require('config.keybinds') +require('config.rest') diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua index 395468f..3946b5d 100644 --- a/nvim/lua/config/lazy.lua +++ b/nvim/lua/config/lazy.lua @@ -32,4 +32,9 @@ require("lazy").setup({ install = { colorscheme = { "nord" } }, -- automatically check for plugin updates checker = { enabled = false }, + + change_detection = { + enabled = false, + notify = false + } }) diff --git a/nvim/lua/config/rest.lua b/nvim/lua/config/rest.lua new file mode 100644 index 0000000..92c5017 --- /dev/null +++ b/nvim/lua/config/rest.lua @@ -0,0 +1,2 @@ +require('config.settings') +require('config.keybinds') diff --git a/nvim/lua/config/settings.lua b/nvim/lua/config/settings.lua index c0adae6..c2d8d8a 100644 --- a/nvim/lua/config/settings.lua +++ b/nvim/lua/config/settings.lua @@ -8,24 +8,42 @@ vim.o.tabstop = 4 vim.o.shiftwidth = 4 -- Clipboard +local function paste() + return { + vim.fn.split(vim.fn.getreg(""), "\n"), + vim.fn.getregtype(""), + } +end + vim.o.clipboard = "unnamedplus" -vim.api.nvim_exec( - [[ - augroup YankHighlight - autocmd! - autocmd TextYankPost * silent! lua vim.highlight.on_yank() - augroup end - ]], - false -) +-- vim.g.clipboard = { +-- name = "OSC 52", +-- copy = { +-- ["+"] = require("vim.ui.clipboard.osc52").copy("+"), +-- ["*"] = require("vim.ui.clipboard.osc52").copy("*"), +-- }, +-- paste = { +-- ["+"] = paste, +-- ["*"] = paste, +-- }, +-- } +-- vim.api.nvim_exec( +-- [[ +-- augroup YankHighlight +-- autocmd! +-- autocmd TextYankPost * silent! lua vim.highlight.on_yank() +-- augroup end +-- ]], +-- false +-- ) -- Restore cursor local restore_cursor_augroup = vim.api.nvim_create_augroup("restore_cursor_shape_on_exit", { clear = true }) vim.api.nvim_create_autocmd({ "VimLeave" }, { - group = restore_cursor_augroup, - desc = "restore the cursor shape on exit of neovim", - command = "set guicursor=a:ver20", + group = restore_cursor_augroup, + desc = "restore the cursor shape on exit of neovim", + command = "set guicursor=a:ver20", }) -- Horizontal Split Line diff --git a/nvim/lua/plugins/codeium.lua b/nvim/lua/plugins/codeium.lua deleted file mode 100644 index 754bcf1..0000000 --- a/nvim/lua/plugins/codeium.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - "Exafunction/codeium.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - "hrsh7th/nvim-cmp", - }, - config = function() - require("codeium").setup({ - enable_cmp_source = false, - virtual_text = { - enabled = true, - } - }) - end -} diff --git a/nvim/lua/plugins/git-messenger.lua b/nvim/lua/plugins/git-messenger.lua index fc56862..bf617ad 100644 --- a/nvim/lua/plugins/git-messenger.lua +++ b/nvim/lua/plugins/git-messenger.lua @@ -3,5 +3,5 @@ return { cmd = { 'GitMessenger' }, keys = { { "gm", "GitMessenger", desc = "[G]it [M]essenger" }, - } + }, } diff --git a/nvim/lua/plugins/lsp.lua b/nvim/lua/plugins/lsp.lua index 8d8af4d..dd05688 100644 --- a/nvim/lua/plugins/lsp.lua +++ b/nvim/lua/plugins/lsp.lua @@ -1,171 +1,181 @@ return { - { - "williamboman/mason.nvim", - cmd = "Mason", - }, - { - "williamboman/mason-lspconfig.nvim", - event = { "BufReadPre", "BufNewFile" }, - config = function() - require("mason").setup() + { + "williamboman/mason.nvim", + cmd = "Mason", + }, + { + "williamboman/mason-lspconfig.nvim", + event = { "BufReadPre", "BufNewFile" }, + config = function() + require("mason").setup() - require("mason-lspconfig").setup_handlers({ - -- The first entry (without a key) will be the default handler - -- and will be called for each installed server that doesn't have - -- a dedicated handler. - function(server_name) -- default handler (optional) - require("lspconfig")[server_name].setup({}) - end, - -- Next, you can provide a dedicated handler for specific servers. - -- For example, a handler override for the `rust_analyzer`: - -- ["rust_analyzer"] = function () - -- require("rust-tools").setup {} - -- end - }) - end, - }, - { - "ray-x/lsp_signature.nvim", - event = "VeryLazy", - opts = {}, - config = function(_, opts) - require 'lsp_signature'.setup(opts) - - vim.api.nvim_create_autocmd("LspAttach", { - callback = function(args) - local bufnr = args.buf - local client = vim.lsp.get_client_by_id(args.data.client_id) - if vim.tbl_contains({ 'null-ls' }, client.name) then -- blacklist lsp - return - end - require("lsp_signature").on_attach({ - -- ... setup options here ... - }, bufnr) - end, - }) - end - }, - { - "neovim/nvim-lspconfig", - }, - { - "stevearc/conform.nvim", - event = { "BufWritePre" }, - cmd = { "ConformInfo" }, - opts = function() - local mason_reg = require("mason-registry") - - local formatters = {} - local formatters_by_ft = {} - - -- add diff langue vs filetype - local keymap = { - ["c++"] = "cpp", - ["c#"] = "cs", - } - - -- add dif conform vs mason - local name_map = { - ["cmakelang"] = "cmake_format", - ["deno"] = "deno_fmt", - ["elm-format"] = "elm_format", - ["gdtoolkit"] = "gdformat", - ["nixpkgs-fmt"] = "nixpkgs_fmt", - ["opa"] = "opa_fmt", - ["php-cs-fixer"] = "php_cs_fixer", - ["ruff"] = "ruff_format", - ["sql-formatter"] = "sql_formatter", - ["xmlformatter"] = "xmlformat", - } - - for _, pkg in pairs(mason_reg.get_installed_packages()) do - for _, type in pairs(pkg.spec.categories) do - -- only act upon a formatter - if type == "Formatter" then - -- if formatter doesn't have a builtin config, create our own from a generic template - if not require("conform").get_formatter_config(pkg.spec.name) then - -- the key of the entry to this table - -- is the name of the bare executable - -- the actual value may not be the absolute path - -- in some cases - local bin = next(pkg.spec.bin) - -- this should be replaced by a function - -- that quieries the configured mason install path - local prefix = vim.fn.stdpath("data") .. "/mason/bin/" - - formatters[pkg.spec.name] = { - command = prefix .. bin, - args = { "$FILENAME" }, - stdin = true, - require_cwd = false, - } - end - - -- finally add the formatter to it's compatible filetype(s) - for _, ft in pairs(pkg.spec.languages) do - local ftl = string.lower(ft) - local ready = mason_reg.get_package(pkg.spec.name):is_installed() - if ready then - if keymap[ftl] ~= nil then - ftl = keymap[ftl] - end - if name_map[pkg.spec.name] ~= nil then - pkg.spec.name = name_map[pkg.spec.name] - end - formatters_by_ft[ftl] = formatters_by_ft[ftl] or {} - table.insert(formatters_by_ft[ftl], pkg.spec.name) - end - end - end - end + if not vim.g.pre_load then + require("mason-lspconfig").setup({ + -- The first entry (without a key) will be the default handler + -- and will be called for each installed server that doesn't have + -- a dedicated handler. + -- function(server_name) -- default handler (optional) + -- require("lspconfig")[server_name].setup({}) + -- end, + -- Next, you can provide a dedicated handler for specific servers. + -- For example, a handler override for the `rust_analyzer`: + -- ["rust_analyzer"] = function () + -- require("rust-tools").setup {} + -- end + }) end + end, + }, + { + "ray-x/lsp_signature.nvim", + event = "VeryLazy", + opts = {}, + config = function(_, opts) + require("lsp_signature").setup(opts) - return { - formatters = formatters, - formatters_by_ft = formatters_by_ft, + vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local bufnr = args.buf + local client = vim.lsp.get_client_by_id(args.data.client_id) + if vim.tbl_contains({ "null-ls" }, client.name) then -- blacklist lsp + return + end + require("lsp_signature").on_attach({ + -- ... setup options here ... + }, bufnr) + end, + }) + end, + }, + { + "neovim/nvim-lspconfig", + }, + { + "stevearc/conform.nvim", + event = { "BufWritePre" }, + cmd = { "ConformInfo" }, + opts = function() + local mason_reg = require("mason-registry") + + local formatters = {} + local formatters_by_ft = {} + + -- add diff langue vs filetype + local keymap = { + ["c++"] = "cpp", + ["c#"] = "cs", + } + + -- add dif conform vs mason + local name_map = { + ["cmakelang"] = "cmake_format", + ["deno"] = "deno_fmt", + ["elm-format"] = "elm_format", + ["gdtoolkit"] = "gdformat", + ["nixpkgs-fmt"] = "nixpkgs_fmt", + ["opa"] = "opa_fmt", + ["php-cs-fixer"] = "php_cs_fixer", + ["ruff"] = "ruff_format", + ["sql-formatter"] = "sql_formatter", + ["xmlformatter"] = "xmlformat", + } + + for _, pkg in pairs(mason_reg.get_installed_packages()) do + for _, type in pairs(pkg.spec.categories) do + -- only act upon a formatter + if type == "Formatter" then + -- if formatter doesn't have a builtin config, create our own from a generic template + if not require("conform").get_formatter_config(pkg.spec.name) then + -- the key of the entry to this table + -- is the name of the bare executable + -- the actual value may not be the absolute path + -- in some cases + local bin = next(pkg.spec.bin) + -- this should be replaced by a function + -- that quieries the configured mason install path + local prefix = vim.fn.stdpath("data") .. "/mason/bin/" + + formatters[pkg.spec.name] = { + command = prefix .. bin, + args = { "$FILENAME" }, + stdin = true, + require_cwd = false, + } + end + + -- finally add the formatter to it's compatible filetype(s) + for _, ft in pairs(pkg.spec.languages) do + local ftl = string.lower(ft) + local ready = mason_reg.get_package(pkg.spec.name):is_installed() + if ready then + if keymap[ftl] ~= nil then + ftl = keymap[ftl] + end + if name_map[pkg.spec.name] ~= nil then + pkg.spec.name = name_map[pkg.spec.name] + end + formatters_by_ft[ftl] = formatters_by_ft[ftl] or {} + table.insert(formatters_by_ft[ftl], pkg.spec.name) + end + end + end + end + end + + return { + formatters = formatters, + formatters_by_ft = formatters_by_ft, + } + end, + keys = { + { + "fm", + function() + require("conform").format({ async = true }) + end, + mode = "", + desc = "Format buffer", + }, + -- { + -- "ca", + -- function() + -- vim.lsp.buf.code_action() + -- end, + -- mode = "", + -- desc = "Code Action", + -- }, + { + "rn", + function() + vim.lsp.buf.rename() + end, + mode = "", + desc = "[R]e[N]ame", + }, + { + "gd", + function() + vim.lsp.buf.definition() + end, + mode = "", + desc = "[G]oto [D]efinition", + }, + { + "gD", + function() + vim.lsp.buf.declaration() + end, + mode = "", + desc = "[G]oto [D]eclaration", + }, + { + "ih", + function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({0}),{0}) + end, + mode = "", + desc = "Toggle [I]nlay [H]ints" } - end, - keys = { - { - "fm", - function() - require("conform").format({ async = true }) - end, - mode = "", - desc = "Format buffer", - }, - { - "ca", - function() - vim.lsp.buf.code_action() - end, - mode = "", - desc = "Code Action", - }, - { - "rn", - function() - vim.lsp.buf.rename() - end, - mode = "", - desc = "[R]e[N]ame", - }, - { - "gd", - function() - vim.lsp.buf.definition() - end, - mode = "", - desc = "[G]oto [D]efinition", - }, - { - "gD", - function() - vim.lsp.buf.declaration() - end, - mode = "", - desc = "[G]oto [D]eclaration", - }, - }, - }, + }, + }, } diff --git a/nvim/lua/plugins/lspsaga.lua b/nvim/lua/plugins/lspsaga.lua index 06b145c..da37ff7 100644 --- a/nvim/lua/plugins/lspsaga.lua +++ b/nvim/lua/plugins/lspsaga.lua @@ -6,7 +6,7 @@ return { code_action = '⋯', expand = '+', collapse = '-' - } + }, }) end, dependencies = { @@ -18,5 +18,9 @@ return { { "fi", "Lspsaga finder", desc = "LSP Find References" }, { "ci", "Lspsaga incoming_calls", desc = "Incoming Calls" }, { "co", "Lspsaga outgoing_calls", desc = "Outgoing Calls" }, + { "ca", "Lspsaga code_action", desc = "[C]ode [A]ction" }, + { "cd", "Lspsaga diagnostic_jump_next", desc = "[C]ode [D]iagnostics Next" }, + { "cD", "Lspsaga diagnostic_jump_prev", desc = "[C]ode [D]iagnostics Prev" }, + { "cr", "Lspsaga finder", desc = "[C]ode [R]eferences" }, } } diff --git a/nvim/lua/plugins/nord.lua b/nvim/lua/plugins/nord.lua index 8671257..78f95fc 100644 --- a/nvim/lua/plugins/nord.lua +++ b/nvim/lua/plugins/nord.lua @@ -1,6 +1,9 @@ return { - 'shaunsingh/nord.nvim', - config = function() - vim.cmd [[colorscheme nord]] - end + "gbprod/nord.nvim", + lazy = false, + priority = 1000, + config = function() + require("nord").setup({}) + vim.cmd.colorscheme("nord") + end, } diff --git a/nvim/lua/plugins/nvim-tree.lua b/nvim/lua/plugins/nvim-tree.lua index 5e82d2c..90bdac4 100644 --- a/nvim/lua/plugins/nvim-tree.lua +++ b/nvim/lua/plugins/nvim-tree.lua @@ -4,7 +4,7 @@ return { require("nvim-tree").setup() end, keys = { - { "", "NvimTreeToggle", desc = "Toggle [N]vimTree" }, + { "", "NvimTreeFindFileToggle", desc = "Toggle [N]vimTree" }, { "nr", "NvimTreeRefresh", desc = "[N]vimTree [R]efresh" }, } } diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua index 924e045..ba1f4ee 100644 --- a/nvim/lua/plugins/telescope.lua +++ b/nvim/lua/plugins/telescope.lua @@ -10,6 +10,7 @@ return { local builtin = require("telescope.builtin") vim.keymap.set("n", "sf", require('telescope').extensions.menufacture.find_files, { desc = "[S]earch [F]iles" }) vim.keymap.set("n", "sg", require('telescope').extensions.menufacture.live_grep, { desc = "[S]earch [G]rep" }) + vim.keymap.set("n", "sw", require('telescope').extensions.menufacture.grep_string, { desc = "[S]earch [W]ord under cursor" }) vim.keymap.set("n", "/", function() -- You can pass additional configuration to Telescope to change the theme, layout, etc. diff --git a/nvim/lua/plugins/windsurf.lua b/nvim/lua/plugins/windsurf.lua new file mode 100644 index 0000000..0c385b1 --- /dev/null +++ b/nvim/lua/plugins/windsurf.lua @@ -0,0 +1,16 @@ +return { + "Exafunction/codeium.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + "hrsh7th/nvim-cmp", + }, + opts = { + enable_cmp_source = false, + virtual_text = { + enabled = true, + }, + api = { + host = "codingbuddy.onprem.gic.ericsson.se", + }, + }, +}