diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 702b013..882f7d7 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,46 +1,46 @@ { "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" }, - "catppuccin": { "branch": "main", "commit": "f19cab18ec4dc86d415512c7a572863b2adbcc18" }, + "catppuccin": { "branch": "main", "commit": "8c4125e3c746976ba025dc5d908fa22c6aa09486" }, "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, - "conform.nvim": { "branch": "master", "commit": "b4aab989db276993ea5dcb78872be494ce546521" }, - "fidget.nvim": { "branch": "main", "commit": "3f5475949679953af6d78654db29b944fa826e6a" }, + "conform.nvim": { "branch": "master", "commit": "9fd3d5e0b689ec1bf400c53cbbec72c6fdf24081" }, + "fidget.nvim": { "branch": "main", "commit": "e32b672d8fd343f9d6a76944fedb8c61d7d8111a" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "gitsigns.nvim": { "branch": "main", "commit": "f780609807eca1f783a36a8a31c30a48fbe150c5" }, - "kanagawa.nvim": { "branch": "master", "commit": "debe91547d7fb1eef34ce26a5106f277fbfdd109" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazydev.nvim": { "branch": "main", "commit": "258d2a5ef4a3e3d6d9ba9da72c9725c53e9afcbd" }, - "lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" }, + "gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" }, + "kanagawa.nvim": { "branch": "master", "commit": "aef7f5cec0a40dbe7f3304214850c472e2264b10" }, + "lazy.nvim": { "branch": "main", "commit": "ed4dc336a73c18da6fea6e1cf7ad6e1b76d281eb" }, + "lazydev.nvim": { "branch": "main", "commit": "01bc2aacd51cf9021eb19d048e70ce3dd09f7f93" }, + "lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" }, "luvit-meta": { "branch": "main", "commit": "0ea4ff636c5bb559ffa78108561d0976f4de9682" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "a1067cf84b4ff81b66d2bf4d01f4cbdb5de40bd0" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "1d77bd86e1c3eaa777010c95dad455b83823f247" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, - "mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" }, - "mini.icons": { "branch": "main", "commit": "f9a177c11daa7829389b7b6eaaec8b8a5c47052d" }, + "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, + "mini.icons": { "branch": "main", "commit": "284798619aed9f4c1ac1b9417b9a5e3b4b85ef3a" }, "mini.indentscope": { "branch": "main", "commit": "e9fa0714fc753e1e737940577904e553ee340903" }, - "mini.nvim": { "branch": "main", "commit": "256d35c9e24c9cf5f5da568e121e988c6ceb1e3f" }, - "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, - "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, - "nvim-lint": { "branch": "master", "commit": "0864f81c681e15d9bdc1156fe3a17bd07db5a3ed" }, - "nvim-lspconfig": { "branch": "master", "commit": "b3cce1419ca67871ae782b3e529652f8a016f0de" }, + "mini.nvim": { "branch": "main", "commit": "d1a91582bf2d16026ae84292874c70fb2d0ffe42" }, + "nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" }, + "nvim-cmp": { "branch": "main", "commit": "a7bcf1d88069fc67c9ace8a62ba480b8fe879025" }, + "nvim-lint": { "branch": "master", "commit": "9da1fb942dd0668d5182f9c8dee801b9c190e2bb" }, + "nvim-lspconfig": { "branch": "master", "commit": "a9b2fb560c4ab22c10728fd5149dbd7b62aa4f69" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "a9742cbc1f95db9eaf3293bf8cd0622ca36542bb" }, "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, - "nvim-web-devicons": { "branch": "master", "commit": "6e51ca170563330e063720449c21f43e27ca0bc1" }, - "oil.nvim": { "branch": "master", "commit": "07f80ad645895af849a597d1cac897059d89b686" }, + "nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" }, + "oil.nvim": { "branch": "master", "commit": "7e1cd7703ff2924d7038476dcbc04b950203b902" }, "onedark.nvim": { "branch": "master", "commit": "de495fabe171d48aed5525f002d14414efcecbb2" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, - "render-markdown.nvim": { "branch": "main", "commit": "9ab9dade85d8c7d411cc89b592028da3d1b7955a" }, + "render-markdown.nvim": { "branch": "main", "commit": "bfd67f1402b97ac619cb538f4bbaed12a7fa89aa" }, "rose-pine": { "branch": "main", "commit": "72a04c4065345b51b56aed4859ea1d884f734097" }, "solarized-osaka.nvim": { "branch": "main", "commit": "f796014c14b1910e08d42cc2077fef34f08e0295" }, "telescope-file-browser.nvim": { "branch": "master", "commit": "3610dc7dc91f06aa98b11dca5cc30dfa98626b7e" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "todo-comments.nvim": { "branch": "main", "commit": "19d461ddd543e938eb22505fb03fa878800270b6" }, "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, - "tokyonight.nvim": { "branch": "main", "commit": "14fd5ff7f84027064724ec3157fe903199e77ded" }, - "undotree": { "branch": "master", "commit": "fe9a9d0645f0f5532360b5e5f5c550d7bb4f1869" }, + "tokyonight.nvim": { "branch": "main", "commit": "4fe1b0c44f5d6ee769cdfbdffc7ccb703f53feda" }, + "undotree": { "branch": "master", "commit": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f" }, "vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" }, - "which-key.nvim": { "branch": "main", "commit": "904308e6885bbb7b60714c80ab3daf0c071c1492" } + "which-key.nvim": { "branch": "main", "commit": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" } } diff --git a/nvim/lua/juancwu/plugins/autocomplete.lua b/nvim/lua/juancwu/plugins/autocomplete.lua index 0512557..bfa446a 100644 --- a/nvim/lua/juancwu/plugins/autocomplete.lua +++ b/nvim/lua/juancwu/plugins/autocomplete.lua @@ -1,139 +1,138 @@ --- return { -- Autocompletion --- "hrsh7th/nvim-cmp", --- event = "InsertEnter", --- dependencies = { --- -- Snippet Engine & its associated nvim-cmp source --- { --- "L3MON4D3/LuaSnip", --- build = (function() --- -- Build Step is needed for regex support in snippets. --- -- This step is not supported in many windows environments. --- -- Remove the below condition to re-enable on windows. --- if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then --- return --- end --- return "make install_jsregexp" --- end)(), --- dependencies = { --- { --- "rafamadriz/friendly-snippets", --- config = function() --- require("luasnip.loaders.from_vscode").lazy_load() --- end, --- }, --- }, --- }, --- "saadparwaiz1/cmp_luasnip", --- "hrsh7th/cmp-nvim-lsp", --- "hrsh7th/cmp-path", --- }, --- config = function() --- -- See `:help cmp` --- local cmp = require("cmp") --- local luasnip = require("luasnip") --- luasnip.config.setup({}) --- --- cmp.setup({ --- snippet = { --- expand = function(args) --- luasnip.lsp_expand(args.body) --- end, --- }, --- completion = { completeopt = "menu,menuone,noinsert" }, --- --- -- For an understanding of why these mappings were --- -- chosen, you will need to read `:help ins-completion` --- -- --- -- No, but seriously. Please read `:help ins-completion`, it is really good! --- mapping = cmp.mapping.preset.insert({ --- -- Select the [n]ext item --- [""] = cmp.mapping.select_next_item(), --- -- Select the [p]revious item --- [""] = cmp.mapping.select_prev_item(), --- --- -- Scroll the documentation window [b]ack / [f]orward --- [""] = cmp.mapping.scroll_docs(-4), --- [""] = cmp.mapping.scroll_docs(4), --- --- -- Accept ([y]es) the completion. --- -- This will auto-import if your LSP supports it. --- -- This will expand snippets if the LSP sent a snippet. --- [""] = cmp.mapping.confirm({ select = true }), --- --- -- Manually trigger a completion from nvim-cmp. --- -- Generally you don't need this, because nvim-cmp will display --- -- completions whenever it has completion options available. --- [""] = cmp.mapping.complete({}), --- --- -- will move you to the right of each of the expansion locations. --- -- is similar, except moving you backwards. --- [""] = cmp.mapping(function() --- if luasnip.expand_or_locally_jumpable() then --- luasnip.expand_or_jump() --- end --- end, { "i", "s" }), --- [""] = cmp.mapping(function() --- if luasnip.locally_jumpable(-1) then --- luasnip.jump(-1) --- end --- end, { "i", "s" }), --- }), --- sources = { --- { --- name = "lazydev", --- -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it --- group_index = 0, --- }, --- { name = "nvim_lsp" }, --- { name = "luasnip" }, --- { name = "path" }, --- }, --- }) --- end, --- } --- - -return { - "saghen/blink.cmp", - -- optional: provides snippets for the snippet source - dependencies = { "rafamadriz/friendly-snippets" }, - version = "1.*", - - ---@module 'blink.cmp' - ---@type blink.cmp.Config - opts = { - -- C-space: Open menu or open docs if already open - -- C-n/C-p or Up/Down: Select next/previous item - -- C-e: Hide menu - -- C-k: Toggle signature help (if signature.enabled = true) - -- - -- See :h blink-cmp-config-keymap for defining your own keymap - keymap = { preset = "enter" }, - signature = { - enabled = true, +return { -- Autocompletion + "hrsh7th/nvim-cmp", + event = "InsertEnter", + dependencies = { + -- Snippet Engine & its associated nvim-cmp source + { + "L3MON4D3/LuaSnip", + build = (function() + -- Build Step is needed for regex support in snippets. + -- This step is not supported in many windows environments. + -- Remove the below condition to re-enable on windows. + if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then + return + end + return "make install_jsregexp" + end)(), + dependencies = { + { + "rafamadriz/friendly-snippets", + config = function() + require("luasnip.loaders.from_vscode").lazy_load() + end, + }, + }, }, - - appearance = { - -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' - -- Adjusts spacing to ensure icons are aligned - nerd_font_variant = "mono", - }, - - -- (Default) Only show the documentation popup when manually triggered - completion = { documentation = { auto_show = false } }, - - -- Default list of enabled providers defined so that you can extend it - -- elsewhere in your config, without redefining it, due to `opts_extend` - sources = { - default = { "lsp", "path", "snippets", "buffer" }, - }, - - -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance - -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation, - -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"` - -- - -- See the fuzzy documentation for more information - fuzzy = { implementation = "prefer_rust_with_warning" }, + "saadparwaiz1/cmp_luasnip", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-path", }, - opts_extend = { "sources.default" }, + config = function() + -- See `:help cmp` + local cmp = require("cmp") + local luasnip = require("luasnip") + luasnip.config.setup({}) + + cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + completion = { completeopt = "menu,menuone,noinsert" }, + + -- For an understanding of why these mappings were + -- chosen, you will need to read `:help ins-completion` + -- + -- No, but seriously. Please read `:help ins-completion`, it is really good! + mapping = cmp.mapping.preset.insert({ + -- Select the [n]ext item + [""] = cmp.mapping.select_next_item(), + -- Select the [p]revious item + [""] = cmp.mapping.select_prev_item(), + + -- Scroll the documentation window [b]ack / [f]orward + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + + -- Accept ([y]es) the completion. + -- This will auto-import if your LSP supports it. + -- This will expand snippets if the LSP sent a snippet. + [""] = cmp.mapping.confirm({ select = true }), + + -- Manually trigger a completion from nvim-cmp. + -- Generally you don't need this, because nvim-cmp will display + -- completions whenever it has completion options available. + [""] = cmp.mapping.complete({}), + + -- will move you to the right of each of the expansion locations. + -- is similar, except moving you backwards. + [""] = cmp.mapping(function() + if luasnip.expand_or_locally_jumpable() then + luasnip.expand_or_jump() + end + end, { "i", "s" }), + [""] = cmp.mapping(function() + if luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + end + end, { "i", "s" }), + }), + sources = { + { + name = "lazydev", + -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it + group_index = 0, + }, + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "path" }, + }, + }) + end, } + +-- return { +-- "saghen/blink.cmp", +-- -- optional: provides snippets for the snippet source +-- dependencies = { "rafamadriz/friendly-snippets" }, +-- version = "1.*", +-- +-- ---@module 'blink.cmp' +-- ---@type blink.cmp.Config +-- opts = { +-- -- C-space: Open menu or open docs if already open +-- -- C-n/C-p or Up/Down: Select next/previous item +-- -- C-e: Hide menu +-- -- C-k: Toggle signature help (if signature.enabled = true) +-- -- +-- -- See :h blink-cmp-config-keymap for defining your own keymap +-- keymap = { preset = "enter" }, +-- signature = { +-- enabled = true, +-- }, +-- +-- appearance = { +-- -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' +-- -- Adjusts spacing to ensure icons are aligned +-- nerd_font_variant = "mono", +-- }, +-- +-- -- (Default) Only show the documentation popup when manually triggered +-- completion = { documentation = { auto_show = false } }, +-- +-- -- Default list of enabled providers defined so that you can extend it +-- -- elsewhere in your config, without redefining it, due to `opts_extend` +-- sources = { +-- default = { "lsp", "path", "snippets", "buffer" }, +-- }, +-- +-- -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance +-- -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation, +-- -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"` +-- -- +-- -- See the fuzzy documentation for more information +-- fuzzy = { implementation = "prefer_rust_with_warning" }, +-- }, +-- opts_extend = { "sources.default" }, +-- } diff --git a/nvim/lua/juancwu/plugins/conform.lua b/nvim/lua/juancwu/plugins/conform.lua index 4d398eb..e270142 100644 --- a/nvim/lua/juancwu/plugins/conform.lua +++ b/nvim/lua/juancwu/plugins/conform.lua @@ -45,6 +45,18 @@ return { "--stdin", }, }, + ["biome"] = { + command = "biome", + args = { + "format", + "--stdin-file-path", + "$FILENAME", + "--indent-style", + "space", + "--indent-width", + "4", + }, + }, }, format_on_save = function(bufnr) if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then diff --git a/nvim/lua/juancwu/plugins/lsp.lua b/nvim/lua/juancwu/plugins/lsp.lua index d290bb3..3de9799 100644 --- a/nvim/lua/juancwu/plugins/lsp.lua +++ b/nvim/lua/juancwu/plugins/lsp.lua @@ -94,6 +94,29 @@ return { }, }) + -- Setup Vue LSP + local vue_language_server_path = vim.fn.stdpath("data") + .. "/mason/packages/vue-language-server/node_modules/@vue/language-server" + local vue_plugin = { + name = "@vue/typescript-plugin", + location = vue_language_server_path, + languages = { "vue" }, + configNamespace = "typescript", + } + vim.lsp.config("vtsls", { + settings = { + vtsls = { + tsserver = { + globalPlugins = { + vue_plugin, + }, + }, + }, + }, + filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" }, + }) + vim.lsp.enable("vue_ls") + local servers = { ts_ls = {}, gopls = {}, diff --git a/nvim/lua/juancwu/plugins/nvim-lint.lua b/nvim/lua/juancwu/plugins/nvim-lint.lua index 56bc7c5..e2846fd 100644 --- a/nvim/lua/juancwu/plugins/nvim-lint.lua +++ b/nvim/lua/juancwu/plugins/nvim-lint.lua @@ -36,12 +36,16 @@ end local function get_linter() local filetype = vim.bo.filetype local available_linters = linters_by_ft[filetype] or {} - local linter = find_first_config() - if linter then - if vim.tbl_contains(available_linters, linter) then - vim.g.current_linter = linter - return linter + if vim.tbl_isempty(available_linters) then + return nil + end + + local linter_from_config = find_first_config() + if linter_from_config and vim.tbl_contains(available_linters, linter_from_config) then + if vim.tbl_contains(available_linters, linter_from_config) then + vim.g.current_linter = linter_from_config + return linter_from_config end end