diff options
Diffstat (limited to '')
| -rw-r--r-- | flake.lock | 98 | ||||
| -rw-r--r-- | flake.nix | 27 | ||||
| -rw-r--r-- | lsp/clangd.lua | 21 | ||||
| -rw-r--r-- | lsp/lua-language-server.lua | 2 | ||||
| -rw-r--r-- | lsp/qmlls.lua | 5 | ||||
| -rw-r--r-- | lsp/rust-analyzer.lua | 25 | ||||
| -rw-r--r-- | lua/config/lsp.lua | 35 | ||||
| -rw-r--r-- | lua/config/options.lua | 12 | ||||
| -rw-r--r-- | lua/config/plugins/completion.lua | 53 | ||||
| -rw-r--r-- | lua/config/plugins/debug.lua | 23 | ||||
| -rw-r--r-- | lua/config/plugins/extra.lua | 78 | ||||
| -rw-r--r-- | lua/config/plugins/formatting.lua | 2 | ||||
| -rw-r--r-- | lua/config/plugins/fuzzy.lua | 85 | ||||
| -rw-r--r-- | lua/config/plugins/init.lua | 2 | ||||
| -rw-r--r-- | lua/config/plugins/snippets.lua | 13 | ||||
| -rw-r--r-- | lua/config/plugins/ui.lua | 28 |
16 files changed, 357 insertions, 152 deletions
@@ -3,11 +3,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -19,11 +19,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1741352980, - "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", + "lastModified": 1759362264, + "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", + "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", "type": "github" }, "original": { @@ -53,27 +53,6 @@ "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "neovim-nightly-overlay", - "hercules-ci-effects", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1741352980, - "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", - "type": "github" - }, - "original": { - "id": "flake-parts", - "type": "indirect" - } - }, "git-hooks": { "inputs": { "flake-compat": "flake-compat_2", @@ -84,11 +63,11 @@ ] }, "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "lastModified": 1759523803, + "narHash": "sha256-PTod9NG+i3XbbnBKMl/e5uHDBYpwIWivQ3gOWSEuIEM=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "cfc9f7bb163ad8542029d303e599c0f7eee09835", "type": "github" }, "original": { @@ -121,18 +100,21 @@ }, "hercules-ci-effects": { "inputs": { - "flake-parts": "flake-parts_2", + "flake-parts": [ + "neovim-nightly-overlay", + "flake-parts" + ], "nixpkgs": [ "neovim-nightly-overlay", "nixpkgs" ] }, "locked": { - "lastModified": 1742014779, - "narHash": "sha256-I6fG1zrfdLFcp/imGZElig0BJO3YU0QEXLgvwWoOpJ8=", + "lastModified": 1758022363, + "narHash": "sha256-ENUhCRWgSX4ni751HieNuQoq06dJvApV/Nm89kh+/A0=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "524637ef84c177661690b924bf64a1ce18072a2c", + "rev": "1a3667d33e247ad35ca250698d63f49a5453d824", "type": "github" }, "original": { @@ -152,11 +134,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1743207056, - "narHash": "sha256-Ds/eKU6M8WuP7U+y13041tdqz24/frq2yP9CohyVlDQ=", + "lastModified": 1759795531, + "narHash": "sha256-iY43k/GpJJqv5WmHsJpDsOZsOqb2qydM7wWnpJygiUk=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "d9eee4fbfd7fe14b9a2019079ecde37e59fc109e", + "rev": "df3d6d30529e6f4d2c1709914cb3e6e3896dd64e", "type": "github" }, "original": { @@ -168,11 +150,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1743202909, - "narHash": "sha256-cNSjnWG1vtkWLT5hvmiesuGmOppb1R6Z9V11hv2mMew=", + "lastModified": 1759794827, + "narHash": "sha256-eN26ZJbzwuv0fvc33v4vR5hESWr/+TzJUXaKfdUQx+I=", "owner": "neovim", "repo": "neovim", - "rev": "cb31663663b9be92dd9c2fbe06ccea88625b2fca", + "rev": "1c4e0e50449d95465e7f256d39fea54b307e0e33", "type": "github" }, "original": { @@ -183,11 +165,11 @@ }, "nixCats": { "locked": { - "lastModified": 1743207292, - "narHash": "sha256-Hf23aM/FRGCvT/oNyPUZ2kw9j2ptpkBo3UzdO2kORXs=", + "lastModified": 1759730664, + "narHash": "sha256-boRlBQ/c4CaHsK/z04QL6+t81mcar37Io94HBX2GflY=", "owner": "BirdeeHub", "repo": "nixCats-nvim", - "rev": "7cf13e3215570450a432cf32a5ae7dd82a4f63e1", + "rev": "77dffad8235eb77684fcb7599487c8e9f23d5b8f", "type": "github" }, "original": { @@ -198,11 +180,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1743076231, - "narHash": "sha256-yQugdVfi316qUfqzN8JMaA2vixl+45GxNm4oUfXlbgw=", + "lastModified": 1759632233, + "narHash": "sha256-krgZxGAIIIKFJS+UB0l8do3sYUDWJc75M72tepmVMzE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6c5963357f3c1c840201eda129a99d455074db04", + "rev": "d7f52a7a640bc54c7bb414cca603835bf8dd4b10", "type": "github" }, "original": { @@ -214,11 +196,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1743076231, - "narHash": "sha256-yQugdVfi316qUfqzN8JMaA2vixl+45GxNm4oUfXlbgw=", + "lastModified": 1759632233, + "narHash": "sha256-krgZxGAIIIKFJS+UB0l8do3sYUDWJc75M72tepmVMzE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6c5963357f3c1c840201eda129a99d455074db04", + "rev": "d7f52a7a640bc54c7bb414cca603835bf8dd4b10", "type": "github" }, "original": { @@ -247,11 +229,11 @@ "plugins-multicursor-nvim": { "flake": false, "locked": { - "lastModified": 1746157028, - "narHash": "sha256-ZV4/QolvzaxV0SoPwO3Orf3HCJGD2+J15WKRUe0Hauw=", + "lastModified": 1758976684, + "narHash": "sha256-QhYUwFGYXoeXr2dRraHvpYx4z/7R9TyL9OC2sGmIAMY=", "owner": "jake-stewart", "repo": "multicursor.nvim", - "rev": "0e00ce4c272e3191b5e07cab36bd49aa32fca675", + "rev": "0c6ceae228bf209e8b8717df9de500770c4e7022", "type": "github" }, "original": { @@ -294,11 +276,11 @@ ] }, "locked": { - "lastModified": 1743081648, - "narHash": "sha256-WRAylyYptt6OX5eCEBWyTwOEqEtD6zt33rlUkr6u3cE=", + "lastModified": 1758728421, + "narHash": "sha256-ySNJ008muQAds2JemiyrWYbwbG+V7S5wg3ZVKGHSFu8=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "29a3d7b768c70addce17af0869f6e2bd8f5be4b7", + "rev": "5eda4ee8121f97b218f7cc73f5172098d458f1d1", "type": "github" }, "original": { @@ -138,6 +138,10 @@ nodejs-slim ]; + c = [ + clang-tools + ]; + lua = [ lua-language-server stylua @@ -149,6 +153,8 @@ nixfmt-rfc-style ]; + qml = [ kdePackages.qtdeclarative ]; + rust = [ # NOTE: required to find project root # NOTE: for now unused, so commented out @@ -159,8 +165,13 @@ typescript = [ angular-language-server biome + prettierd typescript-language-server ]; + + debug = [ + lldb + ]; }; }; @@ -226,8 +237,13 @@ ]; completion = [ blink-cmp ]; + snippets = [ + luasnip + friendly-snippets + ]; + # NOTE: On NeoVim 0.11+ nvim-lspconfig is not required due to native API - lsp = [ ]; + lsp = [ lazydev-nvim ]; mini = [ mini-ai @@ -243,6 +259,12 @@ git = [ gitsigns-nvim ]; + debug = [ + nvim-dap + nvim-dap-ui + nvim-dap-virtual-text + ]; + ui = [ bufferline-nvim lualine-nvim @@ -254,6 +276,9 @@ oil-nvim yanky-nvim which-key-nvim + + # SuperCollider + scnvim ]; }; }; diff --git a/lsp/clangd.lua b/lsp/clangd.lua new file mode 100644 index 0000000..9aced07 --- /dev/null +++ b/lsp/clangd.lua @@ -0,0 +1,21 @@ +return { + cmd = { "clangd" }, + filetypes = { "c", "cpp", "objc", "objcpp", "cuda" }, + root_markers = { + ".clangd", + ".clang-tidy", + ".clang-format", + "compile_commands.json", + "compile_flags.txt", + "configure.ac", -- AutoTools + ".git", + }, + capabilities = { + textDocument = { + completion = { + editsNearCursor = true, + }, + }, + offsetEncoding = { "utf-8", "utf-16" }, + }, +} diff --git a/lsp/lua-language-server.lua b/lsp/lua-language-server.lua index a77fcd9..ce0d902 100644 --- a/lsp/lua-language-server.lua +++ b/lsp/lua-language-server.lua @@ -1,6 +1,6 @@ return { cmd = { "lua-language-server" }, - root_markers = { ".luarc.json" }, + root_markers = { ".luarc.json", ".git" }, filetypes = { "lua" }, settings = { diff --git a/lsp/qmlls.lua b/lsp/qmlls.lua new file mode 100644 index 0000000..92dc83b --- /dev/null +++ b/lsp/qmlls.lua @@ -0,0 +1,5 @@ +return { + cmd = { "qmlls", "-E" }, + root_markers = { ".qmlls.ini", ".git" }, + filetypes = { "qml", "qmljs" }, +} diff --git a/lsp/rust-analyzer.lua b/lsp/rust-analyzer.lua index 51f5037..78ed2c5 100644 --- a/lsp/rust-analyzer.lua +++ b/lsp/rust-analyzer.lua @@ -1,8 +1,33 @@ +local serverReady = {} + return { cmd = { "rust-analyzer" }, root_markers = { "Cargo.toml" }, filetypes = { "rust" }, + capabilities = { + experimental = { + serverStatusNotification = true, + }, + }, + + handlers = { + ["experimental/serverStatus"] = function(_, result, ctx) + -- Try to fix inlay hints not being shown on start of + if result.quiescent and not serverReady[ctx.client_id] then + for _, bufnr in ipairs(vim.lsp.get_buffers_by_client_id(ctx.client_id)) do + -- Re-enable inlay hints so they are refreshed + if vim.lsp.inlay_hint.is_enabled() then + vim.lsp.inlay_hint.enable(false, { bufnr = bufnr }) + vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) + end + + serverReady[ctx.client_id] = true + end + end + end, + }, + settings = { ["rust-analyzer"] = { checkOnSave = { command = "clippy" }, diff --git a/lua/config/lsp.lua b/lua/config/lsp.lua index 413e06f..059b754 100644 --- a/lua/config/lsp.lua +++ b/lua/config/lsp.lua @@ -6,10 +6,14 @@ vim.diagnostic.config({ }) vim.lsp.enable({ + "clangd", + "lua-language-server", "nixd", + "qmlls", + "rust-analyzer", "angular-language-server", @@ -27,3 +31,34 @@ vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, { vim.treesitter.start(nil, "angular") end, }) + +vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local buffer = args.buf + local client = vim.lsp.get_client_by_id(args.data.client_id) + if client then + -- Keybindings + local map = vim.keymap.set + local opts = { buffer = buffer } + + map("n", "<leader>cr", vim.lsp.buf.rename, opts) + map("n", "gd", vim.lsp.buf.definition, opts) + map("n", "gD", vim.lsp.buf.declaration, opts) + map("n", "gI", vim.lsp.buf.implementation, opts) + map("n", "gy", vim.lsp.buf.type_definition, opts) + map("n", "gr", vim.lsp.buf.references, opts) + + map("n", "K", function() + return vim.lsp.buf.hover() + end, opts) + + map("n", "gK", function() + return vim.lsp.buf.signature_help() + end, opts) + + map({ "n", "i" }, "<C-;>", function() + return vim.lsp.buf.signature_help() + end, opts) + end + end, +}) diff --git a/lua/config/options.lua b/lua/config/options.lua index 5a7be5d..6208be7 100644 --- a/lua/config/options.lua +++ b/lua/config/options.lua @@ -59,3 +59,15 @@ map("n", "N", "Nzzzv", { desc = "Previous Search Result" }) -- Reset search highlight on ESC map("n", "<Esc>", "<cmd>nohlsearch<CR>", { desc = "Reset search highlight" }) + +-- Window related binds +map("n", "<C-w>d", "<C-w>c", { desc = "[D]elete [W]indow" }) + +-- Buffer related binds +map("n", "<leader>bd", "<cmd>bdelete<CR>", { desc = "[D]elete [B]uffer" }) + +-- Tab related binds +map("n", "[T", "<cmd>tabprev<CR>", { desc = "Previous Tab" }) +map("n", "]T", "<cmd>tabnext<CR>", { desc = "Previous Tab" }) +map("n", "<leader><tab>d", "<cmd>tabclose<CR>", { desc = "[D]elete [T]ab" }) +map("n", "<leader><tab>n", "<cmd>tabnew<CR>", { desc = "[N]ew [T]ab" }) diff --git a/lua/config/plugins/completion.lua b/lua/config/plugins/completion.lua index 7a02809..7acef49 100644 --- a/lua/config/plugins/completion.lua +++ b/lua/config/plugins/completion.lua @@ -1,5 +1,32 @@ return { { + "lazydev.nvim", + -- NOTE: if lazyloaded, blink will break as `lze` doesn't packadd this package... + -- ft = "lua", + after = function(_) + -- NOTE: this is required to fix strange filtering in `lazydev.nvim` + --- @diagnostic disable-next-line: duplicate-set-field + require("lazydev.lsp").supports = function(client) + local client_names = { + -- Default client names from `lazydev.nvim` + "lua_ls", + "emmylua-analyzer-rust", + -- NOTE: I have `lua-language-server` name which was not in list + "lua-language-server", + } + + return client and vim.tbl_contains(client_names, client.name) + end + + require("lazydev").setup({ + library = { + { path = "${3rd}/luv/library", words = { "vim%.uv" } }, + { path = "snacks.nvim", words = { "Snacks" } }, + }, + }) + end, + }, + { "blink.cmp", event = "DeferredUIEnter", after = function(_) @@ -10,6 +37,13 @@ return { }, completion = { + list = { + selection = { + auto_insert = false, + preselect = false, + }, + }, + documentation = { auto_show = true, auto_show_delay_ms = 500, @@ -18,7 +52,24 @@ return { ghost_text = { enabled = true }, }, - sources = { default = { "lsp", "path", "snippets", "buffer" } }, + snippets = { preset = "luasnip" }, + + cmdline = { + completion = { + ghost_text = { enabled = false }, + }, + }, + + sources = { + default = { "lazydev", "lsp", "path", "snippets", "buffer" }, + providers = { + lazydev = { + name = "LazyDev", + module = "lazydev.integrations.blink", + score_offset = 100, + }, + }, + }, fuzzy = { sorts = { "exact", "score", "sort_text" }, diff --git a/lua/config/plugins/debug.lua b/lua/config/plugins/debug.lua new file mode 100644 index 0000000..0f6378b --- /dev/null +++ b/lua/config/plugins/debug.lua @@ -0,0 +1,23 @@ +return { + { + "nvim-dap", + event = "DeferredUIEnter", + load = function(name) + vim.cmd.packadd(name) + vim.cmd.packadd("nvim-dap-ui") + vim.cmd.packadd("nvim-dap-virtual-text") + end, + after = function(_) + -- require("dap").setup() + require("dapui").setup() + require("nvim-dap-virtual-text").setup({}) + + local dap = require("dap") + dap.adapters.lldb = { + type = "executable", + command = "lldb-dap", + name = "lldb", + } + end, + }, +} diff --git a/lua/config/plugins/extra.lua b/lua/config/plugins/extra.lua index 2b1d8ef..19a7042 100644 --- a/lua/config/plugins/extra.lua +++ b/lua/config/plugins/extra.lua @@ -11,29 +11,19 @@ return { -- Keybindings would be a lot better as <localleader> local map = vim.keymap.set - -- NOTE: this required for "repeatable" commands - -- I'd like to use `2<localleader>cn` for example (and that doesn't work out of box) - local map_rep = function(modes, bind, action) - map(modes, bind, function() - for _ = 1, vim.v.count1, 1 do - action() - end - end) - end - -- stylua: ignore start map({ "n", "x" }, "<localleader><localleader>", function() mc.clearCursors() end) map({ "n", "x" }, "<localleader>R", function() mc.restoreCursors() end) - map_rep({ "n", "x" }, "<localleader>j", function() mc.lineAddCursor(1) end) - map_rep({ "n", "x" }, "<localleader>k", function() mc.lineAddCursor(-1) end) - map_rep({ "n", "x" }, "<localleader>J", function() mc.lineSkipCursor(1) end) - map_rep({ "n", "x" }, "<localleader>K", function() mc.lineSkipCursor(-1) end) + map({ "n", "x" }, "<localleader>j", function() mc.lineAddCursor(1) end) + map({ "n", "x" }, "<localleader>k", function() mc.lineAddCursor(-1) end) + map({ "n", "x" }, "<localleader>J", function() mc.lineSkipCursor(1) end) + map({ "n", "x" }, "<localleader>K", function() mc.lineSkipCursor(-1) end) - map_rep({ "n", "x" }, "<localleader>cn", function() mc.matchAddCursor(1) end) - map_rep({ "n", "x" }, "<localleader>cN", function() mc.matchAddCursor(-1) end) - map_rep({ "n", "x" }, "<localleader>cs", function() mc.matchSkipCursor(1) end) - map_rep({ "n", "x" }, "<localleader>cS", function() mc.matchSkipCursor(-1) end) + map({ "n", "x" }, "<localleader>cn", function() mc.matchAddCursor(1) end) + map({ "n", "x" }, "<localleader>cN", function() mc.matchAddCursor(-1) end) + map({ "n", "x" }, "<localleader>cs", function() mc.matchSkipCursor(1) end) + map({ "n", "x" }, "<localleader>cS", function() mc.matchSkipCursor(-1) end) map({ "n", "x" }, "<localleader>cM", mc.matchAllAddCursors) map("x", "<localleader>m", mc.matchCursors) map("x", "<localleader>s", mc.splitCursors) @@ -91,6 +81,15 @@ return { require("which-key").setup() require("which-key").add({ + { + "<leader>w", + group = "windows", + proxy = "<C-w>", + expand = function() + return require("which-key.extras").expand.win() + end, + }, + { "<leader>s", group = "search" }, { @@ -99,6 +98,9 @@ return { { "<leader>gh", group = "hunk" }, { "<leader>S", group = "surround" }, }, + + { "<leader>x", group = "extra" }, + { "<leader>xS", group = "supercollider" }, }) end, }, @@ -113,4 +115,44 @@ return { { "-", "<CMD>Oil<CR>", { desc = "Open parent directory" } }, }, }, + { + "scnvim", + -- NOTE: this plugin is broken when try to lazyload + lazy = false, + after = function(_) + local scnvim = require("scnvim") + local map = scnvim.map + local map_expr = scnvim.map_expr + + scnvim.setup({ + ensure_installed = true, + keymaps = { + ["<M-CR>"] = { + map("editor.send_block", { "i", "n" }), + map("editor.send_selection", "x"), + }, + ["<C-CR>"] = map("editor.send_line", { "i", "n" }), + ["<C-k>"] = map("signature.show", { "i", "n" }), + + ["<F12>"] = map("sclang.hard_stop", { "i", "n", "x" }), + }, + }) + + vim.api.nvim_create_augroup("my.scnvim", { clear = true }) + vim.api.nvim_create_autocmd("InsertEnter", { + pattern = "*.scd", + group = "my.scnvim", + once = true, + callback = function() + -- Loading snippets to LuaSnip + require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets()) + end, + }) + end, + keys = { + { "<leader>xSs", "<CMD>SCNvimStart<CR>", desc = "Start SuperCollider" }, + { "<leader>xSS", "<CMD>SCNvimStop<CR>", desc = "Stop SuperCollider" }, + { "<leader>xSr", "<CMD>SCNvimRecompile<CR>", desc = "Recompile SuperCollider sclang" }, + }, + }, } diff --git a/lua/config/plugins/formatting.lua b/lua/config/plugins/formatting.lua index 6efe5d2..98bbe06 100644 --- a/lua/config/plugins/formatting.lua +++ b/lua/config/plugins/formatting.lua @@ -11,6 +11,8 @@ return { nix = { "nixfmt" }, rust = { "rustfmt", lsp_format = "fallback" }, + html = { "prettierd" }, + htmlangular = { "prettierd" }, json = { "biome" }, jsonc = { "biome" }, javascript = { "biome" }, diff --git a/lua/config/plugins/fuzzy.lua b/lua/config/plugins/fuzzy.lua index 9bab351..95bb108 100644 --- a/lua/config/plugins/fuzzy.lua +++ b/lua/config/plugins/fuzzy.lua @@ -19,6 +19,7 @@ return { fzf = { ["tab"] = "down", ["shift-tab"] = "up", + ["ctrl-q"] = "select-all+accept", }, }, }) @@ -26,82 +27,22 @@ return { keys = { -- General - { - "<leader><leader>", - function() - require("fzf-lua").files() - end, - mode = { "n" }, - desc = "Search Files", - }, - { - "<leader><localleader>", - function() - require("fzf-lua").buffers() - end, - mode = { "n" }, - desc = "Search Buffers", - }, - { - "<leader>/", - function() - require("fzf-lua").live_grep() - end, - mode = { "n" }, - desc = "Search Grep", - }, - { - "<leader>:", - function() - require("fzf-lua").command_history() - end, - mode = { "n" }, - desc = "Command History", - }, + -- stylua: ignore start + { "<leader><leader>", function() require("fzf-lua").files() end, mode = { "n" }, desc = "Search Files", }, + { "<leader><localleader>", function() require("fzf-lua").buffers() end, mode = { "n" }, desc = "Search Buffers", }, + { "<leader>/", function() require("fzf-lua").live_grep() end, mode = { "n" }, desc = "Search Grep", }, + { "<leader>:", function() require("fzf-lua").command_history() end, mode = { "n" }, desc = "Command History", }, -- Search - { - "<leader>sR", - function() - require("fzf-lua").resume() - end, - mode = { "n" }, - desc = "[R]esume [S]earch", - }, - { - "<leader>sb", - function() - require("fzf-lua").buffers() - end, - mode = { "n" }, - desc = "[S]earch [B]uffers", - }, - { - "<leader>sf", - function() - require("fzf-lua").files() - end, - mode = { "n" }, - desc = "[S]earch [F]iles", - }, - { - "<leader>sg", - function() - require("fzf-lua").live_grep() - end, - mode = { "n" }, - desc = "[S]earch [G]rep", - }, + { "<leader>sR", function() require("fzf-lua").resume() end, mode = { "n" }, desc = "[R]esume [S]earch", }, + { "<leader>sb", function() require("fzf-lua").buffers() end, mode = { "n" }, desc = "[S]earch [B]uffers", }, + { "<leader>sf", function() require("fzf-lua").files() end, mode = { "n" }, desc = "[S]earch [F]iles", }, + { "<leader>sg", function() require("fzf-lua").live_grep() end, mode = { "n" }, desc = "[S]earch [G]rep", }, + { "<leader>sh", function() require("fzf-lua").helptags() end, mode = { "n" }, desc = "[S]earch [G]rep", }, -- Code - { - "<leader>ca", - function() - require("fzf-lua").lsp_code_actions() - end, - mode = { "n" }, - desc = "[C]ode [A]ctions", - }, + { "<leader>ca", function() require("fzf-lua").lsp_code_actions() end, mode = { "n" }, desc = "[C]ode [A]ctions", }, + -- stylua: ignore end }, }, } diff --git a/lua/config/plugins/init.lua b/lua/config/plugins/init.lua index 1ec4b50..3c372a0 100644 --- a/lua/config/plugins/init.lua +++ b/lua/config/plugins/init.lua @@ -54,7 +54,9 @@ require("lze").load({ { import = "config.plugins.treesitter" }, { import = "config.plugins.mini" }, { import = "config.plugins.completion" }, + { import = "config.plugins.snippets" }, { import = "config.plugins.formatting" }, { import = "config.plugins.git" }, + { import = "config.plugins.debug" }, { import = "config.plugins.extra" }, }) diff --git a/lua/config/plugins/snippets.lua b/lua/config/plugins/snippets.lua new file mode 100644 index 0000000..5a37b0c --- /dev/null +++ b/lua/config/plugins/snippets.lua @@ -0,0 +1,13 @@ +return { + { + "luasnip", + dep_of = { "blink.cmp" }, + load = function(name) + vim.cmd.packadd(name) + vim.cmd.packadd("friendly-snippets") + end, + after = function(_) + require("luasnip.loaders.from_vscode").lazy_load() + end, + }, +} diff --git a/lua/config/plugins/ui.lua b/lua/config/plugins/ui.lua index e552f0e..593efc7 100644 --- a/lua/config/plugins/ui.lua +++ b/lua/config/plugins/ui.lua @@ -4,7 +4,7 @@ return { event = "DeferredUIEnter", after = function(_) require("bufferline").setup({ - highlights = require("catppuccin.groups.integrations.bufferline").get(), + highlights = require("catppuccin.special.bufferline").get_theme(), }) end, }, @@ -17,6 +17,32 @@ return { options = { theme = "catppuccin", }, + + sections = { + lualine_a = { "mode" }, + lualine_b = { "branch", "diff", "diagnostics" }, + lualine_c = { "filename" }, + + lualine_x = { + -- SuperCollider status bar (server status) + { + function() + -- NOTE: for some reason LuaLS doesn't find `gsub` in string o.O + ---@diagnostic disable-next-line + return require("scnvim.statusline").get_server_status():gsub("%%", "%%%%") + end, + cond = function() + return vim.bo.filetype == "supercollider" + end, + }, + + "filetype", + "encoding", + "fileformat", + }, + lualine_y = { "progress" }, + lualine_z = { "location" }, + }, }) end, }, |
