From 48331347fd458cb924bf9af1b9fb7f3e51e8dc6a Mon Sep 17 00:00:00 2001 From: js0ny Date: Wed, 26 Mar 2025 14:28:52 +0000 Subject: [PATCH] perf(nvim): Apply lazy load for all plugins --- Justfile | 12 +- platforms/linux/user-dirs.dirs | 10 ++ tools/bash/xdg-compat.sh | 6 +- tools/nvim/lua/config/servers.lua | 38 ++--- tools/nvim/lua/keymaps/leaders.lua | 140 +++++++++--------- tools/nvim/lua/keymaps/nvim-tree.lua | 2 + tools/nvim/lua/plugins/appearance.lua | 37 +++-- tools/nvim/lua/plugins/completion.lua | 12 +- tools/nvim/lua/plugins/dap.lua | 6 +- tools/nvim/lua/plugins/edit.lua | 54 +++---- tools/nvim/lua/plugins/fileutils.lua | 14 +- tools/nvim/lua/plugins/lsp.lua | 21 ++- tools/nvim/lua/plugins/misc.lua | 38 ++--- tools/nvim/lua/plugins/mod/avante-nvim.lua | 2 + tools/nvim/lua/plugins/mod/blink-cmp.lua | 3 +- tools/nvim/lua/plugins/mod/bufferline.lua | 2 +- .../lua/plugins/mod/lang/markdown/init.lua | 2 +- .../mod/lang/markdown/render-markdown.lua | 2 +- tools/nvim/lua/plugins/mod/lang/org.lua | 12 +- tools/nvim/lua/plugins/mod/lualine/init.lua | 2 +- tools/nvim/lua/plugins/mod/nvim-lspconfig.lua | 5 + tools/nvim/lua/plugins/mod/snacks-nvim.lua | 18 ++- tools/nvim/lua/plugins/mod/telescope.lua | 39 ++--- 23 files changed, 274 insertions(+), 203 deletions(-) create mode 100644 platforms/linux/user-dirs.dirs diff --git a/Justfile b/Justfile index 4c45570..8746a66 100644 --- a/Justfile +++ b/Justfile @@ -143,7 +143,7 @@ readline: [linux] bash: {{LN}} {{DOTFILES}}/tools/bash {{XDG_CONFIG_HOME}}/bash - sudo cp $DOTFILES/tools/bash/xdg-compat.sh /etc/profile.d/xdg-compat.sh + sudo cp {{DOTFILES}}/tools/bash/xdg-compat.sh /etc/profile.d/xdg-compat.sh [linux] keyd: @@ -159,6 +159,16 @@ build_keyd: git clone https://github.com/rvaiya/keyd $HOME/.local/build/keyd cd $HOME/.local/build/keyd && make && sudo make install +[unix] +kitty: + which kitty + {{LN}} {{DOTFILES}}/tools/kitty {{XDG_CONFIG_HOME}}/kitty + +[unix] +zotero: + curl -L https://github.com/syt2/zotero-addons/releases/download/V1.8.1/zotero-addons.xpi -o "$HOME/Downloads/zotero-addons.xpi" + + [linux] flatpak: flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo diff --git a/platforms/linux/user-dirs.dirs b/platforms/linux/user-dirs.dirs new file mode 100644 index 0000000..fd18e7b --- /dev/null +++ b/platforms/linux/user-dirs.dirs @@ -0,0 +1,10 @@ +# Force to use English for directory names + +XDG_DESKTOP_DIR="$HOME/Desktop" +XDG_DOWNLOAD_DIR="$HOME/Downloads" +XDG_TEMPLATES_DIR="$HOME/Templates" +XDG_PUBLICSHARE_DIR="$HOME/" +XDG_DOCUMENTS_DIR="$HOME/Documents" +XDG_MUSIC_DIR="$HOME/Music" +XDG_PICTURES_DIR="$HOME/Pictures" +XDG_VIDEOS_DIR="$HOME/Videos" diff --git a/tools/bash/xdg-compat.sh b/tools/bash/xdg-compat.sh index e8b9961..912d5b4 100644 --- a/tools/bash/xdg-compat.sh +++ b/tools/bash/xdg-compat.sh @@ -8,9 +8,9 @@ # Set XDG Base Directory Path export XDG_CONFIG_HOME="$HOME/.config" -export XDG_CACHE_HOME="~/.cache" -export XDG_DATA_HOME="~/.local/share" -export XDG_STATE_HOME="~/.local/state" +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_STATE_HOME="$HOME/.local/state" export XDG_RUNTIME_DIR="/run/user/$(id -u)" # Source user's XDG-compliant Bash configs diff --git a/tools/nvim/lua/config/servers.lua b/tools/nvim/lua/config/servers.lua index a45c8c1..c1c3434 100644 --- a/tools/nvim/lua/config/servers.lua +++ b/tools/nvim/lua/config/servers.lua @@ -5,29 +5,21 @@ local M = {} -- Ensure that the following servers are installed and set -- Use :Mason to list all available servers M.servers = { - "ast_grep", - "bashls", -- Bash - "clangd", -- C/C++ - "cssls", -- CSS - "denols", -- Deno - "eslint", -- JavaScript - "gopls", -- Go - "html", -- HTML - "jsonls", -- JSON - "lua_ls", -- Lua - "markdown_oxide", -- Markdown - "omnisharp", -- C# & F# - "powershell_es", -- PowerShell - "pyright", -- Python - "rust_analyzer", -- Rust - "svelte", -- Svelte - "svlangserver", -- SystemVerilog - "tailwindcss", -- TailwindCSS - "taplo", -- TOML - "ts_ls", -- TypeScript - "vimls", -- vimscript - "yamlls", -- YAML - "beancount", -- Beancount + "bashls", -- Bash + "clangd", -- C/C++ + "eslint", -- JavaScript + "gopls", -- Go + "html", -- HTML + "jsonls", -- JSON + "lua_ls", -- Lua + -- "markdown_oxide", -- Markdown + "pyright", -- Python + "rust_analyzer", -- Rust + "taplo", -- TOML + "ts_ls", -- TypeScript + "vimls", -- vimscript + "yamlls", -- YAML + "beancount", -- Beancount } -- Configuration for each server defines here diff --git a/tools/nvim/lua/keymaps/leaders.lua b/tools/nvim/lua/keymaps/leaders.lua index 2026f79..5932ed2 100644 --- a/tools/nvim/lua/keymaps/leaders.lua +++ b/tools/nvim/lua/keymaps/leaders.lua @@ -42,61 +42,61 @@ vim.api.nvim_create_user_command("Rename", renameCurrentBuffer, {}) local leader_mappings = { general = { - { keys = "-", cmd = ":split", opts = { desc = "Split to down" } }, - { keys = "\\", cmd = ":vsplit", opts = { desc = "Split to right" } }, - { keys = "|", cmd = ":vsplit", opts = { desc = "Split to right" } }, - { keys = "h", cmd = "h", opts = { desc = "Left Window" } }, - { keys = "n", cmd = "j", opts = { desc = "Down Window" } }, - { keys = "e", cmd = "k", opts = { desc = "Up Window" } }, - { keys = "i", cmd = "l", opts = { desc = "Right Window" } }, - { keys = "", cmd = "b#", opts = { desc = "Switch to last buffer" } }, - { keys = '"', cmd = ":!wezterm-gui &", pots = { desc = "Open External Terminal(wezterm)" } }, + { keys = "-", cmd = ":split", opts = { desc = "Split to down" } }, + { keys = "\\", cmd = ":vsplit", opts = { desc = "Split to right" } }, + { keys = "|", cmd = ":vsplit", opts = { desc = "Split to right" } }, + { keys = "h", cmd = "h", opts = { desc = "Left Window" } }, + { keys = "n", cmd = "j", opts = { desc = "Down Window" } }, + { keys = "e", cmd = "k", opts = { desc = "Up Window" } }, + { keys = "i", cmd = "l", opts = { desc = "Right Window" } }, + { keys = "", cmd = "b#", opts = { desc = "Switch to last buffer" } }, + { keys = '"', cmd = ":!wezterm-gui &", pots = { desc = "Open External Terminal(wezterm)" } }, }, b = { -- +buffer - { keys = "0", cmd = "b#", opts = { desc = "Switch to last buffer" } }, - { keys = "1", cmd = ":BufferLineGotoBuffer 1", opts = { desc = "Switch to Buffer #1" } }, - { keys = "2", cmd = ":BufferLineGotoBuffer 2", opts = { desc = "Switch to Buffer #2" } }, - { keys = "3", cmd = ":BufferLineGotoBuffer 3", opts = { desc = "Switch to Buffer #3" } }, - { keys = "4", cmd = ":BufferLineGotoBuffer 4", opts = { desc = "Switch to Buffer #4" } }, - { keys = "5", cmd = ":BufferLineGotoBuffer 5", opts = { desc = "Switch to Buffer #5" } }, - { keys = "6", cmd = ":BufferLineGotoBuffer 6", opts = { desc = "Switch to Buffer #6" } }, - { keys = "7", cmd = ":BufferLineGotoBuffer 7", opts = { desc = "Switch to Buffer #7" } }, - { keys = "8", cmd = ":BufferLineGotoBuffer 8", opts = { desc = "Switch to Buffer #8" } }, - { keys = "9", cmd = ":BufferLineGotoBuffer 9", opts = { desc = "Switch to Buffer #9" } }, - { keys = "b", cmd = ":BufferLinePick", opts = { desc = "Quick Switch Buffers" } }, - { keys = "d", cmd = ":bdelete", opts = { desc = "Delete Buffer" } }, - { keys = "D", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, - { keys = "xx", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, - { keys = "xh", cmd = ":BufferLineCloseLeft", opts = { desc = "Delete Buffers Left" } }, - { keys = "xi", cmd = ":BufferLineCloseRight", opts = { desc = "Delete Buffers Right" } }, - { keys = "X", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, - { keys = "h", cmd = ":bprevious", opts = { desc = "Previous Buffer" } }, - { keys = "i", cmd = ":bnext", opts = { desc = "Next Buffer" } }, - { keys = "H", cmd = ":bfirst", opts = { desc = "First Buffer" } }, - { keys = "I", cmd = ":blast", opts = { desc = "Last Buffer" } }, - { keys = "0", cmd = ":bfirst", opts = { desc = "First Buffer" } }, - { keys = "^", cmd = ":bfirst", opts = { desc = "First Buffer" } }, - { keys = "$", cmd = ":blast", opts = { desc = "Last Buffer" } }, - { keys = "s", cmd = ":new", opts = { desc = "Scratch buffers" } }, - { keys = "t", cmd = ":BufferLineTogglePin", opts = { desc = "Pin Buffer" } }, - { keys = "y", cmd = ":%y+", opts = { desc = "Copy Buffer to Clipboard" } }, + { keys = "0", cmd = "b#", opts = { desc = "Switch to last buffer" } }, + { keys = "1", cmd = ":BufferLineGotoBuffer 1", opts = { desc = "Switch to Buffer #1" } }, + { keys = "2", cmd = ":BufferLineGotoBuffer 2", opts = { desc = "Switch to Buffer #2" } }, + { keys = "3", cmd = ":BufferLineGotoBuffer 3", opts = { desc = "Switch to Buffer #3" } }, + { keys = "4", cmd = ":BufferLineGotoBuffer 4", opts = { desc = "Switch to Buffer #4" } }, + { keys = "5", cmd = ":BufferLineGotoBuffer 5", opts = { desc = "Switch to Buffer #5" } }, + { keys = "6", cmd = ":BufferLineGotoBuffer 6", opts = { desc = "Switch to Buffer #6" } }, + { keys = "7", cmd = ":BufferLineGotoBuffer 7", opts = { desc = "Switch to Buffer #7" } }, + { keys = "8", cmd = ":BufferLineGotoBuffer 8", opts = { desc = "Switch to Buffer #8" } }, + { keys = "9", cmd = ":BufferLineGotoBuffer 9", opts = { desc = "Switch to Buffer #9" } }, + { keys = "b", cmd = ":BufferLinePick", opts = { desc = "Quick Switch Buffers" } }, + { keys = "d", cmd = ":bdelete", opts = { desc = "Delete Buffer" } }, + { keys = "D", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, + { keys = "xx", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, + { keys = "xh", cmd = ":BufferLineCloseLeft", opts = { desc = "Delete Buffers Left" } }, + { keys = "xi", cmd = ":BufferLineCloseRight", opts = { desc = "Delete Buffers Right" } }, + { keys = "X", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, + { keys = "h", cmd = ":bprevious", opts = { desc = "Previous Buffer" } }, + { keys = "i", cmd = ":bnext", opts = { desc = "Next Buffer" } }, + { keys = "H", cmd = ":bfirst", opts = { desc = "First Buffer" } }, + { keys = "I", cmd = ":blast", opts = { desc = "Last Buffer" } }, + { keys = "0", cmd = ":bfirst", opts = { desc = "First Buffer" } }, + { keys = "^", cmd = ":bfirst", opts = { desc = "First Buffer" } }, + { keys = "$", cmd = ":blast", opts = { desc = "Last Buffer" } }, + { keys = "s", cmd = ":new", opts = { desc = "Scratch buffers" } }, + { keys = "t", cmd = ":BufferLineTogglePin", opts = { desc = "Pin Buffer" } }, + { keys = "y", cmd = ":%y+", opts = { desc = "Copy Buffer to Clipboard" } }, }, c = { -- +code/compile { keys = "R", cmd = vim.lsp.buf.rename, opts = { desc = "Rename symbol under cursor" } }, - { keys = "f", cmd = formatFx, opts = { desc = "Format buffer" } }, + { keys = "f", cmd = formatFx, opts = { desc = "Format buffer" } }, }, f = { -- +file/find - { keys = "n", cmd = ":new", opts = { desc = "New File" } }, - { keys = "s", cmd = ":write", opts = { desc = "Save File" } }, - { keys = "S", cmd = ":wall", opts = { desc = "Save All Files" } }, - { keys = "D", cmd = "!trash-rm %", opts = { desc = "Delete current file" } }, - { keys = "t", cmd = ":NvimTreeFindFileToggle", opts = { desc = "Toggle File Tree" } }, - { keys = "o", cmd = ":!open %", opts = { desc = "Open file in default program" } }, - { keys = "R", cmd = renameCurrentBuffer, opts = { desc = "Rename current file" } }, - { keys = "x", cmd = ":Lazy", opts = { desc = "Open extension view" } }, - { keys = "yy", cmd = ":let @+ = expand('%:p')", opts = { desc = "Copy file path" } }, - { keys = "yY", cmd = ":let @+ = expand('%')", opts = { desc = "Copy relative file path" } }, - { keys = "yn", cmd = ":let @+ = expand('%:t')", opts = { desc = "Copy file name" } }, + { keys = "n", cmd = ":new", opts = { desc = "New File" } }, + { keys = "s", cmd = ":write", opts = { desc = "Save File" } }, + { keys = "S", cmd = ":wall", opts = { desc = "Save All Files" } }, + { keys = "D", cmd = "!trash-rm %", opts = { desc = "Delete current file" } }, + -- { keys = "t", cmd = ":NvimTreeFindFileToggle", opts = { desc = "Toggle File Tree" } }, + { keys = "o", cmd = ":!open %", opts = { desc = "Open file in default program" } }, + { keys = "R", cmd = renameCurrentBuffer, opts = { desc = "Rename current file" } }, + { keys = "x", cmd = ":Lazy", opts = { desc = "Open extension view" } }, + { keys = "yy", cmd = ":let @+ = expand('%:p')", opts = { desc = "Copy file path" } }, + { keys = "yY", cmd = ":let @+ = expand('%')", opts = { desc = "Copy relative file path" } }, + { keys = "yn", cmd = ":let @+ = expand('%:t')", opts = { desc = "Copy file name" } }, { keys = "yN", cmd = ":let @+ = expand('%:t:r')", opts = { desc = "Copy file name without extension" } }, { keys = "yd", cmd = ":let @+ = expand('%:p:h')", opts = { desc = "Copy directory path" } }, { @@ -118,37 +118,37 @@ local leader_mappings = { p = { -- +project }, q = { -- +quit - { keys = "q", cmd = ":q", opts = { desc = "Quit" } }, - { keys = "Q", cmd = ":qa!", opts = { desc = "Force Quit" } }, - { keys = "w", cmd = ":wq", opts = { desc = "Write and Quit" } }, + { keys = "q", cmd = ":q", opts = { desc = "Quit" } }, + { keys = "Q", cmd = ":qa!", opts = { desc = "Force Quit" } }, + { keys = "w", cmd = ":wq", opts = { desc = "Write and Quit" } }, { keys = "W", cmd = ":wall:qa!", opts = { desc = "Write all and Force Quit" } }, }, t = { -- +toggle/test - { keys = "f", cmd = ":NvimTreeToggle", opts = { desc = "Toggle File Explorer" } }, + { keys = "f", cmd = ":NvimTreeToggle", opts = { desc = "Toggle File Explorer" } }, { keys = "F", cmd = ":FormatToggle", opts = { desc = "Toggle autoformat-on-save" } }, }, u = { -- +ui { keys = " ", cmd = ":set list!", opts = { desc = "Toggle show all symbols" } }, }, w = { -- +window - { keys = "h", cmd = "h", opts = { desc = "Left Window" } }, - { keys = "n", cmd = "j", opts = { desc = "Down Window" } }, - { keys = "e", cmd = "k", opts = { desc = "Up Window" } }, - { keys = "i", cmd = "l", opts = { desc = "Right Window" } }, - { keys = "H", cmd = "H", opts = { desc = "Move Window Left" } }, - { keys = "N", cmd = "J", opts = { desc = "Move Window Down" } }, - { keys = "E", cmd = "K", opts = { desc = "Move Window Up" } }, - { keys = "I", cmd = "L", opts = { desc = "Move Window Right" } }, - { keys = "-", cmd = ":split", opts = { desc = "Split to down" } }, - { keys = "|", cmd = ":vsplit", opts = { desc = "Split to right" } }, - { keys = "/", cmd = ":vsplit", opts = { desc = "Split to right" } }, - { keys = "d", cmd = "c", opts = { desc = "Close Window" } }, - { keys = "D", cmd = "o", opts = { desc = "Close Other Windows" } }, - { keys = "r", cmd = "r", opts = { desc = "Rotate Windows" } }, - { keys = "R", cmd = "R", opts = { desc = "Reverse Rotate Windows" } }, - { keys = "t", cmd = "T", opts = { desc = "Move Window to New Tab" } }, - { keys = "]", cmd = ":resize +5", opts = { desc = "Increase Window Size" } }, - { keys = "[", cmd = ":resize -5", opts = { desc = "Decrease Window Size" } }, + { keys = "h", cmd = "h", opts = { desc = "Left Window" } }, + { keys = "n", cmd = "j", opts = { desc = "Down Window" } }, + { keys = "e", cmd = "k", opts = { desc = "Up Window" } }, + { keys = "i", cmd = "l", opts = { desc = "Right Window" } }, + { keys = "H", cmd = "H", opts = { desc = "Move Window Left" } }, + { keys = "N", cmd = "J", opts = { desc = "Move Window Down" } }, + { keys = "E", cmd = "K", opts = { desc = "Move Window Up" } }, + { keys = "I", cmd = "L", opts = { desc = "Move Window Right" } }, + { keys = "-", cmd = ":split", opts = { desc = "Split to down" } }, + { keys = "|", cmd = ":vsplit", opts = { desc = "Split to right" } }, + { keys = "/", cmd = ":vsplit", opts = { desc = "Split to right" } }, + { keys = "d", cmd = "c", opts = { desc = "Close Window" } }, + { keys = "D", cmd = "o", opts = { desc = "Close Other Windows" } }, + { keys = "r", cmd = "r", opts = { desc = "Rotate Windows" } }, + { keys = "R", cmd = "R", opts = { desc = "Reverse Rotate Windows" } }, + { keys = "t", cmd = "T", opts = { desc = "Move Window to New Tab" } }, + { keys = "]", cmd = ":resize +5", opts = { desc = "Increase Window Size" } }, + { keys = "[", cmd = ":resize -5", opts = { desc = "Decrease Window Size" } }, { keys = "M", cmd = ":resize:vertical resize", opts = { desc = "Maximize window size" } }, }, } diff --git a/tools/nvim/lua/keymaps/nvim-tree.lua b/tools/nvim/lua/keymaps/nvim-tree.lua index 5fb5d26..03192d4 100644 --- a/tools/nvim/lua/keymaps/nvim-tree.lua +++ b/tools/nvim/lua/keymaps/nvim-tree.lua @@ -1,5 +1,7 @@ local M = {} +M.event = "BufEnter" + M.global = { { mode = "n", keys = "E", cmd = ":NvimTreeToggle" }, { mode = "n", keys = "", cmd = ":NvimTreeFindFileToggle" }, diff --git a/tools/nvim/lua/plugins/appearance.lua b/tools/nvim/lua/plugins/appearance.lua index 42334f9..e75155a 100644 --- a/tools/nvim/lua/plugins/appearance.lua +++ b/tools/nvim/lua/plugins/appearance.lua @@ -1,8 +1,19 @@ +-- https://stackoverflow.com/a/73365602 +vim.api.nvim_create_autocmd("TextYankPost", { + group = vim.api.nvim_create_augroup("highlight_yank", {}), + desc = "Hightlight selection on yank", + pattern = "*", + callback = function() + vim.highlight.on_yank({ higroup = "IncSearch", timeout = 500 }) + end, +}) + return { -- Colorschemes { "catppuccin/nvim", name = "catppuccin", + lazy = true, opts = { flavor = "auto", background = { @@ -10,6 +21,7 @@ return { dark = "mocha", }, integrations = { + -- lualine = true, "lualine", }, }, @@ -20,6 +32,7 @@ return { opts = { variant = "dawn", }, + cmd = "Telescope colorscheme", }, -- { "olimorris/onedarkpro.nvim", cmd = "Telescope colorscheme" }, { "rebelot/kanagawa.nvim", cmd = "Telescope colorscheme" }, @@ -28,20 +41,22 @@ return { { -- Modern Status Line "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, + event = "VeryLazy", config = function() require("plugins.mod.lualine") end, }, - { -- Highlight yanked text - "gbprod/yanky.nvim", - opts = { - highlight = { - on_put = true, - on_yank = true, - timer = 500, - }, - }, - }, + -- { -- Highlight yanked text + -- "gbprod/yanky.nvim", + -- event = "LazyFile", + -- opts = { + -- highlight = { + -- on_put = true, + -- on_yank = true, + -- timer = 500, + -- }, + -- }, + -- }, -- { import = "plugins.mod.alpha-nvim" }, -- Dashboard { -- Breadcrumb "Bekaboo/dropbar.nvim", @@ -88,6 +103,8 @@ return { }, { -- Highlight and navigate between TODOs "folke/todo-comments.nvim", + cmd = { "TodoTelescope" }, + event = "BufRead", opts = {}, dependencies = { "nvim-lua/plenary.nvim" }, }, diff --git a/tools/nvim/lua/plugins/completion.lua b/tools/nvim/lua/plugins/completion.lua index 62e9179..98ef519 100644 --- a/tools/nvim/lua/plugins/completion.lua +++ b/tools/nvim/lua/plugins/completion.lua @@ -10,14 +10,10 @@ return { event = "InsertEnter", config = function() require("luasnip.loaders.from_vscode").lazy_load({ paths = "~/.config/lsp-snippets" }) - -- require("luasnip.loaders.from_vscode").lazy_load() end, }, - { - "zbirenbaum/copilot-cmp", - opts = {}, - -- config = function() - -- require("copilot_cmp").setup() - -- end, - }, + -- { + -- "zbirenbaum/copilot-cmp", + -- opts = {}, + -- }, } diff --git a/tools/nvim/lua/plugins/dap.lua b/tools/nvim/lua/plugins/dap.lua index d9fe1e5..37c5cc7 100644 --- a/tools/nvim/lua/plugins/dap.lua +++ b/tools/nvim/lua/plugins/dap.lua @@ -2,6 +2,7 @@ return { { "mfussenegger/nvim-dap", + event = "BufReadPre", config = function() local dap = require("dap") dap.adapters.codelldb = { @@ -28,10 +29,13 @@ return { "rcarriga/nvim-dap-ui", opts = {}, dependencies = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" }, + cmd = "DapNew", }, - { "theHamsta/nvim-dap-virtual-text", opts = {} }, + { "theHamsta/nvim-dap-virtual-text", opts = {}, cmd = "DapNew" }, { "mfussenegger/nvim-dap-python", + event = "BufReadPost", + ft = "python", config = function() require("dap-python").setup("uv") end, diff --git a/tools/nvim/lua/plugins/edit.lua b/tools/nvim/lua/plugins/edit.lua index 6e7e709..dabc547 100644 --- a/tools/nvim/lua/plugins/edit.lua +++ b/tools/nvim/lua/plugins/edit.lua @@ -1,15 +1,15 @@ return { { "folke/flash.nvim", - event = "VeryLazy", + event = "BufEnter", opts = {}, - -- stylua: ignore + -- stylua: ignore keys = { - { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" }, - { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" }, - { "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" }, - { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" }, - { "", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" }, + { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" }, + { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" }, + { "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" }, + { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" }, + { "", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" }, }, }, { @@ -17,13 +17,13 @@ return { version = "*", -- Use the latest tagged version -- opts = , -- This causes the plugin setup function to be called keys = { - { "", "MultipleCursorsAddDown", mode = { "n", "x" }, desc = "Add cursor and move down" }, - { "", "MultipleCursorsAddUp", mode = { "n", "x" }, desc = "Add cursor and move up" }, + { "", "MultipleCursorsAddDown", mode = { "n", "x" }, desc = "Add cursor and move down" }, + { "", "MultipleCursorsAddUp", mode = { "n", "x" }, desc = "Add cursor and move up" }, - { "", "MultipleCursorsAddUp", mode = { "n", "i", "x" }, desc = "Add cursor and move up" }, - { "", "MultipleCursorsAddDown", mode = { "n", "i", "x" }, desc = "Add cursor and move down" }, + { "", "MultipleCursorsAddUp", mode = { "n", "i", "x" }, desc = "Add cursor and move up" }, + { "", "MultipleCursorsAddDown", mode = { "n", "i", "x" }, desc = "Add cursor and move down" }, - { "", "MultipleCursorsMouseAddDelete", mode = { "n", "i" }, desc = "Add or remove cursor" }, + { "", "MultipleCursorsMouseAddDelete", mode = { "n", "i" }, desc = "Add or remove cursor" }, }, config = function() local normal_mode_motion = require("multiple-cursors.normal_mode.motion") @@ -41,20 +41,20 @@ return { require("nvim-autopairs").enable() end, custom_key_maps = { - { { "n", "x" }, { "e", "" }, normal_mode_motion.k, "nowrap" }, - { { "n", "x" }, { "n", "" }, normal_mode_motion.j, "nowrap" }, - { { "n", "x" }, { "i", "", "" }, normal_mode_motion.l, "nowrap" }, - { { "n", "x" }, "j", normal_mode_motion.e, "nowrap" }, - { { "n", "x" }, "J", normal_mode_motion.E, "nowrap" }, - { { "n", "x" }, "gj", normal_mode_motion.ge, "nowrap" }, - { { "n", "x" }, "gJ", normal_mode_motion.gE, "nowrap" }, - { "n", "E", normal_mode_edit.J, "nowrap" }, - { "n", "gE", normal_mode_edit.gJ, "nowrap" }, - { "n", { "l", "" }, normal_mode_mode_change.i, "nowrap" }, - { "n", "L", normal_mode_mode_change.I, "nowrap" }, - { "x", "l", visual_mode_modify_area.i, "nowrap" }, - { "x", "E", visual_mode_edit.J, "nowrap" }, - { "x", "gE", visual_mode_edit.gJ, "nowrap" }, + { { "n", "x" }, { "e", "" }, normal_mode_motion.k, "nowrap" }, + { { "n", "x" }, { "n", "" }, normal_mode_motion.j, "nowrap" }, + { { "n", "x" }, { "i", "", "" }, normal_mode_motion.l, "nowrap" }, + { { "n", "x" }, "j", normal_mode_motion.e, "nowrap" }, + { { "n", "x" }, "J", normal_mode_motion.E, "nowrap" }, + { { "n", "x" }, "gj", normal_mode_motion.ge, "nowrap" }, + { { "n", "x" }, "gJ", normal_mode_motion.gE, "nowrap" }, + { "n", "E", normal_mode_edit.J, "nowrap" }, + { "n", "gE", normal_mode_edit.gJ, "nowrap" }, + { "n", { "l", "" }, normal_mode_mode_change.i, "nowrap" }, + { "n", "L", normal_mode_mode_change.I, "nowrap" }, + { "x", "l", visual_mode_modify_area.i, "nowrap" }, + { "x", "E", visual_mode_edit.J, "nowrap" }, + { "x", "gE", visual_mode_edit.gJ, "nowrap" }, }, }) end, @@ -63,7 +63,7 @@ return { { "kylechui/nvim-surround", version = "*", -- Use for stability; omit to use `main` branch for the latest features - event = "VeryLazy", + event = "BufEnter", opts = {}, }, { diff --git a/tools/nvim/lua/plugins/fileutils.lua b/tools/nvim/lua/plugins/fileutils.lua index d195e48..56a79e2 100644 --- a/tools/nvim/lua/plugins/fileutils.lua +++ b/tools/nvim/lua/plugins/fileutils.lua @@ -1,17 +1,18 @@ return { { "rmagatti/auto-session", - lazy = false, + event = "BufReadPre", opts = { suppressed_dirs = { "~/", "~/Projects", "~/Downloads", "/" }, }, }, - { import = "plugins.mod.nvim-tree" }, + -- { import = "plugins.mod.nvim-tree" }, { import = "plugins.mod.telescope" }, -- { import = "plugins.mod.fzf" }, { "ahmedkhalf/project.nvim", + event = "VeryLazy", opts = { detection_methods = { "lsp", "pattern" }, patterns = { ".git", "Makefile", "package.json" }, @@ -46,5 +47,14 @@ return { -- }, { "NeogitOrg/neogit", + -- dependencies = { + -- "nvim-lua/plenary.nvim", -- required + -- "nvim-telescope/telescope.nvim", -- optional + -- }, + config = true, + -- event = "VeryLazy", + cmd = { + "Neogit", + }, }, } diff --git a/tools/nvim/lua/plugins/lsp.lua b/tools/nvim/lua/plugins/lsp.lua index 7bc52b0..db5238b 100644 --- a/tools/nvim/lua/plugins/lsp.lua +++ b/tools/nvim/lua/plugins/lsp.lua @@ -12,6 +12,7 @@ return { }, { "js0ny/luasnip-latex-snippets.nvim", + ft = { "tex", "markdown" }, -- vimtex isn't required if using treesitter requires = { "L3MON4D3/LuaSnip", "lervag/vimtex" }, config = function() @@ -20,10 +21,18 @@ return { require("luasnip").config.setup({ enable_autosnippets = true }) end, }, - { "williamboman/mason.nvim", config = true }, + { + "williamboman/mason.nvim", + cmd = "Mason", + build = ":MasonUpdate", + opts_extend = { "ensure_installed" }, + opts = { + ensure_installed = require("config.servers").servers, + }, + }, { "williamboman/mason-lspconfig.nvim", - lazy = false, + event = "BufReadPre", dependencies = { { "williamboman/mason.nvim" }, { "neovim/nvim-lspconfig" }, @@ -34,7 +43,7 @@ return { }, }, { import = "plugins.mod.conform-nvim" }, - { "nvim-treesitter/nvim-treesitter-context" }, + { "nvim-treesitter/nvim-treesitter-context", lazy = true }, { "NoahTheDuke/vim-just", ft = { "just" }, @@ -58,9 +67,9 @@ return { highlight = { enable = true }, indent = { enable = true }, }, - config = function(_, opts) - require("nvim-treesitter.configs").setup(opts) - end, + -- config = function(_, opts) + -- require("nvim-treesitter.configs").setup(opts) + -- end, }, { "folke/lazydev.nvim", diff --git a/tools/nvim/lua/plugins/misc.lua b/tools/nvim/lua/plugins/misc.lua index e80320d..1db8a99 100644 --- a/tools/nvim/lua/plugins/misc.lua +++ b/tools/nvim/lua/plugins/misc.lua @@ -1,23 +1,24 @@ return { + { "nvim-lua/plenary.nvim", lazy = true }, { "wakatime/vim-wakatime", lazy = false }, { import = "plugins.mod.toggleterm" }, - { - "CRAG666/code_runner.nvim", - config = true, - keys = { - { "cr", "RunCode", desc = "Run code" }, - }, - dependencies = { - - { - "CRAG666/betterTerm.nvim", - opts = { - position = "bot", - size = 15, - }, - }, - }, - }, + -- { + -- "CRAG666/code_runner.nvim", + -- config = true, + -- keys = { + -- { "cr", "RunCode", desc = "Run code" }, + -- }, + -- dependencies = { + -- + -- { + -- "CRAG666/betterTerm.nvim", + -- opts = { + -- position = "bot", + -- size = 15, + -- }, + -- }, + -- }, + -- }, { import = "plugins.mod.which-keys-nvim" }, { import = "plugins.mod.copilot-lua" }, { import = "plugins.mod.avante-nvim" }, @@ -27,7 +28,8 @@ return { cmd = { "Leet", }, - event = "VeryLazy", + lazy = true, + -- event = "VeryLazy", dependencies = { "nvim-telescope/telescope.nvim", -- "ibhagwan/fzf-lua", diff --git a/tools/nvim/lua/plugins/mod/avante-nvim.lua b/tools/nvim/lua/plugins/mod/avante-nvim.lua index 8911077..9e8ea29 100644 --- a/tools/nvim/lua/plugins/mod/avante-nvim.lua +++ b/tools/nvim/lua/plugins/mod/avante-nvim.lua @@ -33,6 +33,8 @@ return { -- support for image pasting "HakonHarnes/img-clip.nvim", event = "VeryLazy", + ft = { "avante", "markdown", "typst", "org", "tex" }, + cmd = "PasteImage", opts = { -- recommended settings default = { diff --git a/tools/nvim/lua/plugins/mod/blink-cmp.lua b/tools/nvim/lua/plugins/mod/blink-cmp.lua index 75fe1d7..9de0911 100644 --- a/tools/nvim/lua/plugins/mod/blink-cmp.lua +++ b/tools/nvim/lua/plugins/mod/blink-cmp.lua @@ -1,10 +1,11 @@ return { "saghen/blink.cmp", -- optional: provides snippets for the snippet source - dependencies = { "L3MON4D3/LuaSnip", version = "v2.*" }, + -- dependencies = { "L3MON4D3/LuaSnip", version = "v2.*" }, -- use a release tag to download pre-built binaries version = "*", + event = "InsertEnter", ---@module 'blink.cmp' ---@type blink.cmp.Config diff --git a/tools/nvim/lua/plugins/mod/bufferline.lua b/tools/nvim/lua/plugins/mod/bufferline.lua index 171898e..a284fd6 100644 --- a/tools/nvim/lua/plugins/mod/bufferline.lua +++ b/tools/nvim/lua/plugins/mod/bufferline.lua @@ -10,7 +10,7 @@ return { "akinsho/bufferline.nvim", dependencies = "nvim-tree/nvim-web-devicons", -- 图标支持 after = "catppuccin", - lazy = false, + event = "VeryLazy", keys = { { "b1", "BufferLineGotoBuffer 1", desc = "Switch to Buffer #1" }, { "b2", "BufferLineGotoBuffer 2", desc = "Switch to Buffer #2" }, diff --git a/tools/nvim/lua/plugins/mod/lang/markdown/init.lua b/tools/nvim/lua/plugins/mod/lang/markdown/init.lua index 9374576..cad97de 100644 --- a/tools/nvim/lua/plugins/mod/lang/markdown/init.lua +++ b/tools/nvim/lua/plugins/mod/lang/markdown/init.lua @@ -2,5 +2,5 @@ return { { import = "plugins.mod.lang.markdown.render-markdown" }, -- { import = "plugins.mod.lang.markdown.markview" }, { import = "plugins.mod.lang.markdown.obsidian-nvim" }, - { "bullets-vim/bullets.vim" }, + { "bullets-vim/bullets.vim", ft = "markdown" }, } diff --git a/tools/nvim/lua/plugins/mod/lang/markdown/render-markdown.lua b/tools/nvim/lua/plugins/mod/lang/markdown/render-markdown.lua index f89a3e1..f0434dd 100644 --- a/tools/nvim/lua/plugins/mod/lang/markdown/render-markdown.lua +++ b/tools/nvim/lua/plugins/mod/lang/markdown/render-markdown.lua @@ -1,7 +1,7 @@ return { { "MeanderingProgrammer/render-markdown.nvim", - lazy = false, + event = "BufRead", ft = { "markdown", "Avante" }, opts = { file_types = { "markdown", "Avante" }, diff --git a/tools/nvim/lua/plugins/mod/lang/org.lua b/tools/nvim/lua/plugins/mod/lang/org.lua index e97355d..f89f823 100644 --- a/tools/nvim/lua/plugins/mod/lang/org.lua +++ b/tools/nvim/lua/plugins/mod/lang/org.lua @@ -1,23 +1,23 @@ return { { - -- "js0ny/nvim-orgmode", - name = "orgmode", + "nvim-orgmode/orgmode", dependencies = { "nvim-telescope/telescope.nvim", "nvim-orgmode/telescope-orgmode.nvim", "nvim-orgmode/org-bullets.nvim", "Saghen/blink.cmp", }, - branch = "feat-image-match-latex", cmd = { "Org", }, + ft = { + "org", + "orgagenda", + }, keys = { { "A", "Org agenda", desc = "Org Agenda" }, }, - dir = "~/Source/Forks/nvim-orgmode", - dev = true, - event = "VeryLazy", + event = "BufEnter *.org", config = function() require("orgmode").setup({ org_agenda_files = "~/OrgFiles/tasks/*", diff --git a/tools/nvim/lua/plugins/mod/lualine/init.lua b/tools/nvim/lua/plugins/mod/lualine/init.lua index 7cdeb1c..2cf85d9 100644 --- a/tools/nvim/lua/plugins/mod/lualine/init.lua +++ b/tools/nvim/lua/plugins/mod/lualine/init.lua @@ -14,7 +14,7 @@ Remote | Git Branch | Diagnostics | Command | | MID | | Line:Column | Indent | E local config = { options = { disabled_filetypes = { - statusline = { "NvimTree", "alpha", "grug-far" }, + statusline = { "NvimTree", "alpha", "grug-far", "snacks_dashboard" }, }, -- Disable sections and component separators component_separators = { left = "", right = "" }, diff --git a/tools/nvim/lua/plugins/mod/nvim-lspconfig.lua b/tools/nvim/lua/plugins/mod/nvim-lspconfig.lua index e8dd9b8..3136516 100644 --- a/tools/nvim/lua/plugins/mod/nvim-lspconfig.lua +++ b/tools/nvim/lua/plugins/mod/nvim-lspconfig.lua @@ -1,6 +1,11 @@ return { "neovim/nvim-lspconfig", dependencies = { "saghen/blink.cmp" }, + event = { + "BufReadPost", + "BufWritePost", + "BufNewFile", + }, -- example using `opts` for defining servers opts = { diff --git a/tools/nvim/lua/plugins/mod/snacks-nvim.lua b/tools/nvim/lua/plugins/mod/snacks-nvim.lua index 282cf39..87dc536 100644 --- a/tools/nvim/lua/plugins/mod/snacks-nvim.lua +++ b/tools/nvim/lua/plugins/mod/snacks-nvim.lua @@ -7,17 +7,27 @@ return { ---@type snacks.Config opts = { -- bigfile = { enabled = true }, - -- dashboard = { enabled = true }, - -- explorer = { enabled = true }, - -- indent = { enabled = true }, + dashboard = { enabled = true }, + explorer = { enabled = true }, + indent = { enabled = true }, -- input = { enabled = true }, -- picker = { enabled = true }, -- notifier = { enabled = true }, -- quickfile = { enabled = true }, -- scope = { enabled = true }, -- scroll = { enabled = true }, - -- statuscolumn = { enabled = true }, + statuscolumn = { enabled = true }, -- words = { enabled = true }, image = { enabled = true }, }, + keys = { + { + "ft", + function() + require("snacks").explorer() + end + , + desc = "Toggle File Explorer" + }, + } } diff --git a/tools/nvim/lua/plugins/mod/telescope.lua b/tools/nvim/lua/plugins/mod/telescope.lua index 34027ca..e55145d 100644 --- a/tools/nvim/lua/plugins/mod/telescope.lua +++ b/tools/nvim/lua/plugins/mod/telescope.lua @@ -1,5 +1,6 @@ return { "nvim-telescope/telescope.nvim", + cmd = "Telescope", opts = { defaults = { prompt_prefix = require("config.icons").telescope, @@ -28,24 +29,24 @@ return { }, dependencies = { "nvim-lua/plenary.nvim" }, keys = { - { "", "Telescope find_files", desc = "Find Files" }, - { "fc", "Telescope find_files cwd=~/.config/nvim", desc = "Edit configs" }, - { "/", "Telescope live_grep", desc = "Grep Files" }, - { ";", "Telescope", desc = "Show Telescope Commands" }, - { "ui", "Telescope colorscheme", desc = "Change colorscheme" }, - { "pp", "Telescope projects", desc = "List all Projects" }, - { "pg", "Telescope projects", desc = "List all Git Projects" }, - { "ps", "Telescope session-lens", desc = "List all sessions" }, - { "gs", "Telescope git_status", desc = "Git Status" }, - { "gt", "Telescope git_branches", desc = "Git Branches" }, - { "gc", "Telescope git_commits", desc = "Show commits" }, - { "fb", "Telescope buffers", desc = "List Buffers" }, - { "ff", "Telescope fd", desc = "Find Files" }, - { "fh", "Telescope oldfiles", desc = "Recent Files" }, - { "ce", "Telescope diagnostics", desc = "Navigate errors/warnings" }, - { "cs", "Telescope treesitter", desc = "Search symbols" }, - { "cS", "Telescope grep_string", desc = "Search current symbol" }, - { "bB", "Telescope buffers", desc = "List Buffers" }, - { "fl", "Telescope filetypes", desc = "Set Filetype/Lang to ..." }, + { "", "Telescope find_files", desc = "Find Files" }, + { "fc", "Telescope find_files cwd=~/.config/nvim", desc = "Edit configs" }, + { "/", "Telescope live_grep", desc = "Grep Files" }, + { ";", "Telescope", desc = "Show Telescope Commands" }, + { "ui", "Telescope colorscheme", desc = "Change colorscheme" }, + { "pp", "Telescope projects", desc = "List all Projects" }, + { "pg", "Telescope projects", desc = "List all Git Projects" }, + { "ps", "Telescope session-lens", desc = "List all sessions" }, + { "gs", "Telescope git_status", desc = "Git Status" }, + { "gt", "Telescope git_branches", desc = "Git Branches" }, + { "gc", "Telescope git_commits", desc = "Show commits" }, + { "fb", "Telescope buffers", desc = "List Buffers" }, + { "ff", "Telescope fd", desc = "Find Files" }, + { "fh", "Telescope oldfiles", desc = "Recent Files" }, + { "ce", "Telescope diagnostics", desc = "Navigate errors/warnings" }, + { "cs", "Telescope treesitter", desc = "Search symbols" }, + { "cS", "Telescope grep_string", desc = "Search current symbol" }, + { "bB", "Telescope buffers", desc = "List Buffers" }, + { "fl", "Telescope filetypes", desc = "Set Filetype/Lang to ..." }, }, }