mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2025-12-06 14:53:38 -08:00
update nvim
This commit is contained in:
@@ -49,8 +49,8 @@ return {
|
||||
local s = " "
|
||||
for e, n in pairs(diagnostics_dict) do
|
||||
local sym = e == "error" and " "
|
||||
or e == "hint" and " "
|
||||
or (e == "warning" and " " or "")
|
||||
or e == "hint" and " "
|
||||
or (e == "warning" and " " or "")
|
||||
s = s .. n .. sym
|
||||
end
|
||||
return s
|
||||
|
||||
@@ -1,56 +1,92 @@
|
||||
return {
|
||||
"catppuccin/nvim",
|
||||
name = "catppuccin",
|
||||
priority = 1000,
|
||||
opts = {
|
||||
flavour = "macchiato", -- latte, frappe, macchiato, mocha
|
||||
term_colors = true, -- sets terminal colors (e.g. `g:terminal_color_0`)
|
||||
integrations = {
|
||||
cmp = true,
|
||||
gitsigns = true,
|
||||
nvimtree = true,
|
||||
mini = {
|
||||
enabled = true,
|
||||
indentscope_color = "",
|
||||
},
|
||||
bufferline = true,
|
||||
dashboard = true,
|
||||
fidget = true,
|
||||
indent_blankline = {
|
||||
enabled = true,
|
||||
scope_color = "lavendar", -- catppuccin color (eg. `lavender`) Default: text
|
||||
colored_indent_levels = true,
|
||||
},
|
||||
copilot_vim = true,
|
||||
native_lsp = {
|
||||
enabled = true,
|
||||
virtual_text = {
|
||||
errors = { "italic" },
|
||||
hints = { "italic" },
|
||||
warnings = { "italic" },
|
||||
information = { "italic" },
|
||||
ok = { "italic" },
|
||||
},
|
||||
underlines = {
|
||||
errors = { "underline" },
|
||||
hints = { "underline" },
|
||||
warnings = { "underline" },
|
||||
information = { "underline" },
|
||||
ok = { "underline" },
|
||||
},
|
||||
inlay_hints = {
|
||||
background = true,
|
||||
},
|
||||
},
|
||||
notify = true,
|
||||
treesitter = true,
|
||||
rainbow_delimiters = true,
|
||||
telescope = {
|
||||
enabled = true,
|
||||
-- style = "nvchad"
|
||||
},
|
||||
which_key = true
|
||||
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
|
||||
}
|
||||
}
|
||||
"catppuccin/nvim",
|
||||
name = "catppuccin",
|
||||
priority = 1000,
|
||||
opts = {
|
||||
flavour = "macchiato", -- latte, frappe, macchiato, mocha
|
||||
transparent_background = false, -- disables setting the background color.
|
||||
float = {
|
||||
transparent = false, -- enable transparent floating windows
|
||||
solid = false, -- use solid styling for floating windows, see |winborder|
|
||||
},
|
||||
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
|
||||
term_colors = true, -- sets terminal colors (e.g. `g:terminal_color_0`)
|
||||
dim_inactive = {
|
||||
enabled = false, -- dims the background color of inactive window
|
||||
shade = "dark",
|
||||
percentage = 0.15, -- percentage of the shade to apply to the inactive window
|
||||
},
|
||||
no_italic = false, -- Force no italic
|
||||
no_bold = false, -- Force no bold
|
||||
no_underline = false, -- Force no underline
|
||||
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
|
||||
comments = { "italic" }, -- Change the style of comments
|
||||
conditionals = { "italic" },
|
||||
loops = { "bold" },
|
||||
functions = { "bold", "italic" },
|
||||
keywords = { "bold" },
|
||||
strings = {},
|
||||
variables = { "bold" },
|
||||
numbers = { "bold" },
|
||||
booleans = { "bold" },
|
||||
properties = { "bold" },
|
||||
types = { "bold" },
|
||||
operators = { "bold" },
|
||||
-- miscs = {}, -- Uncomment to turn off hard-coded styles
|
||||
},
|
||||
color_overrides = {},
|
||||
custom_highlights = {},
|
||||
default_integrations = true,
|
||||
auto_integrations = false,
|
||||
integrations = {
|
||||
cmp = true,
|
||||
gitsigns = true,
|
||||
nvimtree = true,
|
||||
mini = {
|
||||
enabled = true,
|
||||
indentscope_color = "",
|
||||
},
|
||||
bufferline = true,
|
||||
dashboard = true,
|
||||
diffview = true,
|
||||
fidget = true,
|
||||
noice = true,
|
||||
indent_blankline = {
|
||||
enabled = true,
|
||||
scope_color = "lavendar", -- catppuccin color (eg. `lavender`) Default: text
|
||||
colored_indent_levels = true,
|
||||
},
|
||||
copilot_vim = true,
|
||||
native_lsp = {
|
||||
enabled = true,
|
||||
virtual_text = {
|
||||
errors = { "italic" },
|
||||
hints = { "italic" },
|
||||
warnings = { "italic" },
|
||||
information = { "italic" },
|
||||
ok = { "italic" },
|
||||
},
|
||||
underlines = {
|
||||
errors = { "underline" },
|
||||
hints = { "underline" },
|
||||
warnings = { "underline" },
|
||||
information = { "underline" },
|
||||
ok = { "underline" },
|
||||
},
|
||||
inlay_hints = {
|
||||
background = true,
|
||||
},
|
||||
},
|
||||
notify = true,
|
||||
treesitter = true,
|
||||
rainbow_delimiters = true,
|
||||
render_markdown = true,
|
||||
telescope = {
|
||||
enabled = true,
|
||||
-- style = "nvchad"
|
||||
},
|
||||
which_key = true,
|
||||
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -8,98 +8,121 @@ return {
|
||||
},
|
||||
opts = {
|
||||
adapters = {
|
||||
copilot = function()
|
||||
return require("codecompanion.adapters").extend("copilot", {
|
||||
schema = {
|
||||
name = "copilot",
|
||||
opts = {
|
||||
stream = true,
|
||||
tools = true,
|
||||
vision = true,
|
||||
},
|
||||
features = {
|
||||
text = true,
|
||||
tokens = true,
|
||||
},
|
||||
model = {
|
||||
-- default = "claude-3.7-sonnet-thought",
|
||||
-- default = "o3-mini",
|
||||
-- default = "gemini-2.0-flash-001",
|
||||
default = "gpt-4.1",
|
||||
-- default = "gpt-4o",
|
||||
-- default = "o3-mini-2025-01-31",
|
||||
-- choices = {
|
||||
-- ["o3-mini-2025-01-31"] = { opts = { can_reason = true } },
|
||||
-- ["o1-2024-12-17"] = { opts = { can_reason = true } },
|
||||
-- ["o1-mini-2024-09-12"] = { opts = { can_reason = true } },
|
||||
-- "gpt-4o-2024-08-06",
|
||||
-- "claude-3.7-sonnet-thought",
|
||||
-- "claude-3.7-sonnet",
|
||||
-- "claude-3.5-sonnet",
|
||||
-- "gemini-2.0-flash-001",
|
||||
-- {{{ HTTP
|
||||
http = {
|
||||
-- {{{ COPILOT
|
||||
copilot = function()
|
||||
return require("codecompanion.adapters").extend("copilot", {
|
||||
schema = {
|
||||
name = "copilot",
|
||||
opts = {
|
||||
stream = true,
|
||||
tools = true,
|
||||
vision = true,
|
||||
},
|
||||
features = {
|
||||
text = true,
|
||||
tokens = true,
|
||||
},
|
||||
model = {
|
||||
-- default = "claude-3.7-sonnet-thought",
|
||||
-- default = "o3-mini",
|
||||
-- default = "gemini-2.0-flash-001",
|
||||
default = "gpt-4.1",
|
||||
-- default = "gpt-4o",
|
||||
-- default = "o3-mini-2025-01-31",
|
||||
-- choices = {
|
||||
-- ["o3-mini-2025-01-31"] = { opts = { can_reason = true } },
|
||||
-- ["o1-2024-12-17"] = { opts = { can_reason = true } },
|
||||
-- ["o1-mini-2024-09-12"] = { opts = { can_reason = true } },
|
||||
-- "gpt-4o-2024-08-06",
|
||||
-- "claude-3.7-sonnet-thought",
|
||||
-- "claude-3.7-sonnet",
|
||||
-- "claude-3.5-sonnet",
|
||||
-- "gemini-2.0-flash-001",
|
||||
-- },
|
||||
},
|
||||
-- max_tokens = {
|
||||
-- default = 65536,
|
||||
-- },
|
||||
},
|
||||
-- max_tokens = {
|
||||
-- default = 65536,
|
||||
-- },
|
||||
},
|
||||
})
|
||||
end,
|
||||
llama_cpp = function()
|
||||
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||
name = "llama.cpp",
|
||||
formatted_name = "llama.cpp",
|
||||
opts = {
|
||||
stream = false,
|
||||
},
|
||||
schema = {
|
||||
-- model = {
|
||||
-- default = "qwen2.5-coder-14b-instruct",
|
||||
-- choices = {
|
||||
-- ["qwen2.5-coder-14b-instruct"] = { opts = { can_reason = true } },
|
||||
-- ["/models/lmstudio-community/DeepSeek-R1-Distill-Qwen-7B-GGUF/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf"] = {
|
||||
-- opts = { can_reason = true },
|
||||
-- },
|
||||
-- ["/models/lmstudio-community/Qwen2.5-7B-Instruct-1M-GGUF/Qwen2.5-7B-Instruct-1M-Q4_K_M.gguf"] = {
|
||||
-- opts = { can_reason = true },
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
temperature = {
|
||||
order = 2,
|
||||
mapping = "parameters",
|
||||
type = "number",
|
||||
optional = true,
|
||||
default = 0.2,
|
||||
validate = function(n)
|
||||
return n >= 0 and n <= 2, "Must be between 0 and 2"
|
||||
end,
|
||||
})
|
||||
end,
|
||||
-- }}}
|
||||
-- {{{ LLAMA_CPP
|
||||
llama_cpp = function()
|
||||
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||
name = "llama.cpp",
|
||||
formatted_name = "llama.cpp",
|
||||
opts = {
|
||||
stream = false,
|
||||
},
|
||||
},
|
||||
env = {
|
||||
url = "http://localhost:8080",
|
||||
chat_url = "/v1/chat/completions",
|
||||
},
|
||||
})
|
||||
end,
|
||||
openrouter = function()
|
||||
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||
env = {
|
||||
url = "https://openrouter.ai/api",
|
||||
api_key = "cmd:cat $HOME/.openrouterapikey",
|
||||
chat_url = "/v1/chat/completions",
|
||||
},
|
||||
schema = {
|
||||
model = {
|
||||
default = "google/gemini-2.5-pro-exp-03-25:free",
|
||||
-- default = "deepseek/deepseek-chat-v3-0324:free",
|
||||
-- default = "google/gemini-2.0-flash-thinking-exp:free",
|
||||
-- default = "deepseek/deepseek-r1-distill-qwen-32b:free",
|
||||
-- default = "qwen/qwen-2.5-coder-32b-instruct:free",
|
||||
schema = {
|
||||
-- model = {
|
||||
-- default = "qwen2.5-coder-14b-instruct",
|
||||
-- choices = {
|
||||
-- ["qwen2.5-coder-14b-instruct"] = { opts = { can_reason = true } },
|
||||
-- ["/models/lmstudio-community/DeepSeek-R1-Distill-Qwen-7B-GGUF/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf"] = {
|
||||
-- opts = { can_reason = true },
|
||||
-- },
|
||||
-- ["/models/lmstudio-community/Qwen2.5-7B-Instruct-1M-GGUF/Qwen2.5-7B-Instruct-1M-Q4_K_M.gguf"] = {
|
||||
-- opts = { can_reason = true },
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
temperature = {
|
||||
order = 2,
|
||||
mapping = "parameters",
|
||||
type = "number",
|
||||
optional = true,
|
||||
default = 0.2,
|
||||
validate = function(n)
|
||||
return n >= 0 and n <= 2, "Must be between 0 and 2"
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
env = {
|
||||
url = "http://localhost:8080",
|
||||
chat_url = "/v1/chat/completions",
|
||||
},
|
||||
})
|
||||
end,
|
||||
-- }}}
|
||||
-- {{{ OPENROUTER
|
||||
openrouter = function()
|
||||
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||
env = {
|
||||
url = "https://openrouter.ai/api",
|
||||
api_key = "cmd:cat $HOME/.openrouterapikey",
|
||||
chat_url = "/v1/chat/completions",
|
||||
},
|
||||
schema = {
|
||||
model = {
|
||||
default = "google/gemini-2.5-pro-exp-03-25:free",
|
||||
-- default = "deepseek/deepseek-chat-v3-0324:free",
|
||||
-- default = "google/gemini-2.0-flash-thinking-exp:free",
|
||||
-- default = "deepseek/deepseek-r1-distill-qwen-32b:free",
|
||||
-- default = "qwen/qwen-2.5-coder-32b-instruct:free",
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
-- }}}
|
||||
},
|
||||
-- }}}
|
||||
-- {{{ ACP
|
||||
acp = {
|
||||
gemini_cli = function()
|
||||
return require("codecompanion.adapters").extend("gemini_cli", {
|
||||
defaults = {
|
||||
auth_method = "oauth-personal", -- "oauth-personal"|"gemini-api-key"|"vertex-ai"
|
||||
mcpServers = {},
|
||||
timeout = 20000, -- 20 seconds
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- }}}
|
||||
},
|
||||
strategies = {
|
||||
chat = {
|
||||
@@ -212,6 +235,7 @@ return {
|
||||
},
|
||||
},
|
||||
init = function()
|
||||
require("plugins.codecompanion.fidget-spinner"):init()
|
||||
require("utils.codecompanion.fidget-spinner"):init()
|
||||
require("utils.codecompanion.extmarks").setup()
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,126 +0,0 @@
|
||||
local notify = require("notify")
|
||||
local spinner_frames = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }
|
||||
local spinner_len = #spinner_frames -- cache spinner length
|
||||
local M = {}
|
||||
local timeout = 2999
|
||||
|
||||
-- Helper function to safely call notify
|
||||
local function safe_notify(msg, level, opts)
|
||||
local ok, res = pcall(notify, msg, level, opts)
|
||||
return ok, res
|
||||
end
|
||||
|
||||
function M:init()
|
||||
local group = vim.api.nvim_create_augroup("CodeCompanionFidgetHooks", {})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "User" }, {
|
||||
pattern = "CodeCompanionRequestStarted",
|
||||
group = group,
|
||||
callback = function(request)
|
||||
local handle = M:create_progress_handle(request)
|
||||
M:store_progress_handle(request.data.id, handle)
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "User" }, {
|
||||
pattern = "CodeCompanionRequestFinished",
|
||||
group = group,
|
||||
callback = function(request)
|
||||
local handle = M:pop_progress_handle(request.data.id)
|
||||
if handle then
|
||||
M:report_exit_status(handle, request)
|
||||
handle:finish()
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
M.handles = {}
|
||||
|
||||
function M:store_progress_handle(id, handle)
|
||||
M.handles[id] = handle
|
||||
end
|
||||
|
||||
function M:pop_progress_handle(id)
|
||||
local handle = M.handles[id]
|
||||
M.handles[id] = nil
|
||||
return handle
|
||||
end
|
||||
|
||||
function M:create_progress_handle(request)
|
||||
local title = " Requesting assistance"
|
||||
.. " ("
|
||||
.. request.data.strategy
|
||||
.. ") from "
|
||||
.. request.data.adapter.formatted_name
|
||||
.. " using "
|
||||
.. request.data.adapter.model
|
||||
local idx = 1
|
||||
local start_time = os.time()
|
||||
local notification_id =
|
||||
notify(spinner_frames[idx] .. " In progress (" .. "0s" .. ")...", "info", { title = title, timeout = false })
|
||||
local handle = { notification_id = notification_id, title = title, finished = false }
|
||||
local timer = vim.loop.new_timer()
|
||||
timer:start(
|
||||
0,
|
||||
100,
|
||||
vim.schedule_wrap(function()
|
||||
if handle.finished then
|
||||
return
|
||||
end -- stop updating if finished
|
||||
idx = idx % spinner_len + 1
|
||||
local elapsed = os.difftime(os.time(), start_time)
|
||||
local opts = { replace = handle.notification_id, title = title, timeout = false }
|
||||
local ok, new_id = safe_notify(spinner_frames[idx] .. " In progress (" .. elapsed .. "s)...", "info", opts)
|
||||
if ok then
|
||||
handle.notification_id = new_id
|
||||
else
|
||||
handle.notification_id = notify(
|
||||
spinner_frames[idx] .. " In progress (" .. elapsed .. "s)...",
|
||||
"info",
|
||||
{ title = title, timeout = false }
|
||||
)
|
||||
end
|
||||
end)
|
||||
)
|
||||
handle.timer = timer
|
||||
handle.finish = function()
|
||||
handle.finished = true -- mark as finished to abort future updates
|
||||
if handle.timer then
|
||||
handle.timer:stop()
|
||||
handle.timer:close()
|
||||
handle.timer = nil
|
||||
end
|
||||
end
|
||||
return handle
|
||||
end
|
||||
|
||||
function M:report_exit_status(handle, request)
|
||||
local title = handle.title
|
||||
or (
|
||||
" Requesting assistance"
|
||||
.. " ("
|
||||
.. request.data.strategy
|
||||
.. ") from "
|
||||
.. request.data.adapter.formatted_name
|
||||
.. " using "
|
||||
.. request.data.adapter.model
|
||||
)
|
||||
local function report(msg, level)
|
||||
local opts = { replace = handle.notification_id, title = title, timeout = timeout }
|
||||
local ok = safe_notify(msg, level, opts)
|
||||
if not ok then
|
||||
notify(msg, level, { title = title, timeout = timeout })
|
||||
end
|
||||
end
|
||||
|
||||
if request.data.status == "success" then
|
||||
report("Completed", "info")
|
||||
elseif request.data.status == "error" then
|
||||
report(" Error", "error")
|
||||
else
|
||||
report(" Cancelled", "warn")
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -1,73 +0,0 @@
|
||||
-- lua/plugins/codecompanion/fidget-spinner.lua
|
||||
|
||||
local progress = require("fidget.progress")
|
||||
|
||||
local M = {}
|
||||
|
||||
function M:init()
|
||||
local group = vim.api.nvim_create_augroup("CodeCompanionFidgetHooks", {})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "User" }, {
|
||||
pattern = "CodeCompanionRequestStarted",
|
||||
group = group,
|
||||
callback = function(request)
|
||||
local handle = M:create_progress_handle(request)
|
||||
M:store_progress_handle(request.data.id, handle)
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "User" }, {
|
||||
pattern = "CodeCompanionRequestFinished",
|
||||
group = group,
|
||||
callback = function(request)
|
||||
local handle = M:pop_progress_handle(request.data.id)
|
||||
if handle then
|
||||
M:report_exit_status(handle, request)
|
||||
handle:finish()
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
M.handles = {}
|
||||
|
||||
function M:store_progress_handle(id, handle)
|
||||
M.handles[id] = handle
|
||||
end
|
||||
|
||||
function M:pop_progress_handle(id)
|
||||
local handle = M.handles[id]
|
||||
M.handles[id] = nil
|
||||
return handle
|
||||
end
|
||||
|
||||
function M:create_progress_handle(request)
|
||||
return progress.handle.create({
|
||||
title = " Requesting assistance (" .. request.data.strategy .. ")",
|
||||
message = "In progress...",
|
||||
lsp_client = {
|
||||
name = M:llm_role_title(request.data.adapter),
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
function M:llm_role_title(adapter)
|
||||
local parts = {}
|
||||
table.insert(parts, adapter.formatted_name)
|
||||
if adapter.model and adapter.model ~= "" then
|
||||
table.insert(parts, "(" .. adapter.model .. ")")
|
||||
end
|
||||
return table.concat(parts, " ")
|
||||
end
|
||||
|
||||
function M:report_exit_status(handle, request)
|
||||
if request.data.status == "success" then
|
||||
handle.message = "Completed"
|
||||
elseif request.data.status == "error" then
|
||||
handle.message = " Error"
|
||||
else
|
||||
handle.message = " Cancelled"
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -1,5 +1,7 @@
|
||||
return {
|
||||
"zbirenbaum/copilot.lua",
|
||||
cmd = "Copilot",
|
||||
event = "InsertEnter",
|
||||
opts = {
|
||||
panel = {
|
||||
enabled = true,
|
||||
@@ -49,7 +51,29 @@ return {
|
||||
listCount = 10, -- #completions for panel
|
||||
inlineSuggestCount = 5, -- #completions for getCompletions
|
||||
},
|
||||
telemetry = {
|
||||
telemetryLevel = "all",
|
||||
},
|
||||
},
|
||||
},
|
||||
copilot_node_command = "node", -- Node.js version must be > 20
|
||||
workspace_folders = {},
|
||||
-- copilot_model = "",
|
||||
disable_limit_reached_message = false, -- Set to `true` to suppress completion limit reached popup
|
||||
logger = {
|
||||
file = vim.fn.stdpath("log") .. "/copilot-lua.log",
|
||||
file_log_level = vim.log.levels.OFF,
|
||||
print_log_level = vim.log.levels.WARN,
|
||||
trace_lsp = "off", -- "off" | "messages" | "verbose"
|
||||
trace_lsp_progress = false,
|
||||
log_lsp_messages = false,
|
||||
},
|
||||
root_dir = function()
|
||||
return vim.fs.dirname(vim.fs.find(".git", { upward = true })[1])
|
||||
end,
|
||||
server = {
|
||||
type = "nodejs", -- "nodejs" | "binary"
|
||||
custom_server_filepath = nil,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
113
.config/nvim/lua/plugins/img-clip.lua
Normal file
113
.config/nvim/lua/plugins/img-clip.lua
Normal file
@@ -0,0 +1,113 @@
|
||||
return {
|
||||
"HakonHarnes/img-clip.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
default = {
|
||||
-- file and directory options
|
||||
dir_path = function()
|
||||
return vim.fn.expand("%:t:r")
|
||||
end, ---@type string | fun(): string
|
||||
extension = "png", ---@type string | fun(): string
|
||||
file_name = "%Y-%m-%d-%H-%M-%S", ---@type string | fun(): string
|
||||
use_absolute_path = false, ---@type boolean | fun(): boolean
|
||||
relative_to_current_file = false, ---@type boolean | fun(): boolean
|
||||
|
||||
-- logging options
|
||||
verbose = true, ---@type boolean | fun(): boolean
|
||||
|
||||
-- template options
|
||||
template = "$FILE_PATH", ---@type string | fun(context: table): string
|
||||
url_encode_path = false, ---@type boolean | fun(): boolean
|
||||
relative_template_path = true, ---@type boolean | fun(): boolean
|
||||
use_cursor_in_template = true, ---@type boolean | fun(): boolean
|
||||
insert_mode_after_paste = true, ---@type boolean | fun(): boolean
|
||||
insert_template_after_cursor = true, ---@type boolean | fun(): boolean
|
||||
|
||||
-- prompt options
|
||||
prompt_for_file_name = true, ---@type boolean | fun(): boolean
|
||||
show_dir_path_in_prompt = false, ---@type boolean | fun(): boolean
|
||||
|
||||
-- base64 options
|
||||
max_base64_size = 10, ---@type number | fun(): number
|
||||
embed_image_as_base64 = false, ---@type boolean | fun(): boolean
|
||||
|
||||
-- image options
|
||||
process_cmd = "", ---@type string | fun(): string
|
||||
copy_images = false, ---@type boolean | fun(): boolean
|
||||
download_images = true, ---@type boolean | fun(): boolean
|
||||
|
||||
-- drag and drop options
|
||||
drag_and_drop = {
|
||||
enabled = true, ---@type boolean | fun(): boolean
|
||||
insert_mode = false, ---@type boolean | fun(): boolean
|
||||
},
|
||||
},
|
||||
|
||||
-- filetype specific options
|
||||
filetypes = {
|
||||
markdown = {
|
||||
url_encode_path = true, ---@type boolean | fun(): boolean
|
||||
template = "", ---@type string | fun(context: table): string
|
||||
download_images = false, ---@type boolean | fun(): boolean
|
||||
},
|
||||
|
||||
vimwiki = {
|
||||
url_encode_path = true, ---@type boolean | fun(): boolean
|
||||
template = "", ---@type string | fun(context: table): string
|
||||
download_images = false, ---@type boolean | fun(): boolean
|
||||
},
|
||||
|
||||
html = {
|
||||
template = '<img src="$FILE_PATH" alt="$CURSOR">', ---@type string | fun(context: table): string
|
||||
},
|
||||
|
||||
tex = {
|
||||
relative_template_path = false, ---@type boolean | fun(): boolean
|
||||
template = [[
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=0.8\textwidth]{$FILE_PATH}
|
||||
\caption{$CURSOR}
|
||||
\label{fig:$LABEL}
|
||||
\end{figure}
|
||||
]], ---@type string | fun(context: table): string
|
||||
},
|
||||
|
||||
typst = {
|
||||
template = [[
|
||||
#figure(
|
||||
image("$FILE_PATH", width: 80%),
|
||||
caption: [$CURSOR],
|
||||
) <fig-$LABEL>
|
||||
]], ---@type string | fun(context: table): string
|
||||
},
|
||||
|
||||
rst = {
|
||||
template = [[
|
||||
.. image:: $FILE_PATH
|
||||
:alt: $CURSOR
|
||||
:width: 80%
|
||||
]], ---@type string | fun(context: table): string
|
||||
},
|
||||
|
||||
asciidoc = {
|
||||
template = 'image::$FILE_PATH[width=80%, alt="$CURSOR"]', ---@type string | fun(context: table): string
|
||||
},
|
||||
|
||||
org = {
|
||||
template = [=[
|
||||
#+BEGIN_FIGURE
|
||||
[[file:$FILE_PATH]]
|
||||
#+CAPTION: $CURSOR
|
||||
#+NAME: fig:$LABEL
|
||||
#+END_FIGURE
|
||||
]=], ---@type string | fun(context: table): string
|
||||
},
|
||||
},
|
||||
|
||||
-- file, directory, and custom triggered options
|
||||
files = {}, ---@type table | fun(): table
|
||||
dirs = {}, ---@type table | fun(): table
|
||||
custom = {}, ---@type table | fun(): table
|
||||
},
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
return {
|
||||
"ravitemer/mcphub.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
cmd = "MCPHub",
|
||||
build = "bundled_build.lua", -- Bundles mcp-hub locally
|
||||
config = function()
|
||||
vim.notify = require("notify")
|
||||
require("mcphub").setup({
|
||||
use_bundled_binary = true, -- Use local binary
|
||||
port = 37373, -- Port for MCP Hub Express API
|
||||
config = vim.fn.expand("~/.config/mcphub/servers.json"), -- Config file path
|
||||
native_servers = {}, -- add your native servers here
|
||||
auto_approve = true,
|
||||
extensions = {
|
||||
avante = {},
|
||||
codecompanion = {
|
||||
show_result_in_chat = true, -- Show tool results in chat
|
||||
make_vars = true, -- Create chat variables from resources
|
||||
make_slash_commands = true, -- make /slash_commands from MCP server prompts
|
||||
},
|
||||
},
|
||||
|
||||
-- UI configuration
|
||||
ui = {
|
||||
window = {
|
||||
width = 0.8, -- Window width (0-1 ratio)
|
||||
height = 0.8, -- Window height (0-1 ratio)
|
||||
border = "rounded", -- Window border style
|
||||
relative = "editor", -- Window positioning
|
||||
zindex = 50, -- Window stack order
|
||||
},
|
||||
},
|
||||
|
||||
-- Event callbacks
|
||||
on_ready = function(hub) end, -- Called when hub is ready
|
||||
on_error = function(err)
|
||||
vim.notify(err, "ERROR")
|
||||
end, -- Called on errors
|
||||
|
||||
-- Logging configuration
|
||||
log = {
|
||||
level = vim.log.levels.WARN, -- Minimum log level
|
||||
to_file = false, -- Enable file logging
|
||||
file_path = nil, -- Custom log file path
|
||||
prefix = "MCPHub", -- Log message prefix
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -1,63 +1,66 @@
|
||||
return {
|
||||
"echasnovski/mini.diff",
|
||||
depends = { "echasnovski/mini.nvim" },
|
||||
opts = {
|
||||
config = function()
|
||||
local diff = require("mini.diff")
|
||||
diff.setup({
|
||||
|
||||
-- Options for how hunks are visualized
|
||||
view = {
|
||||
-- Visualization style. Possible values are 'sign' and 'number'.
|
||||
-- Default: 'number' if line numbers are enabled, 'sign' otherwise.
|
||||
style = vim.go.number and "number" or "sign",
|
||||
-- Options for how hunks are visualized
|
||||
view = {
|
||||
-- Visualization style. Possible values are 'sign' and 'number'.
|
||||
-- Default: 'number' if line numbers are enabled, 'sign' otherwise.
|
||||
style = vim.go.number and "number" or "sign",
|
||||
|
||||
-- Signs used for hunks with 'sign' view
|
||||
signs = { add = "▒", change = "▒", delete = "▒" },
|
||||
-- Signs used for hunks with 'sign' view
|
||||
signs = { add = "▒", change = "▒", delete = "▒" },
|
||||
|
||||
-- Priority of used visualization extmarks
|
||||
priority = 199,
|
||||
},
|
||||
-- Priority of used visualization extmarks
|
||||
priority = 199,
|
||||
},
|
||||
|
||||
-- Source for how reference text is computed/updated/etc
|
||||
-- Uses content from Git index by default
|
||||
source = nil,
|
||||
-- Source for how reference text is computed/updated/etc
|
||||
-- Uses content from Git index by default
|
||||
source = diff.gen_source.none(),
|
||||
|
||||
-- Delays (in ms) defining asynchronous processes
|
||||
delay = {
|
||||
-- How much to wait before update following every text change
|
||||
text_change = 200,
|
||||
},
|
||||
-- Delays (in ms) defining asynchronous processes
|
||||
delay = {
|
||||
-- How much to wait before update following every text change
|
||||
text_change = 200,
|
||||
},
|
||||
|
||||
-- Module mappings. Use `''` (empty string) to disable one.
|
||||
mappings = {
|
||||
-- Apply hunks inside a visual/operator region
|
||||
apply = "gh",
|
||||
-- Module mappings. Use `''` (empty string) to disable one.
|
||||
mappings = {
|
||||
-- Apply hunks inside a visual/operator region
|
||||
apply = "gh",
|
||||
|
||||
-- Reset hunks inside a visual/operator region
|
||||
reset = "gH",
|
||||
-- Reset hunks inside a visual/operator region
|
||||
reset = "gH",
|
||||
|
||||
-- Hunk range textobject to be used inside operator
|
||||
-- Works also in Visual mode if mapping differs from apply and reset
|
||||
textobject = "gh",
|
||||
-- Hunk range textobject to be used inside operator
|
||||
-- Works also in Visual mode if mapping differs from apply and reset
|
||||
textobject = "gh",
|
||||
|
||||
-- Go to hunk range in corresponding direction
|
||||
goto_first = "[H",
|
||||
goto_prev = "[h",
|
||||
goto_next = "]h",
|
||||
goto_last = "]H",
|
||||
},
|
||||
-- Go to hunk range in corresponding direction
|
||||
goto_first = "[H",
|
||||
goto_prev = "[h",
|
||||
goto_next = "]h",
|
||||
goto_last = "]H",
|
||||
},
|
||||
|
||||
-- Various options
|
||||
options = {
|
||||
-- Diff algorithm. See `:h vim.diff()`.
|
||||
algorithm = "histogram",
|
||||
-- Various options
|
||||
options = {
|
||||
-- Diff algorithm. See `:h vim.diff()`.
|
||||
algorithm = "histogram",
|
||||
|
||||
-- Whether to use "indent heuristic". See `:h vim.diff()`.
|
||||
indent_heuristic = true,
|
||||
-- Whether to use "indent heuristic". See `:h vim.diff()`.
|
||||
indent_heuristic = true,
|
||||
|
||||
-- The amount of second-stage diff to align lines (in Neovim>=0.9)
|
||||
linematch = 60,
|
||||
-- The amount of second-stage diff to align lines (in Neovim>=0.9)
|
||||
linematch = 60,
|
||||
|
||||
-- Whether to wrap around edges during hunk navigation
|
||||
wrap_goto = false,
|
||||
},
|
||||
},
|
||||
-- Whether to wrap around edges during hunk navigation
|
||||
wrap_goto = false,
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -171,8 +171,8 @@ return {
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp_signature_help", group_index = 0 },
|
||||
{ name = "lazydev", group_index = 0 },
|
||||
{ name = "copilot", group_index = 0 },
|
||||
{ name = "nvim_lsp", group_index = 1 },
|
||||
{ name = "copilot", group_index = 1 },
|
||||
{ name = "codecompanion", group_index = 2 },
|
||||
{ name = "async_path", group_index = 2 },
|
||||
{ name = "nvim_lsp_document_symbol", group_index = 2 },
|
||||
|
||||
@@ -12,6 +12,7 @@ return {
|
||||
vim = { "vint" },
|
||||
go = { "golangcilint" },
|
||||
}
|
||||
lint.linters.jsonlint.cmd = "vscode-json-language-server"
|
||||
lint.linters.shellcheck.args = {
|
||||
"-s",
|
||||
"bash",
|
||||
|
||||
Reference in New Issue
Block a user