summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbh <qn+git@excalibur.computer>2025-11-19 14:50:22 +0800
committerbh <qn+git@excalibur.computer>2025-11-19 14:50:22 +0800
commit5e80cc2081ec616c828a0abe82d246c4dc0a4334 (patch)
tree3805b57cdf59e0fa4dafb4c998f82644da19fb38
parentf3d3e0d5dc32bb5c00a6106aee9027decd345e63 (diff)
Fixed snippets and also a little refactoring on the theme
-rw-r--r--init.lua7
-rw-r--r--lazy-lock.json11
-rw-r--r--lua/config/.bak/.luasnip.bak.bak56
-rw-r--r--lua/config/completion.lua59
-rw-r--r--lua/config/luasnip.lua67
-rw-r--r--lua/config/snippets.lua19
6 files changed, 157 insertions, 62 deletions
diff --git a/init.lua b/init.lua
index 1a7365d..799adc2 100644
--- a/init.lua
+++ b/init.lua
@@ -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"})
- }),
- },
-}
-