diff --git a/flake.nix b/flake.nix index cdb572c..a40219e 100644 --- a/flake.nix +++ b/flake.nix @@ -34,21 +34,12 @@ # Neovim neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; - bufferline-nvim.flake = false; - bufferline-nvim.url = "github:akinsho/bufferline.nvim"; - cmp-async-path.url = "github:FelipeLema/cmp-async-path"; cmp-async-path.flake = false; - comment-box-nvim.flake = false; - comment-box-nvim.url = "github:LudoPinelli/comment-box.nvim"; - copilot-lua.flake = false; copilot-lua.url = "github:zbirenbaum/copilot.lua"; - gitignore-nvim.flake = false; - gitignore-nvim.url = "github:wintermute-cell/gitignore.nvim"; - lspsaga-nvim.flake = false; lspsaga-nvim.url = "github:glepnir/lspsaga.nvim"; diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 805e88b..ac10533 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -75,7 +75,6 @@ in lsp_lines-nvim lspkind-nvim lspsaga-nvim-original - lualine-lsp-progress luasnip nui-nvim nvim-cmp @@ -87,7 +86,6 @@ in popup-nvim promise-async vim-fugitive - vim-lion vim-tmux-navigator ] ++ pluginsWithConfig; }; diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index d7bc4e7..cb933b2 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -22,10 +22,10 @@ vim.api.nvim_create_autocmd("InsertEnter", { require("copilot_cmp").setup() local default_sources = { - { name = "async_path", priority = 4 }, - { name = "copilot", priority = 3 }, + { name = "async_path", priority = 1 }, + { name = "copilot", priority = 2 }, { name = "luasnip", priority = 2 }, - { name = "nvim_lsp", priority = 4 }, + { name = "nvim_lsp", priority = 3 }, } cmp.setup({ @@ -75,8 +75,8 @@ vim.api.nvim_create_autocmd("InsertEnter", { cmp.setup.filetype("org", { sources = vim.tbl_deep_extend("force", default_sources, { - { name = "buffer", priority = 5 }, - { name = "orgmode", priority = 5 }, + { name = "buffer", priority = 1 }, + { name = "orgmode", priority = 3 }, }), }) end, diff --git a/modules/programs/nvim/plugins/bufferline-nvim.lua b/modules/programs/nvim/plugins/bufferline-nvim.lua deleted file mode 100644 index d6f74f1..0000000 --- a/modules/programs/nvim/plugins/bufferline-nvim.lua +++ /dev/null @@ -1,2 +0,0 @@ -vim.opt.termguicolors = true -require("bufferline").setup() diff --git a/modules/programs/nvim/plugins/catppuccin-nvim.lua b/modules/programs/nvim/plugins/catppuccin-nvim.lua index 9c3b7d7..921651c 100644 --- a/modules/programs/nvim/plugins/catppuccin-nvim.lua +++ b/modules/programs/nvim/plugins/catppuccin-nvim.lua @@ -1,6 +1,17 @@ require("catppuccin").setup({ compile_path = vim.fn.stdpath("cache") .. "/catppuccin", -- fix issue of writing to nix store integrations = { + gitsigns = true, + lsp_saga = true, + mini = true, + noice = true, + cmp = true, + native_lsp = { + enabled = true, + }, + treesitter = true, + telescope = true, + lsp_trouble = true, which_key = true, }, }) diff --git a/modules/programs/nvim/plugins/comment-nvim.lua b/modules/programs/nvim/plugins/comment-nvim.lua deleted file mode 100644 index bd47faf..0000000 --- a/modules/programs/nvim/plugins/comment-nvim.lua +++ /dev/null @@ -1 +0,0 @@ -require("Comment").setup() diff --git a/modules/programs/nvim/plugins/copilot-lua.lua b/modules/programs/nvim/plugins/copilot-lua.lua index 7135331..94e9600 100644 --- a/modules/programs/nvim/plugins/copilot-lua.lua +++ b/modules/programs/nvim/plugins/copilot-lua.lua @@ -6,3 +6,6 @@ vim.api.nvim_create_autocmd("VimEnter", { desc = "Disable Copilot by default on startup", command = "Copilot disable", }) +require("which-key").register({ + c = { "Copilot toggle", "Toggle Copilot" }, +}, { prefix = "t" }) diff --git a/modules/programs/nvim/plugins/dashboard-nvim.lua b/modules/programs/nvim/plugins/dashboard-nvim.lua deleted file mode 100644 index 83dcf23..0000000 --- a/modules/programs/nvim/plugins/dashboard-nvim.lua +++ /dev/null @@ -1,9 +0,0 @@ -require("dashboard").setup({ - theme = "hyper", - config = { - packages = { enable = false }, - week_header = { - enable = true, - }, - }, -}) diff --git a/modules/programs/nvim/plugins/lualine-nvim.lua b/modules/programs/nvim/plugins/lualine-nvim.lua deleted file mode 100644 index b72eb13..0000000 --- a/modules/programs/nvim/plugins/lualine-nvim.lua +++ /dev/null @@ -1,44 +0,0 @@ -require("lualine").setup({ - options = { - icons_enabled = true, - theme = "auto", - component_separators = "|", - section_separators = { left = "", right = "" }, - disabled_filetypes = { - statusline = {}, - winbar = {}, - }, - ignore_focus = {}, - always_divide_middle = true, - globalstatus = false, - refresh = { - statusline = 1000, - tabline = 1000, - winbar = 1000, - }, - }, - sections = { - lualine_a = { - { "mode", separator = { left = "" }, right_padding = 2 }, - }, - lualine_b = { "branch", "diff", "diagnostics" }, - lualine_c = { "filename", "lsp_progress" }, - lualine_x = { "encoding", "fileformat", "filetype" }, - lualine_y = { "progress" }, - lualine_z = { - { "location", separator = { right = "" }, left_padding = 2 }, - }, - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = { "filename" }, - lualine_x = { "location" }, - lualine_y = {}, - lualine_z = {}, - }, - tabline = {}, - winbar = {}, - inactive_winbar = {}, - extensions = {}, -}) diff --git a/modules/programs/nvim/plugins/mini-nvim.lua b/modules/programs/nvim/plugins/mini-nvim.lua new file mode 100644 index 0000000..fa40eda --- /dev/null +++ b/modules/programs/nvim/plugins/mini-nvim.lua @@ -0,0 +1,72 @@ +require("mini.align").setup() +require("mini.comment").setup() +require("mini.surround").setup() +require("mini.move").setup() +require("mini.pairs").setup() +require("mini.starter").setup() + +require("mini.tabline").setup() +local tabline_current = vim.api.nvim_get_hl(0, { name = "MiniTablineCurrent" }) +vim.api.nvim_set_hl(0, "MiniTablineCurrent", { + fg = tabline_current.fg, + bg = tabline_current.bg, + bold = true, + italic = true, +}) + +require("mini.statusline").setup({ + content = { + active = function() + local mode, mode_hl = MiniStatusline.section_mode({ trunc_width = 120 }) + local git = MiniStatusline.section_git({ trunc_width = 75 }) + local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 }) + local filename = MiniStatusline.section_filename({ trunc_width = 140 }) + local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 }) + local location = MiniStatusline.section_location({ trunc_width = 75 }) + local mode_hl_inverse = mode_hl .. "Inverse" + -- Usage of `MiniStatusline.combine_groups()` ensures highlighting and + -- correct padding with spaces between groups (accounts for 'missing' + -- sections, etc.) + return MiniStatusline.combine_groups({ + { hl = mode_hl_inverse, strings = {} }, + "", + { hl = mode_hl, strings = { mode } }, + { hl = "MiniStatuslineDevinfo", strings = { git, diagnostics } }, + "%<", -- Mark general truncate point + { hl = "MiniStatuslineFilename", strings = { filename } }, + "%=", -- End left alignment + { hl = "MiniStatuslineFileinfo", strings = { fileinfo } }, + { hl = mode_hl, strings = { location } }, + { hl = mode_hl_inverse, strings = {} }, + "", + }) + end, + }, +}) +local MiniStatuslineModes = { + "MiniStatuslineModeInsert", + "MiniStatuslineModeNormal", + "MiniStatuslineModeReplace", + "MiniStatuslineModeVisual", + "MiniStatuslineModeCommand", + "MiniStatuslineModeOther", +} +for _, mode_hl in ipairs(MiniStatuslineModes) do + local hl_table = vim.api.nvim_get_hl(0, { name = mode_hl }) + local fg = hl_table.fg + hl_table.fg = hl_table.bg + hl_table.bg = fg + vim.api.nvim_set_hl(0, mode_hl .. "Inverse", hl_table) +end + +local animate = require("mini.animate") +local animation = { + timing = animate.gen_timing.quadratic({ duration = 100, unit = "total" }), +} +animate.setup({ + cursor = animation, + scroll = { enable = false }, + resize = animation, + open = animation, + close = animation, +}) diff --git a/modules/programs/nvim/plugins/neo-tree-nvim.lua b/modules/programs/nvim/plugins/neo-tree-nvim.lua deleted file mode 100644 index 3cc61c3..0000000 --- a/modules/programs/nvim/plugins/neo-tree-nvim.lua +++ /dev/null @@ -1,195 +0,0 @@ --- Unless you are still migrating, remove the deprecated commands from v1.x -vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]]) - -require("neo-tree").setup({ - close_if_last_window = true, -- Close Neo-tree if it is the last window left in the tab - popup_border_style = "rounded", - enable_git_status = true, - enable_diagnostics = true, - open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes - sort_case_insensitive = false, -- used when sorting files and directories in the tree - sort_function = nil, -- use a custom function for sorting files and directories in the tree - -- sort_function = function (a,b) - -- if a.type == b.type then - -- return a.path > b.path - -- else - -- return a.type > b.type - -- end - -- end , -- this sorts files and directories descendantly - default_component_configs = { - container = { - enable_character_fade = true, - }, - indent = { - indent_size = 2, - padding = 1, -- extra padding on left hand side - -- indent guides - with_markers = true, - indent_marker = "│", - last_indent_marker = "└", - highlight = "NeoTreeIndentMarker", - -- expander config, needed for nesting files - with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders - expander_collapsed = "", - expander_expanded = "", - expander_highlight = "NeoTreeExpander", - }, - icon = { - folder_closed = "", - folder_open = "", - folder_empty = "ﰊ", - -- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there - -- then these will never be used. - default = "*", - highlight = "NeoTreeFileIcon", - }, - modified = { - symbol = "[+]", - highlight = "NeoTreeModified", - }, - name = { - trailing_slash = false, - use_git_status_colors = true, - highlight = "NeoTreeFileName", - }, - git_status = { - symbols = { - -- Change type - added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name - modified = "", -- or "", but this is redundant info if you use git_status_colors on the name - deleted = "✖", -- this can only be used in the git_status source - renamed = "", -- this can only be used in the git_status source - -- Status type - untracked = "", - ignored = "", - unstaged = "", - staged = "", - conflict = "", - }, - }, - }, - window = { - position = "left", - width = 40, - mapping_options = { - noremap = true, - nowait = true, - }, - mappings = { - [""] = "open", - [""] = "revert_preview", - ["P"] = { "toggle_preview", config = { use_float = false } }, - ["S"] = "open_split", - ["s"] = "open_vsplit", - ["t"] = "open_tabnew", - ["C"] = "close_node", - ["z"] = "close_all_nodes", - ["a"] = { - "add", - -- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details - -- some commands may take optional config options, see `:h neo-tree-mappings` for details - config = { - show_path = "none", -- "none", "relative", "absolute" - }, - }, - ["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion. - ["d"] = "delete", - ["r"] = "rename", - ["y"] = "copy_to_clipboard", - ["x"] = "cut_to_clipboard", - ["p"] = "paste_from_clipboard", - ["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add": - ["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add". - ["q"] = "close_window", - ["R"] = "refresh", - ["?"] = "show_help", - ["<"] = "prev_source", - [">"] = "next_source", - }, - }, - nesting_rules = {}, - filesystem = { - filtered_items = { - visible = false, -- when true, they will just be displayed differently than normal items - hide_dotfiles = true, - hide_gitignored = true, - hide_hidden = true, -- only works on Windows for hidden files/directories - hide_by_name = { - --"node_modules" - }, - hide_by_pattern = { -- uses glob style patterns - --"*.meta", - --"*/src/*/tsconfig.json", - }, - always_show = { -- remains visible even if other settings would normally hide it - --".gitignored", - }, - never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show - --".DS_Store", - --"thumbs.db" - }, - never_show_by_pattern = { -- uses glob style patterns - --".null-ls_*", - }, - }, - follow_current_file = false, -- This will find and focus the file in the active buffer every - -- time the current file is changed while the tree is open. - group_empty_dirs = false, -- when true, empty folders will be grouped together - hijack_netrw_behavior = "disabled", -- netrw disabled, opening a directory opens neo-tree - -- in whatever position is specified in window.position - -- "open_current", -- netrw disabled, opening a directory opens within the - -- window like netrw would, regardless of window.position - -- "disabled", -- netrw left alone, neo-tree does not handle opening dirs - use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes - -- instead of relying on nvim autocmd events. - window = { - mappings = { - [""] = "navigate_up", - ["."] = "set_root", - ["H"] = "toggle_hidden", - ["/"] = "fuzzy_finder", - ["D"] = "fuzzy_finder_directory", - ["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm - ["f"] = "filter_on_submit", - [""] = "clear_filter", - ["[g"] = "prev_git_modified", - ["]g"] = "next_git_modified", - }, - fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode - [""] = "move_cursor_up", - [""] = "move_cursor_down", - }, - }, - }, - buffers = { - follow_current_file = true, -- This will find and focus the file in the active buffer every - -- time the current file is changed while the tree is open. - group_empty_dirs = true, -- when true, empty folders will be grouped together - show_unloaded = true, - window = { - mappings = { - ["bd"] = "buffer_delete", - [""] = "navigate_up", - ["."] = "set_root", - }, - }, - }, - git_status = { - window = { - position = "float", - mappings = { - ["A"] = "git_add_all", - ["gu"] = "git_unstage_file", - ["ga"] = "git_add_file", - ["gr"] = "git_revert_file", - ["gc"] = "git_commit", - ["gp"] = "git_push", - ["gg"] = "git_commit_and_push", - }, - }, - }, -}) - -require("which-key").register({ - t = { "Neotree toggle reveal", "Neotree" }, -}, { prefix = "t", silent = true }) diff --git a/modules/programs/nvim/plugins/null-ls-nvim.lua b/modules/programs/nvim/plugins/null-ls-nvim.lua index e8d0931..7d65248 100644 --- a/modules/programs/nvim/plugins/null-ls-nvim.lua +++ b/modules/programs/nvim/plugins/null-ls-nvim.lua @@ -17,42 +17,25 @@ null_ls.setup({ }, }) --- disable cspell initially +-- disable (c)spell initially null_ls.disable("cspell") +null_ls.disable("spell") -- make sources toggle able require("which-key").register({ n = { name = "null-ls", - c = { + s = { + function() + null_ls.toggle("spell") + end, + "spell", + }, + S = { function() null_ls.toggle("cspell") end, "cspell", }, - g = { - function() - null_ls.toggle("gitsigns") - end, - "gitsigns", - }, - s = { - function() - null_ls.toggle("shellcheck") - end, - "shellcheck", - }, - S = { - function() - null_ls.toggle("statix") - end, - "statix", - }, - d = { - function() - null_ls.toggle("deadnix") - end, - "deadnix", - }, }, }, { prefix = "t" }) diff --git a/modules/programs/nvim/plugins/nvim-autopairs.lua b/modules/programs/nvim/plugins/nvim-autopairs.lua deleted file mode 100644 index c537bba..0000000 --- a/modules/programs/nvim/plugins/nvim-autopairs.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("nvim-autopairs").setup() - --- If you want insert `(` after select function or method item -local cmp_autopairs = require("nvim-autopairs.completion.cmp") -require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done()) diff --git a/modules/programs/nvim/plugins/nvim-surround.lua b/modules/programs/nvim/plugins/nvim-surround.lua deleted file mode 100644 index 8a06dad..0000000 --- a/modules/programs/nvim/plugins/nvim-surround.lua +++ /dev/null @@ -1 +0,0 @@ -require("nvim-surround").setup() diff --git a/modules/programs/nvim/plugins/oil-nvim.lua b/modules/programs/nvim/plugins/oil-nvim.lua index ee12680..e2afffb 100644 --- a/modules/programs/nvim/plugins/oil-nvim.lua +++ b/modules/programs/nvim/plugins/oil-nvim.lua @@ -1 +1,4 @@ require("oil").setup() +require("which-key").register({ + d = { require("oil").toggle_float, "directory (oil)" }, +}, { prefix = "t" }) diff --git a/modules/programs/nvim/plugins/telescope-zoxide.lua b/modules/programs/nvim/plugins/telescope-zoxide.lua deleted file mode 100644 index e725f8d..0000000 --- a/modules/programs/nvim/plugins/telescope-zoxide.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("telescope").load_extension("zoxide") -require("which-key").register({ - z = { "Telescope zoxide list", "Find location (Zoxide)" }, -}, { prefix = "f" }) diff --git a/overlays/vimPlugins.nix b/overlays/vimPlugins.nix index 71a81a1..4c1e2aa 100644 --- a/overlays/vimPlugins.nix +++ b/overlays/vimPlugins.nix @@ -26,27 +26,10 @@ with lib.my; src = inputs.lspsaga-nvim; }); - cmp-async-path = prev.vimPlugins.cmp-path.overrideAttrs (old: { + cmp-async-path = prev.vimPlugins.cmp-path.overrideAttrs (_: { pname = "cmp-async-path"; version = mkVersionInput inputs.cmp-async-path; src = inputs.cmp-async-path; }); - - comment-box-nvim = prev.vimUtils.buildVimPluginFrom2Nix { - pname = "comment-box-nvim"; - version = mkVersionInput inputs.comment-box-nvim; - src = inputs.comment-box-nvim; - }; - - gitignore-nvim = prev.vimUtils.buildVimPluginFrom2Nix { - pname = "gitignore-nvim"; - version = mkVersionInput inputs.gitignore-nvim; - src = inputs.gitignore-nvim; - }; - - bufferline-nvim = prev.vimPlugins.bufferline-nvim.overrideAttrs (_: { - version = mkVersionInput inputs.bufferline-nvim; - src = inputs.bufferline-nvim; - }); }; }