diff options
| author | bh <qn+git@excalibur.computer> | 2025-11-19 14:50:22 +0800 |
|---|---|---|
| committer | bh <qn+git@excalibur.computer> | 2025-11-19 14:50:22 +0800 |
| commit | 5e80cc2081ec616c828a0abe82d246c4dc0a4334 (patch) | |
| tree | 3805b57cdf59e0fa4dafb4c998f82644da19fb38 | |
| parent | f3d3e0d5dc32bb5c00a6106aee9027decd345e63 (diff) | |
Fixed snippets and also a little refactoring on the theme
| -rw-r--r-- | init.lua | 7 | ||||
| -rw-r--r-- | lazy-lock.json | 11 | ||||
| -rw-r--r-- | lua/config/.bak/.luasnip.bak.bak | 56 | ||||
| -rw-r--r-- | lua/config/completion.lua | 59 | ||||
| -rw-r--r-- | lua/config/luasnip.lua | 67 | ||||
| -rw-r--r-- | lua/config/snippets.lua | 19 |
6 files changed, 157 insertions, 62 deletions
@@ -28,10 +28,14 @@ require("config.lazy") -- require('config/greeter') +-- require("luasnip.loaders.from_vscode").lazy_load() +-- require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/config/snippets.lua" }) + -------------------------------------------------------- -- 🪶 Theme -------------------------------------------------------- +local dark_teal = "#003636" vim.cmd("colorscheme default") -------------------------------------------------------- @@ -115,7 +119,8 @@ vim.api.nvim_set_hl(0, "Normal", { ctermbg = "none", bg = "none" }) -- Colors (Foreground and Background) -- Neovide uses Neovim's colorscheme, so we’ll override via highlight groups -vim.api.nvim_set_hl(0, "Normal", { fg = "#8affff", bg = "#003636" }) +-- vim.api.nvim_set_hl(0, "Normal", { fg = "#8affff", bg = "#003636" }) +vim.api.nvim_set_hl(0, "Normal", { fg = "#8affff", bg = "none", ctermbg = "none" }) vim.api.nvim_set_hl(0, "NormalFloat", { fg = "#8affff", bg = "#003636" }) -- Set font and size diff --git a/lazy-lock.json b/lazy-lock.json index ed685d0..06e695d 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -2,16 +2,21 @@ "LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" }, "barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" }, "ccc.nvim": { "branch": "main", "commit": "9d1a256e006decc574789dfc7d628ca11644d4c2" }, + "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" }, + "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "darkplus.nvim": { "branch": "main", "commit": "6101ffce60682208e9e076710299d189ce11c40d" }, "dashboard-nvim": { "branch": "master", "commit": "0775e567b6c0be96d01a61795f7b64c1758262f6" }, - "gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "gitsigns.nvim": { "branch": "main", "commit": "cdafc320f03f2572c40ab93a4eecb733d4016d07" }, "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, + "lspkind.nvim": { "branch": "master", "commit": "3ddd1b4edefa425fda5a9f95a4f25578727c0bb3" }, "lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" }, "neoscroll.nvim": { "branch": "master", "commit": "f957373912e88579e26fdaea4735450ff2ef5c9c" }, "nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" }, - "nvim-cmp": { "branch": "main", "commit": "106c4bcc053a5da783bf4a9d907b6f22485c2ea0" }, - "nvim-lspconfig": { "branch": "master", "commit": "b34fbdffdcb6295c7a25df6ba375452a2e73c32e" }, + "nvim-cmp": { "branch": "main", "commit": "d97d85e01339f01b842e6ec1502f639b080cb0fc" }, + "nvim-lspconfig": { "branch": "master", "commit": "d4f77e7a9a4b910622a0bc225e482c4c808e4099" }, "nvim-surround": { "branch": "main", "commit": "fcfa7e02323d57bfacc3a141f8a74498e1522064" }, "nvim-tree.lua": { "branch": "master", "commit": "1eda2569394f866360e61f590f1796877388cb8a" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, diff --git a/lua/config/.bak/.luasnip.bak.bak b/lua/config/.bak/.luasnip.bak.bak new file mode 100644 index 0000000..e0b5617 --- /dev/null +++ b/lua/config/.bak/.luasnip.bak.bak @@ -0,0 +1,56 @@ +-- ~/.config/nvim/lua/config/luasnip.lua +return function() + local ls = require("luasnip") + local s = ls.snippet + local t = ls.text_node + local i = ls.insert_node + + -- Minimal test snippets + ls.snippets = { + all = { + s("hi", t("Hello, world!")), -- trigger: hi + }, + lua = { + s("fn", { -- trigger: fn + t("function "), i(1, "name"), t("("), i(2), t({")", "\t"}), + i(0), + t({"", "end"}) + }), + s("fori", { -- for loop snippet + t("for "), i(1, "i"), t(" = "), i(2, "1"), t(", "), i(3, "10"), t(" do"), + t({"", "\t"}), i(0), + t({"", "end"}) + }), + }, + } + + -- Load VSCode-style snippets (optional) + require("luasnip.loaders.from_vscode").lazy_load() + + -- Load Lua snippets from a separate file (optional) + -- require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/config/snippets.lua" }) + + local opts = { silent = true, noremap = true } + + -- Expand snippet or jump forward + vim.keymap.set({ "i", "s" }, "<C-l>", function() + if ls.expand_or_jumpable() then + ls.expand_or_jump() + end + end, opts) + + -- Jump backward + vim.keymap.set({ "i", "s" }, "<C-h>", function() + if ls.jumpable(-1) then + ls.jump(-1) + end + end, opts) + + -- Cycle choice nodes + vim.keymap.set({ "i", "s" }, "<C-k>", function() + if ls.choice_active() then + ls.change_choice(1) + end + end, opts) +end + diff --git a/lua/config/completion.lua b/lua/config/completion.lua new file mode 100644 index 0000000..09a934e --- /dev/null +++ b/lua/config/completion.lua @@ -0,0 +1,59 @@ +-- return a function for lazy.nvim +return function() + local cmp = require("cmp") + local luasnip = require("luasnip") + local lspkind = require("lspkind") + + -- load friendly-snippets + require("luasnip.loaders.from_vscode").lazy_load() + + cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + ["<C-b>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<C-Space>"] = cmp.mapping.complete(), -- manual trigger + ["<CR>"] = cmp.mapping.confirm({ select = true }), + ["<Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), + ["<S-Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "path" }, + { name = "luasnip" }, + }, { + { name = "buffer" }, + }), + formatting = { + format = lspkind.cmp_format({ with_text = true, maxwidth = 50 }), + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + completion = { + autocomplete = false, -- only trigger with <C-Space> + }, + }) +end + diff --git a/lua/config/luasnip.lua b/lua/config/luasnip.lua index 54ba5de..4524322 100644 --- a/lua/config/luasnip.lua +++ b/lua/config/luasnip.lua @@ -1,47 +1,36 @@ +-- Return a function so we can call it from Lazy.nvim return function() - local ls = require("luasnip") - local s = ls.snippet - local t = ls.text_node - local i = ls.insert_node + local ls = require("luasnip") - -- Minimal test snippet - ls.snippets = { - all = { - s("hi", t("Hello, world!")), - }, - lua = { - s("fn", { - t("function "), i(1, "name"), t("("), i(2), t({")", "\t"}), - i(0), - t({"", "end"}) - }), - }, - } + -- Load snippets from friendly-snippets + require("luasnip.loaders.from_vscode").lazy_load() - local opts = { silent = true, noremap = true } + -- Example Lua snippets + ls.add_snippets("lua", { + ls.parser.parse_snippet("hi", "print('Hello, world!')"), + ls.parser.parse_snippet("fn", "function ${1:name}(${2:args})\n\t$0\nend"), + }) - -- Expand or jump forward - vim.keymap.set({ "i", "s" }, "<C-l>", function() - if ls.expand_or_jumpable() then - ls.expand_or_jump() - end - end, opts) + local opts = { silent = true, noremap = true } - -- Jump backward - vim.keymap.set({ "i", "s" }, "<C-h>", function() - if ls.jumpable(-1) then - ls.jump(-1) - end - end, opts) + -- Expand snippet or jump forward + vim.keymap.set({ "i", "s" }, "<C-k>", function() + if ls.expand_or_jumpable() then + ls.expand_or_jump() + end + end, opts) - -- Cycle choice nodes - vim.keymap.set({ "i", "s" }, "<C-k>", function() - if ls.choice_active() then - ls.change_choice(1) - end - end, opts) + -- Jump backward + vim.keymap.set({ "i", "s" }, "<C-j>", function() + if ls.jumpable(-1) then + ls.jump(-1) + end + end, opts) - -- Load snippets - require("luasnip.loaders.from_vscode").lazy_load() + -- Change choice in choice node + vim.keymap.set({ "i", "s" }, "<C-l>", function() + if ls.choice_active() then + ls.change_choice(1) + end + end, opts) end - diff --git a/lua/config/snippets.lua b/lua/config/snippets.lua deleted file mode 100644 index 8b0d30b..0000000 --- a/lua/config/snippets.lua +++ /dev/null @@ -1,19 +0,0 @@ --- ~/.config/nvim/lua/snippets.lua -local ls = require("luasnip") -local s = ls.snippet -local t = ls.text_node -local i = ls.insert_node - -ls.snippets = { - all = { - s("hi", t("Hello, world!")), -- Type "hi" -> expand to Hello, world! - }, - lua = { - s("fn", { -- Type "fn" -> expand to a function template - t("function "), i(1, "name"), t("("), i(2), t({")", "\t"}), - i(0), - t({"", "end"}) - }), - }, -} - |
