feat: updated to the latest nvim-lua/kickstart.nvim
This commit is contained in:
parent
3338d39206
commit
cc7917b601
|
|
@ -0,0 +1,17 @@
|
||||||
|
-- local ht = require 'haskell-tools'
|
||||||
|
-- local bufnr = vim.api.nvim_get_current_buf()
|
||||||
|
-- local base_opts = { noremap = true, silent = true, buffer = bufnr }
|
||||||
|
--
|
||||||
|
-- vim.keymap.set('n', '<space>cl', vim.lsp.codelens.run, vim.tbl_extend('force', base_opts, { desc = 'Run all code lenses (e.g. eval, add signature)' }))
|
||||||
|
--
|
||||||
|
-- vim.keymap.set('n', '<space>hs', ht.hoogle.hoogle_signature, vim.tbl_extend('force', base_opts, { desc = 'Hoogle search for type signature under cursor' }))
|
||||||
|
--
|
||||||
|
-- vim.keymap.set('n', '<space>ea', ht.lsp.buf_eval_all, vim.tbl_extend('force', base_opts, { desc = 'Evaluate all code snippets in buffer' }))
|
||||||
|
--
|
||||||
|
-- vim.keymap.set('n', '<leader>rr', ht.repl.toggle, vim.tbl_extend('force', base_opts, { desc = 'Toggle GHCi repl for current package' }))
|
||||||
|
--
|
||||||
|
-- vim.keymap.set('n', '<leader>rf', function()
|
||||||
|
-- ht.repl.toggle(vim.api.nvim_buf_get_name(0))
|
||||||
|
-- end, vim.tbl_extend('force', base_opts, { desc = 'Toggle GHCi repl for current buffer' }))
|
||||||
|
--
|
||||||
|
-- vim.keymap.set('n', '<leader>rq', ht.repl.quit, vim.tbl_extend('force', base_opts, { desc = 'Quit GHCi repl' }))
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
-- Add the key mappings only for Markdown files in a zk notebook.
|
||||||
|
if require('zk.util').notebook_root(vim.fn.expand '%:p') ~= nil then
|
||||||
|
local function map(...)
|
||||||
|
vim.api.nvim_buf_set_keymap(0, ...)
|
||||||
|
end
|
||||||
|
local opts = { noremap = true, silent = false }
|
||||||
|
|
||||||
|
-- Open the link under the caret.
|
||||||
|
map('n', '<CR>', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
||||||
|
|
||||||
|
-- Create a new note after asking for its title.
|
||||||
|
-- This overrides the global `<leader>zn` mapping to create the note in the same directory as the current buffer.
|
||||||
|
map('n', '<leader>zn', "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts)
|
||||||
|
-- Create a new note in the same directory as the current buffer, using the current selection for title.
|
||||||
|
map('v', '<leader>znt', ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>", opts)
|
||||||
|
-- Create a new note in the same directory as the current buffer, using the current selection for note content and asking for its title.
|
||||||
|
map('v', '<leader>znc', ":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts)
|
||||||
|
|
||||||
|
-- Open notes linking to the current buffer.
|
||||||
|
map('n', '<leader>zb', '<Cmd>ZkBacklinks<CR>', opts)
|
||||||
|
-- Alternative for backlinks using pure LSP and showing the source context.
|
||||||
|
--map('n', '<leader>zb', '<Cmd>lua vim.lsp.buf.references()<CR>', opts)
|
||||||
|
-- Open notes linked by the current buffer.
|
||||||
|
map('n', '<leader>zl', '<Cmd>ZkLinks<CR>', opts)
|
||||||
|
|
||||||
|
-- Preview a linked note.
|
||||||
|
map('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
||||||
|
-- Open the code actions for a visual selection.
|
||||||
|
map('v', '<leader>za', ":'<,'>lua vim.lsp.buf.range_code_action()<CR>", opts)
|
||||||
|
|
||||||
|
-- Insert a link to a note.
|
||||||
|
map('n', '<leader>zi', '<Cmd>ZkInsertLink<CR>', opts)
|
||||||
|
-- Insert a link to a note using the current selection for the link text.
|
||||||
|
map('v', '<leader>zil', ":'<,'>ZkInsertLinkAtSelection<CR>", opts)
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
|
vim.keymap.set('n', '<leader>a', function()
|
||||||
|
vim.cmd.RustLsp 'codeAction' -- supports rust-analyzer's grouping
|
||||||
|
-- or vim.lsp.buf.codeAction() if you don't want grouping.
|
||||||
|
end, { silent = true, buffer = bufnr })
|
||||||
|
vim.keymap.set(
|
||||||
|
'n',
|
||||||
|
'K', -- Override Neovim's built-in hover keymap with rustaceanvim's hover actions
|
||||||
|
function()
|
||||||
|
vim.cmd.RustLsp { 'hover', 'actions' }
|
||||||
|
end,
|
||||||
|
{ silent = true, buffer = bufnr }
|
||||||
|
)
|
||||||
35
init.lua
35
init.lua
|
|
@ -361,6 +361,7 @@ require('lazy').setup({
|
||||||
{ -- Fuzzy Finder (files, lsp, etc)
|
{ -- Fuzzy Finder (files, lsp, etc)
|
||||||
'nvim-telescope/telescope.nvim',
|
'nvim-telescope/telescope.nvim',
|
||||||
event = 'VimEnter',
|
event = 'VimEnter',
|
||||||
|
tag = 'v0.2.0',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
'nvim-lua/plenary.nvim',
|
'nvim-lua/plenary.nvim',
|
||||||
{ -- If encountering errors, see telescope-fzf-native README for installation instructions
|
{ -- If encountering errors, see telescope-fzf-native README for installation instructions
|
||||||
|
|
@ -941,21 +942,13 @@ require('lazy').setup({
|
||||||
{ -- Highlight, edit, and navigate code
|
{ -- Highlight, edit, and navigate code
|
||||||
'nvim-treesitter/nvim-treesitter',
|
'nvim-treesitter/nvim-treesitter',
|
||||||
build = ':TSUpdate',
|
build = ':TSUpdate',
|
||||||
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
|
|
||||||
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
|
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
|
||||||
opts = {
|
config = function()
|
||||||
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
|
local ts = require 'nvim-treesitter'
|
||||||
-- Autoinstall languages that are not installed
|
ts.setup {}
|
||||||
auto_install = true,
|
ts.install({ 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }):wait(30000)
|
||||||
highlight = {
|
end,
|
||||||
enable = true,
|
|
||||||
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
|
|
||||||
-- If you are experiencing weird indenting issues, add the language to
|
|
||||||
-- the list of additional_vim_regex_highlighting and disabled languages for indent.
|
|
||||||
additional_vim_regex_highlighting = { 'ruby' },
|
|
||||||
},
|
|
||||||
indent = { enable = true, disable = { 'ruby' } },
|
|
||||||
},
|
|
||||||
-- There are additional nvim-treesitter modules that you can use to interact
|
-- There are additional nvim-treesitter modules that you can use to interact
|
||||||
-- with nvim-treesitter. You should go explore a few and see what interests you:
|
-- with nvim-treesitter. You should go explore a few and see what interests you:
|
||||||
--
|
--
|
||||||
|
|
@ -973,18 +966,18 @@ require('lazy').setup({
|
||||||
-- Here are some example plugins that I've included in the Kickstart repository.
|
-- Here are some example plugins that I've included in the Kickstart repository.
|
||||||
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
|
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
|
||||||
--
|
--
|
||||||
-- require 'kickstart.plugins.debug',
|
require 'kickstart.plugins.debug',
|
||||||
-- require 'kickstart.plugins.indent_line',
|
require 'kickstart.plugins.indent_line',
|
||||||
-- require 'kickstart.plugins.lint',
|
require 'kickstart.plugins.lint',
|
||||||
-- require 'kickstart.plugins.autopairs',
|
require 'kickstart.plugins.autopairs',
|
||||||
-- require 'kickstart.plugins.neo-tree',
|
require 'kickstart.plugins.neo-tree',
|
||||||
-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
|
require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
|
||||||
|
|
||||||
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
|
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
|
||||||
-- This is the easiest way to modularize your config.
|
-- This is the easiest way to modularize your config.
|
||||||
--
|
--
|
||||||
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
||||||
-- { import = 'custom.plugins' },
|
{ import = 'custom.plugins' },
|
||||||
--
|
--
|
||||||
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
|
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
|
||||||
-- Or use telescope!
|
-- Or use telescope!
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
return {
|
||||||
|
'sourcegraph/amp.nvim',
|
||||||
|
branch = 'main',
|
||||||
|
lazy = false,
|
||||||
|
opts = { auto_start = true, log_level = 'info' },
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,323 @@
|
||||||
|
return {
|
||||||
|
'yetone/avante.nvim',
|
||||||
|
enabled = false,
|
||||||
|
event = 'VeryLazy',
|
||||||
|
lazy = false,
|
||||||
|
version = false,
|
||||||
|
opts = {
|
||||||
|
---@alias Provider "claude" | "openai" | "azure" | "gemini" | "cohere" | "copilot" | string
|
||||||
|
---@type Provider
|
||||||
|
provider = 'copilot', -- The provider used in Aider mode or in the planning phase of Cursor Planning Mode
|
||||||
|
---@alias Mode "agentic" | "legacy"
|
||||||
|
---@type Mode
|
||||||
|
mode = 'agentic', -- The default mode for interaction. "agentic" uses tools to automatically generate code, "legacy" uses the old planning method to generate code.
|
||||||
|
-- WARNING: Since auto-suggestions are a high-frequency operation and therefore expensive,
|
||||||
|
-- currently designating it as `copilot` provider is dangerous because: https://github.com/yetone/avante.nvim/issues/1048
|
||||||
|
-- Of course, you can reduce the request frequency by increasing `suggestion.debounce`.
|
||||||
|
auto_suggestions_provider = 'copilot',
|
||||||
|
providers = {
|
||||||
|
claude = {
|
||||||
|
endpoint = 'https://api.anthropic.com',
|
||||||
|
model = 'claude-3-5-sonnet-20241022',
|
||||||
|
extra_request_body = {
|
||||||
|
temperature = 0.75,
|
||||||
|
max_tokens = 4096,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
---Specify the special dual_boost mode
|
||||||
|
---1. enabled: Whether to enable dual_boost mode. Default to false.
|
||||||
|
---2. first_provider: The first provider to generate response. Default to "openai".
|
||||||
|
---3. second_provider: The second provider to generate response. Default to "claude".
|
||||||
|
---4. prompt: The prompt to generate response based on the two reference outputs.
|
||||||
|
---5. timeout: Timeout in milliseconds. Default to 60000.
|
||||||
|
---How it works:
|
||||||
|
--- When dual_boost is enabled, avante will generate two responses from the first_provider and second_provider respectively. Then use the response from the first_provider as provider1_output and the response from the second_provider as provider2_output. Finally, avante will generate a response based on the prompt and the two reference outputs, with the default Provider as normal.
|
||||||
|
---Note: This is an experimental feature and may not work as expected.
|
||||||
|
dual_boost = {
|
||||||
|
enabled = false,
|
||||||
|
first_provider = 'openai',
|
||||||
|
second_provider = 'claude',
|
||||||
|
prompt = 'Based on the two reference outputs below, generate a response that incorporates elements from both but reflects your own judgment and unique perspective. Do not provide any explanation, just give the response directly. Reference Output 1: [{{provider1_output}}], Reference Output 2: [{{provider2_output}}]',
|
||||||
|
timeout = 60000, -- Timeout in milliseconds
|
||||||
|
},
|
||||||
|
behaviour = {
|
||||||
|
auto_suggestions = false, -- Experimental stage
|
||||||
|
auto_set_highlight_group = true,
|
||||||
|
auto_set_keymaps = true,
|
||||||
|
auto_apply_diff_after_generation = false,
|
||||||
|
support_paste_from_clipboard = false,
|
||||||
|
minimize_diff = true, -- Whether to remove unchanged lines when applying a code block
|
||||||
|
enable_token_counting = true, -- Whether to enable token counting. Default to true.
|
||||||
|
auto_approve_tool_permissions = false, -- Default: show permission prompts for all tools
|
||||||
|
-- Examples:
|
||||||
|
-- auto_approve_tool_permissions = true, -- Auto-approve all tools (no prompts)
|
||||||
|
-- auto_approve_tool_permissions = {"bash", "replace_in_file"}, -- Auto-approve specific tools only
|
||||||
|
},
|
||||||
|
prompt_logger = { -- logs prompts to disk (timestamped, for replay/debugging)
|
||||||
|
enabled = true, -- toggle logging entirely
|
||||||
|
log_dir = vim.fn.stdpath 'cache' .. '/avante_prompts', -- directory where logs are saved
|
||||||
|
fortune_cookie_on_success = false, -- shows a random fortune after each logged prompt (requires `fortune` installed)
|
||||||
|
next_prompt = {
|
||||||
|
normal = '<C-n>', -- load the next (newer) prompt log in normal mode
|
||||||
|
insert = '<C-n>',
|
||||||
|
},
|
||||||
|
prev_prompt = {
|
||||||
|
normal = '<C-p>', -- load the previous (older) prompt log in normal mode
|
||||||
|
insert = '<C-p>',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mappings = {
|
||||||
|
--- @class AvanteConflictMappings
|
||||||
|
diff = {
|
||||||
|
ours = 'co',
|
||||||
|
theirs = 'ct',
|
||||||
|
all_theirs = 'ca',
|
||||||
|
both = 'cb',
|
||||||
|
cursor = 'cc',
|
||||||
|
next = ']x',
|
||||||
|
prev = '[x',
|
||||||
|
},
|
||||||
|
suggestion = {
|
||||||
|
accept = '<M-l>',
|
||||||
|
next = '<M-]>',
|
||||||
|
prev = '<M-[>',
|
||||||
|
dismiss = '<C-]>',
|
||||||
|
},
|
||||||
|
jump = {
|
||||||
|
next = ']]',
|
||||||
|
prev = '[[',
|
||||||
|
},
|
||||||
|
submit = {
|
||||||
|
normal = '<CR>',
|
||||||
|
insert = '<C-s>',
|
||||||
|
},
|
||||||
|
cancel = {
|
||||||
|
normal = { '<C-c>', '<Esc>', 'q' },
|
||||||
|
insert = { '<C-c>' },
|
||||||
|
},
|
||||||
|
sidebar = {
|
||||||
|
apply_all = 'A',
|
||||||
|
apply_cursor = 'a',
|
||||||
|
retry_user_request = 'r',
|
||||||
|
edit_user_request = 'e',
|
||||||
|
switch_windows = '<Tab>',
|
||||||
|
reverse_switch_windows = '<S-Tab>',
|
||||||
|
remove_file = 'd',
|
||||||
|
add_file = '@',
|
||||||
|
close = { '<Esc>', 'q' },
|
||||||
|
close_from_input = nil, -- e.g., { normal = "<Esc>", insert = "<C-d>" }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
selection = {
|
||||||
|
enabled = true,
|
||||||
|
hint_display = 'delayed',
|
||||||
|
},
|
||||||
|
windows = {
|
||||||
|
---@type "right" | "left" | "top" | "bottom"
|
||||||
|
position = 'right', -- the position of the sidebar
|
||||||
|
wrap = true, -- similar to vim.o.wrap
|
||||||
|
width = 30, -- default % based on available width
|
||||||
|
sidebar_header = {
|
||||||
|
enabled = true, -- true, false to enable/disable the header
|
||||||
|
align = 'center', -- left, center, right for title
|
||||||
|
rounded = true,
|
||||||
|
},
|
||||||
|
spinner = {
|
||||||
|
editing = {
|
||||||
|
'⡀',
|
||||||
|
'⠄',
|
||||||
|
'⠂',
|
||||||
|
'⠁',
|
||||||
|
'⠈',
|
||||||
|
'⠐',
|
||||||
|
'⠠',
|
||||||
|
'⢀',
|
||||||
|
'⣀',
|
||||||
|
'⢄',
|
||||||
|
'⢂',
|
||||||
|
'⢁',
|
||||||
|
'⢈',
|
||||||
|
'⢐',
|
||||||
|
'⢠',
|
||||||
|
'⣠',
|
||||||
|
'⢤',
|
||||||
|
'⢢',
|
||||||
|
'⢡',
|
||||||
|
'⢨',
|
||||||
|
'⢰',
|
||||||
|
'⣰',
|
||||||
|
'⢴',
|
||||||
|
'⢲',
|
||||||
|
'⢱',
|
||||||
|
'⢸',
|
||||||
|
'⣸',
|
||||||
|
'⢼',
|
||||||
|
'⢺',
|
||||||
|
'⢹',
|
||||||
|
'⣹',
|
||||||
|
'⢽',
|
||||||
|
'⢻',
|
||||||
|
'⣻',
|
||||||
|
'⢿',
|
||||||
|
'⣿',
|
||||||
|
},
|
||||||
|
generating = { '·', '✢', '✳', '∗', '✻', '✽' }, -- Spinner characters for the 'generating' state
|
||||||
|
thinking = { '🤯', '🙄' }, -- Spinner characters for the 'thinking' state
|
||||||
|
},
|
||||||
|
input = {
|
||||||
|
prefix = '> ',
|
||||||
|
height = 8, -- Height of the input window in vertical layout
|
||||||
|
},
|
||||||
|
edit = {
|
||||||
|
border = 'rounded',
|
||||||
|
start_insert = true, -- Start insert mode when opening the edit window
|
||||||
|
},
|
||||||
|
ask = {
|
||||||
|
floating = false, -- Open the 'AvanteAsk' prompt in a floating window
|
||||||
|
start_insert = true, -- Start insert mode when opening the ask window
|
||||||
|
border = 'rounded',
|
||||||
|
---@type "ours" | "theirs"
|
||||||
|
focus_on_apply = 'ours', -- which diff to focus after applying
|
||||||
|
},
|
||||||
|
},
|
||||||
|
highlights = {
|
||||||
|
---@type AvanteConflictHighlights
|
||||||
|
diff = {
|
||||||
|
current = 'DiffText',
|
||||||
|
incoming = 'DiffAdd',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
--- @class AvanteConflictUserConfig
|
||||||
|
diff = {
|
||||||
|
autojump = true,
|
||||||
|
---@type string | fun(): any
|
||||||
|
list_opener = 'copen',
|
||||||
|
--- Override the 'timeoutlen' setting while hovering over a diff (see :help timeoutlen).
|
||||||
|
--- Helps to avoid entering operator-pending mode with diff mappings starting with `c`.
|
||||||
|
--- Disable by setting to -1.
|
||||||
|
override_timeoutlen = 500,
|
||||||
|
},
|
||||||
|
suggestion = {
|
||||||
|
debounce = 600,
|
||||||
|
throttle = 600,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dependencies = {
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
'stevearc/dressing.nvim',
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
'MunifTanjim/nui.nvim',
|
||||||
|
--- The below dependencies are optional,
|
||||||
|
'echasnovski/mini.pick', -- for file_selector provider mini.pick
|
||||||
|
'nvim-telescope/telescope.nvim', -- for file_selector provider telescope
|
||||||
|
'hrsh7th/nvim-cmp', -- autocompletion for avante commands and mentions
|
||||||
|
'ibhagwan/fzf-lua', -- for file_selector provider fzf
|
||||||
|
'nvim-tree/nvim-web-devicons', -- or echasnovski/mini.icons
|
||||||
|
'zbirenbaum/copilot.lua', -- for providers='copilot'
|
||||||
|
{
|
||||||
|
-- support for image pasting
|
||||||
|
'HakonHarnes/img-clip.nvim',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
opts = {
|
||||||
|
-- recommended settings
|
||||||
|
default = {
|
||||||
|
embed_image_as_base64 = false,
|
||||||
|
prompt_for_file_name = false,
|
||||||
|
drag_and_drop = {
|
||||||
|
insert_mode = true,
|
||||||
|
},
|
||||||
|
-- required for Windows users
|
||||||
|
use_absolute_path = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
-- Make sure to set this up properly if you have lazy=true
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
opts = {
|
||||||
|
file_types = { 'markdown', 'Avante' },
|
||||||
|
},
|
||||||
|
ft = { 'markdown', 'Avante' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- from https://github.com/yetone/avante.nvim?tab=readme-ov-file
|
||||||
|
-- {
|
||||||
|
-- "yetone/avante.nvim",
|
||||||
|
-- -- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
|
||||||
|
-- -- ⚠️ must add this setting! ! !
|
||||||
|
-- build = vim.fn.has("win32") ~= 0
|
||||||
|
-- and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false"
|
||||||
|
-- or "make",
|
||||||
|
-- event = "VeryLazy",
|
||||||
|
-- version = false, -- Never set this value to "*"! Never!
|
||||||
|
-- ---@module 'avante'
|
||||||
|
-- ---@type avante.Config
|
||||||
|
-- opts = {
|
||||||
|
-- -- add any opts here
|
||||||
|
-- -- this file can contain specific instructions for your project
|
||||||
|
-- instructions_file = "avante.md",
|
||||||
|
-- -- for example
|
||||||
|
-- provider = "claude",
|
||||||
|
-- providers = {
|
||||||
|
-- claude = {
|
||||||
|
-- endpoint = "https://api.anthropic.com",
|
||||||
|
-- model = "claude-sonnet-4-20250514",
|
||||||
|
-- timeout = 30000, -- Timeout in milliseconds
|
||||||
|
-- extra_request_body = {
|
||||||
|
-- temperature = 0.75,
|
||||||
|
-- max_tokens = 20480,
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- moonshot = {
|
||||||
|
-- endpoint = "https://api.moonshot.ai/v1",
|
||||||
|
-- model = "kimi-k2-0711-preview",
|
||||||
|
-- timeout = 30000, -- Timeout in milliseconds
|
||||||
|
-- extra_request_body = {
|
||||||
|
-- temperature = 0.75,
|
||||||
|
-- max_tokens = 32768,
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- dependencies = {
|
||||||
|
-- "nvim-lua/plenary.nvim",
|
||||||
|
-- "MunifTanjim/nui.nvim",
|
||||||
|
-- --- The below dependencies are optional,
|
||||||
|
-- "echasnovski/mini.pick", -- for file_selector provider mini.pick
|
||||||
|
-- "nvim-telescope/telescope.nvim", -- for file_selector provider telescope
|
||||||
|
-- "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
|
||||||
|
-- "ibhagwan/fzf-lua", -- for file_selector provider fzf
|
||||||
|
-- "stevearc/dressing.nvim", -- for input provider dressing
|
||||||
|
-- "folke/snacks.nvim", -- for input provider snacks
|
||||||
|
-- "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
|
||||||
|
-- "zbirenbaum/copilot.lua", -- for providers='copilot'
|
||||||
|
-- {
|
||||||
|
-- -- support for image pasting
|
||||||
|
-- "HakonHarnes/img-clip.nvim",
|
||||||
|
-- event = "VeryLazy",
|
||||||
|
-- opts = {
|
||||||
|
-- -- recommended settings
|
||||||
|
-- default = {
|
||||||
|
-- embed_image_as_base64 = false,
|
||||||
|
-- prompt_for_file_name = false,
|
||||||
|
-- drag_and_drop = {
|
||||||
|
-- insert_mode = true,
|
||||||
|
-- },
|
||||||
|
-- -- required for Windows users
|
||||||
|
-- use_absolute_path = true,
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- -- Make sure to set this up properly if you have lazy=true
|
||||||
|
-- 'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
-- opts = {
|
||||||
|
-- file_types = { "markdown", "Avante" },
|
||||||
|
-- },
|
||||||
|
-- ft = { "markdown", "Avante" },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- }
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- lua with lazy.nvim
|
||||||
|
return {
|
||||||
|
'max397574/better-escape.nvim',
|
||||||
|
config = function()
|
||||||
|
require('better_escape').setup()
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
'typicode/bg.nvim',
|
||||||
|
lazy = false,
|
||||||
|
priority = 1000,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
return {
|
||||||
|
'akinsho/bufferline.nvim',
|
||||||
|
lazy = false,
|
||||||
|
version = '*',
|
||||||
|
dependencies = 'nvim-tree/nvim-web-devicons',
|
||||||
|
config = function()
|
||||||
|
require('bufferline').setup {}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
return {
|
||||||
|
'catppuccin/nvim',
|
||||||
|
name = 'catppuccin',
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
require('catppuccin').setup {
|
||||||
|
flavour = 'auto', -- latte, frappe, macchiato, mocha
|
||||||
|
background = { -- :h background
|
||||||
|
light = 'latte',
|
||||||
|
dark = 'mocha',
|
||||||
|
},
|
||||||
|
transparent_background = false, -- disables setting the background color.
|
||||||
|
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
|
||||||
|
term_colors = false, -- 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 = {},
|
||||||
|
functions = {},
|
||||||
|
keywords = {},
|
||||||
|
strings = {},
|
||||||
|
variables = {},
|
||||||
|
numbers = {},
|
||||||
|
booleans = {},
|
||||||
|
properties = {},
|
||||||
|
types = {},
|
||||||
|
operators = {},
|
||||||
|
-- miscs = {}, -- Uncomment to turn off hard-coded styles
|
||||||
|
},
|
||||||
|
color_overrides = {},
|
||||||
|
custom_highlights = {},
|
||||||
|
default_integrations = true,
|
||||||
|
integrations = {
|
||||||
|
cmp = true,
|
||||||
|
gitsigns = true,
|
||||||
|
nvimtree = true,
|
||||||
|
treesitter = true,
|
||||||
|
notify = false,
|
||||||
|
mini = {
|
||||||
|
enabled = true,
|
||||||
|
indentscope_color = '',
|
||||||
|
},
|
||||||
|
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- setup must be called before loading
|
||||||
|
-- vim.cmd.colorscheme 'catppuccin'
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
return {
|
||||||
|
'uga-rosa/ccc.nvim',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
config = function()
|
||||||
|
require('ccc').setup {}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
return {
|
||||||
|
'coder/claudecode.nvim',
|
||||||
|
dependencies = { 'folke/snacks.nvim' },
|
||||||
|
config = true,
|
||||||
|
opts = {
|
||||||
|
-- Server Configuration
|
||||||
|
port_range = { min = 10000, max = 65535 },
|
||||||
|
auto_start = true,
|
||||||
|
log_level = 'info', -- "trace", "debug", "info", "warn", "error"
|
||||||
|
terminal_cmd = nil, -- Custom terminal command (default: "claude")
|
||||||
|
-- For local installations: "~/.claude/local/claude"
|
||||||
|
-- For native binary: use output from 'which claude'
|
||||||
|
|
||||||
|
-- Send/Focus Behavior
|
||||||
|
-- When true, successful sends will focus the Claude terminal if already connected
|
||||||
|
focus_after_send = false,
|
||||||
|
|
||||||
|
-- Selection Tracking
|
||||||
|
track_selection = true,
|
||||||
|
visual_demotion_delay_ms = 50,
|
||||||
|
|
||||||
|
-- Terminal Configuration
|
||||||
|
terminal = {
|
||||||
|
split_side = 'right', -- "left" or "right"
|
||||||
|
split_width_percentage = 0.30,
|
||||||
|
provider = 'auto', -- "auto", "snacks", "native", "external", "none", or custom provider table
|
||||||
|
auto_close = true,
|
||||||
|
snacks_win_opts = {}, -- Opts to pass to `Snacks.terminal.open()` - see Floating Window section below
|
||||||
|
|
||||||
|
-- Provider-specific options
|
||||||
|
provider_opts = {
|
||||||
|
-- Command for external terminal provider. Can be:
|
||||||
|
-- 1. String with %s placeholder: "alacritty -e %s" (backward compatible)
|
||||||
|
-- 2. String with two %s placeholders: "alacritty --working-directory %s -e %s" (cwd, command)
|
||||||
|
-- 3. Function returning command: function(cmd, env) return "alacritty -e " .. cmd end
|
||||||
|
external_terminal_cmd = nil,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Diff Integration
|
||||||
|
diff_opts = {
|
||||||
|
auto_close_on_accept = true,
|
||||||
|
vertical_split = true,
|
||||||
|
open_in_current_tab = true,
|
||||||
|
keep_terminal_focus = false, -- If true, moves focus back to terminal after diff opens
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ '<leader>a', nil, desc = 'AI/Claude Code' },
|
||||||
|
{ '<leader>ac', '<cmd>ClaudeCode<cr>', desc = 'Toggle Claude' },
|
||||||
|
{ '<leader>af', '<cmd>ClaudeCodeFocus<cr>', desc = 'Focus Claude' },
|
||||||
|
{ '<leader>ar', '<cmd>ClaudeCode --resume<cr>', desc = 'Resume Claude' },
|
||||||
|
{ '<leader>aC', '<cmd>ClaudeCode --continue<cr>', desc = 'Continue Claude' },
|
||||||
|
{ '<leader>am', '<cmd>ClaudeCodeSelectModel<cr>', desc = 'Select Claude model' },
|
||||||
|
{ '<leader>ab', '<cmd>ClaudeCodeAdd %<cr>', desc = 'Add current buffer' },
|
||||||
|
{ '<leader>as', '<cmd>ClaudeCodeSend<cr>', mode = 'v', desc = 'Send to Claude' },
|
||||||
|
{
|
||||||
|
'<leader>as',
|
||||||
|
'<cmd>ClaudeCodeTreeAdd<cr>',
|
||||||
|
desc = 'Add file',
|
||||||
|
ft = { 'NvimTree', 'neo-tree', 'oil', 'minifiles', 'netrw' },
|
||||||
|
},
|
||||||
|
-- Diff management
|
||||||
|
{ '<leader>aa', '<cmd>ClaudeCodeDiffAccept<cr>', desc = 'Accept diff' },
|
||||||
|
{ '<leader>ad', '<cmd>ClaudeCodeDiffDeny<cr>', desc = 'Deny diff' },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,96 @@
|
||||||
|
return {
|
||||||
|
'zbirenbaum/copilot.lua',
|
||||||
|
enabled = true,
|
||||||
|
event = 'InsertEnter',
|
||||||
|
requires = {
|
||||||
|
'copilotlsp/copilot-lsp.nvim',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require('copilot').setup {
|
||||||
|
panel = {
|
||||||
|
enabled = true,
|
||||||
|
auto_refresh = true,
|
||||||
|
keymap = {
|
||||||
|
jump_prev = '[[',
|
||||||
|
jump_next = ']]',
|
||||||
|
accept = '<CR>',
|
||||||
|
refresh = 'gr',
|
||||||
|
open = '<M-CR>',
|
||||||
|
},
|
||||||
|
layout = {
|
||||||
|
position = 'right', -- | top | left | right | bottom |
|
||||||
|
ratio = 0.4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
suggestion = {
|
||||||
|
enabled = true,
|
||||||
|
auto_trigger = true,
|
||||||
|
hide_during_completion = true,
|
||||||
|
debounce = 100,
|
||||||
|
trigger_on_accept = false,
|
||||||
|
keymap = {
|
||||||
|
accept = '<M-l>',
|
||||||
|
accept_word = false,
|
||||||
|
accept_line = false,
|
||||||
|
next = '<M-]>',
|
||||||
|
prev = '<M-[>',
|
||||||
|
dismiss = '<C-]>',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filetypes = {
|
||||||
|
yaml = false,
|
||||||
|
markdown = false,
|
||||||
|
help = false,
|
||||||
|
gitcommit = true,
|
||||||
|
gitrebase = true,
|
||||||
|
hgcommit = false,
|
||||||
|
svn = false,
|
||||||
|
cvs = false,
|
||||||
|
['.'] = false,
|
||||||
|
},
|
||||||
|
nes = {
|
||||||
|
enabled = false, -- requires copilot-lsp as a dependency
|
||||||
|
auto_trigger = false,
|
||||||
|
keymap = {
|
||||||
|
accept_and_goto = false,
|
||||||
|
accept = false,
|
||||||
|
dismiss = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
auth_provider_url = nil, -- URL to authentication provider, if not "https://github.com/"
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
copilot_node_command = 'node', -- Node.js version must be > 20
|
||||||
|
workspace_folders = {},
|
||||||
|
copilot_model = '',
|
||||||
|
root_dir = function()
|
||||||
|
return vim.fs.dirname(vim.fs.find('.git', { upward = true })[1])
|
||||||
|
end,
|
||||||
|
should_attach = function(_, _)
|
||||||
|
local logger = require 'copilot.logger'
|
||||||
|
if not vim.bo.buflisted then
|
||||||
|
logger.debug "not attaching, buffer is not 'buflisted'"
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if vim.bo.buftype ~= '' then
|
||||||
|
logger.debug("not attaching, buffer 'buftype' is " .. vim.bo.buftype)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
server = {
|
||||||
|
type = 'nodejs', -- "nodejs" | "binary"
|
||||||
|
custom_server_filepath = nil,
|
||||||
|
},
|
||||||
|
server_opts_overrides = {},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
return {
|
||||||
|
'terrastruct/d2-vim',
|
||||||
|
enable = true,
|
||||||
|
event = { 'BufReadPre', 'BufNewFile' },
|
||||||
|
ft = { 'd2', 'md', 'mdx', 'txt' },
|
||||||
|
config = function()
|
||||||
|
vim.g.d2_ascii_autorender = 0
|
||||||
|
vim.g.d2_ascii_command = 'd2'
|
||||||
|
vim.g.d2_ascii_preview_width = vim.o.columns / 2
|
||||||
|
vim.g.d2_ascii_mode = 'extended'
|
||||||
|
vim.g.d2_fmt_autosave = 1
|
||||||
|
vim.g.d2_fmt_command = 'd2 fmt'
|
||||||
|
vim.g.d2_fmt_fail_silently = 0
|
||||||
|
vim.g.d2_validate_autosave = 0
|
||||||
|
vim.g.d2_validate_command = 'd2 validate'
|
||||||
|
vim.g.d2_list_type = 'quickfix'
|
||||||
|
vim.g.d2_fail_silently = 0
|
||||||
|
vim.g.d2_play_command = 'd2 play'
|
||||||
|
vim.g.d2_play_theme = 0
|
||||||
|
vim.g.d2_play_sketch = 0
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
return {
|
||||||
|
'projekt0n/github-nvim-theme',
|
||||||
|
name = 'github-theme',
|
||||||
|
lazy = false, -- make sure we load this during startup if it is your main colorscheme
|
||||||
|
priority = 1000, -- make sure to load this before all the other start plugins
|
||||||
|
config = function()
|
||||||
|
require('github-theme').setup {
|
||||||
|
options = {
|
||||||
|
-- Compiled file's destination location
|
||||||
|
compile_path = vim.fn.stdpath 'cache' .. '/github-theme',
|
||||||
|
compile_file_suffix = '_compiled', -- Compiled file suffix
|
||||||
|
hide_end_of_buffer = true, -- Hide the '~' character at the end of the buffer for a cleaner look
|
||||||
|
hide_nc_statusline = true, -- Override the underline style for non-active statuslines
|
||||||
|
transparent = false, -- Disable setting bg (make neovim's background transparent)
|
||||||
|
terminal_colors = true, -- Set terminal colors (vim.g.terminal_color_*) used in `:terminal`
|
||||||
|
dim_inactive = false, -- Non focused panes set to alternative background
|
||||||
|
module_default = true, -- Default enable value for modules
|
||||||
|
styles = { -- Style to be applied to different syntax groups
|
||||||
|
comments = 'NONE', -- Value is any valid attr-list value `:help attr-list`
|
||||||
|
functions = 'NONE',
|
||||||
|
keywords = 'NONE',
|
||||||
|
variables = 'NONE',
|
||||||
|
conditionals = 'NONE',
|
||||||
|
constants = 'NONE',
|
||||||
|
numbers = 'NONE',
|
||||||
|
operators = 'NONE',
|
||||||
|
strings = 'NONE',
|
||||||
|
types = 'NONE',
|
||||||
|
},
|
||||||
|
inverse = { -- Inverse highlight for different types
|
||||||
|
match_paren = false,
|
||||||
|
visual = false,
|
||||||
|
search = false,
|
||||||
|
},
|
||||||
|
darken = { -- Darken floating windows and sidebar-like windows
|
||||||
|
floats = true,
|
||||||
|
sidebars = {
|
||||||
|
enable = true,
|
||||||
|
list = {}, -- Apply dark background to specific windows
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modules = { -- List of various plugins and additional options
|
||||||
|
-- ...
|
||||||
|
},
|
||||||
|
},
|
||||||
|
palettes = {},
|
||||||
|
specs = {},
|
||||||
|
groups = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- -- setup must be called before loading
|
||||||
|
-- vim.cmd 'colorscheme github_dark'
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
return {
|
||||||
|
'mrcjkb/haskell-tools.nvim',
|
||||||
|
version = '^6', -- Recommended
|
||||||
|
lazy = false, -- This plugin is already lazy
|
||||||
|
enabled = true,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
return {
|
||||||
|
'keaising/im-select.nvim',
|
||||||
|
lazy = false,
|
||||||
|
config = function()
|
||||||
|
require('im_select').setup {
|
||||||
|
-- IM will be set to `default_im_select` in `normal` mode
|
||||||
|
-- For Windows/WSL, default: "1033", aka: English US Keyboard
|
||||||
|
-- For macOS, default: "com.apple.keylayout.ABC", aka: US
|
||||||
|
-- For Linux, default:
|
||||||
|
-- "keyboard-us" for Fcitx5
|
||||||
|
-- "1" for Fcitx
|
||||||
|
-- "xkb:us::eng" for ibus
|
||||||
|
-- You can use `im-select` or `fcitx5-remote -n` to get the IM's name
|
||||||
|
default_im_select = 'com.apple.keylayout.Australian',
|
||||||
|
|
||||||
|
-- Can be binary's name, binary's full path, or a table, e.g. 'im-select',
|
||||||
|
-- '/usr/local/bin/im-select' for binary without extra arguments,
|
||||||
|
-- or { "AIMSwitcher.exe", "--imm" } for binary need extra arguments to work.
|
||||||
|
-- For Windows/WSL, default: "im-select.exe"
|
||||||
|
-- For macOS, default: "macism"
|
||||||
|
-- For Linux, default: "fcitx5-remote" or "fcitx-remote" or "ibus"
|
||||||
|
default_command = 'macism',
|
||||||
|
|
||||||
|
-- Restore the default input method state when the following events are triggered
|
||||||
|
set_default_events = { 'VimEnter', 'FocusGained', 'InsertLeave', 'CmdlineLeave' },
|
||||||
|
|
||||||
|
-- Restore the previous used input method state when the following events
|
||||||
|
-- are triggered, if you don't want to restore previous used im in Insert mode,
|
||||||
|
-- e.g. deprecated `disable_auto_restore = 1`, just let it empty
|
||||||
|
-- as `set_previous_events = {}`
|
||||||
|
set_previous_events = { 'InsertEnter' },
|
||||||
|
|
||||||
|
-- Show notification about how to install executable binary when binary missed
|
||||||
|
keep_quiet_on_no_binary = false,
|
||||||
|
|
||||||
|
-- Async run `default_command` to switch IM or not
|
||||||
|
async_switch_im = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -2,4 +2,100 @@
|
||||||
-- I promise not to create any merge conflicts in this directory :)
|
-- I promise not to create any merge conflicts in this directory :)
|
||||||
--
|
--
|
||||||
-- See the kickstart.nvim README for more information
|
-- See the kickstart.nvim README for more information
|
||||||
|
|
||||||
|
vim.cmd 'language en_GB.UTF-8'
|
||||||
|
|
||||||
|
vim.opt.encoding = 'utf-8'
|
||||||
|
vim.opt.fileencoding = 'utf-8'
|
||||||
|
vim.opt.fileencodings = { 'utf-8' }
|
||||||
|
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
|
||||||
|
vim.opt.winblend = 0
|
||||||
|
vim.opt.pumblend = 0
|
||||||
|
|
||||||
|
vim.g.background = 'dark'
|
||||||
|
|
||||||
|
vim.opt.wrap = true
|
||||||
|
|
||||||
|
vim.diagnostic.config {
|
||||||
|
update_in_insert = true,
|
||||||
|
underline = false,
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.cmd 'filetype plugin on'
|
||||||
|
|
||||||
|
-- NOTE: keymaps
|
||||||
|
local map = vim.keymap.set
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
-- basic function
|
||||||
|
map('n', ';', ':', { desc = '' })
|
||||||
|
-- buffer control
|
||||||
|
map('n', '<Tab>', '<cmd>bnext<CR>', { desc = 'Next buffer' })
|
||||||
|
map('n', '<Leader>x', '<cmd>bdelete<CR>', { desc = 'delete buffer' })
|
||||||
|
|
||||||
|
-- telescope
|
||||||
|
map('n', '<Leader>tc', '<cmd>Telescope colorscheme<CR>', { desc = '[T]elescope [C]olorscheme' })
|
||||||
|
|
||||||
|
-- toggleterm
|
||||||
|
map('n', '<Leader>H', '<cmd>ToggleTerm size=16 direction=horizontal<CR>', { desc = 'Open Terminal Horizontal' })
|
||||||
|
-- map('t', '<Leader>H', '<cmd>ToggleTerm size=20 direction=horizontal<CR>', { desc = 'Open Terminal Horizontal' })
|
||||||
|
map('n', '<Leader>V', '<cmd>ToggleTerm size=80 direction=vertical<CR>', { desc = 'Open Terminal Vertical' })
|
||||||
|
-- map('t', '<Leader>V', '<cmd>ToggleTerm size=80 direction=vertical<CR>', { desc = 'Open Terminal Vertical' })
|
||||||
|
map('n', '<M-i>', '<cmd>ToggleTerm direction=float<CR>', { desc = 'Open Terminal floating' })
|
||||||
|
map('t', '<M-i>', '<cmd>ToggleTerm direction=float<CR>', { desc = 'Open Terminal floating' })
|
||||||
|
|
||||||
|
-- CopilotChat.nvim
|
||||||
|
map('n', '<Leader>cci', '<cmd>CopilotChat ', { desc = ':CopilotChat', unpack(opts) })
|
||||||
|
map('n', '<Leader>cco', '<cmd>CopilotChatOpen<CR>', { desc = ':CopilotChatOpen', unpack(opts) })
|
||||||
|
map('n', '<Leader>ccq', '<cmd>CopilotChatClose<CR>', { desc = ':CopilotChatClose', unpack(opts) })
|
||||||
|
map('n', '<Leader>cct', '<cmd>CopilotChatToggle<CR>', { desc = ':CopilotChatToggle', unpack(opts) })
|
||||||
|
map('n', '<Leader>ccs', '<cmd>CopilotChatStop<CR>', { desc = ':CopilotChatStop', unpack(opts) })
|
||||||
|
map('n', '<Leader>ccr', '<cmd>CopilotChatReset<CR>', { desc = ':CopilotChatReset', unpack(opts) })
|
||||||
|
map('n', '<leader>ccS', '<cmd>CopilotChatSave ', { desc = 'Save Copilot Chat history', noremap = true, silent = false })
|
||||||
|
map('n', '<leader>ccL', '<cmd>CopilotChatLoad ', { desc = 'Load Copilot Chat history', noremap = true, silent = false })
|
||||||
|
map('n', '<leader>ccp', '<cmd>CopilotChatPrompts<CR>', { desc = 'Copilot Chat prompt templates', unpack(opts) })
|
||||||
|
map('n', '<leader>ccm', '<cmd>CopilotChatModels<CR>', { desc = 'Copilot Chat models', unpack(opts) })
|
||||||
|
map('n', '<leader>ccE', '<cmd>CopilotChat', { desc = 'Copilot Chat prompt template', noremap = true, silent = false })
|
||||||
|
|
||||||
|
-- macos like keybindings for text editing in insert mode
|
||||||
|
map('i', '<C-a>', '<C-o>^', opts)
|
||||||
|
map('i', '<C-e>', '<C-o>$', opts)
|
||||||
|
map('i', '<C-k>', '<C-o>D', opts)
|
||||||
|
map('i', '<C-u>', '<C-o>d0', opts)
|
||||||
|
map('i', '<C-f>', '<Right>', opts)
|
||||||
|
map('i', '<C-b>', '<Left>', opts)
|
||||||
|
map('i', '<C-d>', '<Del>', opts)
|
||||||
|
map('i', '<C-h>', '<BS>', opts)
|
||||||
|
map('i', '<C-n>', '<Down>', opts)
|
||||||
|
map('i', '<C-p>', '<Up>', opts)
|
||||||
|
-- NOTE: keymaps end
|
||||||
|
|
||||||
|
-- NOTE: neovide
|
||||||
|
local function set_ime(args)
|
||||||
|
if args.event:match 'Enter$' then
|
||||||
|
vim.g.neovide_input_ime = true
|
||||||
|
else
|
||||||
|
vim.g.neovide_input_ime = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local ime_input = vim.api.nvim_create_augroup('ime_input', { clear = true })
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'InsertEnter', 'InsertLeave' }, {
|
||||||
|
group = ime_input,
|
||||||
|
pattern = '*',
|
||||||
|
callback = set_ime,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'CmdlineEnter', 'CmdlineLeave' }, {
|
||||||
|
group = ime_input,
|
||||||
|
pattern = '[/\\?]',
|
||||||
|
callback = set_ime,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.g.neovide_cursor_animation_length = 0.1
|
||||||
|
-- NOTE: neovide end
|
||||||
|
|
||||||
return {}
|
return {}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
return {
|
||||||
|
'Julian/lean.nvim',
|
||||||
|
event = { 'BufReadPre *.lean', 'BufNewFile *.lean' },
|
||||||
|
|
||||||
|
dependencies = {
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
|
||||||
|
-- optional dependencies:
|
||||||
|
|
||||||
|
-- a completion engine
|
||||||
|
-- hrsh7th/nvim-cmp or Saghen/blink.cmp are popular choices
|
||||||
|
|
||||||
|
'nvim-telescope/telescope.nvim', -- for 2 Lean-specific pickers
|
||||||
|
'andymass/vim-matchup', -- for enhanced % motion behavior
|
||||||
|
'andrewradev/switch.vim', -- for switch support
|
||||||
|
'tomtom/tcomment_vim', -- for commenting
|
||||||
|
},
|
||||||
|
|
||||||
|
---@type lean.Config
|
||||||
|
opts = { -- see below for full configuration options
|
||||||
|
mappings = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,92 @@
|
||||||
|
return {
|
||||||
|
'ravitemer/mcphub.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
},
|
||||||
|
build = 'bundled_build.lua',
|
||||||
|
config = function()
|
||||||
|
require('mcphub').setup {
|
||||||
|
--- `mcp-hub` binary related options-------------------
|
||||||
|
config = vim.fn.expand '~/.config/mcphub/servers.json', -- Absolute path to MCP Servers config file (will create if not exists)
|
||||||
|
port = 37373, -- The port `mcp-hub` server listens to
|
||||||
|
shutdown_delay = 5 * 60 * 000, -- Delay in ms before shutting down the server when last instance closes (default: 5 minutes)
|
||||||
|
use_bundled_binary = true, -- Use local `mcp-hub` binary (set this to true when using build = "bundled_build.lua")
|
||||||
|
mcp_request_timeout = 60000, --Max time allowed for a MCP tool or resource to execute in milliseconds, set longer for long running tasks
|
||||||
|
global_env = {}, -- Global environment variables available to all MCP servers (can be a table or a function returning a table)
|
||||||
|
workspace = {
|
||||||
|
enabled = true, -- Enable project-local configuration files
|
||||||
|
look_for = { '.mcphub/servers.json', '.vscode/mcp.json', '.cursor/mcp.json' }, -- Files to look for when detecting project boundaries (VS Code format supported)
|
||||||
|
reload_on_dir_changed = true, -- Automatically switch hubs on DirChanged event
|
||||||
|
port_range = { min = 40000, max = 41000 }, -- Port range for generating unique workspace ports
|
||||||
|
get_port = nil, -- Optional function returning custom port number. Called when generating ports to allow custom port assignment logic
|
||||||
|
},
|
||||||
|
|
||||||
|
---Chat-plugin related options-----------------
|
||||||
|
auto_approve = false, -- Auto approve mcp tool calls
|
||||||
|
auto_toggle_mcp_servers = true, -- Let LLMs start and stop MCP servers automatically
|
||||||
|
extensions = {
|
||||||
|
avante = {
|
||||||
|
make_slash_commands = true, -- make /slash commands from MCP server prompts
|
||||||
|
},
|
||||||
|
copilotchat = {
|
||||||
|
enabled = true,
|
||||||
|
convert_tools_to_functions = true, -- Convert MCP tools to CopilotChat functions
|
||||||
|
convert_resources_to_functions = true, -- Convert MCP resources to CopilotChat functions
|
||||||
|
add_mcp_prefix = false, -- Add "mcp_" prefix to function names
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
--- Plugin specific options-------------------
|
||||||
|
native_servers = {}, -- add your custom lua native servers here
|
||||||
|
builtin_tools = {
|
||||||
|
edit_file = {
|
||||||
|
parser = {
|
||||||
|
track_issues = true,
|
||||||
|
extract_inline_content = true,
|
||||||
|
},
|
||||||
|
locator = {
|
||||||
|
fuzzy_threshold = 0.8,
|
||||||
|
enable_fuzzy_matching = true,
|
||||||
|
},
|
||||||
|
ui = {
|
||||||
|
go_to_origin_on_complete = true,
|
||||||
|
keybindings = {
|
||||||
|
accept = '.',
|
||||||
|
reject = ',',
|
||||||
|
next = 'n',
|
||||||
|
prev = 'p',
|
||||||
|
accept_all = 'ga',
|
||||||
|
reject_all = 'gr',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ui = {
|
||||||
|
window = {
|
||||||
|
width = 0.8, -- 0-1 (ratio); "50%" (percentage); 50 (raw number)
|
||||||
|
height = 0.8, -- 0-1 (ratio); "50%" (percentage); 50 (raw number)
|
||||||
|
align = 'center', -- "center", "top-left", "top-right", "bottom-left", "bottom-right", "top", "bottom", "left", "right"
|
||||||
|
relative = 'editor',
|
||||||
|
zindex = 50,
|
||||||
|
border = 'rounded', -- "none", "single", "double", "rounded", "solid", "shadow"
|
||||||
|
},
|
||||||
|
wo = { -- window-scoped options (vim.wo)
|
||||||
|
winhl = 'Normal:MCPHubNormal,FloatBorder:MCPHubBorder',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
json_decode = nil, -- Custom JSON parser function (e.g., require('json5').parse for JSON5 support)
|
||||||
|
on_ready = function(hub)
|
||||||
|
-- Called when hub is ready
|
||||||
|
end,
|
||||||
|
on_error = function(err)
|
||||||
|
-- Called on errors
|
||||||
|
end,
|
||||||
|
log = {
|
||||||
|
level = vim.log.levels.WARN,
|
||||||
|
to_file = false,
|
||||||
|
file_path = nil,
|
||||||
|
prefix = 'MCPHub',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,159 @@
|
||||||
|
return {
|
||||||
|
'jake-stewart/multicursor.nvim',
|
||||||
|
lazy = false,
|
||||||
|
branch = '1.0',
|
||||||
|
config = function()
|
||||||
|
local mc = require 'multicursor-nvim'
|
||||||
|
mc.setup()
|
||||||
|
|
||||||
|
local set = vim.keymap.set
|
||||||
|
|
||||||
|
-- Add or skip cursor above/below the main cursor.
|
||||||
|
set({ 'n', 'x' }, '<up>', function()
|
||||||
|
mc.lineAddCursor(-1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, '<down>', function()
|
||||||
|
mc.lineAddCursor(1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, '<leader><up>', function()
|
||||||
|
mc.lineSkipCursor(-1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, '<leader><down>', function()
|
||||||
|
mc.lineSkipCursor(1)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Add or skip adding a new cursor by matching word/selection
|
||||||
|
set({ 'n', 'x' }, '<leader>n', function()
|
||||||
|
mc.matchAddCursor(1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, '<leader>s', function()
|
||||||
|
mc.matchSkipCursor(1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, '<leader>N', function()
|
||||||
|
mc.matchAddCursor(-1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, '<leader>S', function()
|
||||||
|
mc.matchSkipCursor(-1)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Add and remove cursors with control + left click.
|
||||||
|
set('n', '<c-leftmouse>', mc.handleMouse)
|
||||||
|
set('n', '<c-leftdrag>', mc.handleMouseDrag)
|
||||||
|
set('n', '<c-leftrelease>', mc.handleMouseRelease)
|
||||||
|
|
||||||
|
-- Disable and enable cursors.
|
||||||
|
set({ 'n', 'x' }, '<c-q>', mc.toggleCursor)
|
||||||
|
|
||||||
|
-- Mappings defined in a keymap layer only apply when there are
|
||||||
|
-- multiple cursors. This lets you have overlapping mappings.
|
||||||
|
mc.addKeymapLayer(function(layerSet)
|
||||||
|
-- Select a different cursor as the main one.
|
||||||
|
layerSet({ 'n', 'x' }, '<left>', mc.prevCursor)
|
||||||
|
layerSet({ 'n', 'x' }, '<right>', mc.nextCursor)
|
||||||
|
|
||||||
|
-- Delete the main cursor.
|
||||||
|
layerSet({ 'n', 'x' }, '<leader>x', mc.deleteCursor)
|
||||||
|
|
||||||
|
-- Enable and clear cursors using escape.
|
||||||
|
layerSet('n', '<esc>', function()
|
||||||
|
if not mc.cursorsEnabled() then
|
||||||
|
mc.enableCursors()
|
||||||
|
else
|
||||||
|
mc.clearCursors()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Pressing `gaip` will add a cursor on each line of a paragraph.
|
||||||
|
set('n', 'ga', mc.addCursorOperator)
|
||||||
|
|
||||||
|
-- Clone every cursor and disable the originals.
|
||||||
|
set({ 'n', 'x' }, '<leader><c-q>', mc.duplicateCursors)
|
||||||
|
|
||||||
|
-- Align cursor columns.
|
||||||
|
set('n', '<leader>a', mc.alignCursors)
|
||||||
|
|
||||||
|
-- Split visual selections by regex.
|
||||||
|
set('x', 'S', mc.splitCursors)
|
||||||
|
|
||||||
|
-- match new cursors within visual selections by regex.
|
||||||
|
set('x', 'M', mc.matchCursors)
|
||||||
|
|
||||||
|
-- bring back cursors if you accidentally clear them
|
||||||
|
set('n', '<leader>gv', mc.restoreCursors)
|
||||||
|
|
||||||
|
-- Add a cursor for all matches of cursor word/selection in the document.
|
||||||
|
set({ 'n', 'x' }, '<leader>A', mc.matchAllAddCursors)
|
||||||
|
|
||||||
|
-- Rotate the text contained in each visual selection between cursors.
|
||||||
|
set('x', '<leader>t', function()
|
||||||
|
mc.transposeCursors(1)
|
||||||
|
end)
|
||||||
|
set('x', '<leader>T', function()
|
||||||
|
mc.transposeCursors(-1)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Append/insert for each line of visual selections.
|
||||||
|
-- Similar to block selection insertion.
|
||||||
|
set('x', 'I', mc.insertVisual)
|
||||||
|
set('x', 'A', mc.appendVisual)
|
||||||
|
|
||||||
|
-- Increment/decrement sequences, treaing all cursors as one sequence.
|
||||||
|
set({ 'n', 'x' }, 'g<c-a>', mc.sequenceIncrement)
|
||||||
|
set({ 'n', 'x' }, 'g<c-x>', mc.sequenceDecrement)
|
||||||
|
|
||||||
|
-- Add a cursor and jump to the next/previous search result.
|
||||||
|
set('n', '<leader>/n', function()
|
||||||
|
mc.searchAddCursor(1)
|
||||||
|
end)
|
||||||
|
set('n', '<leader>/N', function()
|
||||||
|
mc.searchAddCursor(-1)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Jump to the next/previous search result without adding a cursor.
|
||||||
|
set('n', '<leader>/s', function()
|
||||||
|
mc.searchSkipCursor(1)
|
||||||
|
end)
|
||||||
|
set('n', '<leader>/S', function()
|
||||||
|
mc.searchSkipCursor(-1)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Add a cursor to every search result in the buffer.
|
||||||
|
set('n', '<leader>/A', mc.searchAllAddCursors)
|
||||||
|
|
||||||
|
-- Pressing `<leader>miwap` will create a cursor in every match of the
|
||||||
|
-- string captured by `iw` inside range `ap`.
|
||||||
|
-- This action is highly customizable, see `:h multicursor-operator`.
|
||||||
|
set({ 'n', 'x' }, '<leader>m', mc.operator)
|
||||||
|
|
||||||
|
-- Add or skip adding a new cursor by matching diagnostics.
|
||||||
|
set({ 'n', 'x' }, ']d', function()
|
||||||
|
mc.diagnosticAddCursor(1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, '[d', function()
|
||||||
|
mc.diagnosticAddCursor(-1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, ']s', function()
|
||||||
|
mc.diagnosticSkipCursor(1)
|
||||||
|
end)
|
||||||
|
set({ 'n', 'x' }, '[S', function()
|
||||||
|
mc.diagnosticSkipCursor(-1)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Press `mdip` to add a cursor for every error diagnostic in the range `ip`.
|
||||||
|
set({ 'n', 'x' }, 'md', function()
|
||||||
|
-- See `:h vim.diagnostic.GetOpts`.
|
||||||
|
mc.diagnosticMatchCursors { severity = vim.diagnostic.severity.ERROR }
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Customize how cursors look.
|
||||||
|
local hl = vim.api.nvim_set_hl
|
||||||
|
hl(0, 'MultiCursorCursor', { reverse = true })
|
||||||
|
hl(0, 'MultiCursorVisual', { link = 'Visual' })
|
||||||
|
hl(0, 'MultiCursorSign', { link = 'SignColumn' })
|
||||||
|
hl(0, 'MultiCursorMatchPreview', { link = 'Search' })
|
||||||
|
hl(0, 'MultiCursorDisabledCursor', { reverse = true })
|
||||||
|
hl(0, 'MultiCursorDisabledVisual', { link = 'Visual' })
|
||||||
|
hl(0, 'MultiCursorDisabledSign', { link = 'SignColumn' })
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
return {
|
||||||
|
'2kabhishek/nerdy.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'folke/snacks.nvim',
|
||||||
|
},
|
||||||
|
cmd = 'Nerdy',
|
||||||
|
opts = {
|
||||||
|
max_recents = 30, -- Configure recent icons limit
|
||||||
|
add_default_keybindings = true, -- Add default keybindings
|
||||||
|
copy_to_clipboard = false, -- Copy glyph to clipboard instead of inserting
|
||||||
|
copy_register = '+', -- Register to use for copying (if `copy_to_clipboard` is true)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
return {
|
||||||
|
'EdenEast/nightfox.nvim',
|
||||||
|
lazy = false,
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
require('nightfox').setup {
|
||||||
|
options = {
|
||||||
|
-- Compiled file's destination location
|
||||||
|
compile_path = vim.fn.stdpath 'cache' .. '/nightfox',
|
||||||
|
compile_file_suffix = '_compiled', -- Compiled file suffix
|
||||||
|
transparent = true, -- Disable setting background
|
||||||
|
terminal_colors = true, -- Set terminal colors (vim.g.terminal_color_*) used in `:terminal`
|
||||||
|
dim_inactive = false, -- Non focused panes set to alternative background
|
||||||
|
module_default = true, -- Default enable value for modules
|
||||||
|
colorblind = {
|
||||||
|
enable = false, -- Enable colorblind support
|
||||||
|
simulate_only = false, -- Only show simulated colorblind colors and not diff shifted
|
||||||
|
severity = {
|
||||||
|
protan = 0, -- Severity [0,1] for protan (red)
|
||||||
|
deutan = 0, -- Severity [0,1] for deutan (green)
|
||||||
|
tritan = 0, -- Severity [0,1] for tritan (blue)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
styles = { -- Style to be applied to different syntax groups
|
||||||
|
comments = 'NONE', -- Value is any valid attr-list value `:help attr-list`
|
||||||
|
conditionals = 'NONE',
|
||||||
|
constants = 'NONE',
|
||||||
|
functions = 'NONE',
|
||||||
|
keywords = 'NONE',
|
||||||
|
numbers = 'NONE',
|
||||||
|
operators = 'NONE',
|
||||||
|
strings = 'NONE',
|
||||||
|
types = 'NONE',
|
||||||
|
variables = 'NONE',
|
||||||
|
},
|
||||||
|
inverse = { -- Inverse highlight for different types
|
||||||
|
match_paren = false,
|
||||||
|
visual = false,
|
||||||
|
search = false,
|
||||||
|
},
|
||||||
|
modules = { -- List of various plugins and additional options
|
||||||
|
-- ...
|
||||||
|
},
|
||||||
|
},
|
||||||
|
palettes = {},
|
||||||
|
specs = {},
|
||||||
|
groups = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- setup must be called before loading
|
||||||
|
-- vim.cmd 'colorscheme dayfox'
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
return {
|
||||||
|
'windwp/nvim-autopairs',
|
||||||
|
event = 'InsertEnter',
|
||||||
|
config = true,
|
||||||
|
-- use opts = {} for passing setup options
|
||||||
|
-- this is equivalent to setup({}) function
|
||||||
|
opts = {
|
||||||
|
enabled = function(bufnr)
|
||||||
|
return true
|
||||||
|
end, -- control if auto-pairs should be enabled when attaching to a buffer
|
||||||
|
disable_filetype = { 'TelescopePrompt', 'spectre_panel', 'snacks_picker_input' },
|
||||||
|
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
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
return {
|
||||||
|
'toppair/peek.nvim',
|
||||||
|
event = { 'VeryLazy' },
|
||||||
|
build = 'deno task --quiet build:fast',
|
||||||
|
config = function()
|
||||||
|
require('peek').setup {
|
||||||
|
auto_load = true, -- whether to automatically load preview when
|
||||||
|
-- entering another markdown buffer
|
||||||
|
close_on_bdelete = true, -- close preview window on buffer delete
|
||||||
|
|
||||||
|
syntax = true, -- enable syntax highlighting, affects performance
|
||||||
|
|
||||||
|
theme = 'light', -- 'dark' or 'light'
|
||||||
|
|
||||||
|
update_on_change = true,
|
||||||
|
|
||||||
|
app = 'webview', -- 'webview', 'browser', string or a table of strings
|
||||||
|
-- explained below
|
||||||
|
|
||||||
|
filetype = { 'markdown' }, -- list of filetypes to recognize as markdown
|
||||||
|
|
||||||
|
-- relevant if update_on_change is true
|
||||||
|
throttle_at = 200000, -- start throttling when file exceeds this
|
||||||
|
-- amount of bytes in size
|
||||||
|
throttle_time = 'auto', -- minimum amount of time in milliseconds
|
||||||
|
-- that has to pass before starting new render
|
||||||
|
}
|
||||||
|
vim.api.nvim_create_user_command('PeekOpen', require('peek').open, {})
|
||||||
|
vim.api.nvim_create_user_command('PeekClose', require('peek').close, {})
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
return {
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.nvim' }, -- if you use the mini.nvim suite
|
||||||
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/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 = {
|
||||||
|
checkbox = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
bullet = false,
|
||||||
|
left_pad = 0,
|
||||||
|
right_pad = 1,
|
||||||
|
unchecked = {
|
||||||
|
icon = ' ',
|
||||||
|
highlight = 'RenderMarkdownUnchecked',
|
||||||
|
scope_highlight = nil,
|
||||||
|
},
|
||||||
|
checked = {
|
||||||
|
icon = ' ',
|
||||||
|
highlight = 'RenderMarkdownChecked',
|
||||||
|
scope_highlight = nil,
|
||||||
|
},
|
||||||
|
custom = {
|
||||||
|
doing = { raw = '[d]', rendered = ' ', highlight = 'RenderMarkdownTodo', scope_highlight = nil },
|
||||||
|
pending = { raw = '[p]', rendered = ' ', highlight = 'RenderMarkdownTodo', scope_highlight = nil },
|
||||||
|
asking = { raw = '[a]', rendered = ' ', highlight = 'RenderMarkDownTodo', scope_highlight = nil },
|
||||||
|
},
|
||||||
|
scope_priority = nil,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
html = {
|
||||||
|
-- Turn on / off all HTML rendering.
|
||||||
|
enabled = true,
|
||||||
|
-- Additional modes to render HTML.
|
||||||
|
render_modes = false,
|
||||||
|
comment = {
|
||||||
|
-- Turn on / off HTML comment concealing.
|
||||||
|
conceal = false,
|
||||||
|
-- Optional text to inline before the concealed comment.
|
||||||
|
text = nil,
|
||||||
|
-- Highlight for the inlined text.
|
||||||
|
highlight = 'RenderMarkdownHtmlComment',
|
||||||
|
},
|
||||||
|
-- HTML tags whose start and end will be hidden and icon shown.
|
||||||
|
-- The key is matched against the tag name, value type below.
|
||||||
|
-- | icon | optional icon inlined at start of tag |
|
||||||
|
-- | highlight | optional highlight for the icon |
|
||||||
|
-- | scope_highlight | optional highlight for item associated with tag |
|
||||||
|
tag = {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,92 @@
|
||||||
|
-- lua/plugins/rose-pine.lua
|
||||||
|
return {
|
||||||
|
'rose-pine/neovim',
|
||||||
|
lazy = false,
|
||||||
|
priority = 1000,
|
||||||
|
name = 'rose-pine',
|
||||||
|
config = function()
|
||||||
|
require('rose-pine').setup {
|
||||||
|
variant = 'auto', -- auto, main, moon, or dawn
|
||||||
|
dark_variant = 'main', -- main, moon, or dawn
|
||||||
|
dim_inactive_windows = false,
|
||||||
|
extend_background_behind_borders = true,
|
||||||
|
|
||||||
|
enable = {
|
||||||
|
terminal = true,
|
||||||
|
legacy_highlights = true, -- Improve compatibility for previous versions of Neovim
|
||||||
|
migrations = true, -- Handle deprecated options automatically
|
||||||
|
},
|
||||||
|
|
||||||
|
styles = {
|
||||||
|
bold = true,
|
||||||
|
italic = true,
|
||||||
|
transparency = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
groups = {
|
||||||
|
border = 'muted',
|
||||||
|
link = 'iris',
|
||||||
|
panel = 'surface',
|
||||||
|
|
||||||
|
error = 'love',
|
||||||
|
hint = 'iris',
|
||||||
|
info = 'foam',
|
||||||
|
note = 'pine',
|
||||||
|
todo = 'rose',
|
||||||
|
warn = 'gold',
|
||||||
|
|
||||||
|
git_add = 'foam',
|
||||||
|
git_change = 'rose',
|
||||||
|
git_delete = 'love',
|
||||||
|
git_dirty = 'rose',
|
||||||
|
git_ignore = 'muted',
|
||||||
|
git_merge = 'iris',
|
||||||
|
git_rename = 'pine',
|
||||||
|
git_stage = 'iris',
|
||||||
|
git_text = 'rose',
|
||||||
|
git_untracked = 'subtle',
|
||||||
|
|
||||||
|
h1 = 'iris',
|
||||||
|
h2 = 'foam',
|
||||||
|
h3 = 'rose',
|
||||||
|
h4 = 'gold',
|
||||||
|
h5 = 'pine',
|
||||||
|
h6 = 'foam',
|
||||||
|
},
|
||||||
|
|
||||||
|
palette = {
|
||||||
|
-- Override the builtin palette per variant
|
||||||
|
-- moon = {
|
||||||
|
-- base = '#18191a',
|
||||||
|
-- overlay = '#363738',
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- NOTE: Highlight groups are extended (merged) by default. Disable this
|
||||||
|
-- per group via `inherit = false`
|
||||||
|
highlight_groups = {
|
||||||
|
-- Comment = { fg = "foam" },
|
||||||
|
-- StatusLine = { fg = "love", bg = "love", blend = 15 },
|
||||||
|
-- VertSplit = { fg = "muted", bg = "muted" },
|
||||||
|
-- Visual = { fg = "base", bg = "text", inherit = false },
|
||||||
|
},
|
||||||
|
|
||||||
|
before_highlight = function(group, highlight, palette)
|
||||||
|
-- Disable all undercurls
|
||||||
|
-- if highlight.undercurl then
|
||||||
|
-- highlight.undercurl = false
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- Change palette colour
|
||||||
|
-- if highlight.fg == palette.pine then
|
||||||
|
-- highlight.fg = palette.foam
|
||||||
|
-- end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- vim.cmd 'colorscheme rose-pine'
|
||||||
|
-- vim.cmd("colorscheme rose-pine-main")
|
||||||
|
-- vim.cmd("colorscheme rose-pine-moon")
|
||||||
|
-- vim.cmd("colorscheme rose-pine-dawn")
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
'mrcjkb/rustaceanvim',
|
||||||
|
version = '^6', -- Recommended
|
||||||
|
lazy = false, -- This plugin is already lazy
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
return {
|
||||||
|
'folke/snacks.nvim',
|
||||||
|
-- enabled = false,
|
||||||
|
priority = 1000,
|
||||||
|
lazy = false,
|
||||||
|
opts = {
|
||||||
|
-- your configuration comes here
|
||||||
|
-- or leave it empty to use the default settings
|
||||||
|
-- refer to the configuration section below
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
dashboard = { enabled = true },
|
||||||
|
explorer = { enabled = true },
|
||||||
|
indent = { enabled = true },
|
||||||
|
input = { enabled = true },
|
||||||
|
picker = { enabled = true },
|
||||||
|
|
||||||
|
notifier = {
|
||||||
|
enabled = true,
|
||||||
|
timeout = 3000, -- default timeout in ms
|
||||||
|
width = { min = 40, max = 0.4 },
|
||||||
|
height = { min = 1, max = 0.6 },
|
||||||
|
-- editor margin to keep free. tabline and statusline are taken into account automatically
|
||||||
|
margin = { top = 0, right = 1, bottom = 0 },
|
||||||
|
padding = true, -- add 1 cell of left/right padding to the notification window
|
||||||
|
gap = 0, -- gap between notifications
|
||||||
|
sort = { 'level', 'added' }, -- sort by level and time
|
||||||
|
-- minimum log level to display. trace is the lowest
|
||||||
|
-- all notifications are stored in history
|
||||||
|
level = vim.log.levels.trace,
|
||||||
|
icons = {
|
||||||
|
error = ' ',
|
||||||
|
warn = ' ',
|
||||||
|
info = ' ',
|
||||||
|
debug = ' ',
|
||||||
|
trace = ' ',
|
||||||
|
},
|
||||||
|
keep = function(notif)
|
||||||
|
return vim.fn.getcmdpos() > 0
|
||||||
|
end,
|
||||||
|
style = 'compact',
|
||||||
|
top_down = false, -- place notifications from top to bottom
|
||||||
|
date_format = '%R', -- time format for notifications
|
||||||
|
-- format for footer when more lines are available
|
||||||
|
-- `%d` is replaced with the number of lines.
|
||||||
|
-- only works for styles with a border
|
||||||
|
---@type string|boolean
|
||||||
|
more_format = ' ↓ %d lines ',
|
||||||
|
refresh = 50, -- refresh at most every 50ms
|
||||||
|
},
|
||||||
|
|
||||||
|
quickfile = { enabled = true },
|
||||||
|
scope = { enabled = true },
|
||||||
|
scroll = { enabled = false },
|
||||||
|
statuscolumn = { enabled = true },
|
||||||
|
words = { enabled = true },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,138 @@
|
||||||
|
return {
|
||||||
|
'rachartier/tiny-inline-diagnostic.nvim',
|
||||||
|
event = 'VeryLazy', -- `LspAttach`,`VeryLazy`
|
||||||
|
priority = 1000, -- needs to be loaded in first
|
||||||
|
config = function()
|
||||||
|
require('tiny-inline-diagnostic').setup {
|
||||||
|
-- Style preset for diagnostic messages
|
||||||
|
-- Available options:
|
||||||
|
-- "modern", "classic", "minimal", "powerline",
|
||||||
|
-- "ghost", "simple", "nonerdfont", "amongus"
|
||||||
|
preset = 'modern',
|
||||||
|
|
||||||
|
transparent_bg = true, -- Set the background of the diagnostic to transparent
|
||||||
|
|
||||||
|
hi = {
|
||||||
|
error = 'DiagnosticError', -- Highlight group for error messages
|
||||||
|
warn = 'DiagnosticWarn', -- Highlight group for warning messages
|
||||||
|
info = 'DiagnosticInfo', -- Highlight group for informational messages
|
||||||
|
hint = 'DiagnosticHint', -- Highlight group for hint or suggestion messages
|
||||||
|
arrow = 'NonText', -- Highlight group for diagnostic arrows
|
||||||
|
|
||||||
|
-- Background color for diagnostics
|
||||||
|
-- Can be a highlight group or a hexadecimal color (#RRGGBB)
|
||||||
|
background = 'CursorLine',
|
||||||
|
|
||||||
|
-- Color blending option for the diagnostic background
|
||||||
|
-- Use "None" or a hexadecimal color (#RRGGBB) to blend with another color
|
||||||
|
mixing_color = 'None',
|
||||||
|
},
|
||||||
|
|
||||||
|
options = {
|
||||||
|
-- Display the source of the diagnostic (e.g., basedpyright, vsserver, lua_ls etc.)
|
||||||
|
show_source = true,
|
||||||
|
|
||||||
|
-- Use icons defined in the diagnostic configuration
|
||||||
|
use_icons_from_diagnostic = true,
|
||||||
|
|
||||||
|
-- Set the arrow icon to the same color as the first diagnostic severity
|
||||||
|
set_arrow_to_diag_color = false,
|
||||||
|
|
||||||
|
-- Add messages to diagnostics when multiline diagnostics are enabled
|
||||||
|
-- If set to false, only signs will be displayed
|
||||||
|
add_messages = true,
|
||||||
|
|
||||||
|
-- Time (in milliseconds) to throttle updates while moving the cursor
|
||||||
|
-- Increase this value for better performance if your computer is slow
|
||||||
|
-- or set to 0 for immediate updates and better visual
|
||||||
|
throttle = 20,
|
||||||
|
|
||||||
|
-- Minimum message length before wrapping to a new line
|
||||||
|
softwrap = 30,
|
||||||
|
|
||||||
|
-- Configuration for multiline diagnostics
|
||||||
|
-- Can either be a boolean or a table with the following options:
|
||||||
|
-- multilines = {
|
||||||
|
-- enabled = false,
|
||||||
|
-- always_show = false,
|
||||||
|
-- }
|
||||||
|
-- If it set as true, it will enable the feature with this options:
|
||||||
|
-- multilines = {
|
||||||
|
-- enabled = true,
|
||||||
|
-- always_show = false,
|
||||||
|
-- }
|
||||||
|
multilines = {
|
||||||
|
-- Enable multiline diagnostic messages
|
||||||
|
enabled = true,
|
||||||
|
|
||||||
|
-- Always show messages on all lines for multiline diagnostics
|
||||||
|
always_show = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Display all diagnostic messages on the cursor line
|
||||||
|
show_all_diags_on_cursorline = true,
|
||||||
|
|
||||||
|
-- Enable diagnostics in Insert mode
|
||||||
|
-- If enabled, it is better to set the `throttle` option to 0 to avoid visual artifacts
|
||||||
|
enable_on_insert = true,
|
||||||
|
|
||||||
|
-- Enable diagnostics in Select mode (e.g when auto inserting with Blink)
|
||||||
|
enable_on_select = true,
|
||||||
|
|
||||||
|
overflow = {
|
||||||
|
-- Manage how diagnostic messages handle overflow
|
||||||
|
-- Options:
|
||||||
|
-- "wrap" - Split long messages into multiple lines
|
||||||
|
-- "none" - Do not truncate messages
|
||||||
|
-- "oneline" - Keep the message on a single line, even if it's long
|
||||||
|
mode = 'wrap',
|
||||||
|
|
||||||
|
-- Trigger wrapping to occur this many characters earlier when mode == "wrap".
|
||||||
|
-- Increase this value appropriately if you notice that the last few characters
|
||||||
|
-- of wrapped diagnostics are sometimes obscured.
|
||||||
|
padding = 0,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Configuration for breaking long messages into separate lines
|
||||||
|
break_line = {
|
||||||
|
-- Enable the feature to break messages after a specific length
|
||||||
|
enabled = true,
|
||||||
|
|
||||||
|
-- Number of characters after which to break the line
|
||||||
|
after = 30,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Custom format function for diagnostic messages
|
||||||
|
-- Example:
|
||||||
|
-- format = function(diagnostic)
|
||||||
|
-- return diagnostic.message .. " [" .. diagnostic.source .. "]"
|
||||||
|
-- end
|
||||||
|
format = nil,
|
||||||
|
|
||||||
|
virt_texts = {
|
||||||
|
-- Priority for virtual text display
|
||||||
|
priority = 2048,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Filter diagnostics by severity
|
||||||
|
-- Available severities:
|
||||||
|
-- vim.diagnostic.severity.ERROR
|
||||||
|
-- vim.diagnostic.severity.WARN
|
||||||
|
-- vim.diagnostic.severity.INFO
|
||||||
|
-- vim.diagnostic.severity.HINT
|
||||||
|
severity = {
|
||||||
|
vim.diagnostic.severity.ERROR,
|
||||||
|
vim.diagnostic.severity.WARN,
|
||||||
|
vim.diagnostic.severity.INFO,
|
||||||
|
vim.diagnostic.severity.HINT,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Events to attach diagnostics to buffers
|
||||||
|
-- You should not change this unless the plugin does not work with your configuration
|
||||||
|
overwrite_events = nil,
|
||||||
|
},
|
||||||
|
disabled_ft = {}, -- List of filetypes to disable the plugin
|
||||||
|
}
|
||||||
|
vim.diagnostic.config { virtual_text = false } -- Only if needed in your configuration, if you already have native LSP diagnostics
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
return {
|
||||||
|
'akinsho/toggleterm.nvim',
|
||||||
|
version = '*',
|
||||||
|
config = true,
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
return {
|
||||||
|
'ravsii/tree-sitter-d2',
|
||||||
|
enable = true,
|
||||||
|
ft = { 'd2', 'md' },
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||||
|
build = 'make nvim-install',
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
return {
|
||||||
|
'chomosuke/typst-preview.nvim',
|
||||||
|
lazy = false, -- or ft = 'typst'
|
||||||
|
ft = 'typst',
|
||||||
|
version = '1.*',
|
||||||
|
opts = {}, -- lazy.nvim will implicitly calls `setup {}`
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
return {
|
||||||
|
'kaarmu/typst.vim',
|
||||||
|
ft = 'typst',
|
||||||
|
lazy = false,
|
||||||
|
config = function()
|
||||||
|
vim.g.typst_pdf_viewer = 'skim'
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
return {
|
||||||
|
'zk-org/zk-nvim',
|
||||||
|
config = function()
|
||||||
|
require('zk').setup {
|
||||||
|
-- Can be "telescope", "fzf", "fzf_lua", "minipick", "snacks_picker",
|
||||||
|
-- or select" (`vim.ui.select`).
|
||||||
|
picker = 'select',
|
||||||
|
|
||||||
|
highlight = {
|
||||||
|
additional_vim_regex_highlighting = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
-- `config` is passed to `vim.lsp.start(config)`
|
||||||
|
config = {
|
||||||
|
name = 'zk',
|
||||||
|
cmd = { 'zk', 'lsp' },
|
||||||
|
filetypes = { 'markdown' },
|
||||||
|
-- on_attach = ...
|
||||||
|
-- etc, see `:h vim.lsp.start()`
|
||||||
|
},
|
||||||
|
|
||||||
|
-- automatically attach buffers in a zk notebook that match the given filetypes
|
||||||
|
auto_attach = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue