diff options
Diffstat (limited to 'lua/plugins')
| -rw-r--r-- | lua/plugins/codecompanion.lua | 559 | ||||
| -rw-r--r-- | lua/plugins/completition.lua | 82 | ||||
| -rw-r--r-- | lua/plugins/foatterm.lua | 22 | ||||
| -rw-r--r-- | lua/plugins/image.lua | 22 | ||||
| -rw-r--r-- | lua/plugins/img-clip.lua | 12 | ||||
| -rw-r--r-- | lua/plugins/markdown-preview.lua | 8 | ||||
| -rw-r--r-- | lua/plugins/markview.lua | 13 | ||||
| -rw-r--r-- | lua/plugins/navigator.lua | 1 | ||||
| -rw-r--r-- | lua/plugins/rustaceanvim.lua | 4 | ||||
| -rw-r--r-- | lua/plugins/snacks.lua | 154 |
10 files changed, 483 insertions, 394 deletions
diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua index 052b066..90c78b8 100644 --- a/lua/plugins/codecompanion.lua +++ b/lua/plugins/codecompanion.lua @@ -1,291 +1,328 @@ -local IS_DEV = false return { - { - dir = IS_DEV and "~/Projects/research/codecompanion.nvim" or nil, - "olimorris/codecompanion.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-treesitter/nvim-treesitter", - -- "nvim-telescope/telescope.nvim", -- Using telescope for file and buffer picker - "jellydn/spinner.nvim", -- Show loading spinner when request is started - "ravitemer/codecompanion-history.nvim", -- History management extension - { - "echasnovski/mini.diff", - config = function() - local diff = require "mini.diff" - diff.setup { source = diff.gen_source.none() } - end, + "olimorris/codecompanion.nvim", + branch = "main", + dependencies = { + { + "ravitemer/mcphub.nvim", + dependencies = { + "nvim-lua/plenary.nvim", }, - { - "ravitemer/mcphub.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - }, - build = "npm install -g mcp-hub@latest", -- Installs `mcp-hub` node binary globally - config = function() - require("mcphub").setup() - end, - }, - }, - opts = { - log_level = "TRACE", -- or "DEBUG" - adapters = { - http = { - ollama = function() - return require("codecompanion.adapters").extend("ollama", { - name = "tinyllama", - env = { - url = "http://127.0.0.1:11434", - -- api_key = "", - }, - headers = { - ["Content-Type"] = "application/json", - -- ["Authorization"] = "Bearer ${api_key}", - }, - parameters = { - sync = true, - }, - schema = { - model = { - default = "qwen2.5-coder:0.5b", - }, - }, - }) - end, - anthropic = function() - return require("codecompanion.adapters").extend("anthropic", { - env = { - api_key = "cmd:echo $ANTHROPIC_API_KEY", - }, - schema = { - model = { - default = "claude-3-opus-20240229", - }, - }, - }) - end, - copilot = function() - return require("codecompanion.adapters").extend("copilot", { - schema = { - model = { - default = "gpt-4.1", - }, - }, - }) - end, - gemini = function() - return require("codecompanion.adapters").extend("gemini", { - env = { - api_key = "cmd:echo $GEMINI_API_KEY", + build = "bundled_build.lua", -- Bundles `mcp-hub` binary along with the neovim plugin + config = function() + require("mcphub").setup({ + use_bundled_binary = true, -- Use local `mcp-hub` binary + --- `mcp-hub` binary related options------------------- + config = vim.fn.expand("~/.config/mcphub/servers.json"), -- Absolute path to MCP Servers config file (will create if not exists) + port = 37373, -- The port `mcp-hub` server listens to + shutdown_delay = 5 * 60 * 000, -- Delay in ms before shutting down the server when last instance closes (default: 5 minutes) + use_bundled_binary = false, -- Use local `mcp-hub` binary (set this to true when using build = "bundled_build.lua") + mcp_request_timeout = 60000, --Max time allowed for a MCP tool or resource to execute in milliseconds, set longer for long running tasks + global_env = {}, -- Global environment variables available to all MCP servers (can be a table or a function returning a table) + workspace = { + enabled = true, -- Enable project-local configuration files + look_for = { ".mcphub/servers.json", ".vscode/mcp.json", ".cursor/mcp.json" }, -- Files to look for when detecting project boundaries (VS Code format supported) + reload_on_dir_changed = true, -- Automatically switch hubs on DirChanged event + port_range = { min = 40000, max = 41000 }, -- Port range for generating unique workspace ports + get_port = nil, -- Optional function returning custom port number. Called when generating ports to allow custom port assignment logic + }, + + ---Chat-plugin related options----------------- + auto_approve = false, -- Auto approve mcp tool calls + auto_toggle_mcp_servers = true, -- Let LLMs start and stop MCP servers automatically + extensions = { + avante = { + make_slash_commands = true, -- make /slash commands from MCP server prompts + } + }, + + --- Plugin specific options------------------- + native_servers = {}, -- add your custom lua native servers here + builtin_tools = { + edit_file = { + parser = { + track_issues = true, + extract_inline_content = true, }, - }) - end, - openai = function() - return require("codecompanion.adapters").extend("openai", { - env = { - api_key = "cmd:echo $OPENAI_API_KEY", - chat_url = "/v1/chat/completions", - url = "https://api.openai.com", + locator = { + fuzzy_threshold = 0.8, + enable_fuzzy_matching = true, }, - schema = { - model = { - default = function() - return "gpt-4o-mini" - end, + ui = { + go_to_origin_on_complete = true, + keybindings = { + accept = ".", + reject = ",", + next = "n", + prev = "p", + accept_all = "ga", + reject_all = "gr", }, }, - }) + }, + }, + ui = { + window = { + width = 0.8, -- 0-1 (ratio); "50%" (percentage); 50 (raw number) + height = 0.8, -- 0-1 (ratio); "50%" (percentage); 50 (raw number) + align = "center", -- "center", "top-left", "top-right", "bottom-left", "bottom-right", "top", "bottom", "left", "right" + relative = "editor", + zindex = 50, + border = "rounded", -- "none", "single", "double", "rounded", "solid", "shadow" + }, + wo = { -- window-scoped options (vim.wo) + winhl = "Normal:MCPHubNormal,FloatBorder:MCPHubBorder", + }, + }, + json_decode = nil, -- Custom JSON parser function (e.g., require('json5').parse for JSON5 support) + on_ready = function(hub) + -- Called when hub is ready end, - openai_compatible_llama_cpp = function() - return require("codecompanion.adapters").extend("openai_compatible", { - env = { - api_key = "cmd:echo $OPENAI_API_KEY", - chat_url = "/v1/chat/completions", - url = "http://127.0.0.1:8012", - }, - headers = { - ["Content-Type"] = "application/json", - }, - schema = { - model = { - default = function() - return "davinci" - end, - }, - }, - }) + on_error = function(err) + -- Called on errors end, + log = { + level = vim.log.levels.WARN, + to_file = false, + file_path = nil, + prefix = "MCPHub", + }, + }) + end, + }, + "nvim-lua/plenary.nvim", + "nvim-treesitter/nvim-treesitter", + "nvim-treesitter/nvim-treesitter", + "jellydn/spinner.nvim", -- Show loading spinner when request is started + "ravitemer/codecompanion-history.nvim", -- History management extension + { + "echasnovski/mini.diff", + config = function() + local diff = require "mini.diff" + diff.setup { source = diff.gen_source.none() } + end, + }, + { + "HakonHarnes/img-clip.nvim", + opts = { + filetypes = { + codecompanion = { + prompt_for_file_name = false, + template = "[Image]($FILE_PATH)", + use_absolute_path = true, + }, + }, + }, + }, + { + "OXY2DEV/markview.nvim", + lazy = false, + opts = { + preview = { + filetypes = { "markdown", "codecompanion" }, + ignore_buftypes = {}, + }, + }, + }, + + }, + opts = { + log_level = "DEBUG", + }, + config = function() + -- Compatibility patch for recent CodeCompanion/Copilot model schemas + -- where `schema.model.choices` can be a function instead of a table. + local adapter_utils = require("codecompanion.utils.adapters") + adapter_utils.model_choice = function(adapter) + local model = adapter_utils.model(adapter) + local choices = adapter.schema.model.choices + + if type(choices) == "function" then + choices = choices(adapter, { async = false }) + end + + if type(choices) ~= "table" then + return nil + end + + return choices[model] + end - openai_compatible_qwen3_coder = function() + require("codecompanion").setup({ + mcp = { + servers = { + ["duckduckgo-mcp"] = { + cmd = { "npx", "-y", "duckduckgo-mcp" }, + }, + }, + opts = { + default_servers = { "duckduckgo-mcp" }, + }, + }, + adapters = { + http = { + ["llama.cpp"] = function() return require("codecompanion.adapters").extend("openai_compatible", { env = { - api_key = "cmd:echo $DASHSCOPE_API_KEY", + url = "http://127.0.0.1:8012", -- replace with your llama.cpp instance chat_url = "/v1/chat/completions", - url = "https://dashscope-intl.aliyuncs.com/compatible-mode", - }, - headers = { - ["Content-Type"] = "application/json", - }, - schema = { - model = { - default = function() - return "qwen3-coder-plus" - end, - }, - }, - }) - end, - - xai = function() - return require("codecompanion.adapters").extend("xai", { - env = { - api_key = "cmd:op read op://personal/xAI_API/credential --no-newline", - }, - }) - end, - azure_openai = function() - return require("codecompanion.adapters").extend("azure_openai", { - env = { - api_key = "cmd:echo $AZ_DS_API_KEY", - endpoint = "https://DeepSeek-R1-nphob.eastus2.models.ai.azure.com", - }, - schema = { - model = { - default = "DeepSeek-R1-nphob", - }, }, }) end, }, }, - display = { - diff = { - provider = "mini_diff", - }, - }, - strategies = { + interactions = { chat = { - adapter = "openai_compatible_qwen3_coder", - -- roles = { llm = " Copilot Chat", user = "IT Man" }, - }, - inline = { adapter = "copilot" }, - agent = { adapter = "copilot" }, - cmd = { adapter = "copilot" }, - }, - }, - config = function(_, options) - require("codecompanion").setup(options) - require("codecompanion").setup { - opts = { - language = "English", - }, - extensions = { - mcphub = { - callback = "mcphub.extensions.codecompanion", + -- opts = { + -- system_prompt = function(ctx) + -- return "You are a helpful coding assistant. Today is " .. ctx.date + -- end, + -- }, + auto_scroll = false, + tools = { opts = { - make_vars = true, - make_slash_commands = true, - show_result_in_chat = true, + default_tools = { + "agent", + "neovim", + "files", + "grep_search", + "get_changed_files", + "fetch_webpage", + }, + auto_submit_errors = true, -- Send any errors to the LLM automatically? + auto_submit_success = true, -- Send any successful output to the LLM automatically? }, }, - history = { - enabled = true, - opts = { - -- Keymap to open history from chat buffer (default: gh) - keymap = "gh", - -- Keymap to save the current chat manually (when auto_save is disabled) - save_chat_keymap = "sc", - -- Save all chats by default (disable to save only manually using 'sc') - auto_save = true, - -- Number of days after which chats are automatically deleted (0 to disable) - expiration_days = 0, - -- Picker interface (auto resolved to a valid picker) - picker = "snacks", -- ("telescope", "snacks", "fzf-lua", or "default") - -- Optional filter function to control which chats are shown when browsing - chat_filter = nil, -- function(chat_data) return boolean end - -- Customize picker keymaps (optional) - picker_keymaps = { - rename = { n = "r", i = "<M-r>" }, - delete = { n = "d", i = "<M-d>" }, - duplicate = { n = "<C-y>", i = "<C-y>" }, + slash_commands = { + ["file"] = { + -- Use Snacks as the provider for the /file command + opts = { + provider = "snacks", -- Can be "default", "telescope", "fzf_lua", "mini_pick" or "snacks" }, - -- Automatically generate titles for new chats - auto_generate_title = true, - title_generation_opts = { - -- Adapter for generating titles (defaults to current chat adapter) - adapter = "copilot", -- Use copilot for cheaper title generation - -- Model for generating titles (defaults to current chat model) - model = "gpt-4.1", -- Use cheaper model for titles - -- Number of user prompts after which to refresh the title (0 to disable) - refresh_every_n_prompts = 3, -- Refresh after every 3rd user prompt - -- Maximum number of times to refresh the title (default: 3) - max_refreshes = 5, - format_title = function(original_title) - -- Custom formatting for titles - return original_title - end, + }, + ["image"] = { + ---@param opts { adapter: CodeCompanion.HTTPAdapter } + ---@return boolean + enabled = function(opts) + return opts.adapter.opts and opts.adapter.opts.vision == true + end, + -- Keep snacks for image-aware picker preview + opts = { + provider = "snacks", -- Can be "default", "telescope", "fzf_lua", "mini_pick" or "snacks" }, - -- On exiting and entering neovim, loads the last chat on opening chat - continue_last_chat = false, - -- When chat is cleared with `gx` delete the chat from history - delete_on_clearing_chat = false, - -- Directory path to save the chats - dir_to_save = vim.fn.stdpath "data" .. "/codecompanion-history", - -- Enable detailed logging for history extension - enable_logging = false, + }, - -- Summary system - summary = { - -- Keymap to generate summary for current chat (default: "gcs") - create_summary_keymap = "gcs", - -- Keymap to browse summaries (default: "gbs") - browse_summaries_keymap = "gbs", - generation_opts = { - adapter = "copilot", -- Use copilot for cheaper summary generation - model = "gpt-4.1", -- Use cheaper model for summaries - context_size = 90000, -- max tokens that the model supports - include_references = true, -- include slash command content - include_tool_outputs = true, -- include tool execution results - system_prompt = nil, -- custom system prompt (string or function) - format_summary = nil, -- custom function to format generated summary - }, + }, + -- adapter = "llama.cpp", + adapter = { + name = "copilot", + model = "gpt-5-mini", + }, + }, + inline = { + -- adapter = "llama.cpp", + adapter = { + name = "copilot", + model = "gpt-5-mini", + }, + }, + cmd = { + -- adapter = "llama.cpp", + adapter = { + name = "copilot", + model = "gpt-5-mini", + }, + }, + background = { + -- adapter = "llama.cpp" + adapter = { + name = "copilot", + model = "gpt-5-mini", + }, + }, + }, + extensions = { + history = { + enabled = true, + opts = { + keymap = "gh", + save_chat_keymap = "sc", + auto_save = true, + expiration_days = 0, + picker = "snacks", + chat_filter = nil, + picker_keymaps = { + rename = { n = "r", i = "<M-r>" }, + delete = { n = "d", i = "<M-d>" }, + duplicate = { n = "<C-y>", i = "<C-y>" }, + }, + auto_generate_title = true, + title_generation_opts = { + adapter = nil, + model = nil, + refresh_every_n_prompts = 0, -- e.g., 3 to refresh after every 3rd user prompt + max_refreshes = 3, + format_title = function(original_title) + return original_title + end + }, + continue_last_chat = false, + delete_on_clearing_chat = false, + dir_to_save = vim.fn.stdpath("data") .. "/codecompanion-history", + enable_logging = false, + + summary = { + create_summary_keymap = "gcs", + browse_summaries_keymap = "gbs", + generation_opts = { + adapter = nil, -- defaults to current chat adapter + model = nil, -- defaults to current chat model + context_size = 90000, -- max tokens that the model supports + include_references = true, -- include slash command content + include_tool_outputs = true, -- include tool execution results + system_prompt = nil, -- custom system prompt (string or function) + format_summary = nil, -- custom function to format generated summary e.g to remove <think/> tags from summary }, + }, - -- Memory system (requires VectorCode CLI) - memory = { - -- Automatically index summaries when they are generated - auto_create_memories_on_summary_generation = false, -- Disabled by default - -- Path to the VectorCode executable - vectorcode_exe = "vectorcode", - -- Tool configuration - tool_opts = { - -- Default number of memories to retrieve - default_num = 10, - }, - -- Enable notifications for indexing progress - notify = true, - -- Index all existing memories on startup - index_on_startup = false, + memory = { + auto_create_memories_on_summary_generation = true, + vectorcode_exe = "vectorcode", + tool_opts = { + default_num = 10 }, + notify = true, + index_on_startup = false, }, - }, + } + } + }, + action_palette = { + width = 95, + height = 10, + prompt = "Prompt ", -- Prompt used for interactive LLM calls + provider = "snacks", -- Can be "default", "telescope", "fzf_lua", "mini_pick" or "snacks". If not specified, the plugin will autodetect installed providers. + opts = { + show_preset_actions = true, -- Show the preset actions in the action palette? + show_preset_prompts = true, -- Show the preset prompts in the action palette? + title = "CodeCompanion actions", -- The title of the action palette }, - } - -- Show loading spinner when request is started - local spinner = require "spinner" - local group = vim.api.nvim_create_augroup("CodeCompanionHooks", {}) - vim.api.nvim_create_autocmd({ "User" }, { - pattern = "CodeCompanionRequest*", - group = group, - callback = function(request) - if request.match == "CodeCompanionRequestStarted" then - spinner.show() - end - if request.match == "CodeCompanionRequestFinished" then - spinner.hide() - end - end, - }) - end, - }, + }, + }) + + -- Show loading spinner when request is started + local spinner = require "spinner" + local group = vim.api.nvim_create_augroup("CodeCompanionHooks", {}) + vim.api.nvim_create_autocmd({ "User" }, { + pattern = "CodeCompanionRequest*", + group = group, + callback = function(request) + if request.match == "CodeCompanionRequestStarted" then + spinner.show() + end + if request.match == "CodeCompanionRequestFinished" then + spinner.hide() + end + end, + }) + end, } diff --git a/lua/plugins/completition.lua b/lua/plugins/completition.lua index 91a7b89..071c16c 100644 --- a/lua/plugins/completition.lua +++ b/lua/plugins/completition.lua @@ -5,16 +5,63 @@ return { "rafamadriz/friendly-snippets", { "L3MON4D3/LuaSnip", version = "v1.*" }, "windwp/nvim-autopairs", - { - "zbirenbaum/copilot.lua", - cmd = { "Copilot" }, - event = { "VeryLazy" }, - opts = { suggestion = { enabled = false }, panel = { enabled = false } }, - }, - -- Add blink.cmp copilot source - "giuxtaposition/blink-cmp-copilot", + -- { + -- "zbirenbaum/copilot.lua", + -- cmd = { "Copilot" }, + -- event = { "VeryLazy" }, + -- opts = { suggestion = { enabled = false }, panel = { enabled = false } }, + -- }, + -- -- Add blink.cmp copilot source + -- { + -- "giuxtaposition/blink-cmp-copilot", + -- }, -- Add blink.cmp latex source for LaTeX/VimTeX support "erooke/blink-cmp-latex", + -- Add minuet-ai for AI completions with llama-server + { + "milanglacier/minuet-ai.nvim", + config = function() + require('minuet').setup { + provider = 'openai_fim_compatible', + n_completions = 1, -- recommend for local model for resource saving + -- I recommend beginning with a small context window size and incrementally + -- expanding it, depending on your local computing power. A context window + -- of 512, serves as an good starting point to estimate your computing + -- power. Once you have a reliable estimate of your local computing power, + -- you should adjust the context window to a larger value. + context_window = 512, + provider_options = { + openai_fim_compatible = { + -- For Windows users, TERM may not be present in environment variables. + -- Consider using APPDATA instead. + api_key = 'TERM', + name = 'Qwen', + end_point = 'http://localhost:8012/v1/completions', + -- The model is set by the llama-cpp server and cannot be altered + -- post-launch. + model = 'PLACEHOLDER', + optional = { + max_tokens = 56, + top_p = 0.9, + }, + -- Llama.cpp does not support the `suffix` option in FIM completion. + -- Therefore, we must disable it and manually populate the special + -- tokens required for FIM completion. + template = { + prompt = function(context_before_cursor, context_after_cursor, _) + return '<|fim_prefix|>' + .. context_before_cursor + .. '<|fim_suffix|>' + .. context_after_cursor + .. '<|fim_middle|>' + end, + suffix = false, + }, + }, + }, + } + end, + }, }, -- use a release tag to download pre-built binaries @@ -60,7 +107,7 @@ return { border = "rounded", draw = { columns = { - { "label", "label_description", gap = 1 }, + { "label", "label_description", gap = 1 }, { "kind_icon", "kind" }, }, }, @@ -70,19 +117,26 @@ return { -- Default list of enabled providers sources = { - default = { "lsp", "path", "snippets", "buffer", "copilot" }, + default = { "lsp", "path", "snippets", "buffer", "minuet" }, + -- default = { "lsp", "path", "snippets", "buffer", "copilot", "minuet" }, per_filetype = { tex = { "lsp", "path", "snippets", "buffer", "latex" }, bib = { "lsp", "path", "snippets", "buffer", "latex" }, codecompanion = { "codecompanion" }, }, providers = { - copilot = { - name = "copilot", - module = "blink-cmp-copilot", - score_offset = 100, + minuet = { + name = "minuet", + module = "minuet.blink", + score_offset = 101, async = true, }, + -- copilot = { + -- name = "copilot", + -- module = "blink-cmp-copilot", + -- score_offset = 100, + -- async = true, + -- }, latex = { name = "latex", module = "blink-cmp-latex", diff --git a/lua/plugins/foatterm.lua b/lua/plugins/foatterm.lua deleted file mode 100644 index a6c64b5..0000000 --- a/lua/plugins/foatterm.lua +++ /dev/null @@ -1,22 +0,0 @@ -return { - "nvzone/floaterm", - dependencies = "nvzone/volt", - opts = { - border = false, - size = { h = 40, w = 70 }, - -- to use, make this func(buf) - position = { row = 50, col = 35 }, - show_sidebar = false, -- oculta el sidebar - show_bar = false, -- oculta la barra - mappings = { sidebar = nil, term = nil }, - - -- Default sets of terminals you'd like to open - terminals = { - { name = "Terminal" }, - -- cmd can be function too - -- { name = "Terminal", cmd = "neofetch" }, - -- More terminals - }, - }, - cmd = "FloatermToggle", -} diff --git a/lua/plugins/image.lua b/lua/plugins/image.lua index c8e231f..edd938f 100644 --- a/lua/plugins/image.lua +++ b/lua/plugins/image.lua @@ -1,12 +1,24 @@ + return { - "samodostal/image.nvim", - dependencies = { - "m00qek/baleia.nvim", - }, + "3rd/image.nvim", opts = { + backend = "sixel", + max_width = nil, + max_height = nil, + max_width_window_percentage = nil, + max_height_window_percentage = nil, + window_overlap_clear_enabled = true, + window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "notify", "noice", "lazy", "mason", "oil_list", "TelescopePrompt" }, + editor_only_render_when_focused = true, + tmux_show_only_in_active_window = true, render = { + debounce_ms = 10, + show_label = true, + label_align = "center", + label_format = "[image.nvim] %s", foreground_color = true, background_color = true, - } + }, + integrations = {}, }, } diff --git a/lua/plugins/img-clip.lua b/lua/plugins/img-clip.lua deleted file mode 100644 index 3926bde..0000000 --- a/lua/plugins/img-clip.lua +++ /dev/null @@ -1,12 +0,0 @@ -return { - "HakonHarnes/img-clip.nvim", - opts = { - filetypes = { - codecompanion = { - prompt_for_file_name = false, - template = "[Image]($FILE_PATH)", - use_absolute_path = true, - }, - }, - }, -} diff --git a/lua/plugins/markdown-preview.lua b/lua/plugins/markdown-preview.lua deleted file mode 100644 index 15f57ce..0000000 --- a/lua/plugins/markdown-preview.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "adalessa/markdown-preview.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - }, - config = true, - ft = "markdown", -} diff --git a/lua/plugins/markview.lua b/lua/plugins/markview.lua deleted file mode 100644 index fb38eb8..0000000 --- a/lua/plugins/markview.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - "OXY2DEV/markview.nvim", - lazy = false, - opts = { - preview = { - filetypes = { "markdown", "codecompanion", "copilot-chat" }, - ignore_buftypes = {}, - }, - experimental = { - check_rtp_message = false, -- Disable the runtime path warning message - }, - }, -} diff --git a/lua/plugins/navigator.lua b/lua/plugins/navigator.lua index bc72469..954dfeb 100644 --- a/lua/plugins/navigator.lua +++ b/lua/plugins/navigator.lua @@ -14,6 +14,7 @@ return { default_mapping = false, lsp = { disable_lsp = "all", -- Uses native LSP configuration instead of lspconfig + format_on_save = false, hover = { enable = false, }, diff --git a/lua/plugins/rustaceanvim.lua b/lua/plugins/rustaceanvim.lua index 46c4c82..6a48d93 100644 --- a/lua/plugins/rustaceanvim.lua +++ b/lua/plugins/rustaceanvim.lua @@ -1,5 +1,5 @@ return { 'mrcjkb/rustaceanvim', - version = '^5', -- Recommended - lazy = false, -- This plugin is already lazy + version = '^8', -- Recommended + lazy = false, -- This plugin is already lazy } diff --git a/lua/plugins/snacks.lua b/lua/plugins/snacks.lua index bcec3e5..c6b63b3 100644 --- a/lua/plugins/snacks.lua +++ b/lua/plugins/snacks.lua @@ -10,79 +10,119 @@ return { indent = { enabled = true }, input = { enabled = true }, notifier = { enabled = true }, - picker = { enabled = true }, + picker = { + enabled = true, + ui_select = false, + jump = { + reuse_win = true, + }, + on_show = function(picker) + vim.schedule(function() + -- vim.api.nvim_win_call(picker.input.win.win, function() + vim.cmd 'startinsert' + -- end) + end) + end, + sources = { + files = { + layout = { preset = "telescope" }, + focus = "list", + }, + }, + }, + layout = { + preset = "dropdown", + layout = { + backdrop = false, + width = 0.4, + min_width = 80, + height = 0.25, + min_height = 10, + border = "none", + box = "vertical", + { + box = "vertical", + border = true, + title = "{title} {live} {flags}", + title_pos = "center", + { win = "input", height = 1, border = "bottom" }, + { win = "list", border = "none" }, + }, + }, + }, quickfile = { enabled = true }, scope = { enabled = true }, scroll = { enabled = true }, statuscolumn = { enabled = true }, words = { enabled = true }, + image = { enabled = true }, }, keys = { -- Top Pickers & Explorer - { "<leader><space>", function() Snacks.picker.smart() end, desc = "Smart Find Files" }, - { "<leader>,", function() Snacks.picker.buffers() end, desc = "Buffers" }, - { "<leader>/", function() Snacks.picker.grep() end, desc = "Grep" }, - { "<leader>:", function() Snacks.picker.command_history() end, desc = "Command History" }, - { "<leader>n", function() Snacks.picker.notifications() end, desc = "Notification History" }, - { "<leader>e", function() Snacks.explorer() end, desc = "File Explorer" }, + { "<leader><space>", function() Snacks.picker.smart() end, desc = "Smart Find Files" }, + { "<leader>,", function() Snacks.picker.buffers() end, desc = "Buffers" }, + { "<leader>/", function() Snacks.picker.grep() end, desc = "Grep" }, + { "<leader>:", function() Snacks.picker.command_history() end, desc = "Command History" }, + { "<leader>n", function() Snacks.picker.notifications() end, desc = "Notification History" }, + { "<leader>e", function() Snacks.explorer() end, desc = "File Explorer" }, -- find - { "<leader>fb", function() Snacks.picker.buffers() end, desc = "Buffers" }, - { "<leader>fc", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) end, desc = "Find Config File" }, - { "<leader>ff", function( |