replace nvim submodule with real files

This commit is contained in:
2025-05-03 22:27:42 -07:00
parent 3b012fc9da
commit 9d6b636420
71 changed files with 3980 additions and 4 deletions

View File

@@ -0,0 +1 @@
return { "pechorin/any-jump.vim" }

View File

@@ -0,0 +1,100 @@
return {
"akinsho/bufferline.nvim",
version = "*",
dependencies = { "nvim-tree/nvim-web-devicons", "catppuccin/nvim" },
opts = {
options = {
-- numbers = function(opts)
-- return string.format("%s", opts.id)
-- end,
numbers = function(opts)
return ""
end,
-- number_style = "superscript" | "subscript" | "" | { "none", "subscript" }, -- buffer_id at index 1, ordinal at index 2
-- number_style = "none",
close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
right_mouse_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
-- NOTE: this plugin is designed with this icon in mind,
-- and so changing this is NOT recommended, this is intended
-- as an escape hatch for people who cannot bear it for whatever reason
indicator = {
-- icon = "▎",
style = "underline",
},
-- indicator_style = "▎",
buffer_close_icon = "",
modified_icon = "",
close_icon = "",
left_trunc_marker = "",
right_trunc_marker = "",
--- name_formatter can be used to change the buffer's label in the bufferline.
--- Please note some names can/will break the
--- bufferline so use this at your discretion knowing that it has
--- some limitations that will *NOT* be fixed.
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
-- remove extension from markdown files for example
if buf.name:match("%.md") then
return vim.fn.fnamemodify(buf.name, ":t:r")
end
end,
max_name_length = 18,
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
tab_size = 18,
-- diagnostics = false | "nvim_lsp" | "coc",
diagnostics = "nvim_lsp",
diagnostics_update_in_insert = false,
diagnostics_indicator = function(count, level, diagnostics_dict, context)
local s = " "
for e, n in pairs(diagnostics_dict) do
local sym = e == "error" and ""
or e == "hint" and ""
or (e == "warning" and "" or "")
s = s .. n .. sym
end
return s
end,
custom_filter = function(buf_number, buf_numbers)
-- filter out filetypes you don't want to see
if vim.bo[buf_number].filetype ~= "<i-dont-want-to-see-this>" then
return true
end
-- filter out by buffer name
if vim.fn.bufname(buf_number) ~= "<buffer-name-I-dont-want>" then
return true
end
-- filter out based on arbitrary rules
-- e.g. filter out vim wiki buffer from tabline in your work repo
if vim.fn.getcwd() == "<work-repo>" and vim.bo[buf_number].filetype ~= "wiki" then
return true
end
-- filter out by it's index number in list (don't show first buffer)
if buf_numbers[1] ~= buf_number then
return true
end
end,
-- offsets = {{filetype = "NvimTree", text = "File Explorer" | function , text_align = "left" | "center" | "right"}},
-- offsets = text_align = "left" | "center" | "right"}},
show_buffer_icons = true,
show_buffer_close_icons = true,
show_close_icon = false,
show_tab_indicators = true,
persist_buffer_sort = false, -- whether or not custom sorted buffers should persist
-- can also be a table containing 2 custom separators
-- [focused and unfocused]. eg: { '|', '|' }
-- separator_style = "slant" | "thick" | "thin" | { 'any', 'any' },
separator_style = "slant",
enforce_regular_tabs = false,
always_show_bufferline = true,
-- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b)
sort_by = "id",
-- highlights = require("catppuccin.groups.integrations.bufferline").get(),
hover = {
enabled = true,
delay = 200,
reveal = { "close" },
},
},
},
}

View File

@@ -0,0 +1,56 @@
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)
}
}
}

View File

@@ -0,0 +1,211 @@
return {
"olimorris/codecompanion.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
"j-hui/fidget.nvim",
"ravitemer/mcphub.nvim",
},
opts = {
adapters = {
copilot = function()
return require("codecompanion.adapters").extend("copilot", {
schema = {
name = "copilot",
opts = {
stream = 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,
-- },
},
})
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,
},
},
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",
},
},
})
end,
},
strategies = {
chat = {
adapter = "copilot",
-- adapter = "openrouter",
roles = {
llm = function(adapter)
if adapter.model == nil then
return " Assistant"
else
return " Assistant ("
.. adapter.formatted_name
.. " - "
.. adapter.parameters.model
.. ")"
end
end,
user = " User",
},
slash_commands = {
["file"] = {
opts = {
provider = "telescope",
},
},
["symbols"] = {
opts = {
provider = "telescope",
},
},
["buffer"] = {
opts = {
provider = "telescope",
},
},
["terminal"] = {
opts = {
provider = "telescope",
},
},
},
},
inline = {
adapter = "copilot",
-- adapter = "openrouter",
},
},
display = {
action_palette = {
provider = "telescope",
width = 75,
heigth = 45,
},
chat = {
layout = "vertical",
border = "single",
intro_message = "Welcome to CodeCompanion ✨! Press ? for options",
show_header_separator = false, -- Show header separators in the chat buffer? Set this to false if you're using an external markdown formatting plugin
separator = "", -- The separator between the different messages in the chat buffer
show_references = true, -- Show references (from slash commands and variables) in the chat buffer?
show_settings = false, -- Show LLM settings at the top of the chat buffer?
show_token_count = true, -- Show the token count for each response?
start_in_insert_mode = false, -- Open the chat buffer in insert mode?
},
window = {
layout = "vertical",
position = nil,
border = "rounded",
height = 0.45,
width = 0.45,
relative = "editor",
opts = {
breakindent = true,
cursorcolumn = false,
cursorline = false,
foldcolumn = "0",
linebreak = true,
list = false,
numberwidth = 1,
signcolumn = "no",
spell = false,
wrap = true,
},
},
diff = {
enabled = true,
provider = "mini_diff",
},
---Customize how tokens are displayed
---@param tokens number
---@param adapter CodeCompanion.Adapter
---@return string
token_count = function(tokens, adapter)
return " (" .. tokens .. " tokens)"
end,
},
opts = {
log_level = "DEBUG",
-- log_level = "TRACE",
},
extensions = {
mcphub = {
callback = "mcphub.extensions.codecompanion",
opts = {
show_result_in_chat = true, -- Show the mcp tool result in the chat buffer
make_vars = true, -- make chat #variables from MCP server resources
make_slash_commands = true, -- make /slash_commands from MCP server prompts
},
},
},
},
init = function()
require("plugins.codecompanion.fidget-spinner"):init()
end,
}

View File

@@ -0,0 +1,126 @@
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

View File

@@ -0,0 +1,73 @@
-- 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

View File

@@ -0,0 +1,4 @@
return {
"stevearc/conform.nvim",
opts = {},
}

View File

@@ -0,0 +1,7 @@
return {
"zbirenbaum/copilot-cmp",
opts = {
suggestion = { enabled = false },
panel = { enabled = false },
},
}

View File

@@ -0,0 +1,3 @@
return {
'AndreM222/copilot-lualine'
}

View File

@@ -0,0 +1,55 @@
return {
"zbirenbaum/copilot.lua",
opts = {
panel = {
enabled = true,
auto_refresh = false,
keymap = {
jump_prev = "[[",
jump_next = "]]",
accept = "<CR>",
refresh = "gr",
open = "<M-CR>",
},
layout = {
position = "bottom", -- | top | left | right | horizontal | vertical
ratio = 0.4,
},
},
suggestion = {
enabled = false,
auto_trigger = false,
hide_during_completion = true,
debounce = 75,
keymap = {
accept = "<M-l>",
accept_word = false,
accept_line = false,
next = "<M-]>",
prev = "<M-[>",
dismiss = "<C-]>",
},
},
-- filetypes = {
-- yaml = false,
-- markdown = false,
-- help = false,
-- gitcommit = false,
-- gitrebase = false,
-- hgcommit = false,
-- svn = false,
-- cvs = false,
-- ["."] = false,
-- },
-- copilot_node_command = "node", -- Node.js version must be > 18.x
server_opts_overrides = {
trace = "verbose",
settings = {
advanced = {
listCount = 10, -- #completions for panel
inlineSuggestCount = 5, -- #completions for getCompletions
},
},
},
},
}

View File

@@ -0,0 +1,36 @@
return {
"nvimdev/dashboard-nvim",
event = "VimEnter",
opts = {
theme = "hyper",
config = {
week_header = {
enable = true,
},
shortcut = {
{ desc = "󰊳 Update", group = "@property", action = "Lazy update", key = "u" },
{
icon = "",
icon_hl = "@variable",
desc = "Files",
group = "Label",
action = "Telescope find_files",
key = "f",
},
{
desc = " Apps",
group = "DiagnosticHint",
action = "Telescope app",
key = "a",
},
{
desc = " dotfiles",
group = "Number",
action = "Telescope ~/.config",
key = "d",
},
},
},
},
depends = { "nvim-tree/nvim-web-devicons" },
}

View File

@@ -0,0 +1,27 @@
return {
"sindrets/diffview.nvim",
dependencies = "nvim-tree/nvim-web-devicons",
opts = {
view = {
-- Disable the default normal mode mapping for `<tab>`:
-- ["<tab>"] = false,
-- Disable the default visual mode mapping for `gf`:
-- { "x", "gf", false },
},
},
hooks = {
diff_buf_read = function(bufnr)
-- Change local options in diff buffers
vim.opt_local.wrap = false
vim.opt_local.list = false
vim.opt_local.colorcolumn = { 80 }
end,
view_opened = function(view)
require("notify").notify(
("A new %s was opened on tab page %d!"):format(view.class:name(), view.tabpage),
"info",
{ timeout = 5000, title = "Diffview" }
)
end,
},
}

View File

@@ -0,0 +1,101 @@
return {
"j-hui/fidget.nvim",
opts = {
-- text = {
-- spinner = "pipe", -- animation shown when tasks are ongoing
-- done = "✔", -- character shown when all tasks are complete
-- commenced = "Started", -- message shown when task starts
-- completed = "Completed", -- message shown when task completes
-- },
-- align = {
-- bottom = true, -- align fidgets along bottom edge of buffer
-- right = true, -- align fidgets along right edge of buffer
-- },
progress = {
poll_rate = 0, -- How and when to poll for progress messages
suppress_on_insert = false, -- Suppress new messages while in insert mode
ignore_done_already = false, -- Ignore new tasks that are already complete
ignore_empty_message = false, -- Ignore new tasks that don't contain a message
clear_on_detach = -- Clear notification group when LSP server detaches
function(client_id)
local client = vim.lsp.get_client_by_id(client_id)
return client and client.name or nil
end,
notification_group = -- How to get a progress message's notification group key
function(msg) return msg.lsp_client.name end,
ignore = {}, -- List of LSP servers to ignore
-- Options related to how LSP progress messages are displayed as notifications
display = {
render_limit = 16, -- How many LSP messages to show at once
done_ttl = 3, -- How long a message should persist after completion
done_icon = "", -- Icon shown when all LSP progress tasks are complete
done_style = "Constant", -- Highlight group for completed LSP tasks
progress_ttl = math.huge, -- How long a message should persist when in progress
progress_icon = -- Icon shown when LSP progress tasks are in progress
{ "dots" },
progress_style = -- Highlight group for in-progress LSP tasks
"WarningMsg",
group_style = "Title", -- Highlight group for group name (LSP server name)
icon_style = "Question", -- Highlight group for group icons
priority = 30, -- Ordering priority for LSP notification group
skip_history = true, -- Whether progress notifications should be omitted from history
format_message = -- How to format a progress message
require("fidget.progress.display").default_format_message,
format_annote = -- How to format a progress annotation
function(msg) return msg.title end,
format_group_name = -- How to format a progress notification group's name
function(group) return tostring(group) end,
overrides = { -- Override options from the default notification config
rust_analyzer = { name = "rust-analyzer" },
},
},
-- Options related to Neovim's built-in LSP client
lsp = {
progress_ringbuf_size = 0, -- Configure the nvim's LSP progress ring buffer size
log_handler = false, -- Log `$/progress` handler invocations (for debugging)
},
},
notification = {
window = {
winblend = 0,
},
poll_rate = 10, -- How frequently to update and render notifications
filter = vim.log.levels.INFO, -- Minimum notifications level
history_size = 128, -- Number of removed messages to retain in history
override_vim_notify = false, -- Automatically override vim.notify() with Fidget
-- How to configure notification groups when instantiated
configs = { default = require("fidget.notification").default_config },
-- Conditionally redirect notifications to another backend
redirect = function(msg, level, opts)
if opts and opts.on_open then
return require("fidget.integration.nvim-notify").delegate(msg, level, opts)
end
end,
-- Options related to how notifications are rendered as text
view = {
stack_upwards = true, -- Display notification items from bottom to top
icon_separator = " ", -- Separator between group name and icon
group_separator = "---", -- Separator between notification groups
},
},
integration = {
["nvim-tree"] = {
enable = true, -- Integrate with nvim-tree/nvim-tree.lua (if installed)
},
["xcodebuild-nvim"] = {
enable = false, -- Integrate with wojciech-kulik/xcodebuild.nvim (if installed)
},
},
-- Options related to logging
logger = {
level = vim.log.levels.WARN, -- Minimum logging level
max_size = 10000, -- Maximum log file size, in KB
float_precision = 0.01, -- Limit the number of decimals displayed for floats
-- Where Fidget writes its logs to
path = string.format("%s/fidget.nvim.log", vim.fn.stdpath("cache")),
},
},
}

View File

@@ -0,0 +1,50 @@
return {
"lewis6991/gitsigns.nvim",
opts = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
signs_staged = {
add = { text = "" },
change = { text = "" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
signs_staged_enable = true,
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = { follow_files = true },
auto_attach = true,
attach_to_untracked = false,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
ignore_whitespace = false,
virt_text_priority = 100,
},
current_line_blame_formatter = "<author>, <author_time:%R> - <summary>",
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
border = "single",
style = "minimal",
relative = "cursor",
row = 0,
col = 1,
},
},
}

View File

@@ -0,0 +1 @@
return { "rmagatti/goto-preview" }

View File

@@ -0,0 +1,41 @@
return {
"3rd/image.nvim",
opts = {
backend = "kitty",
-- processor = "magick_rock", -- or "magick_cli"
processor = "magick_cli", -- or "magick_cli"
integrations = {
markdown = {
enabled = true,
clear_in_insert_mode = false,
download_remote_images = true,
only_render_image_at_cursor = false,
floating_windows = false, -- if true, images will be rendered in floating markdown windows
filetypes = { "markdown", "vimwiki" }, -- markdown extensions (ie. quarto) can go here
},
neorg = {
enabled = true,
filetypes = { "norg" },
},
typst = {
enabled = true,
filetypes = { "typst" },
},
html = {
enabled = false,
},
css = {
enabled = false,
},
},
max_width = nil,
max_height = nil,
max_width_window_percentage = nil,
max_height_window_percentage = 50,
window_overlap_clear_enabled = false, -- toggles images when windows are overlapped
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "snacks_notif", "scrollview", "scrollview_sign" },
editor_only_render_when_focused = false, -- auto show/hide images when the editor gains/looses focus
tmux_show_only_in_active_window = false, -- auto show/hide images in the correct Tmux window (needs visual-activity off)
hijack_file_patterns = { "*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp", "*.avif" }, -- render image files as images when opened
},
}

View File

@@ -0,0 +1,35 @@
return {
"lukas-reineke/indent-blankline.nvim",
config = function()
local highlight = {
"RainbowRed",
"RainbowYellow",
"RainbowBlue",
"RainbowOrange",
"RainbowGreen",
"RainbowViolet",
"RainbowCyan",
}
local hooks = require("ibl.hooks")
-- create the highlight groups in the highlight setup hook, so they are reset
-- every time the colorscheme changes
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#ED8796" })
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#EED49F" })
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#8AADF4" })
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#F5A97F" })
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#A6DA95" })
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C6A0F6" })
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#8BD5CA" })
end)
vim.g.rainbow_delimiters = { highlight = highlight }
require("ibl").setup({
scope = { highlight = highlight },
exclude = { filetypes = { "dashboard" } },
})
hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark)
end,
}

View File

@@ -0,0 +1,14 @@
return {
{
"folke/lazydev.nvim",
ft = "lua", -- only load on lua files
opts = {
library = {
-- See the configuration section for more details
-- Load luvit types when the `vim.uv` word is found
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
},
},
},
{ "folke/neodev.nvim", enabled = false }, -- make sure to uninstall or disable neodev.nvim
}

View File

@@ -0,0 +1,107 @@
return {
"neovim/nvim-lspconfig",
config = function()
local lspconfig = require("lspconfig")
vim.notify = require("notify")
local servers = {
"bashls",
-- "jedi_language_server",
"basedpyright",
"jsonls",
-- "yamlls",
"vimls",
"dotls",
"dockerls",
"html",
"cssls",
"lua_ls",
"eslint",
"ts_ls",
"angularls",
"ansiblels",
"docker_compose_language_service",
"golangci_lint_ls",
"gopls",
}
-- Define the highlight color for float border
vim.api.nvim_set_hl(0, "FloatBorder", { fg = "#89b4fa", bold = true })
local border = {
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
}
for _, lsp in ipairs(servers) do
if lsp == "lua_ls" then
vim.lsp.enable(lsp)
vim.lsp.config("lua_ls", {
on_init = function(client)
if client.workspace_folders then
local path = client.workspace_folders[1].name
if
path ~= vim.fn.stdpath("config")
and (vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc"))
then
return
end
end
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
runtime = {
-- Tell the language server which version of Lua you're using
-- (most likely LuaJIT in the case of Neovim)
version = "LuaJIT",
},
-- Make the server aware of Neovim runtime files
workspace = {
checkThirdParty = false,
library = {
vim.env.VIMRUNTIME,
-- Depending on the usage, you might want to add additional paths here.
-- "${3rd}/luv/library",
-- "${3rd}/busted/library",
},
-- or pull in all of 'runtimepath'. NOTE: this is a lot slower and will cause issues when working on your own configuration (see https://github.com/neovim/nvim-lspconfig/issues/3189)
-- library = vim.api.nvim_get_runtime_file("", true)
},
})
end,
settings = {
Lua = {},
},
handlers = {},
})
elseif lsp == "basedpyright" then
vim.lsp.enable(lsp)
vim.lsp.config(lsp, {
analysis = {
autoSearchPaths = true,
diagnosticMode = "openFilesOnly",
useLibraryCodeForTypes = true,
},
diagnosticMode = "openFilesOnly",
inlayHints = {
callArgumentNames = true,
},
})
else
vim.lsp.enable(lsp)
-- vim.lsp.config(lsp, {
-- handlers = {
-- UNNSUUPPORTED
-- ["textDocument/signatureHelp"] = vim.lsp.with(
-- vim.lsp.handlers.signature_help,
-- { border = border }
-- ),
-- ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = border }),
-- },
-- })
end
end
end,
}

View File

@@ -0,0 +1 @@
return { "onsails/lspkind.nvim" }

View File

@@ -0,0 +1,90 @@
return {
"nvim-lualine/lualine.nvim",
config = function()
require("lualine").setup({
options = {
icons_enabled = true,
theme = "catppuccin",
-- theme = 'dracula',
-- theme = 'horizon',
-- theme = 'onedark',
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
disabled_filetypes = {},
always_divide_middle = true,
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch", "diff" },
lualine_c = { "filename" },
lualine_x = {
{
"seachcount",
{ require("mcphub.extensions.lualine") },
"copilot",
symbols = {
status = {
icons = {
enabled = "",
sleep = "", -- auto-trigger disabled
disabled = "",
warning = "",
unknown = "",
},
hl = {
enabled = "#50FA7B",
sleep = "#AEB7D0",
disabled = "#6272A4",
warning = "#FFB86C",
unknown = "#FF5555",
},
},
spinners = "dots", -- has some premade spinners
spinner_color = "#6272A4",
},
show_colors = true,
show_loading = true,
},
{
"diagnostics",
"fileformat",
symbols = {
unix = "", -- e712
dos = "", -- e70f
mac = "", -- e711
},
},
"encoding",
"fileformat",
{ "filetype", colored = true, icon_only = false },
},
lualine_y = { "progress" },
lualine_z = { "location" },
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {
{
"filename",
file_status = true, -- Displays file status (readonly status, modified status)
path = 0, -- 0: Just the filename
shorting_target = 40, -- Shortens path to leave 40 spaces in the window
symbols = {
modified = "[+]", -- Text to show when the file is modified.
readonly = "[-]", -- Text to show when the file is non-modifiable or readonly.
unnamed = "[No Name]", -- Text to show for unnamed buffers.
},
},
M,
},
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
extensions = { "quickfix", "fzf", "nvim-tree", "symbols-outline", "fugitive", "toggleterm", "man" },
})
end,
depends = { "kyazdani42/nvim-web-devicons" },
}

View File

@@ -0,0 +1,7 @@
return {
"L3MON4D3/LuaSnip",
-- follow latest release.
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
-- install jsregexp (optional!).
build = "make install_jsregexp",
}

View File

@@ -0,0 +1,51 @@
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,
}

View File

@@ -0,0 +1,63 @@
return {
"echasnovski/mini.diff",
depends = { "echasnovski/mini.nvim" },
opts = {
-- 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 = "" },
-- 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,
-- 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",
-- 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",
-- 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",
-- 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,
-- Whether to wrap around edges during hunk navigation
wrap_goto = false,
},
},
}

View File

@@ -0,0 +1 @@
return { "nvim-neotest/nvim-nio" }

View File

@@ -0,0 +1,93 @@
return {
"folke/noice.nvim",
event = "VeryLazy",
opts = {
lsp = {
progress = {
enabled = true,
-- Lsp Progress is formatted using the builtins for lsp_progress. See config.format.builtin
-- See the section on formatting for more details on how to customize.
--- @type NoiceFormat|string
format = "lsp_progress",
--- @type NoiceFormat|string
format_done = "lsp_progress_done",
throttle = 1000 / 30, -- frequency to update lsp progress message
view = "mini",
},
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
},
hover = {
enabled = false,
silent = false, -- set to true to not show a message if hover is not available
view = "split", -- when nil, use defaults from documentation
---@type NoiceViewOptions
opts = {}, -- merged with defaults from documentation
},
signature = {
enabled = true,
auto_open = {
enabled = false,
trigger = true, -- Automatically show signature help when typing a trigger character from the LSP
luasnip = true, -- Will open signature help when jumping to Luasnip insert nodes
throttle = 50, -- Debounce lsp signature help request by 50ms
},
view = nil, -- when nil, use defaults from documentation
---@type NoiceViewOptions
opts = {}, -- merged with defaults from documentation
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = true, -- add a border to hover docs and signature help
},
cmdline = {
enabled = true, -- enables the Noice cmdline UI
view = "cmdline_popup", -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom
opts = {}, -- global options for the cmdline. See section on views
---@type table<string, CmdlineFormat>
format = {
-- conceal: (default=true) This will hide the text in the cmdline that matches the pattern.
-- view: (default is cmdline view)
-- opts: any options passed to the view
-- icon_hl_group: optional hl_group for the icon
-- title: set to anything or empty string to hide
cmdline = { pattern = "^:", icon = "", lang = "vim" },
search_down = { kind = "search", pattern = "^/", icon = " ", lang = "regex" },
search_up = { kind = "search", pattern = "^%?", icon = " ", lang = "regex" },
filter = { pattern = "^:%s*!", icon = "$", lang = "bash" },
lua = { pattern = { "^:%s*lua%s+", "^:%s*lua%s*=%s*", "^:%s*=%s*" }, icon = "", lang = "lua" },
help = { pattern = "^:%s*he?l?p?%s+", icon = "" },
input = { view = "cmdline_input", icon = "󰥻 " }, -- Used by input()
-- lua = false, -- to disable a format, set to `false`
},
},
views = {
cmdline_popup = {
border = {
style = "none",
padding = { 0, 0 },
},
filter_options = {},
win_options = {
winhighlight = "NormalFloat:NormalFloat,FloatBorder:FloatBorder",
},
},
},
},
dependencies = {
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
"MunifTanjim/nui.nvim",
-- OPTIONAL:
-- `nvim-notify` is only needed, if you want to use the notification view.
-- If not available, we use `mini` as the fallback
"rcarriga/nvim-notify",
},
}

View File

@@ -0,0 +1,73 @@
return {
"nvimtools/none-ls.nvim",
config = function()
local null_ls = require("null-ls")
local helpers = require("null-ls.helpers")
-- syncronous formatting
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
-- null_ls.setup({
-- on_attach = function(client)
-- if client.supports_method "textDocument/formatting" then
-- vim.cmd([[
-- augroup LspFormatting
-- autocmd! * <buffer>
-- autocmd BufWritePre <buffer> lua vim.lsp.buf.format()
-- augroup END
-- ]])
-- end
-- end,
-- })
-- you can reuse a shared lspconfig on_attach callback here
require("null-ls").setup({
on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
-- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead
-- on later neovim version, you should use vim.lsp.buf.format({ async = false }) instead
-- vim.lsp.buf.formatting_sync()
vim.lsp.buf.format({
async = false,
bufnr = bufnr,
filter = function(client)
return client.name == "null-ls"
end,
})
end,
})
end
end,
sources = {
null_ls.builtins.completion.luasnip,
null_ls.builtins.formatting.black,
null_ls.builtins.formatting.isort,
null_ls.builtins.diagnostics.mypy,
null_ls.builtins.diagnostics.markdownlint,
null_ls.builtins.diagnostics.pylint,
-- null_ls.builtins.diagnostics.pydocstyle.with({
-- extra_arags = { "--config=$ROOT/setup.cfg" },
-- }),
-- null_ls.builtins.diagnostics.pydoclint,
null_ls.builtins.formatting.stylua,
-- null_ls.builtins.formatting.stylua.with({
-- extra_args = { '--config-path', vim.fn.expand('~/.config/stylua.toml') },
-- }),
null_ls.builtins.formatting.markdownlint,
null_ls.builtins.formatting.prettier, -- handled by lsp server
null_ls.builtins.formatting.shfmt.with({
filetypes = { "sh", "bash" },
extra_args = { "-i", "0", "-ci", "-sr" },
}),
null_ls.builtins.formatting.gofmt,
null_ls.builtins.formatting.goimports,
null_ls.builtins.formatting.goimports_reviser,
-- null_ls.builtins.diagnostics.actionlint,
},
})
end,
}

View File

@@ -0,0 +1,20 @@
return {
"rcarriga/nvim-notify",
opts = {
background_colour = "#000000",
fps = 144,
icons = {
DEBUG = "",
ERROR = "",
INFO = "",
TRACE = "",
WARN = "",
},
level = 2,
minimum_width = 50,
render = "default",
stages = "fade_in_slide_out",
timeout = 3000,
top_down = true,
},
}

View File

@@ -0,0 +1 @@
return { "MunifTanjim/nui.nvim" }

View File

@@ -0,0 +1,26 @@
return {
"windwp/nvim-autopairs",
event = "InsertEnter",
config = true,
opts = {
enabled = function(bufnr)
return true
end,
disable_filetype = { "TelescopePrompt", "spectre_panel" },
disable_in_macro = true, -- disable when recording or executing a macro
disable_in_visualblock = false, -- disable when insert after visual block mode
disable_in_replace_mode = true,
ignored_next_char = [=[[%w%%%'%[%"%.%`%$]]=],
enable_moveright = true,
enable_afterquote = true, -- add bracket pairs after quote
enable_check_bracket_line = true, --- check bracket in same line
enable_bracket_in_quote = true, --
enable_abbr = false, -- trigger abbreviation
break_undo = true, -- switch for basic rule break undo sequence
check_ts = false,
map_cr = true,
map_bs = true, -- map the <BS> key
map_c_h = false, -- Map the <C-h> key to delete a pair
map_c_w = false, -- map <c-w> to delete a pair if possible
},
}

View File

@@ -0,0 +1,263 @@
return {
"hrsh7th/nvim-cmp",
dependencies = {
"saadparwaiz1/cmp_luasnip",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-cmdline",
"hrsh7th/cmp-nvim-lsp-signature-help",
"hrsh7th/cmp-nvim-lsp-document-symbol",
-- "hrsh7th/cmp-nvim-lsp",
-- "hrsh7th/cmp-path",
"rafamadriz/friendly-snippets",
"Jezda1337/nvim-html-css",
"https://codeberg.org/FelipeLema/cmp-async-path",
},
config = function()
-- Setup nvim-cmp.
local cmp = require("cmp")
local lspkind = require("lspkind")
-- luasnip setup
local luasnip = require("luasnip")
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
local has_words_before = function()
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then
return false
end
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_text(0, line - 1, 0, line - 1, col, {})[1]:match("^%s*$") == nil
end
require("luasnip.loaders.from_vscode").lazy_load()
lspkind.init({ symbol_map = { Copilot = "" } })
cmp.setup.cmdline("/", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "nvim_lsp_document_symbol" },
}, {
{ name = "buffer" },
}),
})
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({ { name = "path" } }, {
{ name = "cmdline", option = { ignore_cmds = { "Man", "!" } } },
}),
matching = { disallow_symbol_nonprefix_matching = false },
})
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
require("cmp").setup({
snippet = {
expand = function(args)
-- vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
luasnip.lsp_expand(args.body) -- For `luasnip` users.
-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
end,
},
mapping = {
["<C-p>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<C-n>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = false,
}),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() and has_words_before() then
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
elseif luasnip.locally_jumpable(1) then
luasnip.jump(1)
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
},
window = {
completion = {
-- winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,Search:None",
col_offset = 0,
side_padding = 0,
border = "rounded",
borderchars = {
"",
"",
"",
"",
"",
"",
"",
"",
},
},
documentation = {
border = "rounded",
borderchars = {
"",
"",
"",
"",
"",
"",
"",
"",
},
-- padding = 15,
},
},
formatting = {
-- options: 'text', 'text_symbol', 'symbol_text', 'symbol'
-- mode = 'symbol_text',
fields = { "kind", "abbr", "menu" },
expandable_indicator = true,
format = function(entry, vim_item)
local kind = require("lspkind").cmp_format({
mode = "symbol_text",
-- mode = "symbol",
maxwidth = 75,
symbol_map = {
Copilot = "",
Text = "",
Method = "",
Function = "",
Constructor = "",
Field = "",
Variable = "",
Class = "",
Interface = "",
Module = "",
Property = "",
Unit = "",
Value = "",
Enum = "",
Keyword = "",
Snippet = "",
Color = "",
File = "",
Reference = "",
Folder = "",
EnumMember = "",
Constant = "",
Struct = "",
Event = "",
Operator = "",
TypeParameter = "",
},
})(entry, vim_item)
local strings = vim.split(kind.kind, "%s", { trimempty = true })
kind.kind = " " .. strings[1] .. " "
kind.menu = " (" .. strings[2] .. ")"
return kind
end,
},
sources = cmp.config.sources({
{ name = "nvim_lsp_signature_help", group_index = 0 },
{ name = "lazydev", 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 = "path", group_index = 2 },
-- { name = "cmdline", option = { ignore_cmds = { "Man", "!" } } },
{ name = "nvim_lsp_document_symbol", group_index = 2 },
{ name = "luasnip", group_index = 2 }, -- For luasnip users.
{ name = "render-markdown", group_index = 2 },
{
name = "html-css",
group_indx = 2,
option = {
enable_on = { "html", "jsx", "tsx", "typescript", "typescriptreact" }, -- html is enabled by default
notify = false,
documentation = {
auto_show = true, -- show documentation on select
},
-- add any external scss like one below
style_sheets = {
"https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css",
"https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css",
},
},
},
{
name = "buffer",
option = {
get_bufnrs = function()
local bufs = {}
for _, win in ipairs(vim.api.nvim_list_wins()) do
bufs[vim.api.nvim_win_get_buf(win)] = true
end
return vim.tbl_keys(bufs)
end,
},
},
-- { name = 'ultisnips' }, -- For ultisnips users.
-- { name = 'snippy' }, -- For snippy users.
}, { { name = "buffer" } }),
sorting = {
priority_weight = 2,
comparators = {
require("copilot_cmp.comparators").prioritize,
cmp.config.compare.offset,
cmp.config.compare.exact,
require("copilot_cmp.comparators").score,
require("copilot_cmp.comparators").recently_used,
cmp.config.compare.locality,
require("copilot_cmp.comparators").kind,
require("copilot_cmp.comparators").sort_text,
require("copilot_cmp.comparators").length,
require("copilot_cmp.comparators").order,
-- Below is the default comparitor list and order for nvim-cmp
cmp.config.compare.offset,
-- cmp.config.compare.scopes, --this is commented in nvim-cmp too
cmp.config.compare.exact,
cmp.config.compare.score,
cmp.config.compare.recently_used,
cmp.config.compare.locality,
cmp.config.compare.kind,
cmp.config.compare.sort_text,
cmp.config.compare.length,
cmp.config.compare.order,
},
},
})
end,
}

View File

@@ -0,0 +1,6 @@
return {
"norcalli/nvim-colorizer.lua",
config = function()
require("colorizer").setup()
end,
}

View File

@@ -0,0 +1,34 @@
return {
"mfussenegger/nvim-lint",
config = function()
local lint = require("lint")
lint.linters_by_ft = {
markdown = { "markdownlint" },
lua = { "luacheck" },
py = { "flake8", "pylint", "pydocstyle", "pycodestyle", "mypy" },
sh = { "shellcheck" },
json = { "jsonlint" },
yaml = { "yamllint" },
vim = { "vint" },
go = { "golangcilint" },
}
local shellcheck = require("lint").linters.shellcheck
shellcheck.args = {
"-s",
"bash",
"-o",
"all",
"-e",
"2250",
}
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
group = lint_augroup,
callback = function()
lint.try_lint()
end,
})
end,
event = { "BufReadPre", "BufNewFile" },
}

View File

@@ -0,0 +1,11 @@
return {
"nvim-tree/nvim-tree.lua",
version = "*",
lazy = false,
dependencies = {
"nvim-tree/nvim-web-devicons",
},
config = function()
require("nvim-tree").setup({})
end,
}

View File

@@ -0,0 +1 @@
return { "nvim-treesitter/nvim-treesitter-context" }

View File

@@ -0,0 +1,102 @@
vim.notify = require("notify")
return {
"epwalsh/obsidian.nvim",
version = "*", -- recommended, use latest release instead of latest commit
lazy = true,
ft = "markdown",
-- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault:
-- event = {
-- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'.
-- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/*.md"
-- -- refer to `:h file-pattern` for more examples
-- "BufReadPre path/to/my-vault/*.md",
-- "BufNewFile path/to/my-vault/*.md",
-- },
dependencies = {
-- Required.
"nvim-lua/plenary.nvim",
-- see below for full list of optional dependencies 👇
},
opts = {
workspaces = {
{
name = "vault",
path = "~/S/obsidian/Vault",
},
-- {
-- name = "work",
-- path = "~/vaults/work",
-- },
},
completion = {
-- Set to false to disable completion.
nvim_cmp = true,
-- Trigger completion at 2 chars.
min_chars = 2,
},
-- Optional, configure additional syntax highlighting / extmarks.
-- This requires you have `conceallevel` set to 1 or 2. See `:help conceallevel` for more details.
ui = {
enable = true, -- set to false to disable all additional syntax features
update_debounce = 200, -- update delay after a text change (in milliseconds)
max_file_length = 5000, -- disable UI features for files with more than this many lines
-- Define how various check-boxes are displayed
checkboxes = {
-- NOTE: the 'char' value has to be a single character, and the highlight groups are defined below.
[" "] = { char = "󰄱", hl_group = "ObsidianTodo" },
["x"] = { char = "", hl_group = "ObsidianDone" },
[">"] = { char = "", hl_group = "ObsidianRightArrow" },
["~"] = { char = "󰰱", hl_group = "ObsidianTilde" },
["!"] = { char = "", hl_group = "ObsidianImportant" },
-- Replace the above with this if you don't have a patched font:
-- [" "] = { char = "☐", hl_group = "ObsidianTodo" },
-- ["x"] = { char = "✔", hl_group = "ObsidianDone" },
-- You can also add more custom ones...
},
},
attachments = {
-- The default folder to place images in via `:ObsidianPasteImg`.
-- If this is a relative path it will be interpreted as relative to the vault root.
-- You can always override this per image by passing a full path to the command instead of just a filename.
img_folder = "screenshots", -- This is the default
-- Optional, customize the default name or prefix when pasting images via `:ObsidianPasteImg`.
---@return string
img_name_func = function()
-- Prefix image names with timestamp.
return string.format("%s-", os.time())
end,
-- A function that determines the text to insert in the note when pasting an image.
-- It takes two arguments, the `obsidian.Client` and an `obsidian.Path` to the image file.
-- This is the default implementation.
---@param client obsidian.Client
---@param path obsidian.Path the absolute path to the image file
---@return string
img_text_func = function(client, path)
path = client:vault_relative_path(path) or path
return string.format("![%s](%s)", path.name, path)
end,
},
-- Optional, by default when you use `:ObsidianFollowLink` on a link to an external
-- URL it will be ignored but you can customize this behavior here.
---@param url string
follow_url_func = function(url)
-- Open the URL in the default web browser.
vim.fn.jobstart({ "open", url }) -- Mac OS
-- vim.fn.jobstart({"xdg-open", url}) -- linux
-- vim.cmd(':silent exec "!start ' .. url .. '"') -- Windows
-- vim.ui.open(url) -- need Neovim 0.10.0+
end,
-- Optional, by default when you use `:ObsidianFollowLink` on a link to an image
-- file it will be ignored but you can customize this behavior here.
---@param img string
follow_img_func = function(url)
-- vim.fn.jobstart({ "qlmanage", "-p", img }) -- Mac OS quick look preview
vim.fn.jobstart({ "xdg-open", url }) -- linux
-- vim.cmd(':silent exec "!start ' .. url .. '"') -- Windows
end,
},
}

View File

@@ -0,0 +1,52 @@
return {
url = "https://gitea.suda.codes/sudacode/odis",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"neovim/nvim-lspconfig",
},
opts = {
opts = {
display = {
default_mode = "vsplit",
picker = true,
float = {
maxwidth = 80,
maxheight = 40,
border = "rounded",
title = true,
style = "minimal",
auto_focus = true,
anchor = "bottom_right",
offset = { row = -2, col = -2 },
},
window = {
width = 0.4,
height = 0.25,
position = "bottom|right",
floating = false,
border = "none",
},
},
integrations = {
treesitter = {
enabled = true, -- Enable Treesitter integration
highlight = true, -- Enable syntax highlighting
langs = { -- Language mapping for different doc types
lsp = "markdown",
man = "man",
help = "vimdoc",
},
},
},
sources = {
lsp = { enabled = true },
vim = { enabled = true },
man = { enabled = true },
},
priority = { "LSP", "Vim", "Man" },
mappings = {
close = "<leader>dc",
},
},
},
}

View File

@@ -0,0 +1,3 @@
return {
"nvim-lua/plenary.nvim",
}

View File

@@ -0,0 +1,25 @@
return {
"andweeb/presence.nvim",
opts = {
-- General options
auto_update = true, -- Update activity based on autocmd events (if `false`, map or manually execute `:lua package.loaded.presence:update()`)
neovim_image_text = "The One True Text Editor", -- Text displayed when hovered over the Neovim image
main_image = "neovim", -- Main image display (either "neovim" or "file")
-- client_id = "793271441293967371", -- Use your own Discord application client id (not recommended)
log_level = nil, -- Log messages at or above this level (one of the following: "debug", "info", "warn", "error")
debounce_timeout = 10, -- Number of seconds to debounce events (or calls to `:lua package.loaded.presence:update(<filename>, true)`)
enable_line_number = false, -- Displays the current line number instead of the current project
blacklist = {}, -- A list of strings or Lua patterns that disable Rich Presence if the current file name, path, or workspace matches
buttons = true, -- Configure Rich Presence button(s), either a boolean to enable/disable, a static table (`{{ label = "<label>", url = "<url>" }, ...}`, or a function(buffer: string, repo_url: string|nil): table)
file_assets = {}, -- Custom file asset definitions keyed by file names and extensions (see default config at `lua/presence/file_assets.lua` for reference)
-- Rich Presence text options
editing_text = "Editing %s", -- Format string rendered when an editable file is loaded in the buffer (either string or function(filename: string): string)
file_explorer_text = "Browsing %s", -- Format string rendered when browsing a file explorer (either string or function(file_explorer_name: string): string)
git_commit_text = "Committing changes", -- Format string rendered when committing changes in git (either string or function(filename: string): string)
plugin_manager_text = "Managing plugins", -- Format string rendered when managing plugins (either string or function(plugin_manager_name: string): string)
reading_text = "Reading %s", -- Format string rendered when a read-only or unmodifiable file is loaded in the buffer (either string or function(filename: string): string)
workspace_text = "Working on %s", -- Format string rendered when in a git repository (either string or function(project_name: string|nil, filename: string): string)
line_number_text = "Line %s out of %s", -- Format string rendered when `enable_line_number` is set to true (either string or function(line_number: number, line_count: number): string)
},
}

View File

@@ -0,0 +1,24 @@
return {
"HiPhish/rainbow-delimiters.nvim",
config = function()
-- This module contains a number of default definitions
local rainbow_delimiters = require("rainbow-delimiters")
vim.g.rainbow_delimiters = {
strategy = {
[""] = rainbow_delimiters.strategy["global"],
vim = rainbow_delimiters.strategy["local"],
},
query = { [""] = "rainbow-delimiters", lua = "rainbow-blocks" },
highlight = {
"RainbowDelimiterRed",
"RainbowDelimiterYellow",
"RainbowDelimiterBlue",
"RainbowDelimiterOrange",
"RainbowDelimiterGreen",
"RainbowDelimiterViolet",
"RainbowDelimiterCyan",
},
}
end,
}

View File

@@ -0,0 +1,197 @@
return {
"MeanderingProgrammer/render-markdown.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite
ft = { "markdown", "codecompanion", "lsp" },
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
---@module 'render-markdown'
---@type render.md.UserConfig
opts = {
injections = {
gitcommit = {
enabled = true,
query = [[
((message) @injection.content
(#set! injection.combined)
(#set! injection.include-children)
(#set! injection.language "markdown"))
]],
},
},
heading = {
enabled = true,
render_modes = false,
sign = true,
icons = { "󰲡 ", "󰲣 ", "󰲥 ", "󰲧 ", "󰲩 ", "󰲫 " },
position = "overlay",
signs = { "󰫎 " },
width = "full",
left_margin = 0,
left_pad = 0,
right_pad = 0,
min_width = 0,
border = false,
border_virtual = false,
border_prefix = false,
-- above = "▄",
-- below = "▀",
backgrounds = {
"RenderMarkdownH1Bg",
"RenderMarkdownH2Bg",
"RenderMarkdownH3Bg",
"RenderMarkdownH4Bg",
"RenderMarkdownH5Bg",
"RenderMarkdownH6Bg",
},
foregrounds = {
"RenderMarkdownH1",
"RenderMarkdownH2",
"RenderMarkdownH3",
"RenderMarkdownH4",
"RenderMarkdownH5",
"RenderMarkdownH6",
},
custom = {},
},
code = {
enabled = true,
render_modes = false,
sign = true,
style = "full",
position = "left",
language_pad = 0,
language_name = true,
disable_background = { "diff" },
width = "full",
left_margin = 0,
left_pad = 0,
right_pad = 0,
min_width = 0,
border = "thin",
above = "",
below = "",
highlight = "RenderMarkdownCode",
highlight_language = nil,
inline_pad = 0,
highlight_inline = "RenderMarkdownCodeInline",
},
bullet = {
enabled = true,
render_modes = false,
icons = { "", "", "", "" },
ordered_icons = function(ctx)
local value = vim.trim(ctx.value)
local index = tonumber(value:sub(1, #value - 1))
return string.format("%d.", index > 1 and index or ctx.index)
end,
left_pad = 0,
right_pad = 0,
highlight = "RenderMarkdownBullet",
},
callout = {
note = { raw = "[!NOTE]", rendered = "󰋽 Note", highlight = "RenderMarkdownInfo" },
tip = { raw = "[!TIP]", rendered = "󰌶 Tip", highlight = "RenderMarkdownSuccess" },
important = { raw = "[!IMPORTANT]", rendered = "󰅾 Important", highlight = "RenderMarkdownHint" },
warning = { raw = "[!WARNING]", rendered = "󰀪 Warning", highlight = "RenderMarkdownWarn" },
caution = { raw = "[!CAUTION]", rendered = "󰳦 Caution", highlight = "RenderMarkdownError" },
abstract = { raw = "[!ABSTRACT]", rendered = "󰨸 Abstract", highlight = "RenderMarkdownInfo" },
summary = { raw = "[!SUMMARY]", rendered = "󰨸 Summary", highlight = "RenderMarkdownInfo" },
tldr = { raw = "[!TLDR]", rendered = "󰨸 Tldr", highlight = "RenderMarkdownInfo" },
info = { raw = "[!INFO]", rendered = "󰋽 Info", highlight = "RenderMarkdownInfo" },
todo = { raw = "[!TODO]", rendered = "󰗡 Todo", highlight = "RenderMarkdownInfo" },
hint = { raw = "[!HINT]", rendered = "󰌶 Hint", highlight = "RenderMarkdownSuccess" },
success = { raw = "[!SUCCESS]", rendered = "󰄬 Success", highlight = "RenderMarkdownSuccess" },
check = { raw = "[!CHECK]", rendered = "󰄬 Check", highlight = "RenderMarkdownSuccess" },
done = { raw = "[!DONE]", rendered = "󰄬 Done", highlight = "RenderMarkdownSuccess" },
question = { raw = "[!QUESTION]", rendered = "󰘥 Question", highlight = "RenderMarkdownWarn" },
help = { raw = "[!HELP]", rendered = "󰘥 Help", highlight = "RenderMarkdownWarn" },
faq = { raw = "[!FAQ]", rendered = "󰘥 Faq", highlight = "RenderMarkdownWarn" },
attention = { raw = "[!ATTENTION]", rendered = "󰀪 Attention", highlight = "RenderMarkdownWarn" },
failure = { raw = "[!FAILURE]", rendered = "󰅖 Failure", highlight = "RenderMarkdownError" },
fail = { raw = "[!FAIL]", rendered = "󰅖 Fail", highlight = "RenderMarkdownError" },
missing = { raw = "[!MISSING]", rendered = "󰅖 Missing", highlight = "RenderMarkdownError" },
danger = { raw = "[!DANGER]", rendered = "󱐌 Danger", highlight = "RenderMarkdownError" },
error = { raw = "[!ERROR]", rendered = "󱐌 Error", highlight = "RenderMarkdownError" },
bug = { raw = "[!BUG]", rendered = "󰨰 Bug", highlight = "RenderMarkdownError" },
example = { raw = "[!EXAMPLE]", rendered = "󰉹 Example", highlight = "RenderMarkdownHint" },
quote = { raw = "[!QUOTE]", rendered = "󱆨 Quote", highlight = "RenderMarkdownQuote" },
cite = { raw = "[!CITE]", rendered = "󱆨 Cite", highlight = "RenderMarkdownQuote" },
},
link = {
enabled = true,
render_modes = false,
footnote = {
superscript = true,
prefix = "",
suffix = "",
},
image = "󰋵 ",
email = "",
hyperlink = "󰌹 ",
highlight = "RenderMarkdownLink",
wiki = { icon = "󱗖 ", highlight = "RenderMarkdownWikiLink" },
custom = {
web = { pattern = "^http", icon = "󰖟 " },
discord = { pattern = "discord%.com", icon = "󰙯 " },
github = { pattern = "github%.com", icon = "󰊤 " },
gitlab = { pattern = "gitlab%.com", icon = "󰮠 " },
google = { pattern = "google%.com", icon = "󰊭 " },
neovim = { pattern = "neovim%.io", icon = "" },
reddit = { pattern = "reddit%.com", icon = "󰑍 " },
stackoverflow = { pattern = "stackoverflow%.com", icon = "󰓌 " },
wikipedia = { pattern = "wikipedia%.org", icon = "󰖬 " },
youtube = { pattern = "youtube%.com", icon = "󰗃 " },
python = { pattern = "%.py$", icon = "󰌠 " },
},
},
pipe_table = {
enabled = true,
render_modes = false,
preset = "round",
style = "full",
cell = "padded",
padding = 1,
min_width = 0,
border = {
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
},
alignment_indicator = "",
head = "RenderMarkdownTableHead",
row = "RenderMarkdownTableRow",
filler = "RenderMarkdownTableFill",
},
checkbox = {
enabled = true,
render_modes = false,
position = "inline",
unchecked = {
icon = "󰄱 ",
highlight = "RenderMarkdownUnchecked",
scope_highlight = nil,
},
checked = {
icon = "󰱒 ",
highlight = "RenderMarkdownChecked",
scope_highlight = nil,
},
custom = {
todo = {
raw = "[-]",
rendered = "󰥔 ",
highlight = "RenderMarkdownTodo",
scope_highlight = nil,
},
},
},
},
}

View File

@@ -0,0 +1,5 @@
return {
"tpope/vim-commentary",
"tpope/vim-dotenv",
"tpope/vim-surround",
}

View File

@@ -0,0 +1,123 @@
return {
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
-- "jonarrien/telescope-cmdline.nvim",
"nat-418/telescope-color-names.nvim",
"nvim-telescope/telescope-file-browser.nvim",
"ghassan0/telescope-glyph.nvim",
"nvim-telescope/telescope-ui-select.nvim",
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release",
},
"folke/noice.nvim",
},
opts = {
defaults = {
-- Default configuration for telescope goes here:
-- config_key = value,
layout_strategy = "flex",
width = 0.9,
wrap_results = true,
preview = {
border = true,
borderchars = {
"",
"",
"",
"",
"",
"",
"",
"",
},
title = true,
dynamic_preview_title = true,
treesitter = true,
},
mappings = {
i = {
-- map actions.which_key to <C-h> (default: <C-/>)
-- actions.which_key shows the mappings for your picker,
-- e.g. git_{create, delete, ...}_branch for the git_branches picker
["<C-h>"] = "which_key",
["<C-u"] = false,
},
},
file_ignore_patterns = { "^node_modules/", "^env/", "^__pycache__/" },
},
pickers = {
-- Default configuration for builtin pickers goes here:
-- picker_name = {
-- picker_config_key = value,
-- ...
-- }
-- Now the picker_config_key will be applied every time you call this
-- builtin picker
find_files = {
-- theme = "dropdown"
},
},
extensions = {
fzf = {
fuzzy = true, -- false will only do exact matching
override_generic_sorter = true, -- override the generic sorter
override_file_sorter = true, -- override the file sorter
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
-- the default case_mode is "smart_case"
},
glyph = {
action = function(glyph)
-- argument glyph is a table.
-- {name="", value="", category="", description=""}
-- vim.fn.setreg("*", glyph.value)
-- print([[Press p or "*p to paste this glyph]] .. glyph.value)
-- insert glyph when picked
vim.api.nvim_put({ glyph.value }, "c", false, true)
end,
},
cmdline = {
-- Adjust telescope picker size and layout
picker = {
layout_config = {
width = 120,
height = 25,
},
},
-- Adjust your mappings
mappings = {
complete = "<Tab>",
run_selection = "<C-CR>",
run_input = "<CR>",
},
-- Triggers any shell command using overseer.nvim (`:!`)
overseer = {
enabled = true,
},
},
file_browser = {
theme = "ivy",
-- disables netrw and use telescope-file-browser in its place
hijack_netrw = true,
mappings = {
["i"] = {
-- your custom insert mode mappings
},
["n"] = {
-- your custom normal mode mappings
},
},
},
["ui-select"] = {
require("telescope.themes").get_dropdown({
winblend = 10,
width = 0.5,
prompt = " ",
results_height = 15,
previewer = true,
}),
},
},
},
}

View File

@@ -0,0 +1,85 @@
return {
"akinsho/toggleterm.nvim",
version = "*",
opts = {
-- size can be a number or function which is passed the current terminal
size = function(term)
if term.direction == "horizontal" then
return 20
elseif term.direction == "vertical" then
return vim.o.columns * 0.45
end
end,
open_mapping = { [[<c-t>]] }, -- or { [[<c-\>]], [[<c-¥>]] } if you also use a Japanese keyboard.
-- on_create = fun(t: Terminal), -- function to run when the terminal is first created
-- on_open = fun(t: Terminal), -- function to run when the terminal opens
-- on_close = fun(t: Terminal), -- function to run when the terminal closes
-- on_stdout = fun(t: Terminal, job: number, data: string[], name: string) -- callback for processing output on stdout
-- on_stderr = fun(t: Terminal, job: number, data: string[], name: string) -- callback for processing output on stderr
-- on_exit = fun(t: Terminal, job: number, exit_code: number, name: string) -- function to run when terminal process exits
hide_numbers = true, -- hide the number column in toggleterm buffers
-- shade_filetypes = {},
autochdir = false, -- when neovim changes it current directory the terminal will change it's own when next it's opened
highlights = {
-- highlights which map to a highlight group name and a table of it's values
-- NOTE: this is only a subset of values, any group placed here will be set for the terminal window split
Normal = {
guibg = "#24273A",
},
NormalFloat = {
link = "Normal",
},
-- FloatBorder = {
-- guifg = "<VALUE-HERE>",
-- guibg = "<VALUE-HERE>",
-- },
},
shade_terminals = false, -- NOTE: this option takes priority over highlights specified so if you specify Normal highlights you should set this to false
-- shading_factor = '-10', -- the percentage by which to lighten dark terminal background, default: -30
-- shading_ratio = '-3', -- the ratio of shading factor for light/dark terminal background, default: -3
start_in_insert = true,
insert_mappings = true, -- whether or not the open mapping applies in insert mode
terminal_mappings = true, -- whether or not the open mapping applies in the opened terminals
persist_size = false,
persist_mode = true, -- if set to true (default) the previous terminal mode will be remembered
-- direction = 'vertical' | 'horizontal' | 'tab' | 'float',
direction = "float",
-- close_on_exit = true, -- close the terminal window when the process exits
-- clear_env = false, -- use only environmental variables from `env`, passed to jobstart()
-- Change the default shell. Can be a string or a function returning a string
shell = vim.o.shell,
auto_scroll = true, -- automatically scroll to the bottom on terminal output
-- This field is only relevant if direction is set to 'float'
float_opts = {
-- The border key is *almost* the same as 'nvim_open_win'
-- see :h nvim_open_win for details on borders however
-- the 'curved' border is a custom border type
-- not natively supported but implemented in this plugin.
-- border = 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open
border = "curved",
-- like `size`, width, height, row, and col can be a number or function which is passed the current terminal
width = function()
return vim.o.columns - 35
end,
-- height = 75,
-- row = <value>,
-- col = vim.o.columns * 0.8,
winblend = 3,
zindex = 10,
-- title_pos = 'left' | 'center' | 'right', position of the title of the floating window
title_pos = "center",
},
winbar = {
enabled = false,
name_formatter = function(term) -- term: Terminal
return term.name
end,
},
responsiveness = {
-- breakpoint in terms of `vim.o.columns` at which terminals will start to stack on top of each other
-- instead of next to each other
-- default = 0 which means the feature is turned off
horizontal_breakpoint = 135,
},
},
}

View File

@@ -0,0 +1,48 @@
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local configs = require("nvim-treesitter.configs")
configs.setup({
ensure_installed = {
"c",
"lua",
"vim",
"vimdoc",
"query",
"cpp",
"python",
"bash",
"sql",
"yaml",
"toml",
"dockerfile",
"gitcommit",
"gitignore",
"html",
"css",
"javascript",
"typescript",
"rust",
"go",
"json",
"regex",
"latex",
"comment",
"cmake",
"graphql",
"haskell",
"java",
"php",
"ruby",
"vue",
"markdown",
"markdown_inline",
},
sync_install = false,
highlight = { enable = true },
indent = { enable = true },
})
end,
}

View File

@@ -0,0 +1 @@
return { "tpope/vim-commentary" }

View File

@@ -0,0 +1 @@
return { "wakatime/vim-wakatime" }

View File

@@ -0,0 +1,144 @@
return {
"folke/which-key.nvim",
opts = {},
-- config = function()
-- local wk = require("which-key")
-- wk.add({
-- { "<leader>C", group = "CodeCompanion", desc = "CodeCompanion", icon = "󰭻" },
-- { "<leader>Ca", desc = "CodeCompanion Actions" },
-- { "<leader>Cc", desc = "CodeCompanionChat" },
-- { "<leader>Cd", desc = "Docstring" },
-- { "<leader>Ce", desc = "Explain Code" },
-- { "<leader>Ci", desc = "Inline Chat" },
-- { "<leader>Cf", desc = "Fix Code" },
-- { "<leader>Cl", desc = "Explain LSP Diagnostics" },
-- { "<leader>Ct", desc = "Generate Tests" },
-- { "<leader>CT", desc = "Toggle CodeCompanionChat" },
-- -- { "<leader>Ci", desc = "Edit with Instructions" },
-- -- { "<leader>Co", desc = "Optimize Code" },
-- -- { "<leader>Cs", desc = "Summarize" },
-- { "<leader>K", desc = "Show Docs", icon = "󱔗" },
-- { "<leader>T", group = "Telescope", icon = "" },
-- { "<leader>Tc", desc = "Color Names" },
-- { "<leader>Tg", desc = "Glyph" },
-- { "<leader>Tn", desc = "Notifications" },
-- { "<leader>Tt", desc = "Telescope" },
-- { "<leader>a", group = "AnyJump", icon = "" },
-- { "<leader>ab", desc = "Back" },
-- { "<leader>al", desc = "Last Result" },
-- { "<leader>b", group = "Buffers" },
-- { "<leader>bb", desc = "Show Buffers" },
-- { "<leader>bd", desc = "Delete Buffer" },
-- { "<leader>bn", desc = "Next Buffer" },
-- { "<leader>bp", desc = "Previous Buffer" },
-- { "<leader>c", group = "Code", icon = "" },
-- { "<leader>cD", group = "Diagnostic List" },
-- { "<leader>cDn", desc = "Next Diagnostic" },
-- { "<leader>cDp", desc = "Previous Diagnostic" },
-- { "<leader>ca", desc = "Code Action" },
-- { "<leader>cd", desc = "Diagnostics" },
-- { "<leader>cl", desc = "Set Loclist" },
-- { "<leader>cp", desc = "Copilot Panel" },
-- { "<leader>d", group = "Debug" },
-- { "<leader>dO", desc = "Step Out" },
-- { "<leader>dP", group = "Dap-python" },
-- { "<leader>dPc", desc = "Test Class" },
-- { "<leader>dPm", desc = "Test Method" },
-- { "<leader>dPs", desc = "Debug Selection" },
-- { "<leader>db", desc = "Toggle Breakpoint" },
-- { "<leader>dc", desc = "Continue" },
-- { "<leader>df", desc = "Frames" },
-- { "<leader>dh", desc = "Hover" },
-- { "<leader>di", desc = "Step Into" },
-- { "<leader>dl", desc = "Run Last" },
-- { "<leader>do", desc = "Step Over" },
-- { "<leader>dp", desc = "Preview" },
-- { "<leader>dr", desc = "REPL Open" },
-- { "<leader>ds", desc = "Scopes" },
-- { "<leader>du", group = "Dap UI" },
-- { "<leader>duc", desc = "Close" },
-- { "<leader>duo", desc = "Open" },
-- { "<leader>dut", desc = "Toggle" },
-- { "<leader>f", group = "Find File" },
-- { "<leader>fb", desc = "File Browser" },
-- { "<leader>fc", desc = "File Color" },
-- { "<leader>ff", desc = "Find in Current Directory" },
-- { "<leader>fg", desc = "Live Grep" },
-- { "<leader>fr", desc = "File Recent" },
-- { "<leader>g", group = "Git" },
-- { "<leader>gP", desc = "Close goto-preview window" },
-- { "<leader>gR", desc = "Telescope References" },
-- { "<leader>gb", desc = "Blame" },
-- { "<leader>gc", desc = "Commit" },
-- { "<leader>gf", desc = "Files" },
-- { "<leader>gg", desc = "Lazygit" },
-- { "<leader>gp", desc = "Peek" },
-- { "<leader>gpc", desc = "Close Preview" },
-- { "<leader>gpd", desc = "Preview Definition" },
-- { "<leader>gpi", desc = "Preview Implementation" },
-- { "<leader>h", group = "Help", icon = "󰋖" },
-- { "<leader>hc", desc = "Commands" },
-- { "<leader>hd", group = "Dap", icon = "" },
-- { "<leader>hdC", desc = "Configurations" },
-- { "<leader>hdb", desc = "Breakpoints" },
-- { "<leader>hdc", desc = "Commands" },
-- { "<leader>hdf", desc = "Frames" },
-- { "<leader>hdv", desc = "Variables" },
-- { "<leader>hk", desc = "Keymaps" },
-- { "<leader>hs", desc = "Spell Suggest" },
-- { "<leader>hv", desc = "Vim Options" },
-- { "<leader>i", group = "Insert", icon = "" },
-- { "<leader>is", group = "Snippet" },
-- { "<leader>isp", desc = "Python File" },
-- { "<leader>j", desc = "Any Jump", icon = "" },
-- { "<leader>cD", desc = "Diagnostics" },
-- { "<leader>cR", desc = "Rename" },
-- { "<leader>ca", desc = "Code Actions" },
-- { "<leader>cc", group = "Calls" },
-- { "<leader>cci", desc = "Incoming" },
-- { "<leader>cco", desc = "Outgoing" },
-- { "<leader>cd", desc = "Definitions" },
-- { "<leader>ch", desc = "Signature Help" },
-- { "<leader>ci", desc = "Implementations" },
-- { "<leader>cr", desc = "References" },
-- { "<leader>cs", desc = "Document Symbols" },
-- { "<leader>ct", desc = "Type Definitions" },
-- { "<leader>cw", desc = "Workspace Symbols" },
-- { "<leader>n", desc = "NvimTree" },
-- { "<leader>o", group = "Open", icon = "󰮫" },
-- { "<leader>oB", desc = "Btop" },
-- { "<leader>oC", desc = "Nvim Config" },
-- { "<leader>oP", desc = "Ipython (fullscreen)" },
-- { "<leader>ob", desc = "File Browser" },
-- { "<leader>oc", desc = "CodeCompanionChat" },
-- { "<leader>od", desc = "Lazydocker" },
-- { "<leader>of", desc = "Floating Terminal" },
-- { "<leader>oh", desc = "Horizontal Terminal" },
-- { "<leader>op", desc = "Ipython" },
-- { "<leader>or", desc = "Ranger" },
-- { "<leader>ot", desc = "Vertical Terminal" },
-- { "<leader>s", group = "Search" },
-- { "<leader>sc", desc = "Clear Highlights" },
-- { "<leader>sf", desc = "Files" },
-- { "<leader>tG", desc = "Glyph" },
-- { "<leader>sg", desc = "Grep" },
-- { "<leader>sh", desc = "Command History" },
-- { "<leader>sm", desc = "Man Pages" },
-- { "<leader>t", group = "Toggle" },
-- { "<leader>tP", desc = "Ipython (fullscreen)" },
-- { "<leader>tc", desc = "Colorscheme" },
-- { "<leader>td", desc = "DBUI" },
-- { "<leader>tf", desc = "Floating Terminal" },
-- { "<leader>tp", desc = "Ipython" },
-- { "<leader>tt", desc = "Split Terminal" },
-- { "<leader>w", group = "Workspace" },
-- { "<leader>wa", desc = "Add Folder" },
-- { "<leader>wl", desc = "List Folders" },
-- { "<leader>wr", desc = "Remove Folder" },
-- { "<leader>x", group = "Set Executable Bit", desc = "Set Executable Bit" },
-- { "<leader>y", desc = "System Yank", icon = "" },
-- { "<leader>e", desc = "Edit", icon = "" },
-- })
-- end,
}