mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-26 11:14:08 +00:00
feat(nvim): reworked cmp, lsp and bunch of stuff (#48)
* feat(nvim): reworked cmp, lsp and bunch of stuff * chore: del disabled plugins, do coderabbit fixes * chore: tweak settings, remove duplication * chore: next round of refactoring * feat: replaced lualine w/ mini.statusline, tweaks * chore: cleanup, options and keymap stuff
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
-- ── Install lazylazy ────────────────────────────────────────────────
|
||||
-- https://github.com/folke/lazy.nvim
|
||||
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
||||
local out = vim.fn.system {
|
||||
'git',
|
||||
@@ -58,4 +58,6 @@ require('lazy').setup(
|
||||
}
|
||||
)
|
||||
|
||||
require 'keymaps'
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
local augroup = vim.api.nvim_create_augroup -- Create/get autocommand group
|
||||
local autocmd = vim.api.nvim_create_autocmd -- Create autocommand
|
||||
|
||||
-- ── Highlight on yank ───────────────────────────────────────────────
|
||||
-- Highlight on yank
|
||||
-- See `:help vim.highlight.on_yank()`
|
||||
autocmd('TextYankPost', {
|
||||
callback = function() vim.highlight.on_yank() end,
|
||||
@@ -13,7 +13,18 @@ autocmd('TextYankPost', {
|
||||
pattern = '*',
|
||||
})
|
||||
|
||||
-- ── Windows to close with "q" ───────────────────────────────────────
|
||||
-- Set the numberwidth to the maximum line number.
|
||||
--
|
||||
-- This fixes the issue where the line numbers jump
|
||||
-- around when moving between lines relative line numbers enabled.
|
||||
autocmd({ "BufEnter", "BufWinEnter", "TabEnter" }, {
|
||||
callback = function()
|
||||
local max_line_count = vim.fn.line("$")
|
||||
vim.opt.numberwidth = #tostring(max_line_count) + 1
|
||||
end,
|
||||
})
|
||||
|
||||
-- Windows to close with "q"
|
||||
autocmd('FileType', {
|
||||
group = augroup('close_with_q', { clear = true }),
|
||||
pattern = {
|
||||
@@ -44,15 +55,15 @@ autocmd('FileType', {
|
||||
end,
|
||||
})
|
||||
|
||||
-- ── make it easier to close man-files when opened inline ────────────
|
||||
-- make it easier to close man-files when opened inline
|
||||
autocmd('FileType', {
|
||||
group = augroup('man_unlisted', { clear = true }),
|
||||
pattern = { 'man' },
|
||||
callback = function(event) vim.bo[event.buf].buflisted = false end,
|
||||
})
|
||||
|
||||
-- ── wrap and check for spell in text filetypes ──────────────────────
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
-- wrap and check for spell in text filetypes
|
||||
autocmd('FileType', {
|
||||
group = augroup('wrap_spell', { clear = true }),
|
||||
pattern = { 'text', 'plaintex', 'typst', 'gitcommit', 'markdown' },
|
||||
callback = function()
|
||||
@@ -61,17 +72,29 @@ vim.api.nvim_create_autocmd('FileType', {
|
||||
end,
|
||||
})
|
||||
|
||||
-- ── Fix conceallevel for json files ─────────────────────────────────
|
||||
vim.api.nvim_create_autocmd({ 'FileType' }, {
|
||||
-- Fix conceallevel for json files
|
||||
autocmd({ 'FileType' }, {
|
||||
group = augroup('json_conceal', { clear = true }),
|
||||
pattern = { 'json', 'jsonc', 'json5' },
|
||||
callback = function() vim.opt_local.conceallevel = 0 end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {
|
||||
-- Set filetype for SSH config directory
|
||||
autocmd({ 'BufRead', 'BufNewFile' }, {
|
||||
desc = 'Set filetype for SSH config directory',
|
||||
pattern = '*/?.ssh/{config|shared}.d/*',
|
||||
command = 'set filetype=sshconfig',
|
||||
})
|
||||
|
||||
-- Format on save, unless disabled
|
||||
autocmd('BufWritePre', {
|
||||
group = augroup('Format', { clear = true }),
|
||||
pattern = '*', -- All files
|
||||
callback = function()
|
||||
if not vim.g.disable_autoformat then
|
||||
vim.lsp.buf.format({ async = false })
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
|
||||
206
config/nvim/lua/keymaps.lua
Normal file
206
config/nvim/lua/keymaps.lua
Normal file
@@ -0,0 +1,206 @@
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Function shortcuts for keymap set │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
-- vim: set ft=lua ts=2 sw=2 tw=0 et cc=80 :
|
||||
|
||||
-- Keymap set shortcut
|
||||
--@type vim.keymap.set
|
||||
local s = vim.keymap.set
|
||||
|
||||
-- Handle description
|
||||
---@param desc string|table? Optional description. Can be a string or a table.
|
||||
---@return table -- The description as a table.
|
||||
local function handleDesc(desc)
|
||||
if type(desc) == "string" then
|
||||
-- Convert string to table with `desc` as a key
|
||||
-- If the string is empty, just return as an empty description
|
||||
return { desc = desc }
|
||||
elseif type(desc) == "table" then
|
||||
-- If desc doesn't have 'desc' key, combine it with
|
||||
-- others with empty description
|
||||
if not desc.desc then
|
||||
desc.desc = ''
|
||||
return desc
|
||||
end
|
||||
-- Use the table as is
|
||||
return desc
|
||||
else
|
||||
-- Default to an empty table if `desc` is nil or an unsupported type
|
||||
return { desc = '' }
|
||||
end
|
||||
end
|
||||
|
||||
-- Normal mode keymaps
|
||||
---@param key string rhs, required
|
||||
---@param cmd string|function lhs, required
|
||||
---@param opts table? Options, optional
|
||||
local n = function(key, cmd, opts) s('n', key, cmd, opts) end
|
||||
|
||||
-- Leader keymap shortcut function
|
||||
-- It prepends '<leader>' to the key
|
||||
---@param key string rhs, required, but will be prepended with '<leader>'
|
||||
---@param cmd string|function lhs, required
|
||||
---@param opts table|string? Options (or just description), optional
|
||||
local nl = function(key, cmd, opts)
|
||||
opts = handleDesc(opts)
|
||||
n('<leader>' .. key, cmd, opts)
|
||||
end
|
||||
|
||||
-- Local leader keymap shortcut function
|
||||
-- It prepends '<leader>' to the key and uses desc from opts
|
||||
---@param key string rhs, required, but will be prepended with '<leader>'
|
||||
---@param cmd string|function lhs, required
|
||||
---@param opts table|string description, required
|
||||
local nld = function(key, cmd, opts)
|
||||
opts = handleDesc(opts)
|
||||
nl(key, cmd, opts)
|
||||
end
|
||||
|
||||
-- Keymap shortcut function with mode defined, good for sorting by rhs
|
||||
---@param key string rhs, required
|
||||
---@param mode string|string[] one of n, v, x, or table of modes { 'n', 'v' }
|
||||
---@param cmd string|function lhs, required
|
||||
---@param opts string|table description, required
|
||||
local d = function(key, mode, cmd, opts)
|
||||
opts = handleDesc(opts)
|
||||
s(mode, key, cmd, opts)
|
||||
end
|
||||
|
||||
-- Leader based keymap shortcut function with mode defined
|
||||
---@param key string rhs, required, but will be prepended with '<leader>'
|
||||
---@param mode string|string[] one of n, v, x, or table of modes { 'n', 'v' }
|
||||
---@param cmd string|function lhs, required
|
||||
---@param opts string|table description (or opts), required
|
||||
local ld = function(key, mode, cmd, opts)
|
||||
opts = handleDesc(opts)
|
||||
s(mode, '<leader>' .. key, cmd, opts)
|
||||
end
|
||||
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Keymaps │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
|
||||
-- Disable arrow keys in normal mode
|
||||
n('<left>', ':echo "Use h to move!!"<CR>')
|
||||
n('<right>', ':echo "Use l to move!!"<CR>')
|
||||
n('<up>', ':echo "Use k to move!!"<CR>')
|
||||
n('<down>', ':echo "Use j to move!!"<CR>')
|
||||
|
||||
n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
|
||||
n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
|
||||
|
||||
-- Buffer
|
||||
nld('bd', ':lua MiniBufremove.delete()<CR>', 'Delete')
|
||||
nld('bh', ':bprev<cr>', 'Prev')
|
||||
nld('bj', ':bfirst<cr>', 'First')
|
||||
nld('bk', ':blast<cr>', 'Last')
|
||||
nld('bl', ':bnext<cr>', 'Next')
|
||||
nld('bw', ':lua MiniBufremove.wipeout()<CR>', 'Wipeout')
|
||||
|
||||
-- Code
|
||||
nld('cg', ':lua require("neogen").generate()<CR>', 'Generate annotations')
|
||||
|
||||
-- LSP
|
||||
n('<C-l>', ':lua vim.lsp.buf.signature_help()<CR>', { desc = 'Signature' })
|
||||
n('K', ':Lspsaga hover_doc<cr>', { desc = 'Hover Documentation' })
|
||||
ld('ca', 'n', ':Lspsaga code_action<cr>', 'Code Action')
|
||||
ld('cci', 'n', ':Lspsaga incoming_calls<cr>', 'Incoming Calls')
|
||||
ld('cco', 'n', ':Lspsaga outgoing_calls<cr>', 'Outgoing Calls')
|
||||
ld('cd', 'n', ':Lspsaga show_line_diagnostics<cr>', 'Line Diagnostics')
|
||||
ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format')
|
||||
ld('ci', 'n', ':Lspsaga implement<cr>', 'Implementations')
|
||||
ld('cl', 'n', ':Lspsaga show_cursor_diagnostics<cr>', 'Cursor Diagnostics')
|
||||
ld('cp', 'n', ':Lspsaga peek_definition<cr>', 'Peek Definition')
|
||||
ld('cr', 'n', ':Lspsaga rename<cr>', 'Rename')
|
||||
ld('cR', 'n', ':Lspsaga rename ++project<cr>', 'Rename Project wide')
|
||||
ld('cs', 'n', ':Telescope lsp_document_symbols<CR>', 'LSP Document Symbols')
|
||||
ld('ct', 'n', ':Lspsaga peek_type_definition<cr>', 'Peek Type Definition')
|
||||
ld('cT', 'n', ':Telescope lsp_type_definitions<CR>', 'LSP Type Definitions')
|
||||
ld('cu', 'n', ':Lspsaga preview_definition<cr>', 'Preview Definition')
|
||||
ld('cv', 'n', ':Lspsaga diagnostic_jump_prev<cr>', 'Diagnostic Jump Prev')
|
||||
ld('cw', 'n', ':Lspsaga diagnostic_jump_next<cr>', 'Diagnostic Jump Next')
|
||||
|
||||
-- CommentBox keymaps
|
||||
nld('cbb', '<Cmd>CBccbox<CR>', 'CB: Box Title')
|
||||
nld('cbd', '<Cmd>CBd<CR>', 'CB: Remove a box')
|
||||
nld('cbl', '<Cmd>CBline<CR>', 'CB: Simple Line')
|
||||
nld('cbm', '<Cmd>CBllbox14<CR>', 'CB: Marked')
|
||||
nld('cbt', '<Cmd>CBllline<CR>', 'CB: Titled Line')
|
||||
|
||||
|
||||
-- Telescope
|
||||
nld('f', ':Telescope find_files<cr>', 'Find Files')
|
||||
nld(',', ':Telescope buffers<cr>', 'Find existing buffers')
|
||||
nld('/', function()
|
||||
require('telescope.builtin').current_buffer_fuzzy_find(
|
||||
require('telescope.themes').get_dropdown {
|
||||
winblend = 20,
|
||||
previewer = true,
|
||||
}
|
||||
)
|
||||
end, 'Fuzzily search in current buffer')
|
||||
|
||||
nld('sc', ':Telescope commands<cr>', 'Commands')
|
||||
nld('sd', ':Telescope diagnostics<cr>', 'Search Diagnostics')
|
||||
nld('sg', ':Telescope live_grep<cr>', 'Search by Grep')
|
||||
nld('sh', ':Telescope highlights<cr>', 'List Highlights')
|
||||
nld('sk', ':Telescope keymaps<cr>', 'Search Keymaps')
|
||||
nld('sl', ':Telescope luasnip<CR>', 'Search LuaSnip')
|
||||
nld('so', ':Telescope oldfiles<CR>', 'Old Files')
|
||||
nld('sp',
|
||||
':lua require("telescope").extensions.lazy_plugins.lazy_plugins()<cr>',
|
||||
'Lazy Plugins')
|
||||
nld('sq', ':Telescope quickfix<cr>', 'Quickfix')
|
||||
nld('ss', ':Telescope treesitter<cr>', 'Treesitter')
|
||||
nld('st', ':TodoTelescope<cr>', 'Search Todos')
|
||||
nld('sw', ':Telescope grep_string<cr>', 'Grep String')
|
||||
nld('sx', ':Telescope import<cr>', 'Telescope: Import')
|
||||
|
||||
-- Trouble
|
||||
nld('xd',
|
||||
':Trouble document_diagnostics<cr>', 'Trouble: Document Diagnostics')
|
||||
nld('xl', ':Trouble loclist<cr>', 'Trouble: Location List')
|
||||
nld('xq', ':Trouble quickfix<cr>', 'Trouble: Quickfix')
|
||||
nld('xw',
|
||||
':Trouble workspace_diagnostics<cr>', 'Trouble: Workspace Diagnostics')
|
||||
nld('xx', ':Trouble diagnostics<cr>', 'Trouble: Diagnostic')
|
||||
|
||||
-- Text manipulation
|
||||
d('<', { 'n', 'v' }, '<gv', 'Indent Left')
|
||||
d('>', { 'n', 'v' }, '>gv', 'Indent Right')
|
||||
d('<C-k>', { 'n', 'v' }, ":m '<-2<CR>gv=gv", 'Move Block Up')
|
||||
d('<C-j>', { 'n', 'v' }, ":m '>+1<CR>gv=gv", 'Move Block Down')
|
||||
|
||||
-- Other functionality
|
||||
nld('o', function() require('snacks').gitbrowse() end, 'Open repo in browser')
|
||||
|
||||
-- Toggle settings
|
||||
nld('tc', ':CloakToggle<cr>', 'Cloak: Toggle')
|
||||
nld('te', ':Neotree toggle<cr>', 'Toggle Neotree')
|
||||
nld(
|
||||
'tl',
|
||||
':lua vim.o.bg = vim.o.bg:get() == "light" and "dark" or "light"<cr>',
|
||||
'Toggle Light/Dark Mode'
|
||||
)
|
||||
nld('tn', ':Noice dismiss<cr>', 'Noice: Dismiss Notification')
|
||||
|
||||
-- Splits
|
||||
n('<C-w>,', ':vertical resize -10<CR>', { desc = 'V Resize -' })
|
||||
n('<C-w>.', ':vertical resize +10<CR>', { desc = 'V Resize +' })
|
||||
n('<C-w>-', ':resize -5<CR>', { desc = 'H Resize -' })
|
||||
n('<C-w>+', ':resize +5<CR>', { desc = 'H Resize +' })
|
||||
n('<C-w>=', '<C-w>=', { desc = 'Equal Size Splits' })
|
||||
|
||||
-- Deal with word wrap
|
||||
n('k',
|
||||
"v:count == 0 ? 'gk' : 'k'",
|
||||
{ desc = 'Move up', noremap = true, expr = true })
|
||||
n('j',
|
||||
"v:count == 0 ? 'gj' : 'j'",
|
||||
{ desc = 'Move down', noremap = true, expr = true })
|
||||
|
||||
-- Quit
|
||||
nld('qf', ':q<CR>', 'Quicker close split')
|
||||
nld('qq', ':wq!<CR>', 'Quit with force saving')
|
||||
nld('qw', ':wq<CR>', 'Write and quit')
|
||||
nld('qQ', ':q!<CR>', 'Force quit without saving')
|
||||
@@ -2,36 +2,55 @@
|
||||
-- │ neovim configuration options │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
-- See `:help vim.opt`
|
||||
-- `:help vim.g`
|
||||
-- For more options, you can see `:help option-list`
|
||||
|
||||
-- Enables the experimental nvim 0.5 features
|
||||
vim.loader.enable()
|
||||
local g = vim.g -- A table to store global variables
|
||||
local o = vim.opt -- A table to store global options
|
||||
|
||||
-- Map leader and local leader
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
vim.loader.enable() -- Enable the plugin loader
|
||||
|
||||
-- Set the colorscheme and variants
|
||||
vim.g.colors_theme = 'tokyonight'
|
||||
vim.g.colors_variant_light = 'tokyonight-day'
|
||||
vim.g.colors_variant_dark = 'tokyonight-storm'
|
||||
-- vim.global
|
||||
g.mapleader = ' ' -- Space as the leader key
|
||||
g.maplocalleader = ' ' -- Space as the local leader key
|
||||
g.colors_theme = 'tokyonight' -- Set the colorscheme
|
||||
g.colors_variant_light = 'tokyonight-day' -- Set the light variant
|
||||
g.colors_variant_dark = 'tokyonight-storm' -- Set the dark variant
|
||||
g.editorconfig = true -- Make sure editorconfig support is enabled
|
||||
g.loaded_perl_provider = 0 -- Disable perl provider
|
||||
g.loaded_ruby_provider = 0 -- Disable ruby provider
|
||||
|
||||
-- Make sure editorconfig support is enabled
|
||||
vim.g.editorconfig = true
|
||||
-- vim.options
|
||||
o.breakindent = true -- Enable break indent
|
||||
o.completeopt = 'menuone,noselect' -- Popup menu when typing
|
||||
o.cursorline = true -- Show which line your cursor is on
|
||||
o.inccommand = 'split' -- Preview substitutions live, as you type!
|
||||
o.mouse = 'a' -- Enable mouse support
|
||||
o.number = true -- Show line numbers
|
||||
o.numberwidth = 3 -- Set the width of the number column
|
||||
o.relativenumber = true -- Show relative line numbers
|
||||
o.scrolloff = 15 -- Show context around cursor
|
||||
o.showmode = false -- Don't show mode
|
||||
o.signcolumn = 'yes:2' -- Keep signcolumn on by default
|
||||
o.smartindent = true -- Insert indents automatically
|
||||
o.spell = true -- Enable spell checking
|
||||
o.spelllang = 'en_us' -- Set the spell checking language
|
||||
o.splitbelow = true -- split to the bottom
|
||||
o.splitright = true -- vsplit to the right
|
||||
o.termguicolors = true -- Fixes Notify opacity issues
|
||||
o.timeoutlen = 250 -- Decrease mapped sequence wait time
|
||||
o.undofile = true -- Save undo history
|
||||
o.updatetime = 250 -- 250 ms = 2,5 seconds
|
||||
o.ignorecase = true -- Ignore case in search patterns
|
||||
o.smartcase = true -- Override 'ignorecase' if pattern contains upper case chars
|
||||
|
||||
|
||||
o.list = true -- Show some invisible characters
|
||||
o.listchars = { tab = '» ', trail = '·', nbsp = '␣' } -- Which invisible chars to show
|
||||
|
||||
-- Enable the colorcolumn
|
||||
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
||||
|
||||
-- Enable line numbers and relative line numbers
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
-- Enable mouse mode, can be useful for resizing splits for example!
|
||||
vim.opt.mouse = 'a'
|
||||
|
||||
-- Don't show the mode, since it's already in the status line
|
||||
vim.opt.showmode = false
|
||||
|
||||
-- Sync clipboard between OS and Neovim.
|
||||
-- Schedule the setting after `UiEnter` because it can increase startup-time.
|
||||
-- See `:help 'clipboard'`
|
||||
@@ -40,95 +59,4 @@ vim.schedule(function()
|
||||
vim.opt.clipboard = c
|
||||
end)
|
||||
|
||||
vim.opt.breakindent = true -- Enable break indent
|
||||
vim.opt.smartindent = true -- Insert indents automatically
|
||||
|
||||
-- Save undo history
|
||||
vim.opt.undofile = true
|
||||
|
||||
-- Case-insensitive searching UNLESS \C or one or
|
||||
-- more capital letters in the search term
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
|
||||
-- Keep signcolumn on by default
|
||||
vim.opt.signcolumn = 'yes'
|
||||
|
||||
-- Decrease update time
|
||||
vim.opt.updatetime = 250
|
||||
vim.wo.signcolumn = 'yes'
|
||||
|
||||
-- Decrease mapped sequence wait time
|
||||
-- Displays which-key popup sooner
|
||||
vim.opt.timeoutlen = 250
|
||||
|
||||
-- Configure how new splits should be opened
|
||||
vim.opt.splitright = true
|
||||
vim.opt.splitbelow = true
|
||||
|
||||
-- Sets how neovim will display certain whitespace characters in the editor.
|
||||
-- See `:help 'list'`
|
||||
-- and `:help 'listchars'`
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||
|
||||
-- Preview substitutions live, as you type!
|
||||
vim.opt.inccommand = 'split'
|
||||
|
||||
-- Show which line your cursor is on
|
||||
vim.opt.cursorline = true
|
||||
|
||||
-- Minimal number of screen lines to keep above and below the cursor.
|
||||
vim.opt.scrolloff = 15
|
||||
|
||||
-- Set completeopt to have a better completion experience
|
||||
vim.o.completeopt = 'menuone,noselect'
|
||||
|
||||
-- Fixes Notify opacity issues
|
||||
vim.o.termguicolors = true
|
||||
|
||||
-- Set spell checking
|
||||
vim.o.spell = true
|
||||
vim.o.spelllang = 'en_us'
|
||||
|
||||
-- Tree-sitter settings
|
||||
vim.g.loaded_perl_provider = 0
|
||||
vim.g.loaded_ruby_provider = 0
|
||||
|
||||
-- kevinhwang91/nvim-ufo settings
|
||||
vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]
|
||||
vim.o.foldcolumn = '1' -- '0' is not bad
|
||||
-- Using ufo provider need a large value, feel free to decrease the value
|
||||
vim.o.foldlevel = 99
|
||||
vim.o.foldlevelstart = 99
|
||||
vim.o.foldenable = true
|
||||
|
||||
-- anuvyklack/windows.nvim settings
|
||||
vim.o.winwidth = 15
|
||||
vim.o.winminwidth = 10
|
||||
vim.o.equalalways = false
|
||||
|
||||
-- folke/noice.nvim settings
|
||||
vim.g.noice_ignored_filetypes = {
|
||||
'fugitiveblame',
|
||||
'fugitive',
|
||||
'gitcommit',
|
||||
'noice',
|
||||
}
|
||||
|
||||
-- ── Deal with word wrap ───────────────────────────────────────────────────────
|
||||
local m = vim.api.nvim_set_keymap
|
||||
m(
|
||||
'n',
|
||||
'k',
|
||||
"v:count == 0 ? 'gk' : 'k'",
|
||||
{ desc = 'Move up', noremap = true, expr = true }
|
||||
)
|
||||
m(
|
||||
'n',
|
||||
'j',
|
||||
"v:count == 0 ? 'gj' : 'j'",
|
||||
{ desc = 'Move down', noremap = true, expr = true }
|
||||
)
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
|
||||
117
config/nvim/lua/plugins/blink.lua
Normal file
117
config/nvim/lua/plugins/blink.lua
Normal file
@@ -0,0 +1,117 @@
|
||||
return {
|
||||
-- Performant, batteries-included completion plugin for Neovim
|
||||
-- https:/github.com/saghen/blink.cmp
|
||||
{
|
||||
'saghen/blink.cmp',
|
||||
version = '*',
|
||||
lazy = false, -- lazy loading handled internally
|
||||
dependencies = {
|
||||
-- Compatibility layer for using nvim-cmp sources on blink.cmp
|
||||
-- https://github.com/Saghen/blink.compat
|
||||
{
|
||||
'saghen/blink.compat',
|
||||
version = '*',
|
||||
-- lazy.nvim will automatically load the plugin when it's required by blink.cmp
|
||||
lazy = true,
|
||||
opts = {
|
||||
-- make sure to set opts so that lazy.nvim calls blink.compat's setup
|
||||
impersonate_nvim_cmp = true,
|
||||
},
|
||||
},
|
||||
-- Set of preconfigured snippets for different languages.
|
||||
-- https://github.com/rafamadriz/friendly-snippets
|
||||
{ 'rafamadriz/friendly-snippets' },
|
||||
-- Lua plugin to turn github copilot into a cmp source
|
||||
-- https://github.com/giuxtaposition/blink-cmp-copilot
|
||||
{
|
||||
"giuxtaposition/blink-cmp-copilot",
|
||||
dependencies = {
|
||||
-- Fully featured & enhanced replacement for copilot.vim complete
|
||||
-- with API for interacting with Github Copilot
|
||||
-- https://github.com/zbirenbaum/copilot.lua
|
||||
{
|
||||
'zbirenbaum/copilot.lua',
|
||||
cmd = 'Copilot',
|
||||
build = ':Copilot setup',
|
||||
event = { 'InsertEnter', 'LspAttach' },
|
||||
opts = {
|
||||
fix_pairs = true,
|
||||
suggestion = { enabled = false },
|
||||
panel = { enabled = false },
|
||||
filetypes = {
|
||||
markdown = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
---@module 'blink.cmp'
|
||||
---@type blink.cmp.Config
|
||||
opts = {
|
||||
-- 'default' for mappings similar to built-in completion
|
||||
-- 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate)
|
||||
-- 'enter' for mappings similar to 'super-tab' but with 'enter' to accept
|
||||
-- see the "default configuration" section below for full documentation on how to define
|
||||
-- your own keymap.
|
||||
keymap = {
|
||||
preset = 'super-tab',
|
||||
-- Use Ctrl-x to trigger auto completion
|
||||
['<C-x>'] = { 'show', 'show_documentation', 'hide_documentation' },
|
||||
},
|
||||
|
||||
appearance = {
|
||||
-- Sets the fallback highlight groups to nvim-cmp's highlight groups
|
||||
-- Useful for when your theme doesn't support blink.cmp
|
||||
-- will be removed in a future release
|
||||
use_nvim_cmp_as_default = true,
|
||||
-- Set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
|
||||
-- Adjusts spacing to ensure icons are aligned
|
||||
nerd_font_variant = vim.g.nerd_font_variant or 'mono',
|
||||
},
|
||||
|
||||
completion = {
|
||||
menu = {
|
||||
draw = {
|
||||
columns = { { "label", "label_description", gap = 1 }, { "kind_icon", "kind", gap = 1 } },
|
||||
},
|
||||
},
|
||||
documentation = {
|
||||
auto_show = true
|
||||
},
|
||||
ghost_text = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
|
||||
-- default list of enabled providers defined so that you can extend it
|
||||
-- elsewhere in your config, without redefining it, via `opts_extend`
|
||||
sources = {
|
||||
providers = {
|
||||
copilot = {
|
||||
name = 'copilot',
|
||||
module = 'blink-cmp-copilot'
|
||||
},
|
||||
},
|
||||
completion = {
|
||||
enabled_providers = {
|
||||
'lsp',
|
||||
'copilot',
|
||||
'path',
|
||||
'snippets',
|
||||
'buffer',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- experimental auto-brackets support
|
||||
-- completion = { accept = { auto_brackets = { enabled = true } } }
|
||||
|
||||
-- experimental signature help support
|
||||
signature = { enabled = true }
|
||||
},
|
||||
-- allows extending the enabled_providers array elsewhere in your config
|
||||
-- without having to redefine it
|
||||
opts_extend = { "sources.completion.enabled_providers" },
|
||||
},
|
||||
}
|
||||
@@ -1,235 +0,0 @@
|
||||
-- Auto completion
|
||||
-- https://github.com/hrsh7th/nvim-cmp
|
||||
return {
|
||||
{
|
||||
'hrsh7th/nvim-cmp',
|
||||
lazy = false,
|
||||
version = false, -- Use the latest version of the plugin
|
||||
event = 'InsertEnter',
|
||||
dependencies = {
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
|
||||
-- ── LuaSnip Dependencies ────────────────────────────────────────────
|
||||
-- Snippet Engine for Neovim written in Lua.
|
||||
-- https://github.com/L3MON4D3/LuaSnip
|
||||
{
|
||||
'L3MON4D3/LuaSnip',
|
||||
version = '*',
|
||||
event = 'BufReadPre',
|
||||
build = 'make install_jsregexp',
|
||||
dependencies = {
|
||||
-- luasnip completion source for nvim-cmp
|
||||
-- https://github.com/saadparwaiz1/cmp_luasnip
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
'rafamadriz/friendly-snippets',
|
||||
'molleweide/LuaSnip-snippets.nvim',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Adds other completion capabilities. ─────────────────────────────
|
||||
-- ── nvim-cmp does not ship with all sources by default.
|
||||
-- ── They are split into multiple repos for maintenance purposes.
|
||||
{ 'hrsh7th/cmp-nvim-lsp' },
|
||||
{ 'hrsh7th/cmp-buffer' },
|
||||
{ 'hrsh7th/cmp-path' },
|
||||
{ 'hrsh7th/cmp-nvim-lsp-signature-help' },
|
||||
{ 'hrsh7th/cmp-emoji' },
|
||||
{ 'hrsh7th/cmp-cmdline' },
|
||||
-- cmp import and use all environment variables from .env.* and system
|
||||
-- https://github.com/SergioRibera/cmp-dotenv
|
||||
{ 'SergioRibera/cmp-dotenv' },
|
||||
-- A dictionary completion source for nvim-cmp
|
||||
-- https://github.com/uga-rosa/cmp-dictionary
|
||||
{ 'uga-rosa/cmp-dictionary' },
|
||||
-- An additional source for nvim-cmp to autocomplete packages and its versions
|
||||
-- https://github.com/David-Kunz/cmp-npm
|
||||
{
|
||||
'David-Kunz/cmp-npm',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
ft = 'json',
|
||||
opts = {},
|
||||
},
|
||||
-- https://github.com/chrisgrieser/cmp-nerdfont
|
||||
{ 'chrisgrieser/cmp-nerdfont' },
|
||||
|
||||
-- ── Other deps ──────────────────────────────────────────────────────
|
||||
-- vscode-like pictograms for neovim lsp completion items
|
||||
-- https://github.com/onsails/lspkind.nvim
|
||||
{ 'onsails/lspkind.nvim' },
|
||||
-- Lua plugin to turn github copilot into a cmp source
|
||||
-- https://github.com/zbirenbaum/copilot-cmp
|
||||
{
|
||||
'zbirenbaum/copilot-cmp',
|
||||
dependencies = {
|
||||
-- Fully featured & enhanced replacement for copilot.vim complete
|
||||
-- with API for interacting with Github Copilot
|
||||
-- https://github.com/zbirenbaum/copilot.lua
|
||||
{
|
||||
'zbirenbaum/copilot.lua',
|
||||
cmd = 'Copilot',
|
||||
build = ':Copilot setup',
|
||||
event = { 'InsertEnter', 'LspAttach' },
|
||||
opts = {
|
||||
fix_pairs = true,
|
||||
suggestion = { enabled = false },
|
||||
panel = { enabled = false },
|
||||
filetypes = {
|
||||
markdown = true,
|
||||
help = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function() require('copilot_cmp').setup() end,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
local lspkind = require 'lspkind'
|
||||
luasnip.config.setup {}
|
||||
luasnip.snippets = require('luasnip_snippets').load_snippets()
|
||||
require('luasnip.loaders.from_vscode').lazy_load()
|
||||
|
||||
require('copilot_cmp').setup()
|
||||
|
||||
require('cmp_dictionary').setup {
|
||||
paths = { '/usr/share/dict/words' },
|
||||
exact_length = 2,
|
||||
}
|
||||
|
||||
local has_words_before = function()
|
||||
if vim.api.nvim_get_option_value('buftype', {}) == 'prompt' then
|
||||
return false
|
||||
end
|
||||
local line, col = table.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
|
||||
|
||||
cmp.setup {
|
||||
formatting = {
|
||||
format = lspkind.cmp_format {
|
||||
mode = 'symbol',
|
||||
max_width = function() return math.floor(0.45 * vim.o.columns) end,
|
||||
show_labelDetails = true,
|
||||
symbol_map = {
|
||||
Copilot = '',
|
||||
Text = '',
|
||||
Constructor = '',
|
||||
},
|
||||
},
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
view = {
|
||||
width = function(_, _) return math.min(80, vim.o.columns) end,
|
||||
-- entries = {
|
||||
-- name = 'custom',
|
||||
-- selection_order = 'near_cursor',
|
||||
-- },
|
||||
},
|
||||
snippet = {
|
||||
expand = function(args) luasnip.lsp_expand(args.body) end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
-- Manually trigger a completion from nvim-cmp.
|
||||
-- Generally you don't need this, because nvim-cmp will display
|
||||
-- completions whenever it has completion options available.
|
||||
['<C-c>'] = cmp.mapping.complete(),
|
||||
['<CR>'] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
select = true,
|
||||
},
|
||||
['<Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() and has_words_before() then
|
||||
cmp.select_next_item { behavior = cmp.SelectBehavior.Select }
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
},
|
||||
sources = {
|
||||
-- function arg popups while typing
|
||||
{ name = 'nvim_lsp_signature_help', group_index = 2 },
|
||||
|
||||
-- Copilot Source
|
||||
{ name = 'copilot', group_index = 2 },
|
||||
-- Other Sources
|
||||
{ name = 'dictionary', keyword_length = 2, group_index = 2 },
|
||||
{ name = 'npm', keyword_length = 4, group_index = 2 },
|
||||
{ name = 'nvim_lsp', group_index = 2 },
|
||||
{ name = 'luasnip', group_index = 2 },
|
||||
{ name = 'dotenv', group_index = 2 },
|
||||
{ name = 'path', group_index = 2 },
|
||||
{ name = 'emoji', group_index = 2 },
|
||||
{ name = 'nerdfont', group_index = 2 },
|
||||
},
|
||||
sorting = {
|
||||
priority_weight = 2,
|
||||
comparators = {
|
||||
require('copilot_cmp.comparators').prioritize,
|
||||
|
||||
-- Below is the default comparator 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,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
cmp.setup.cmdline({ '/', '?' }, {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {
|
||||
{ name = 'buffer' },
|
||||
},
|
||||
})
|
||||
|
||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline(':', {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'path' },
|
||||
}, {
|
||||
{ name = 'cmdline' },
|
||||
}),
|
||||
matching = { disallow_symbol_nonprefix_matching = false },
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- Luasnip choice node completion source for nvim-cmp
|
||||
-- https://github.com/doxnit/cmp-luasnip-choice
|
||||
{
|
||||
'doxnit/cmp-luasnip-choice',
|
||||
config = function()
|
||||
require('cmp_luasnip_choice').setup {
|
||||
auto_open = true, -- Automatically open nvim-cmp on choice node (default: true)
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
-- Commenting
|
||||
-- "gc" to comment visual regions/lines
|
||||
-- https://github.com/numToStr/Comment.nvim
|
||||
return {
|
||||
'numToStr/Comment.nvim',
|
||||
version = '*',
|
||||
event = { 'BufRead', 'BufNewFile' },
|
||||
opts = {},
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
-- ── Formatting ──────────────────────────────────────────────────────
|
||||
-- Lightweight yet powerful formatter plugin for Neovim
|
||||
-- https://github.com/stevearc/conform.nvim
|
||||
|
||||
return {
|
||||
{
|
||||
'stevearc/conform.nvim',
|
||||
event = { 'BufWritePre' },
|
||||
cmd = { 'ConformInfo' },
|
||||
opts = {
|
||||
-- Enable or disable logging
|
||||
notify_on_error = false,
|
||||
-- Set the default formatter for all filetypes
|
||||
default_formatter = 'injected',
|
||||
-- Set the default formatter for all filetypes
|
||||
default_formatter_opts = {
|
||||
lsp_format = 'fallback',
|
||||
-- Set the default formatter for all filetypes
|
||||
formatter = 'injected',
|
||||
-- Set the default formatter for all filetypes
|
||||
-- formatter_opts = {},
|
||||
},
|
||||
-- The options you set here will be merged with the builtin formatters.
|
||||
-- You can also define any custom formatters here.
|
||||
formatters = {
|
||||
injected = { options = { ignore_errors = true } },
|
||||
-- # Example of using dprint only when a dprint.json file is present
|
||||
-- dprint = {
|
||||
-- condition = function(ctx)
|
||||
-- return vim.fs.find({ "dprint.json" }, { path = ctx.filename, upward = true })[1]
|
||||
-- end,
|
||||
-- },
|
||||
--
|
||||
-- # Example of using shfmt with extra args
|
||||
-- shfmt = {
|
||||
-- prepend_args = { "-i", "2", "-ci" },
|
||||
-- },
|
||||
},
|
||||
formatters_by_ft = {
|
||||
lua = { 'stylua' },
|
||||
-- Conform will run multiple formatters sequentially
|
||||
go = { 'goimports', 'gofmt' },
|
||||
-- You can customize some of the format options for the filetype (:help conform.format)
|
||||
-- rust = { 'rustfmt', lsp_format = 'fallback' },
|
||||
},
|
||||
format_on_save = function(bufnr)
|
||||
-- Disable autoformat on certain filetypes
|
||||
local ignore_filetypes = {
|
||||
'c',
|
||||
'cpp',
|
||||
'sql',
|
||||
'java',
|
||||
}
|
||||
if vim.tbl_contains(ignore_filetypes, vim.bo[bufnr].filetype) then
|
||||
return
|
||||
end
|
||||
-- Disable with a global or buffer-local variable
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
-- Disable autoformat for files in a certain path
|
||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
||||
if bufname:match '/node_modules/' then return end
|
||||
if bufname:match '/vendor/' then return end
|
||||
if bufname:match '/dist/' then return end
|
||||
if bufname:match '/build/' then return end
|
||||
|
||||
return { timeout_ms = 500, lsp_format = 'fallback' }
|
||||
end,
|
||||
},
|
||||
init = function()
|
||||
-- If you want the formatexpr, here is the place to set it
|
||||
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
||||
end,
|
||||
},
|
||||
-- Automatically install formatters registered with conform.nvim via mason.nvim
|
||||
-- https://github.com/zapling/mason-conform.nvim
|
||||
{
|
||||
'zapling/mason-conform.nvim',
|
||||
depends = {
|
||||
'stevearc/conform.nvim',
|
||||
'williamboman/mason.nvim',
|
||||
},
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
-- Navigate your code with search labels, enhanced
|
||||
-- character motions and Treesitter integration
|
||||
-- https://github.com/folke/flash.nvim
|
||||
return {
|
||||
'folke/flash.nvim',
|
||||
event = 'VeryLazy',
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
'zk',
|
||||
mode = { 'n', 'x', 'o' },
|
||||
function() require('flash').jump() end,
|
||||
desc = 'Flash',
|
||||
},
|
||||
{
|
||||
'Zk',
|
||||
mode = { 'n', 'x', 'o' },
|
||||
function() require('flash').treesitter() end,
|
||||
desc = 'Flash Treesitter',
|
||||
},
|
||||
{
|
||||
'r',
|
||||
mode = 'o',
|
||||
function() require('flash').remote() end,
|
||||
desc = 'Remote Flash',
|
||||
},
|
||||
{
|
||||
'R',
|
||||
mode = { 'o', 'x' },
|
||||
function() require('flash').treesitter_search() end,
|
||||
desc = 'Treesitter Search',
|
||||
},
|
||||
{
|
||||
'<m-s>',
|
||||
mode = { 'c' },
|
||||
function() require('flash').toggle() end,
|
||||
desc = 'Toggle Flash Search',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
69
config/nvim/lua/plugins/folke.lua
Normal file
69
config/nvim/lua/plugins/folke.lua
Normal file
@@ -0,0 +1,69 @@
|
||||
return {
|
||||
-- A collection of small QoL plugins for Neovim
|
||||
-- https://github.com/folke/snacks.nvim
|
||||
{
|
||||
"folke/snacks.nvim",
|
||||
priority = 1000,
|
||||
lazy = false,
|
||||
---@type snacks.Config
|
||||
opts = {
|
||||
bigfile = { enabled = true },
|
||||
gitbrowse = { enabled = true },
|
||||
notify = { enabled = true },
|
||||
notifier = { enabled = true },
|
||||
quickfile = { enabled = true },
|
||||
statuscolumn = { enabled = true },
|
||||
words = { enabled = true },
|
||||
styles = {
|
||||
notification = {
|
||||
wo = { wrap = true } -- Wrap notifications
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
-- A pretty diagnostics, references, telescope results,
|
||||
-- quickfix and location list to help you solve all the
|
||||
-- trouble your code is causing.
|
||||
-- https://github.com/folke/trouble.nvim
|
||||
{
|
||||
'folke/trouble.nvim',
|
||||
lazy = false,
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
---@type trouble.Config
|
||||
opts = {
|
||||
auto_preview = true,
|
||||
auto_fold = true,
|
||||
auto_close = true,
|
||||
use_lsp_diagnostic_signs = true,
|
||||
},
|
||||
},
|
||||
-- Navigate your code with search labels, enhanced
|
||||
-- character motions and Treesitter integration
|
||||
-- https://github.com/folke/flash.nvim
|
||||
{
|
||||
'folke/flash.nvim',
|
||||
event = 'VeryLazy',
|
||||
---@type Flash.Config
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
'zk',
|
||||
mode = { 'n', 'x', 'o' },
|
||||
function() require('flash').jump() end,
|
||||
desc = 'Flash',
|
||||
},
|
||||
{
|
||||
'Zk',
|
||||
mode = { 'n', 'x', 'o' },
|
||||
function() require('flash').treesitter() end,
|
||||
desc = 'Flash Treesitter',
|
||||
},
|
||||
{
|
||||
'<m-s>',
|
||||
mode = { 'c' },
|
||||
function() require('flash').toggle() end,
|
||||
desc = 'Toggle Flash Search',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
-- A small Neovim plugin for previewing definitions using floating windows.
|
||||
-- https://github.com/rmagatti/goto-preview
|
||||
return {
|
||||
'rmagatti/goto-preview',
|
||||
dependencies = {
|
||||
{ 'nvim-telescope/telescope.nvim' },
|
||||
},
|
||||
opts = {
|
||||
width = 120, -- Width of the floating window
|
||||
height = 15, -- Height of the floating window
|
||||
border = { '↖', '─', '┐', '│', '┘', '─', '└', '│' }, -- Border characters of the floating window
|
||||
default_mappings = true,
|
||||
debug = false, -- Print debug information
|
||||
opacity = nil, -- 0-100 opacity level of the floating window where 100 is fully transparent.
|
||||
resizing_mappings = false, -- Binds arrow keys to resizing the floating window.
|
||||
post_open_hook = nil, -- A function taking two arguments, a buffer and a window to be ran as a hook.
|
||||
references = { -- Configure the telescope UI for slowing the references cycling window.
|
||||
telescope = require('telescope.themes').get_dropdown {
|
||||
hide_preview = false,
|
||||
},
|
||||
},
|
||||
-- These two configs can also be passed down to the goto-preview definition
|
||||
-- and implementation calls for one off "peak" functionality.
|
||||
focus_on_open = true, -- Focus the floating window when opening it.
|
||||
dismiss_on_move = false, -- Dismiss the floating window when moving the cursor.
|
||||
force_close = true, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close
|
||||
bufhidden = 'wipe', -- the bufhidden option to set on the floating window. See :h bufhidden
|
||||
stack_floating_preview_windows = true, -- Whether to nest floating windows
|
||||
preview_window_title = { enable = true, position = 'left' },
|
||||
},
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
-- Getting you where you want with the fewest keystrokes.
|
||||
-- https://github.com/ThePrimeagen/harpoon
|
||||
return {
|
||||
'ThePrimeagen/harpoon',
|
||||
branch = 'harpoon2',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
config = function()
|
||||
local harpoon = require 'harpoon'
|
||||
harpoon:setup {}
|
||||
|
||||
-- basic telescope configuration
|
||||
local conf = require('telescope.config').values
|
||||
local function toggle_telescope(harpoon_files)
|
||||
local file_paths = {}
|
||||
for _, item in ipairs(harpoon_files.items) do
|
||||
table.insert(file_paths, item.value)
|
||||
end
|
||||
|
||||
require('telescope.pickers')
|
||||
.new({}, {
|
||||
prompt_title = 'Harpoon',
|
||||
finder = require('telescope.finders').new_table {
|
||||
results = file_paths,
|
||||
},
|
||||
previewer = conf.file_previewer {},
|
||||
sorter = conf.generic_sorter {},
|
||||
})
|
||||
:find()
|
||||
end
|
||||
|
||||
vim.keymap.set(
|
||||
'n',
|
||||
'<leader>hw',
|
||||
function() toggle_telescope(harpoon:list()) end,
|
||||
{ desc = 'Open harpoon window with telescope' }
|
||||
)
|
||||
vim.keymap.set(
|
||||
'n',
|
||||
'<leader>ht',
|
||||
function() harpoon.ui:toggle_quick_menu(harpoon:list()) end,
|
||||
{ desc = 'Open Harpoon Quick menu' }
|
||||
)
|
||||
end,
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
-- improve neovim lsp experience
|
||||
-- https://github.com/nvimdev/lspsaga.nvim
|
||||
-- https://nvimdev.github.io/lspsaga/
|
||||
return {
|
||||
'nvimdev/lspsaga.nvim',
|
||||
event = 'LspAttach',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter', -- optional
|
||||
'nvim-tree/nvim-web-devicons', -- optional
|
||||
},
|
||||
opts = {
|
||||
code_action = {
|
||||
show_server_name = true,
|
||||
},
|
||||
diagnostic = {
|
||||
keys = {
|
||||
quit = { 'q', '<ESC>' },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,239 +1,189 @@
|
||||
-- ── Mason and LSPConfig integration ────────────────────────────────────
|
||||
|
||||
-- ── LSP settings. ───────────────────────────────────────────────
|
||||
-- This function gets run when an LSP connects to a particular buffer.
|
||||
|
||||
-- Make runtime files discoverable to the server
|
||||
local runtime_path = vim.split(package.path, ';')
|
||||
table.insert(runtime_path, 'lua/?.lua')
|
||||
table.insert(runtime_path, 'lua/?/init.lua')
|
||||
|
||||
-- nvim-cmp supports additional completion capabilities
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||
-- Tell the server the capability of foldingRange,
|
||||
-- Neovim hasn't added foldingRange to default capabilities, users must add it manually
|
||||
capabilities.textDocument.foldingRange = {
|
||||
dynamicRegistration = true,
|
||||
lineFoldingOnly = true,
|
||||
}
|
||||
|
||||
return {
|
||||
-- improve neovim lsp experience
|
||||
-- https://github.com/nvimdev/lspsaga.nvim
|
||||
-- https://nvimdev.github.io/lspsaga/
|
||||
{
|
||||
'folke/neoconf.nvim',
|
||||
cmd = 'Neoconf',
|
||||
opts = {},
|
||||
},
|
||||
-- Portable package manager for Neovim that runs everywhere Neovim runs.
|
||||
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
|
||||
-- https://github.com/williamboman/mason.nvim
|
||||
{
|
||||
'williamboman/mason.nvim',
|
||||
cmd = 'Mason',
|
||||
run = ':MasonUpdate',
|
||||
'nvimdev/lspsaga.nvim',
|
||||
event = 'LspAttach',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
opts = {
|
||||
PATH = 'prepend',
|
||||
-- Mason servers to install
|
||||
-- See: https://mason-registry.dev/registry/list
|
||||
ensure_installed = {
|
||||
'clang-format',
|
||||
'codespell',
|
||||
'commitlint',
|
||||
'editorconfig-checker',
|
||||
'fixjson',
|
||||
'jsonlint',
|
||||
'luacheck',
|
||||
'phpcbf',
|
||||
'phpcs',
|
||||
'phpmd',
|
||||
'prettier',
|
||||
'shellcheck',
|
||||
'shfmt',
|
||||
'stylua',
|
||||
'yamllint',
|
||||
code_action = {
|
||||
show_server_name = true,
|
||||
keys = {
|
||||
quit = { 'q', '<ESC>' },
|
||||
},
|
||||
},
|
||||
diagnostic = {
|
||||
keys = {
|
||||
quit = { 'q', '<ESC>' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
|
||||
-- https://github.com/williamboman/mason-lspconfig.nvim
|
||||
-- A simple wrapper for nvim-lspconfig and mason-lspconfig
|
||||
-- to easily setup LSP servers.
|
||||
-- https://github.com/junnplus/lsp-setup.nvim
|
||||
{
|
||||
'williamboman/mason-lspconfig.nvim',
|
||||
'junnplus/lsp-setup.nvim',
|
||||
dependencies = {
|
||||
'neovim/nvim-lspconfig',
|
||||
{ 'williamboman/mason.nvim', cmd = 'Mason', run = ':MasonUpdate' },
|
||||
'williamboman/mason-lspconfig.nvim',
|
||||
'folke/neodev.nvim',
|
||||
'b0o/schemastore.nvim',
|
||||
'saghen/blink.cmp',
|
||||
},
|
||||
opts = {
|
||||
-- ── Enable the following language servers ───────────────────────────
|
||||
-- :help lspconfig-all for all pre-configured LSPs
|
||||
ensure_installed = {
|
||||
'bashls',
|
||||
-- 'csharp_ls',
|
||||
'diagnosticls',
|
||||
'gopls',
|
||||
'html',
|
||||
'intelephense',
|
||||
'jsonls',
|
||||
'lua_ls',
|
||||
'tailwindcss',
|
||||
'ts_ls',
|
||||
'vimls',
|
||||
'volar',
|
||||
default_mappings = false,
|
||||
mappings = {
|
||||
gd = 'lua require"telescope.builtin".lsp_definitions()',
|
||||
gi = 'lua require"telescope.builtin".lsp_implementations()',
|
||||
gr = 'lua require"telescope.builtin".lsp_references()',
|
||||
},
|
||||
automatic_installation = true,
|
||||
handlers = {
|
||||
-- The first entry (without a key) will be the default handler
|
||||
-- and will be called for each installed server that doesn't have
|
||||
-- a dedicated handler.
|
||||
function(server_name) -- default handler (optional)
|
||||
require('lspconfig')[server_name].setup {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(
|
||||
bufnr,
|
||||
'Format',
|
||||
function(_)
|
||||
require('conform').format {
|
||||
formatters = { 'injected' },
|
||||
async = true,
|
||||
lsp_fallback = true,
|
||||
}
|
||||
end,
|
||||
{ desc = 'Format current buffer with LSP' }
|
||||
)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end,
|
||||
-- Next, you can provide targeted overrides for specific servers.
|
||||
['lua_ls'] = function()
|
||||
require('lspconfig')['lua_ls'].setup {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(
|
||||
bufnr,
|
||||
'Format',
|
||||
function(_)
|
||||
require('conform').format {
|
||||
formatters = { 'injected' },
|
||||
async = true,
|
||||
lsp_fallback = true,
|
||||
}
|
||||
end,
|
||||
{ desc = 'Format current buffer with LSP' }
|
||||
)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
-- Tell the language server which version of Lua you're
|
||||
-- using (most likely LuaJIT)
|
||||
version = 'LuaJIT',
|
||||
-- Setup your lua path
|
||||
path = runtime_path,
|
||||
inlay_hints = {
|
||||
enabled = true,
|
||||
},
|
||||
servers = {
|
||||
bashls = {},
|
||||
-- csharp_ls = {},
|
||||
diagnosticls = {},
|
||||
gopls = {
|
||||
settings = {
|
||||
gopls = {
|
||||
hints = {
|
||||
rangeVariableTypes = true,
|
||||
parameterNames = true,
|
||||
constantValues = true,
|
||||
assignVariableTypes = true,
|
||||
compositeLiteralFields = true,
|
||||
compositeLiteralTypes = true,
|
||||
functionTypeParameters = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
html = {},
|
||||
intelephense = {},
|
||||
jsonls = {},
|
||||
lua_ls = {
|
||||
settings = {
|
||||
Lua = {
|
||||
diagnostics = {
|
||||
globals = { 'vim' },
|
||||
disable = {
|
||||
-- Ignore lua_ls noisy `missing-fields` warnings
|
||||
'missing-fields',
|
||||
},
|
||||
diagnostics = {
|
||||
globals = { 'vim' },
|
||||
disable = {
|
||||
-- Ignore lua_ls noisy `missing-fields` warnings
|
||||
'missing-fields',
|
||||
},
|
||||
},
|
||||
hint = {
|
||||
enable = false,
|
||||
arrayIndex = 'Auto',
|
||||
await = true,
|
||||
paramName = 'All',
|
||||
paramType = true,
|
||||
semicolon = 'SameLine',
|
||||
setType = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
tailwindcss = {},
|
||||
ts_ls = {
|
||||
settings = {
|
||||
typescript = {
|
||||
inlayHints = {
|
||||
includeInlayParameterNameHints = 'all',
|
||||
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
|
||||
includeInlayFunctionParameterTypeHints = true,
|
||||
includeInlayVariableTypeHints = true,
|
||||
includeInlayVariableTypeHintsWhenTypeMatchesName = false,
|
||||
includeInlayPropertyDeclarationTypeHints = true,
|
||||
includeInlayFunctionLikeReturnTypeHints = true,
|
||||
includeInlayEnumMemberValueHints = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
vimls = {},
|
||||
volar = {
|
||||
settings = {
|
||||
typescript = {
|
||||
inlayHints = {
|
||||
enumMemberValues = {
|
||||
enabled = true,
|
||||
},
|
||||
workspace = {
|
||||
library = vim.api.nvim_get_runtime_file('', true),
|
||||
checkThirdParty = false,
|
||||
functionLikeReturnTypes = {
|
||||
enabled = true,
|
||||
},
|
||||
-- Do not send telemetry data containing a randomized
|
||||
-- but unique identifier
|
||||
telemetry = { enable = false },
|
||||
|
||||
completion = {
|
||||
callSnippet = 'Replace',
|
||||
propertyDeclarationTypes = {
|
||||
enabled = true,
|
||||
},
|
||||
parameterTypes = {
|
||||
enabled = true,
|
||||
suppressWhenArgumentMatchesName = true,
|
||||
},
|
||||
variableTypes = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
['jsonls'] = function()
|
||||
require('lspconfig')['jsonls'].setup {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(
|
||||
bufnr,
|
||||
'Format',
|
||||
function(_)
|
||||
require('conform').format {
|
||||
formatters = { 'injected' },
|
||||
async = true,
|
||||
lsp_fallback = true,
|
||||
}
|
||||
end,
|
||||
{ desc = 'Format current buffer with LSP' }
|
||||
)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
json = {
|
||||
schemas = require('schemastore').json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
yaml = {
|
||||
schemaStore = {
|
||||
-- You must disable built-in SchemaStore support if you want to use
|
||||
-- this plugin and its advanced options like `ignore`.
|
||||
enable = false,
|
||||
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
|
||||
url = '',
|
||||
},
|
||||
schemas = require('schemastore').yaml.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
['ts_ls'] = function()
|
||||
local mason_registry = require 'mason-registry'
|
||||
local ts_plugin_location = mason_registry
|
||||
.get_package('vue-language-server')
|
||||
:get_install_path() .. '/node_modules/@vue/typescript-plugin'
|
||||
require('lspconfig')['volar'].setup {
|
||||
init_options = {
|
||||
plugins = {
|
||||
{
|
||||
name = '@vue/typescript-plugin',
|
||||
location = ts_plugin_location,
|
||||
languages = { 'javascript', 'typescript', 'vue' },
|
||||
},
|
||||
},
|
||||
},
|
||||
filetypes = {
|
||||
'typescript',
|
||||
'javascript',
|
||||
'javascriptreact',
|
||||
'typescriptreact',
|
||||
'vue',
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
require('neodev').setup()
|
||||
require('lsp-setup').setup(opts)
|
||||
local lspconfig = require('lspconfig')
|
||||
for server, config in pairs(opts.servers) do
|
||||
-- passing config.capabilities to blink.cmp merges with the capabilities in your
|
||||
-- `opts[server].capabilities, if you've defined it
|
||||
config.capabilities = require('blink.cmp').get_lsp_capabilities(config.capabilities)
|
||||
lspconfig[server].setup(config)
|
||||
end
|
||||
|
||||
-- ── Misc ───────────────────────────────────────────────────
|
||||
-- vscode-like pictograms for neovim lsp completion items
|
||||
-- https://github.com/onsails/lspkind-nvim
|
||||
{ 'onsails/lspkind.nvim', opts = {} },
|
||||
-- JSON schemas for Neovim
|
||||
-- https://github.com/b0o/SchemaStore.nvim
|
||||
{ 'b0o/schemastore.nvim' },
|
||||
|
||||
-- ── LSP ────────────────────────────────────────────────────
|
||||
-- Quick start configs for Nvim LSP
|
||||
-- https://github.com/neovim/nvim-lspconfig
|
||||
{ 'neovim/nvim-lspconfig', dependencies = { 'folke/neoconf.nvim' } },
|
||||
|
||||
-- Garbage collector that stops inactive LSP clients to free RAM
|
||||
-- https://github.com/Zeioth/garbage-day.nvim
|
||||
{
|
||||
'zeioth/garbage-day.nvim',
|
||||
dependencies = 'neovim/nvim-lspconfig',
|
||||
event = 'VeryLazy',
|
||||
opts = {},
|
||||
lspconfig.lua_ls.on_init = function(client)
|
||||
if client.workspace_folders then
|
||||
local path = client.workspace_folders[1].name
|
||||
if vim.loop.fs_stat(path .. '/.luarc.json') or vim.loop.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
|
||||
}
|
||||
}
|
||||
})
|
||||
end
|
||||
lspconfig.jsonls.settings = {
|
||||
json = {
|
||||
schemas = require('schemastore').json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
yaml = {
|
||||
schemaStore = {
|
||||
-- You must disable built-in SchemaStore support if you want to use
|
||||
-- this plugin and its advanced options like `ignore`.
|
||||
enable = false,
|
||||
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
|
||||
url = '',
|
||||
},
|
||||
schemas = require('schemastore').yaml.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
-- Fancier statusline
|
||||
-- https://github.com/nvim-lualine/lualine.nvim
|
||||
return {
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = {
|
||||
'kyazdani42/nvim-web-devicons',
|
||||
'folke/noice.nvim',
|
||||
},
|
||||
config = function()
|
||||
local function diff_source()
|
||||
local gitsigns = vim.b.gitsigns_status_dict
|
||||
if gitsigns then
|
||||
return {
|
||||
added = gitsigns.added,
|
||||
modified = gitsigns.changed,
|
||||
removed = gitsigns.removed,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
component_separators = '|',
|
||||
section_separators = '',
|
||||
},
|
||||
-- Sections
|
||||
-- +-------------------------------------------------+
|
||||
-- | A | B | C X | Y | Z |
|
||||
-- +-------------------------------------------------+
|
||||
sections = {
|
||||
lualine_a = {
|
||||
'mode',
|
||||
},
|
||||
lualine_b = {
|
||||
{ 'b:gitsigns_head', icon = '' },
|
||||
{ 'diff', source = diff_source },
|
||||
'diagnostics',
|
||||
},
|
||||
lualine_c = {
|
||||
'filename',
|
||||
},
|
||||
lualine_x = {
|
||||
'filetype',
|
||||
},
|
||||
lualine_y = {
|
||||
'location',
|
||||
},
|
||||
lualine_z = {
|
||||
{
|
||||
require('noice').api.statusline.mode.get,
|
||||
cond = require('noice').api.statusline.mode.has,
|
||||
},
|
||||
{
|
||||
require('noice').api.status.command.get,
|
||||
cond = require('noice').api.status.command.has,
|
||||
},
|
||||
},
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_c = { 'filename' },
|
||||
lualine_x = { 'location' },
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
@@ -2,36 +2,139 @@
|
||||
-- https://github.com/echasnovski/mini.nvim/tree/main?tab=readme-ov-file#modules
|
||||
return {
|
||||
-- Presets for common options and mappings
|
||||
{ 'echasnovski/mini.basics', version = '*' },
|
||||
|
||||
-- Visualize and work with indent scope
|
||||
-- Replaced lukas-reineke/indent-blankline.nvim
|
||||
{ 'echasnovski/mini.indentscope', version = '*', opts = {} },
|
||||
{ 'echasnovski/mini.basics', version = '*' },
|
||||
|
||||
-- Animate common Neovim actions
|
||||
-- Replaced anuvyklack/windows.nvim
|
||||
{ 'echasnovski/mini.animate', version = '*', opts = {} },
|
||||
{ 'echasnovski/mini.animate', version = '*', opts = {} },
|
||||
|
||||
-- Fast and feature-rich surround actions
|
||||
-- Replaced kylechui/nvim-surround
|
||||
{ 'echasnovski/mini.surround', version = '*', opts = {} },
|
||||
-- Buffer removing (unshow, delete, wipeout), which saves window layout
|
||||
-- Replaced famiu/bufdelete.nvim
|
||||
{ 'echasnovski/mini.bufremove', version = '*', opts = {} },
|
||||
|
||||
-- Move lines and blocks of text
|
||||
{ 'echasnovski/mini.move', version = '*', opts = {} },
|
||||
|
||||
-- Jump to next/previous single character
|
||||
-- Show next key clues
|
||||
-- Replaced folke/which-key.nvim
|
||||
{
|
||||
'echasnovski/mini.jump',
|
||||
'echasnovski/mini.clue',
|
||||
version = '*',
|
||||
config = function()
|
||||
local miniclue = require 'mini.clue'
|
||||
|
||||
miniclue.setup {
|
||||
triggers = {
|
||||
-- Leader triggers
|
||||
{ mode = 'n', keys = '<Leader>' },
|
||||
{ mode = 'x', keys = '<Leader>' },
|
||||
|
||||
-- Built-in completion
|
||||
{ mode = 'i', keys = '<C-x>' },
|
||||
|
||||
-- `g` key
|
||||
{ mode = 'n', keys = 'g' },
|
||||
{ mode = 'x', keys = 'g' },
|
||||
|
||||
-- Marks
|
||||
{ mode = 'n', keys = "'" },
|
||||
{ mode = 'n', keys = '`' },
|
||||
{ mode = 'x', keys = "'" },
|
||||
{ mode = 'x', keys = '`' },
|
||||
|
||||
-- Registers
|
||||
{ mode = 'n', keys = '"' },
|
||||
{ mode = 'x', keys = '"' },
|
||||
{ mode = 'i', keys = '<C-r>' },
|
||||
{ mode = 'c', keys = '<C-r>' },
|
||||
|
||||
-- Window commands
|
||||
{ mode = 'n', keys = '<C-w>' },
|
||||
|
||||
-- `z` key
|
||||
{ mode = 'n', keys = 'z' },
|
||||
{ mode = 'x', keys = 'z' },
|
||||
},
|
||||
|
||||
clues = {
|
||||
-- Enhance this by adding descriptions for <Leader> mapping groups
|
||||
miniclue.gen_clues.builtin_completion(),
|
||||
miniclue.gen_clues.g(),
|
||||
miniclue.gen_clues.marks(),
|
||||
miniclue.gen_clues.registers(),
|
||||
miniclue.gen_clues.windows(),
|
||||
miniclue.gen_clues.z(),
|
||||
{ mode = 'n', keys = '<Leader>b', desc = '+Buffers' },
|
||||
{ mode = 'n', keys = '<Leader>c', desc = '+Code' },
|
||||
{ mode = 'n', keys = '<Leader>cb', desc = '+CommentBox' },
|
||||
{ mode = 'n', keys = '<Leader>q', desc = '+Quit' },
|
||||
{ mode = 'n', keys = '<Leader>s', desc = '+Telescope' },
|
||||
{ mode = 'n', keys = '<Leader>t', desc = '+Toggle' },
|
||||
{ mode = 'n', keys = '<Leader>x', desc = '+Trouble' },
|
||||
{ mode = 'n', keys = '<leader>z', desc = '+TreeSitter' },
|
||||
{ mode = 'n', keys = '<leader>zg', desc = '+Goto' },
|
||||
{ mode = 'n', keys = '<Leader>?', desc = '+Help' },
|
||||
{ mode = 'n', keys = 'd', desc = '+Diagnostics' },
|
||||
{ mode = 'n', keys = 'y', desc = '+Yank' },
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- Comment lines
|
||||
-- Replaced numToStr/Comment.nvim
|
||||
{ 'echasnovski/mini.comment', version = '*', opts = {} },
|
||||
|
||||
-- Highlight cursor word and its matches
|
||||
{ 'echasnovski/mini.cursorword', version = '*' },
|
||||
|
||||
-- Work with diff hunks
|
||||
-- Replaced lewis6991/gitsigns.nvim
|
||||
{ 'echasnovski/mini.diff', version = '*', opts = {} },
|
||||
|
||||
-- Git integration
|
||||
{ 'echasnovski/mini-git', version = '*', opts = {}, main = 'mini.git' },
|
||||
|
||||
-- Highlight patterns in text
|
||||
-- Replaced folke/todo-comments.nvim
|
||||
{
|
||||
'echasnovski/mini.hipatterns',
|
||||
version = '*',
|
||||
opts = {
|
||||
mappings = {
|
||||
forward = 'f',
|
||||
backward = 'F',
|
||||
forward_till = 't',
|
||||
backward_till = 'T',
|
||||
repeat_jump = ';',
|
||||
highlighters = {
|
||||
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
|
||||
fixme = {
|
||||
pattern = '%f[%w]()FIXME:?%s*()%f[%W]',
|
||||
group = 'MiniHipatternsFixme',
|
||||
},
|
||||
hack = {
|
||||
pattern = '%f[%w]()HACK:?%s*()%f[%W]',
|
||||
group = 'MiniHipatternsHack',
|
||||
},
|
||||
todo = {
|
||||
pattern = '%f[%w]()NOTE:?%s*()%f[%W]',
|
||||
group = 'MiniHipatternsTodo',
|
||||
},
|
||||
note = {
|
||||
pattern = '%f[%w]()NOTE()%f[%W]',
|
||||
group = 'MiniHipatternsNote',
|
||||
},
|
||||
bug = {
|
||||
pattern = '%f[%w]()BUG:?%s*()%f[%W]',
|
||||
group = 'MiniHipatternsBug',
|
||||
},
|
||||
perf = {
|
||||
pattern = '%f[%w]()PERF:?%s*()%f[%W]',
|
||||
group = 'MiniHipatternsPerf',
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function(opts)
|
||||
local hp = require 'mini.hipatterns'
|
||||
hp.setup {
|
||||
highlighters = opts.highlighters,
|
||||
|
||||
-- Highlight hex color strings (`#rrggbb`) using that color
|
||||
hex_color = hp.gen_highlighter.hex_color(),
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- Icons
|
||||
@@ -48,14 +151,73 @@ return {
|
||||
},
|
||||
},
|
||||
|
||||
-- Highlight cursor word and its matches
|
||||
{ 'echasnovski/mini.cursorword', version = '*' },
|
||||
-- Visualize and work with indent scope
|
||||
-- Replaced lukas-reineke/indent-blankline.nvim
|
||||
{ 'echasnovski/mini.indentscope', version = '*', opts = {} },
|
||||
|
||||
-- Jump to next/previous single character
|
||||
{
|
||||
'echasnovski/mini.jump',
|
||||
version = '*',
|
||||
opts = {
|
||||
mappings = {
|
||||
forward = 'f',
|
||||
backward = 'F',
|
||||
forward_till = 't',
|
||||
backward_till = 'T',
|
||||
repeat_jump = ';',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Move lines and blocks of text
|
||||
{ 'echasnovski/mini.move', version = '*', opts = {} },
|
||||
|
||||
-- Text edit operators
|
||||
{ 'echasnovski/mini.operators', version = '*', opts = {} },
|
||||
|
||||
-- Split and join arguments, lists, and other sequences
|
||||
-- Replaced Wansmer/treesj
|
||||
{ 'echasnovski/mini.splitjoin', version = '*', opts = {} },
|
||||
{ 'echasnovski/mini.splitjoin', version = '*', opts = {} },
|
||||
|
||||
-- Work with diff hunks
|
||||
-- Replaced lewis6991/gitsigns.nvim
|
||||
{ 'echasnovski/mini.diff', version = '*', opts = {} },
|
||||
-- Fast and flexible start screen
|
||||
-- Replaced glepnir/dashboard-nvim
|
||||
{ 'echasnovski/mini.starter', version = '*', opts = {} },
|
||||
|
||||
-- Minimal and fast statusline module with opinionated default look
|
||||
-- Replaced nvim-lualine/lualine.nvim
|
||||
{
|
||||
'echasnovski/mini.statusline',
|
||||
version = '*',
|
||||
opts = {
|
||||
use_icons = true,
|
||||
set_vim_settings = true,
|
||||
content = {
|
||||
active = function()
|
||||
local mode, mode_hl = MiniStatusline.section_mode({ trunc_width = 120 })
|
||||
local git = MiniStatusline.section_git({ trunc_width = 75 })
|
||||
local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 })
|
||||
local filename = MiniStatusline.section_filename({ trunc_width = 140 })
|
||||
local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 })
|
||||
local location = MiniStatusline.section_location({ trunc_width = 75 })
|
||||
return MiniStatusline.combine_groups({
|
||||
{ hl = mode_hl, strings = { mode } },
|
||||
{ hl = 'MiniStatuslineDevinfo', strings = { git, diagnostics } },
|
||||
'%<', -- Mark general truncate point
|
||||
{ hl = 'MiniStatuslineFilename', strings = { filename } },
|
||||
'%=', -- End left alignment
|
||||
{ hl = 'MiniStatuslineFileinfo', strings = { fileinfo } },
|
||||
{ hl = mode_hl, strings = { location } },
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
-- Fast and feature-rich surround actions
|
||||
-- Replaced kylechui/nvim-surround
|
||||
{ 'echasnovski/mini.surround', version = '*', opts = {} },
|
||||
|
||||
-- Work with trailing whitespace
|
||||
{ 'echasnovski/mini.trailspace', version = '*', opts = {} },
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ return {
|
||||
window = {
|
||||
mappings = {
|
||||
['<Esc>'] = 'close_window',
|
||||
['q'] = 'close_window',
|
||||
},
|
||||
},
|
||||
filtered_items = {
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
-- Highly experimental plugin that completely replaces the UI
|
||||
-- for messages, cmdline and the popupmenu.
|
||||
-- https://github.com/folke/noice.nvim
|
||||
return {
|
||||
'folke/noice.nvim',
|
||||
lazy = false,
|
||||
enabled = true,
|
||||
dependencies = {
|
||||
'MunifTanjim/nui.nvim',
|
||||
-- A fancy, configurable, notification manager for NeoVim
|
||||
-- https://github.com/rcarriga/nvim-notify
|
||||
'rcarriga/nvim-notify',
|
||||
'hrsh7th/nvim-cmp',
|
||||
},
|
||||
opts = {
|
||||
lsp = {
|
||||
-- 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
|
||||
},
|
||||
},
|
||||
-- you can enable a preset for easier configuration
|
||||
presets = {
|
||||
bottom_search = false, -- 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 = false, -- add a border to hover docs and signature help
|
||||
},
|
||||
routes = {
|
||||
{
|
||||
filter = {
|
||||
event = 'msg_show',
|
||||
any = {
|
||||
{ find = '%d+L, %d+B' },
|
||||
{ find = '; after #%d+' },
|
||||
{ find = '; before #%d+' },
|
||||
{ find = '%d fewer lines' },
|
||||
{ find = '%d more lines' },
|
||||
},
|
||||
},
|
||||
opts = { skip = true },
|
||||
},
|
||||
{
|
||||
filter = {
|
||||
event = 'notify',
|
||||
find = 'No information available',
|
||||
},
|
||||
opts = { skip = true },
|
||||
},
|
||||
},
|
||||
views = {
|
||||
cmdline_popup = {
|
||||
position = {
|
||||
row = 5,
|
||||
col = '50%',
|
||||
},
|
||||
size = {
|
||||
width = 60,
|
||||
height = 'auto',
|
||||
},
|
||||
},
|
||||
popupmenu = {
|
||||
relative = 'editor',
|
||||
position = {
|
||||
row = 8,
|
||||
col = '50%',
|
||||
},
|
||||
size = {
|
||||
width = 60,
|
||||
height = 10,
|
||||
},
|
||||
border = {
|
||||
style = 'rounded',
|
||||
padding = { 0, 1 },
|
||||
},
|
||||
win_options = {
|
||||
winhighlight = { Normal = 'Normal', FloatBorder = 'DiagnosticInfo' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -7,7 +7,6 @@ return {
|
||||
dependencies = {
|
||||
{ 'nvim-lua/plenary.nvim' },
|
||||
{ 'nvim-telescope/telescope-symbols.nvim' },
|
||||
{ 'folke/which-key.nvim' },
|
||||
|
||||
-- A Telescope picker to quickly access configurations
|
||||
-- of plugins managed by lazy.nvim.
|
||||
@@ -33,7 +32,6 @@ return {
|
||||
config = function()
|
||||
local t = require 'telescope'
|
||||
local a = require 'telescope.actions'
|
||||
local themes = require 'telescope.themes'
|
||||
|
||||
-- [[ Configure Telescope ]]
|
||||
-- See `:help telescope` and `:help telescope.setup()`
|
||||
@@ -80,7 +78,6 @@ return {
|
||||
}
|
||||
|
||||
-- Load extensions
|
||||
pcall(t.load_extension, 'harpoon')
|
||||
pcall(t.load_extension, 'git_worktree')
|
||||
pcall(t.load_extension, 'lazy_plugins')
|
||||
pcall(t.load_extension, 'luasnip')
|
||||
@@ -92,14 +89,5 @@ return {
|
||||
-- [[ Telescope Keymaps ]]
|
||||
-- See `:help telescope.builtin`
|
||||
-- See `:help telescope.keymap`
|
||||
vim.keymap.set('n', '<leader>/', function()
|
||||
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
||||
require('telescope.builtin').current_buffer_fuzzy_find(
|
||||
themes.get_dropdown {
|
||||
winblend = 20,
|
||||
previewer = true,
|
||||
}
|
||||
)
|
||||
end, { desc = '[/] Fuzzily search in current buffer]' })
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
-- Highlight, list and search todo comments in your projects
|
||||
-- https://github.com/folke/todo-comments.nvim
|
||||
return {
|
||||
'folke/todo-comments.nvim',
|
||||
version = '*',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
opts = {},
|
||||
}
|
||||
@@ -12,130 +12,57 @@ return {
|
||||
'nvim-treesitter/nvim-treesitter-context',
|
||||
'JoosepAlviste/nvim-ts-context-commentstring',
|
||||
},
|
||||
config = function()
|
||||
require('nvim-treesitter.configs').setup {
|
||||
auto_install = true,
|
||||
ignore_install = {},
|
||||
sync_install = true,
|
||||
modules = {},
|
||||
---@type TSConfig
|
||||
opts = {
|
||||
auto_install = true, -- Auto install the parser generators
|
||||
sync_install = false, -- Sync install the parser generators, install async
|
||||
|
||||
-- Add languages to be installed here that you want installed for treesitter
|
||||
ensure_installed = {
|
||||
'bash',
|
||||
'c',
|
||||
'css',
|
||||
'diff',
|
||||
'go',
|
||||
'html',
|
||||
'javascript',
|
||||
'jsdoc',
|
||||
'json',
|
||||
'jsonc',
|
||||
'lua',
|
||||
'luadoc',
|
||||
'markdown',
|
||||
'markdown_inline',
|
||||
'python',
|
||||
'query',
|
||||
'regex',
|
||||
'rust',
|
||||
'sql',
|
||||
'terraform',
|
||||
'toml',
|
||||
'tsx',
|
||||
'typescript',
|
||||
'vim',
|
||||
'vimdoc',
|
||||
'xml',
|
||||
'yaml',
|
||||
},
|
||||
-- Add languages to be installed here that you want installed for treesitter
|
||||
ensure_installed = {
|
||||
'bash',
|
||||
'json',
|
||||
'jsonc',
|
||||
'lua',
|
||||
'luadoc',
|
||||
'markdown',
|
||||
'markdown_inline',
|
||||
'query',
|
||||
'regex',
|
||||
'vim',
|
||||
'vimdoc',
|
||||
'yaml',
|
||||
},
|
||||
|
||||
refactor = {
|
||||
navigation = {
|
||||
enable = true,
|
||||
-- Assign keymaps to false to disable them, e.g. `goto_definition = false`.
|
||||
keymaps = {
|
||||
goto_definition = '<leader>gnd',
|
||||
list_definitions = '<leader>gnD',
|
||||
list_definitions_toc = '<leader>gO',
|
||||
goto_next_usage = '<a-*>',
|
||||
goto_previous_usage = '<a-#>',
|
||||
},
|
||||
},
|
||||
smart_rename = {
|
||||
enable = true,
|
||||
-- Assign keymaps to false to disable them, e.g. `smart_rename = false`.
|
||||
keymaps = {
|
||||
smart_rename = 'grr',
|
||||
},
|
||||
},
|
||||
highlight_definitions = {
|
||||
enable = true,
|
||||
-- Set to false if you have an `updatetime` of ~100.
|
||||
clear_on_cursor_move = true,
|
||||
},
|
||||
highlight_current_scope = { enable = false },
|
||||
},
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
incremental_selection = {
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<a-space>',
|
||||
node_incremental = '<a-space>',
|
||||
scope_incremental = '<c-s>',
|
||||
node_decremental = '<c-backspace>',
|
||||
},
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
['aa'] = '@parameter.outer',
|
||||
['ia'] = '@parameter.inner',
|
||||
['af'] = '@function.outer',
|
||||
['if'] = '@function.inner',
|
||||
['ac'] = '@class.outer',
|
||||
['ic'] = '@class.inner',
|
||||
['ii'] = '@conditional.inner',
|
||||
['ai'] = '@conditional.outer',
|
||||
['il'] = '@loop.inner',
|
||||
['al'] = '@loop.outer',
|
||||
['at'] = '@comment.outer',
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
[']f'] = '@function.outer',
|
||||
[']]'] = '@class.outer',
|
||||
},
|
||||
goto_next_end = {
|
||||
[']F'] = '@function.outer',
|
||||
[']['] = '@class.outer',
|
||||
},
|
||||
goto_previous_start = {
|
||||
['[f'] = '@function.outer',
|
||||
['[['] = '@class.outer',
|
||||
},
|
||||
goto_previous_end = {
|
||||
['[F'] = '@function.outer',
|
||||
['[]'] = '@class.outer',
|
||||
},
|
||||
},
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
['<leader>cn'] = '@parameter.inner',
|
||||
},
|
||||
swap_previous = {
|
||||
['<leader>cP'] = '@parameter.inner',
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
require('nvim-treesitter.configs').setup(opts)
|
||||
|
||||
vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||
callback = function()
|
||||
-- Set foldmethod to treesitter if available
|
||||
if require("nvim-treesitter.parsers").has_parser() then
|
||||
vim.opt.foldmethod = "expr"
|
||||
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
|
||||
else
|
||||
-- Otherwise, set foldmethod to syntax
|
||||
vim.opt.foldmethod = "syntax"
|
||||
end
|
||||
|
||||
vim.opt.foldlevel = 9 -- Open all folds by default
|
||||
vim.opt.foldnestmax = 99 -- Maximum fold nesting
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
-- A pretty diagnostics, references, telescope results,
|
||||
-- quickfix and location list to help you solve all the
|
||||
-- trouble your code is causing.
|
||||
-- https://github.com/folke/trouble.nvim
|
||||
return {
|
||||
'folke/trouble.nvim',
|
||||
lazy = false,
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
opts = {
|
||||
auto_preview = true,
|
||||
auto_fold = true,
|
||||
auto_close = true,
|
||||
use_lsp_diagnostic_signs = true,
|
||||
},
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
-- Not UFO in the sky, but an ultra fold in Neovim.
|
||||
-- https://github.com/kevinhwang91/nvim-ufo/
|
||||
return {
|
||||
'kevinhwang91/nvim-ufo',
|
||||
version = '*',
|
||||
dependencies = {
|
||||
{ 'kevinhwang91/promise-async' },
|
||||
{ 'nvim-treesitter/nvim-treesitter' },
|
||||
{
|
||||
-- Status column plugin that provides a configurable
|
||||
-- 'statuscolumn' and click handlers.
|
||||
-- https://github.com/luukvbaal/statuscol.nvim
|
||||
'luukvbaal/statuscol.nvim',
|
||||
config = function()
|
||||
local builtin = require 'statuscol.builtin'
|
||||
require('statuscol').setup {
|
||||
relculright = true,
|
||||
ft_ignore = {
|
||||
'dashboard',
|
||||
'NvimTree',
|
||||
'help',
|
||||
'vim',
|
||||
'alpha',
|
||||
'dashboard',
|
||||
'neo-tree',
|
||||
'Trouble',
|
||||
'lazy',
|
||||
'toggleterm',
|
||||
},
|
||||
bt_ignore = {
|
||||
'help',
|
||||
'vim',
|
||||
'alpha',
|
||||
'dashboard',
|
||||
'neo-tree',
|
||||
'Trouble',
|
||||
'lazy',
|
||||
'toggleterm',
|
||||
},
|
||||
segments = {
|
||||
{
|
||||
text = { builtin.foldfunc },
|
||||
click = 'v:lua.ScFa',
|
||||
},
|
||||
{
|
||||
sign = {
|
||||
namespace = { 'diagnostic/signs' },
|
||||
maxwidth = 2,
|
||||
-- auto = true,
|
||||
},
|
||||
click = 'v:lua.ScSa',
|
||||
},
|
||||
{
|
||||
text = { builtin.lnumfunc, ' ' },
|
||||
click = 'v:lua.ScLa',
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require('ufo').setup {
|
||||
open_fold_hl_timeout = 150,
|
||||
close_fold_kinds_for_ft = { 'imports', 'comment' },
|
||||
preview = {
|
||||
win_config = {
|
||||
border = { '', '─', '', '', '', '─', '', '' },
|
||||
winhighlight = 'Normal:Folded',
|
||||
winblend = 0,
|
||||
},
|
||||
mappings = {
|
||||
scrollU = '<C-u>',
|
||||
scrollD = '<C-d>',
|
||||
jumpTop = '[',
|
||||
jumpBot = ']',
|
||||
},
|
||||
},
|
||||
|
||||
provider_selector = function(_, _, _) -- bufnr, filetype, buftype
|
||||
return { 'treesitter', 'indent' }
|
||||
end,
|
||||
|
||||
-- fold_virt_text_handler
|
||||
--
|
||||
-- This handler is called when the fold text is too long to fit in the window.
|
||||
-- It is expected to truncate the text and return a new list of virtual text.
|
||||
--
|
||||
---@param virtText table The current virtual text list.
|
||||
---@param lnum number The line number of the first line in the fold.
|
||||
---@param endLnum number The line number of the last line in the fold.
|
||||
---@param width number The width of the window.
|
||||
---@param truncate function Truncate function
|
||||
---@return table
|
||||
fold_virt_text_handler = function(
|
||||
virtText,
|
||||
lnum,
|
||||
endLnum,
|
||||
width,
|
||||
truncate
|
||||
)
|
||||
local newVirtText = {}
|
||||
local suffix = (' %d '):format(endLnum - lnum)
|
||||
local sufWidth = vim.fn.strdisplaywidth(suffix)
|
||||
local targetWidth = width - sufWidth
|
||||
local curWidth = 0
|
||||
for _, chunk in ipairs(virtText) do
|
||||
local chunkText = chunk[1]
|
||||
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||
if targetWidth > curWidth + chunkWidth then
|
||||
table.insert(newVirtText, chunk)
|
||||
else
|
||||
chunkText = truncate(chunkText, targetWidth - curWidth)
|
||||
local hlGroup = chunk[2]
|
||||
table.insert(newVirtText, { chunkText, hlGroup })
|
||||
chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||
-- str width returned from truncate() may less than 2nd argument, need padding
|
||||
if curWidth + chunkWidth < targetWidth then
|
||||
suffix = suffix .. (' '):rep(targetWidth - curWidth - chunkWidth)
|
||||
end
|
||||
break
|
||||
end
|
||||
curWidth = curWidth + chunkWidth
|
||||
end
|
||||
table.insert(newVirtText, { suffix, 'MoreMsg' })
|
||||
return newVirtText
|
||||
end,
|
||||
}
|
||||
end,
|
||||
}
|
||||
@@ -27,104 +27,18 @@ return {
|
||||
},
|
||||
},
|
||||
|
||||
-- Neovim plugin to animate the cursor with a smear effect in all terminals
|
||||
-- https://github.com/sphamba/smear-cursor.nvim
|
||||
{ 'sphamba/smear-cursor.nvim', opts = {} },
|
||||
|
||||
-- A neovim plugin that shows colorcolumn dynamically
|
||||
-- https://github.com/Bekaboo/deadcolumn.nvim
|
||||
{ 'Bekaboo/deadcolumn.nvim' },
|
||||
|
||||
-- vim dashboard
|
||||
-- https://github.com/nvimdev/dashboard-nvim
|
||||
{
|
||||
'nvimdev/dashboard-nvim',
|
||||
event = 'VimEnter',
|
||||
config = function()
|
||||
require('dashboard').setup {
|
||||
theme = 'doom',
|
||||
config = {
|
||||
disable_move = true,
|
||||
week_header = {
|
||||
enable = true,
|
||||
},
|
||||
shortcut = {},
|
||||
center = {
|
||||
{
|
||||
icon = ' ',
|
||||
icon_hl = '@variable',
|
||||
desc = 'Files',
|
||||
group = 'Label',
|
||||
action = 'Telescope find_files',
|
||||
key = 'f',
|
||||
},
|
||||
{
|
||||
icon = ' ',
|
||||
desc = 'Marks',
|
||||
group = 'DiagnosticHint',
|
||||
action = 'Telescope harpoon marks',
|
||||
key = 'a',
|
||||
},
|
||||
{
|
||||
icon = '⚑ ',
|
||||
desc = 'TODO',
|
||||
group = 'DiagnosticOptions',
|
||||
action = 'TodoTelescope',
|
||||
key = 't',
|
||||
},
|
||||
{
|
||||
icon = ' ',
|
||||
desc = 'Search',
|
||||
group = 'Number',
|
||||
action = 'Telescope live_grep',
|
||||
key = 's',
|
||||
},
|
||||
{
|
||||
icon = ' ',
|
||||
desc = 'Lazy Update',
|
||||
group = '@property',
|
||||
action = 'Lazy update',
|
||||
key = 'u',
|
||||
},
|
||||
{
|
||||
icon = '☉ ',
|
||||
desc = 'Quit',
|
||||
group = 'DiagnosticError',
|
||||
action = 'q',
|
||||
key = 'q',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
dependencies = { { 'nvim-tree/nvim-web-devicons' } },
|
||||
},
|
||||
|
||||
-- Remove all background colors to make nvim transparent
|
||||
-- https://github.com/xiyaowong/nvim-transparent
|
||||
{ 'xiyaowong/nvim-transparent', opts = {} },
|
||||
{ 'xiyaowong/nvim-transparent', opts = {} },
|
||||
|
||||
-- Display a character as the colorcolumn
|
||||
-- https://github.com/lukas-reineke/virt-column.nvim
|
||||
{ 'lukas-reineke/virt-column.nvim', opts = {} },
|
||||
|
||||
-- ui components
|
||||
{ 'MunifTanjim/nui.nvim', lazy = true },
|
||||
|
||||
-- Seamless navigation between tmux panes and vim splits
|
||||
-- https://github.com/christoomey/vim-tmux-navigator
|
||||
{
|
||||
'christoomey/vim-tmux-navigator',
|
||||
cmd = {
|
||||
'TmuxNavigateLeft',
|
||||
'TmuxNavigateDown',
|
||||
'TmuxNavigateUp',
|
||||
'TmuxNavigateRight',
|
||||
'TmuxNavigatePrevious',
|
||||
},
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Cloak allows you to overlay *'s over defined patterns in defined files.
|
||||
-- https://github.com/laytan/cloak.nvim
|
||||
{
|
||||
@@ -152,9 +66,6 @@ return {
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Close buffer without messing up with the window.
|
||||
-- https://github.com/famiu/bufdelete.nvim
|
||||
{ 'famiu/bufdelete.nvim' },
|
||||
|
||||
-- Neovim plugin for locking a buffer to a window
|
||||
-- https://github.com/stevearc/stickybuf.nvim
|
||||
@@ -177,12 +88,17 @@ return {
|
||||
|
||||
-- Clarify and beautify your comments using boxes and lines.
|
||||
-- https://github.com/LudoPinelli/comment-box.nvim
|
||||
{ 'LudoPinelli/comment-box.nvim', opts = {} },
|
||||
{
|
||||
'LudoPinelli/comment-box.nvim',
|
||||
event = 'BufEnter',
|
||||
opts = {}
|
||||
},
|
||||
|
||||
-- Plugin to improve viewing Markdown files in Neovim
|
||||
-- https://github.com/MeanderingProgrammer/render-markdown.nvim
|
||||
{
|
||||
'MeanderingProgrammer/render-markdown.nvim',
|
||||
event = 'BufEnter',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
-- Detect tabstop and shiftwidth automatically
|
||||
-- https://github.com/tpope/vim-sleuth
|
||||
return { 'tpope/vim-sleuth' }
|
||||
@@ -1,553 +0,0 @@
|
||||
-- Useful plugin to show you pending keybinds.
|
||||
-- https://github.com/folke/which-key.nvim
|
||||
return {
|
||||
'folke/which-key.nvim',
|
||||
lazy = false,
|
||||
version = '*',
|
||||
priority = 1001, -- Make sure to load this as soon as possible
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'echasnovski/mini.icons',
|
||||
},
|
||||
config = function()
|
||||
local wk = require 'which-key'
|
||||
wk.setup()
|
||||
|
||||
wk.add {
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ With leader │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
|
||||
-- ── Buffer ──────────────────────────────────────────────────────────
|
||||
{
|
||||
'<leader>b',
|
||||
group = '[b] Buffer',
|
||||
-- Add the current buffers to the menu
|
||||
expand = function() return require('which-key.extras').expand.buf() end,
|
||||
},
|
||||
{
|
||||
{ '<leader>bk', '<cmd>blast<cr>', desc = 'Buffer: Last' },
|
||||
{ '<leader>bj', '<cmd>bfirst<cr>', desc = 'Buffer: First' },
|
||||
{ '<leader>bh', '<cmd>bprev<cr>', desc = 'Buffer: Prev' },
|
||||
{ '<leader>bl', '<cmd>bnext<cr>', desc = 'Buffer: Next' },
|
||||
{ '<leader>bd', '<cmd>Bdelete<cr>', desc = 'Buffer: Delete' },
|
||||
{ '<leader>bw', '<cmd>Bwipeout<cr>', desc = 'Buffer: Wipeout' },
|
||||
},
|
||||
|
||||
-- ── Code ────────────────────────────────────────────────────────────
|
||||
{ '<leader>c', group = '[c] Code' },
|
||||
{
|
||||
'<leader>ca',
|
||||
'<cmd>lua vim.lsp.buf.code_action()<CR>',
|
||||
desc = 'LSP: Code Action',
|
||||
},
|
||||
{
|
||||
'<leader>cg',
|
||||
'<cmd>lua require("neogen").generate()<CR>',
|
||||
desc = 'Generate annotations',
|
||||
},
|
||||
|
||||
-- ── Code: CommentBox ────────────────────────────────────────────────
|
||||
{ '<leader>cb', group = 'CommentBox' },
|
||||
{ '<leader>cbb', '<Cmd>CBccbox<CR>', desc = 'CommentBox: Box Title' },
|
||||
{ '<leader>cbd', '<Cmd>CBd<CR>', desc = 'CommentBox: Remove a box' },
|
||||
{ '<leader>cbl', '<Cmd>CBline<CR>', desc = 'CommentBox: Simple Line' },
|
||||
{ '<leader>cbm', '<Cmd>CBllbox14<CR>', desc = 'CommentBox: Marked' },
|
||||
{ '<leader>cbt', '<Cmd>CBllline<CR>', desc = 'CommentBox: Titled Line' },
|
||||
|
||||
-- ── Code: LSPSaga ───────────────────────────────────────────────────
|
||||
-- See: lua/plugins/lsp.lua
|
||||
{
|
||||
'<C-a>',
|
||||
'<cmd>Lspsaga term_toggle<cr>',
|
||||
desc = 'LSPSaga: Open Floaterm',
|
||||
},
|
||||
{
|
||||
'<leader>ca',
|
||||
'<cmd>Lspsaga code_action<cr>',
|
||||
desc = 'LSPSaga: Code Actions',
|
||||
},
|
||||
{
|
||||
'<leader>cci',
|
||||
'<cmd>Lspsaga incoming_calls<cr>',
|
||||
desc = 'LSPSaga: Incoming Calls',
|
||||
},
|
||||
{
|
||||
'<leader>cco',
|
||||
'<cmd>Lspsaga outgoing_calls<cr>',
|
||||
desc = 'LSPSaga: Outgoing Calls',
|
||||
},
|
||||
{
|
||||
'<leader>cd',
|
||||
'<cmd>Lspsaga show_line_diagnostics<cr>',
|
||||
desc = 'LSPSaga: Show Line Diagnostics',
|
||||
},
|
||||
{
|
||||
'<leader>cf',
|
||||
'<cmd>lua require("conform").format({ async = true, lsp_fallback = true })<cr>',
|
||||
mode = {},
|
||||
desc = 'Format buffer with Conform',
|
||||
},
|
||||
{
|
||||
'<leader>ci',
|
||||
'<cmd>Lspsaga implement<cr>',
|
||||
desc = 'LSPSaga: Implementations',
|
||||
},
|
||||
{
|
||||
'<leader>cl',
|
||||
'<cmd>Lspsaga show_cursor_diagnostics<cr>',
|
||||
desc = 'LSPSaga: Show Cursor Diagnostics',
|
||||
},
|
||||
{
|
||||
'<leader>cp',
|
||||
'<cmd>Lspsaga peek_definition<cr>',
|
||||
desc = 'LSPSaga: Peek Definition',
|
||||
},
|
||||
{ '<leader>cr', '<cmd>Lspsaga rename<cr>', desc = 'LSPSaga: Rename' },
|
||||
{
|
||||
'<leader>cR',
|
||||
'<cmd>Lspsaga rename ++project<cr>',
|
||||
desc = 'LSPSaga: Rename Project wide',
|
||||
},
|
||||
{
|
||||
'<leader>cs',
|
||||
'<cmd>Lspsaga signature_help<cr>',
|
||||
desc = 'LSPSaga: Signature Documentation',
|
||||
},
|
||||
{
|
||||
'<leader>ct',
|
||||
'<cmd>Lspsaga peek_type_definition<cr>',
|
||||
desc = 'LSPSaga: Peek Type Definition',
|
||||
},
|
||||
{
|
||||
'<leader>cu',
|
||||
'<cmd>Lspsaga preview_definition<cr>',
|
||||
desc = 'LSPSaga: Preview Definition',
|
||||
},
|
||||
{
|
||||
'<leader>cv',
|
||||
'<cmd>Lspsaga diagnostic_jump_prev<cr>',
|
||||
desc = 'LSPSaga: Diagnostic Jump Prev',
|
||||
},
|
||||
{
|
||||
'<leader>cw',
|
||||
'<cmd>Lspsaga diagnostic_jump_next<cr>',
|
||||
desc = 'LSPSaga: Diagnostic Jump Next',
|
||||
},
|
||||
{
|
||||
'<leader>cx',
|
||||
'<cmd>Telescope import<cr>',
|
||||
desc = 'Telescope import',
|
||||
},
|
||||
|
||||
{
|
||||
'<leader>f',
|
||||
'<cmd>Telescope find_files<cr>',
|
||||
desc = 'Find files',
|
||||
},
|
||||
|
||||
-- ── Harpoon ─────────────────────────────────────────────────────────
|
||||
-- See: lua/plugins/telescope.lua
|
||||
{ '<leader>h', group = '[h] Harpoon' },
|
||||
{
|
||||
{
|
||||
'<leader>ha',
|
||||
'<cmd>lua require("harpoon"):list():add()<cr>',
|
||||
desc = 'harpoon file',
|
||||
},
|
||||
{
|
||||
'<leader>hn',
|
||||
'<cmd>lua require("harpoon"):list():next()<cr>',
|
||||
desc = 'harpoon to next file',
|
||||
},
|
||||
{
|
||||
'<leader>hp',
|
||||
'<cmd>lua require("harpoon"):list():prev()<cr>',
|
||||
desc = 'harpoon to previous file',
|
||||
},
|
||||
{
|
||||
'<leader>ht',
|
||||
"<cmd>lua require('harpoon.ui').toggle_quick_menu()<CR>",
|
||||
desc = 'DAP: Harpoon UI',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── LSP ─────────────────────────────────────────────────────────────
|
||||
{ '<leader>l', group = '[l] LSP' },
|
||||
-- See: lua/plugins/lsp.lua
|
||||
|
||||
-- ── Quit ────────────────────────────────────────────────────────────
|
||||
{ '<leader>q', group = '[q] Quit' },
|
||||
{
|
||||
{ '<leader>qf', '<cmd>q<CR>', desc = 'Quicker close split' },
|
||||
{ '<leader>qq', '<cmd>wq!<CR>', desc = 'Quit with force saving' },
|
||||
{ '<leader>qw', '<cmd>wq<CR>', desc = 'Write and quit' },
|
||||
},
|
||||
|
||||
-- ── Search ──────────────────────────────────────────────────────────
|
||||
{ '<leader>s', group = '[s] Search' },
|
||||
-- See: lua/plugins/telescope.lua
|
||||
{
|
||||
'<leader><space>',
|
||||
'<cmd>Telescope buffers<cr>',
|
||||
desc = 'Find existing buffers',
|
||||
},
|
||||
{
|
||||
'<leader>sc',
|
||||
'<cmd>Telescope commands<CR>',
|
||||
desc = 'Telescope: Commands',
|
||||
},
|
||||
{
|
||||
'<leader>sd',
|
||||
'<cmd>Telescope diagnostics<cr>',
|
||||
desc = 'Search Diagnostics',
|
||||
},
|
||||
{
|
||||
'<leader>sf',
|
||||
'<cmd>Telescope find_files<cr>',
|
||||
desc = 'Find files',
|
||||
},
|
||||
{
|
||||
'<leader>sg',
|
||||
'<cmd>Telescope live_grep<cr>',
|
||||
desc = 'Search by Grep',
|
||||
},
|
||||
{
|
||||
'<leader>sh',
|
||||
'<cmd>Telescope highlights<cr>',
|
||||
desc = 'List highlights',
|
||||
},
|
||||
{
|
||||
'<leader>sl',
|
||||
'<cmd>Telescope luasnip<CR>',
|
||||
desc = 'Search LuaSnip',
|
||||
},
|
||||
{
|
||||
'<leader>sm',
|
||||
'<cmd>Telescope harpoon marks<CR>',
|
||||
desc = 'Harpoon Marks',
|
||||
},
|
||||
{
|
||||
'<leader>sn',
|
||||
"<cmd>lua require('telescope').extensions.notify.notify()<CR>",
|
||||
desc = 'Show Notifications',
|
||||
},
|
||||
{
|
||||
'<leader>so',
|
||||
'<cmd>Telescope oldfiles<cr>',
|
||||
desc = 'Find recently Opened files',
|
||||
},
|
||||
{
|
||||
'<leader>sp',
|
||||
"<cmd>lua require('telescope').extensions.lazy_plugins.lazy_plugins()<cr>",
|
||||
desc = 'Find neovim/lazy configs',
|
||||
},
|
||||
{
|
||||
'<leader>sq',
|
||||
'<cmd>Telescope quickfix<cr>',
|
||||
desc = 'Quickfix list',
|
||||
},
|
||||
{
|
||||
'<leader>sr',
|
||||
group = 'References',
|
||||
{
|
||||
'<leader>srd',
|
||||
'<cmd>Telescope lsp_definitions<CR>',
|
||||
desc = 'Definitions',
|
||||
},
|
||||
{
|
||||
'<leader>sri',
|
||||
'<cmd>Telescope lsp_implementations<CR>',
|
||||
desc = 'Implementations',
|
||||
},
|
||||
{
|
||||
'<leader>srp',
|
||||
'<cmd>Telescope lsp_document_symbols<CR>',
|
||||
desc = 'Document Symbols',
|
||||
},
|
||||
{
|
||||
'<leader>srr',
|
||||
'<cmd>Telescope lsp_references<CR>',
|
||||
desc = 'LSP References',
|
||||
},
|
||||
{
|
||||
'<leader>srt',
|
||||
'<cmd>Telescope lsp_type_definitions<CR>',
|
||||
desc = 'Type Definitions',
|
||||
},
|
||||
{
|
||||
'<leader>srw',
|
||||
'<cmd>Telescope lsp_workspace_symbols<CR>',
|
||||
desc = 'Workspace Symbols',
|
||||
},
|
||||
},
|
||||
{
|
||||
'<leader>ss',
|
||||
'<cmd>Telescope treesitter',
|
||||
desc = 'Treesitter symbols',
|
||||
},
|
||||
{ '<leader>st', '<cmd>TodoTelescope<CR>', desc = 'Telescope: Show Todo' },
|
||||
{
|
||||
'<leader>sw',
|
||||
'<cmd>Telescope grep_string<cr>',
|
||||
desc = 'Search current Word',
|
||||
},
|
||||
|
||||
-- ── Toggle ──────────────────────────────────────────────────────────
|
||||
{ '<leader>t', group = '[t] Toggle' },
|
||||
{
|
||||
{ '<leader>tc', '<cmd>CloakToggle<cr>', desc = 'Toggle Cloak' },
|
||||
{ '<leader>tn', '<cmd>Noice dismiss<CR>', desc = 'Noice dismiss' },
|
||||
{ '<leader>ts', '<cmd>noh<CR>', desc = 'Toggle Search Highlighting' },
|
||||
{
|
||||
'<leader>tt',
|
||||
'<cmd>TransparentToggle<CR>',
|
||||
desc = 'Toggle Transparency',
|
||||
},
|
||||
{
|
||||
'<leader>tl',
|
||||
'<cmd>exec &bg=="light"? "set bg=dark" : "set bg=light"<CR>',
|
||||
desc = 'Toggle Light/Dark Theme',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Workspace ───────────────────────────────────────────────────────
|
||||
{ '<leader>w', group = '[w] Workspace' },
|
||||
{
|
||||
{
|
||||
'<leader>wa',
|
||||
'<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>',
|
||||
desc = 'LSP: Workspace Add Folder',
|
||||
},
|
||||
{
|
||||
'<leader>wl',
|
||||
'<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>',
|
||||
desc = 'LSP: Workspace List Folders',
|
||||
},
|
||||
{
|
||||
'<leader>wr',
|
||||
'<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>',
|
||||
desc = 'LSP: Workspace Remove Folder',
|
||||
},
|
||||
{
|
||||
'<leader>ws',
|
||||
'<cmd>lua require("telescope.builtin").lsp_dynamic_workspace_symbols()<CR>',
|
||||
desc = 'LSP: Workspace Symbols',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Trouble ─────────────────────────────────────────────────────────
|
||||
{ '<leader>x', group = '[x] Trouble' },
|
||||
{
|
||||
{
|
||||
'<leader>xx',
|
||||
'<cmd>Trouble diagnostics<cr>',
|
||||
desc = 'Toggle Trouble Diagnostics',
|
||||
},
|
||||
{
|
||||
'<leader>xw',
|
||||
'<cmd>Trouble workspace_diagnostics<cr>',
|
||||
desc = 'Toggle Workspace Diagnostics',
|
||||
},
|
||||
{
|
||||
'<leader>xd',
|
||||
'<cmd>Trouble document_diagnostics<cr>',
|
||||
desc = 'Toggle Document Diagnostics',
|
||||
},
|
||||
{ '<leader>xl', '<cmd>Trouble loclist<cr>', desc = 'Toggle Loclist' },
|
||||
{ '<leader>xq', '<cmd>Trouble quickfix<cr>', desc = 'Toggle Quickfix' },
|
||||
},
|
||||
|
||||
-- ── Help ────────────────────────────────────────────────────────────
|
||||
{ '<leader>?', group = '[?] Help & Cheat sheets' },
|
||||
{
|
||||
{
|
||||
'<leader>?h',
|
||||
'<cmd>Telescope help_tags<cr>',
|
||||
desc = 'Help tags',
|
||||
},
|
||||
{
|
||||
'<leader>?m',
|
||||
'<cmd>Telescope man_pages<cr>',
|
||||
desc = 'Man pages',
|
||||
},
|
||||
{
|
||||
'<leader>?w',
|
||||
'<cmd>lua require("which-key").show({global = true})<cr>',
|
||||
desc = 'Buffer Local Keymaps (which-key)',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Misc ────────────────────────────────────────────────────────────
|
||||
{
|
||||
'<leader>D',
|
||||
'<cmd>lua vim.lsp.buf.type_definition()<CR>',
|
||||
desc = 'LSP: Type Definition',
|
||||
},
|
||||
{ '<leader>e', '<cmd>Neotree reveal<CR>', desc = 'NeoTree reveal' },
|
||||
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Without leader │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
{ 'y', group = 'Yank & Surround' },
|
||||
|
||||
{ 'gp', group = 'Goto Preview' },
|
||||
{
|
||||
{
|
||||
'gpd',
|
||||
'<cmd>lua require("goto-preview").goto_preview_definition()<CR>',
|
||||
desc = 'Goto: Preview Definition',
|
||||
},
|
||||
{
|
||||
'gpi',
|
||||
'<cmd>lua require("goto-preview").goto_preview_implementation()<CR>',
|
||||
desc = 'Goto: Preview Implementation',
|
||||
},
|
||||
{
|
||||
'gpP',
|
||||
'<cmd>lua require("goto-preview").close_all_windows()<CR>',
|
||||
desc = 'Goto: Close All Preview Windows',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── tmux navigation ─────────────────────────────────────────────────
|
||||
{
|
||||
{
|
||||
'<c-h>',
|
||||
'<cmd><C-U>TmuxNavigateLeft<cr>',
|
||||
desc = 'tmux: Navigate Left',
|
||||
},
|
||||
{
|
||||
'<c-j>',
|
||||
'<cmd><C-U>TmuxNavigateDown<cr>',
|
||||
desc = 'tmux: Navigate Down',
|
||||
},
|
||||
{ '<c-k>', '<cmd><C-U>TmuxNavigateUp<cr>', desc = 'tmux: Navigate Up' },
|
||||
{
|
||||
'<c-l>',
|
||||
'<cmd><C-U>TmuxNavigateRight<cr>',
|
||||
desc = 'tmux: Navigate Right',
|
||||
},
|
||||
{
|
||||
'<c-\\>',
|
||||
'<cmd><C-U>TmuxNavigatePrevious<cr>',
|
||||
desc = 'tmux: Navigate Previous',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Old habits ──────────────────────────────────────────────────────
|
||||
{ '<C-s>', '<cmd>w!<CR>', desc = 'Save file' },
|
||||
|
||||
-- ── Text manipulation in visual mode ────────────────────────────────
|
||||
{
|
||||
mode = { 'v', 'n' },
|
||||
{ '>', '>gv', desc = 'Indent Right' },
|
||||
{ '<', '<gv', desc = 'Indent Left' },
|
||||
{ 'J', "<cmd>m '>+1<CR>gv=gv", desc = 'Move Block Down' },
|
||||
{ 'K', "<cmd>m '<-2<CR>gv=gv", desc = 'Move Block Up' },
|
||||
},
|
||||
|
||||
-- ── LSP ─────────────────────────────────────────────────────────────
|
||||
{
|
||||
'<C-k>',
|
||||
'<cmd>lua vim.lsp.buf.signature_help()<CR>',
|
||||
desc = 'LSP: Signature Documentation',
|
||||
},
|
||||
{
|
||||
'K',
|
||||
'<cmd>Lspsaga hover_doc<cr>',
|
||||
desc = 'LSPSaga: Hover Documentation',
|
||||
},
|
||||
|
||||
{ 'd', group = 'Diagnostics' },
|
||||
{
|
||||
{
|
||||
'dn',
|
||||
'<cmd>lua vim.diagnostic.goto_next()<CR>',
|
||||
desc = 'Diagnostic: Goto Next',
|
||||
},
|
||||
{
|
||||
'dp',
|
||||
'<cmd>lua vim.diagnostic.goto_prev()<CR>',
|
||||
desc = 'Diagnostic: Goto Prev',
|
||||
},
|
||||
},
|
||||
{
|
||||
{ 'g', group = 'Goto' },
|
||||
{
|
||||
'gD',
|
||||
'<cmd>lua vim.lsp.buf.declaration()<CR>',
|
||||
desc = 'LSP: Goto Declaration',
|
||||
},
|
||||
{
|
||||
'gI',
|
||||
'<cmd>lua vim.lsp.buf.implementation()<CR>',
|
||||
desc = 'LSP: Goto Implementation',
|
||||
},
|
||||
{
|
||||
'gR',
|
||||
'<cmd>Trouble lsp_references<cr>',
|
||||
desc = 'Toggle LSP References',
|
||||
},
|
||||
{
|
||||
'gd',
|
||||
'<cmd>lua vim.lsp.buf.definition()<CR>',
|
||||
desc = 'LSP: Goto Definition',
|
||||
},
|
||||
{
|
||||
'gr',
|
||||
'<cmd>lua require("telescope.builtin").lsp_references()<CR>',
|
||||
desc = 'LSP: Goto References',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Misc keybinds ───────────────────────────────────────────────────
|
||||
-- Sublime-like shortcut 'go to file' ctrl+p.
|
||||
{
|
||||
'<C-p>',
|
||||
'<cmd>Telescope find_files<CR>',
|
||||
desc = 'Search for files starting at current directory.',
|
||||
},
|
||||
{ 'QQ', '<cmd>q!<CR>', desc = 'Quit without saving' },
|
||||
{ 'WW', '<cmd>w!<CR>', desc = 'Force write to file' },
|
||||
{ 'ss', '<cmd>noh<CR>', desc = 'Clear Search Highlighting' },
|
||||
{
|
||||
'jj',
|
||||
'<Esc>',
|
||||
desc = 'Esc without touching esc in insert mode',
|
||||
mode = 'i',
|
||||
},
|
||||
|
||||
-- ── Splits ──────────────────────────────────────────────────────────
|
||||
-- Use CTRL+<hjkl> to switch between windows in normal mode
|
||||
-- See `:help wincmd` for a list of all window commands
|
||||
{ '<C-h>', '<C-w><C-h>', desc = 'Move focus to the left window' },
|
||||
{ '<C-l>', '<C-w><C-l>', desc = 'Move focus to the right window' },
|
||||
{ '<C-j>', '<C-w><C-j>', desc = 'Move focus to the lower window' },
|
||||
{ '<C-k>', '<C-w><C-k>', desc = 'Move focus to the upper window' },
|
||||
-- Split resizing
|
||||
{ '<C-w>,', '<cmd>vertical resize -10<CR>', desc = 'V Resize -' },
|
||||
{ '<C-w>.', '<cmd>vertical resize +10<CR>', desc = 'V Resize +' },
|
||||
|
||||
-- ── Disable arrow keys in normal mode ───────────────────────────────
|
||||
{ '<left>', '<cmd>echo "Use h to move!!"<CR>' },
|
||||
{ '<right>', '<cmd>echo "Use l to move!!"<CR>' },
|
||||
{ '<up>', '<cmd>echo "Use k to move!!"<CR>' },
|
||||
{ '<down>', '<cmd>echo "Use j to move!!"<CR>' },
|
||||
|
||||
-- ── Terminal ────────────────────────────────────────────────────────
|
||||
-- Exit terminal mode in the builtin terminal with a shortcut that is
|
||||
-- a bit easier for people to discover. Otherwise, you normally need
|
||||
-- to press <C-\><C-n>, which is not what someone will guess without
|
||||
-- a bit more experience.
|
||||
--
|
||||
-- NOTE: This won't work in all terminal emulators/tmux/etc.
|
||||
-- Try your own mapping or just use <C-\><C-n> to exit terminal mode.
|
||||
{ '<Esc><Esc>', '<C-\\><C-n>', desc = 'Exit terminal mode', mode = 't' },
|
||||
|
||||
-- ── Search ──────────────────────────────────────────────────────────
|
||||
-- :noh if you have search highlights
|
||||
{ '<Esc><Esc>', '<cmd>noh<CR>', desc = 'Clear search highlights' },
|
||||
}
|
||||
end,
|
||||
}
|
||||
@@ -2,40 +2,214 @@
|
||||
|
||||
```txt
|
||||
|
||||
n <Space>/ * <Lua 398: ~/.config/nvim/lua/plugins/telescope.lua:95>
|
||||
[/] Fuzzily search in current buffer]
|
||||
n <Space>ht * <Lua 393: ~/.config/nvim/lua/plugins/harpoon.lua:43>
|
||||
Open Harpoon Quick menu
|
||||
n <Space>hw * <Lua 390: ~/.config/nvim/lua/plugins/harpoon.lua:37>
|
||||
Open harpoon window with telescope
|
||||
x # * <Lua 7: vim/_defaults.lua:0>
|
||||
x <Space> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "<Space>"
|
||||
n <Space> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "<Space>"
|
||||
x " *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after """
|
||||
n " *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after """
|
||||
x ' *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "'"
|
||||
n ' *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "'"
|
||||
x ` *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "`"
|
||||
n ` *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "`"
|
||||
x g *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "g"
|
||||
n g *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "g"
|
||||
x z *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "z"
|
||||
n z *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "z"
|
||||
n <C-W> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Query keys after "<C-W>"
|
||||
n <Esc><Esc> * :nohlsearch<CR>
|
||||
Clear Search Highlighting
|
||||
n <Space>qQ * :q!<CR>
|
||||
Force quit without saving
|
||||
n <Space>qw * :wq<CR>
|
||||
Write and quit
|
||||
n <Space>qq * :wq!<CR>
|
||||
Quit with force saving
|
||||
n <Space>qf * :q<CR>
|
||||
Quicker close split
|
||||
n <Space>tn * :Noice dismiss<CR>
|
||||
Noice: Dismiss Notification
|
||||
n <Space>tl * :lua vim.o.bg = vim.o.bg:get() == "light" and "dark" or "light"<CR>
|
||||
Toggle Light/Dark Mode
|
||||
n <Space>te * :Neotree toggle<CR>
|
||||
Toggle Neotree
|
||||
n <Space>tc * :CloakToggle<CR>
|
||||
Cloak: Toggle
|
||||
n <Space>o * ~/.config/nvim/lua/keymaps.lua
|
||||
Open repo in browser
|
||||
n <Space>xx * :Trouble diagnostics<CR>
|
||||
Trouble: Diagnostic
|
||||
n <Space>xw * :Trouble workspace_diagnostics<CR>
|
||||
Trouble: Workspace Diagnostics
|
||||
n <Space>xq * :Trouble quickfix<CR>
|
||||
Trouble: Quickfix
|
||||
n <Space>xl * :Trouble loclist<CR>
|
||||
Trouble: Location List
|
||||
n <Space>xd * :Trouble document_diagnostics<CR>
|
||||
Trouble: Document Diagnostics
|
||||
n <Space>sx * :Telescope import<CR>
|
||||
Telescope: Import
|
||||
n <Space>sw * :Telescope grep_string<CR>
|
||||
Grep String
|
||||
n <Space>st * :TodoTelescope<CR>
|
||||
Search Todos
|
||||
n <Space>ss * :Telescope treesitter<CR>
|
||||
Treesitter
|
||||
n <Space>sq * :Telescope quickfix<CR>
|
||||
Quickfix
|
||||
n <Space>sp * :lua require("telescope").extensions.lazy_plugins.lazy_plugins()<CR>
|
||||
Lazy Plugins
|
||||
n <Space>so * :Telescope oldfiles<CR>
|
||||
Old Files
|
||||
n <Space>sl * :Telescope luasnip<CR>
|
||||
Search LuaSnip
|
||||
n <Space>sk * :Telescope keymaps<CR>
|
||||
Search Keymaps
|
||||
n <Space>sh * :Telescope highlights<CR>
|
||||
List Highlights
|
||||
n <Space>sg * :Telescope live_grep<CR>
|
||||
Search by Grep
|
||||
n <Space>sd * :Telescope diagnostics<CR>
|
||||
Search Diagnostics
|
||||
n <Space>sc * :Telescope commands<CR>
|
||||
Commands
|
||||
n <Space>/ * ~/.config/nvim/lua/keymaps.lua
|
||||
Fuzzily search in current buffer
|
||||
n <Space>, * :Telescope buffers<CR>
|
||||
Find existing buffers
|
||||
n <Space>f * :Telescope find_files<CR>
|
||||
Find Files
|
||||
n <Space>cbt * <Cmd>CBllline<CR>
|
||||
CB: Titled Line
|
||||
n <Space>cbm * <Cmd>CBllbox14<CR>
|
||||
CB: Marked
|
||||
n <Space>cbl * <Cmd>CBline<CR>
|
||||
CB: Simple Line
|
||||
n <Space>cbd * <Cmd>CBd<CR>
|
||||
CB: Remove a box
|
||||
n <Space>cbb * <Cmd>CBccbox<CR>
|
||||
CB: Box Title
|
||||
n <Space>cw * :Lspsaga diagnostic_jump_next<CR>
|
||||
Diagnostic Jump Next
|
||||
n <Space>cv * :Lspsaga diagnostic_jump_prev<CR>
|
||||
Diagnostic Jump Prev
|
||||
n <Space>cu * :Lspsaga preview_definition<CR>
|
||||
Preview Definition
|
||||
n <Space>cT * :Telescope lsp_type_definitions<CR>
|
||||
LSP Type Definitions
|
||||
n <Space>ct * :Lspsaga peek_type_definition<CR>
|
||||
Peek Type Definition
|
||||
n <Space>cs * :Telescope lsp_document_symbols<CR>
|
||||
LSP Document Symbols
|
||||
n <Space>cR * :Lspsaga rename ++project<CR>
|
||||
Rename Project wide
|
||||
n <Space>cr * :Lspsaga rename<CR>
|
||||
Rename
|
||||
n <Space>cp * :Lspsaga peek_definition<CR>
|
||||
Peek Definition
|
||||
n <Space>cl * :Lspsaga show_cursor_diagnostics<CR>
|
||||
Cursor Diagnostics
|
||||
n <Space>ci * :Lspsaga implement<CR>
|
||||
Implementations
|
||||
x <Space>cf * :lua vim.lsp.buf.format()<CR>
|
||||
Format
|
||||
n <Space>cf * :lua vim.lsp.buf.format()<CR>
|
||||
Format
|
||||
n <Space>cd * :Lspsaga show_line_diagnostics<CR>
|
||||
Line Diagnostics
|
||||
n <Space>cco * :Lspsaga outgoing_calls<CR>
|
||||
Outgoing Calls
|
||||
n <Space>cci * :Lspsaga incoming_calls<CR>
|
||||
Incoming Calls
|
||||
n <Space>ca * :Lspsaga code_action<CR>
|
||||
Code Action
|
||||
n <Space>cg * :lua require("neogen").generate()<CR>
|
||||
Generate annotations
|
||||
n <Space>bw * :lua MiniBufremove.wipeout()<CR>
|
||||
Wipeout
|
||||
n <Space>bl * :bnext<CR>
|
||||
Next
|
||||
n <Space>bk * :blast<CR>
|
||||
Last
|
||||
n <Space>bj * :bfirst<CR>
|
||||
First
|
||||
n <Space>bh * :bprev<CR>
|
||||
Prev
|
||||
n <Space>bd * :lua MiniBufremove.delete()<CR>
|
||||
Delete
|
||||
x # * vim/_defaults.lua
|
||||
:help v_#-default
|
||||
o % <Plug>(MatchitOperationForward)
|
||||
x % <Plug>(MatchitVisualForward)
|
||||
n % <Plug>(MatchitNormalForward)
|
||||
n & * :&&<CR>
|
||||
:help &-default
|
||||
x * * <Lua 3: vim/_defaults.lua:0>
|
||||
x * * vim/_defaults.lua
|
||||
:help v_star-default
|
||||
o ; * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
||||
Repeat jump
|
||||
x ; * <Cmd>lua MiniJump.jump()<CR>
|
||||
Repeat jump
|
||||
n ; * <Cmd>lua MiniJump.jump()<CR>
|
||||
Repeat jump
|
||||
v < * <gv
|
||||
Indent Left
|
||||
n < * <gv
|
||||
Indent Left
|
||||
v > * >gv
|
||||
Indent Right
|
||||
n > * >gv
|
||||
Indent Right
|
||||
n @ * ~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Execute macro without 'mini.clue' triggers
|
||||
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||
:help v_@-default
|
||||
o F * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
||||
Jump backward
|
||||
x F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
|
||||
Jump backward
|
||||
n F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
|
||||
Jump backward
|
||||
n K * :Lspsaga hover_doc<CR>
|
||||
Hover Documentation
|
||||
n Q * ~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
||||
Execute macro without 'mini.clue' triggers
|
||||
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||
:help v_Q-default
|
||||
o R * <Lua 102: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Treesitter Search
|
||||
x R * <Lua 99: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Treesitter Search
|
||||
o T * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
||||
Jump backward till
|
||||
x T * <Cmd>lua MiniJump.smart_jump(true, true)<CR>
|
||||
Jump backward till
|
||||
n T * <Cmd>lua MiniJump.smart_jump(true, true)<CR>
|
||||
Jump backward till
|
||||
n Y * y$
|
||||
:help Y-default
|
||||
n Zk * <Lua 98: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash Treesitter
|
||||
o Zk * <Lua 96: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
x Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash Treesitter
|
||||
x Zk * <Lua 95: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
o Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash Treesitter
|
||||
o [% <Plug>(MatchitOperationMultiBackward)
|
||||
x [% <Plug>(MatchitVisualMultiBackward)
|
||||
n [% <Plug>(MatchitNormalMultiBackward)
|
||||
o [i * <Cmd>lua MiniIndentscope.operator('top')<CR>
|
||||
Go to indent scope top
|
||||
x [i * <Cmd>lua MiniIndentscope.operator('top')<CR>
|
||||
Go to indent scope top
|
||||
n [i * <Cmd>lua MiniIndentscope.operator('top', true)<CR>
|
||||
Go to indent scope top
|
||||
o [h * V<Cmd>lua MiniDiff.goto_hunk('prev')<CR>
|
||||
Previous hunk
|
||||
x [h * <Cmd>lua MiniDiff.goto_hunk('prev')<CR>
|
||||
@@ -48,17 +222,17 @@ x [H * <Cmd>lua MiniDiff.goto_hunk('first')<CR>
|
||||
First hunk
|
||||
n [H * <Cmd>lua MiniDiff.goto_hunk('first')<CR>
|
||||
First hunk
|
||||
o [i * <Cmd>lua MiniIndentscope.operator('top')<CR>
|
||||
Go to indent scope top
|
||||
x [i * <Cmd>lua MiniIndentscope.operator('top')<CR>
|
||||
Go to indent scope top
|
||||
n [i * <Cmd>lua MiniIndentscope.operator('top', true)<CR>
|
||||
Go to indent scope top
|
||||
n [d * <Lua 15: vim/_defaults.lua:0>
|
||||
n [d * vim/_defaults.lua
|
||||
Jump to the previous diagnostic
|
||||
o ]% <Plug>(MatchitOperationMultiForward)
|
||||
x ]% <Plug>(MatchitVisualMultiForward)
|
||||
n ]% <Plug>(MatchitNormalMultiForward)
|
||||
o ]i * <Cmd>lua MiniIndentscope.operator('bottom')<CR>
|
||||
Go to indent scope bottom
|
||||
x ]i * <Cmd>lua MiniIndentscope.operator('bottom')<CR>
|
||||
Go to indent scope bottom
|
||||
n ]i * <Cmd>lua MiniIndentscope.operator('bottom', true)<CR>
|
||||
Go to indent scope bottom
|
||||
o ]H * V<Cmd>lua MiniDiff.goto_hunk('last')<CR>
|
||||
Last hunk
|
||||
x ]H * <Cmd>lua MiniDiff.goto_hunk('last')<CR>
|
||||
@@ -71,62 +245,76 @@ x ]h * <Cmd>lua MiniDiff.goto_hunk('next')<CR>
|
||||
Next hunk
|
||||
n ]h * <Cmd>lua MiniDiff.goto_hunk('next')<CR>
|
||||
Next hunk
|
||||
o ]i * <Cmd>lua MiniIndentscope.operator('bottom')<CR>
|
||||
Go to indent scope bottom
|
||||
x ]i * <Cmd>lua MiniIndentscope.operator('bottom')<CR>
|
||||
Go to indent scope bottom
|
||||
n ]i * <Cmd>lua MiniIndentscope.operator('bottom', true)<CR>
|
||||
Go to indent scope bottom
|
||||
n ]d * <Lua 14: vim/_defaults.lua:0>
|
||||
n ]d * vim/_defaults.lua
|
||||
Jump to the next diagnostic
|
||||
x a% <Plug>(MatchitVisualTextObject)
|
||||
o ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||
Object scope with border
|
||||
x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||
Object scope with border
|
||||
o f * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
||||
Jump forward
|
||||
x f * <Cmd>lua MiniJump.smart_jump(false, false)<CR>
|
||||
Jump forward
|
||||
n f * <Cmd>lua MiniJump.smart_jump(false, false)<CR>
|
||||
Jump forward
|
||||
n gR * :RegexplainerToggle<CR>
|
||||
Toggle Regexplainer
|
||||
o g% <Plug>(MatchitOperationBackward)
|
||||
x g% <Plug>(MatchitVisualBackward)
|
||||
n g% <Plug>(MatchitNormalBackward)
|
||||
n gP * <Lua 454: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:132>
|
||||
Close preview windows
|
||||
n gpr * <Lua 453: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:114>
|
||||
Preview references
|
||||
n gpD * <Lua 452: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:105>
|
||||
Preview declaration
|
||||
n gpi * <Lua 451: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:91>
|
||||
Preview implementation
|
||||
n gpt * <Lua 450: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:77>
|
||||
Preview type definition
|
||||
n gpd * <Lua 449: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:63>
|
||||
Preview definition
|
||||
o gh * <Cmd>lua MiniDiff.textobject()<CR>
|
||||
Hunk range textobject
|
||||
x gH * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
|
||||
Reset hunks
|
||||
n gH * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
|
||||
Reset hunks
|
||||
x gh * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
|
||||
Apply hunks
|
||||
n gh * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
|
||||
Apply hunks
|
||||
x gs * <Cmd>lua MiniOperators.sort('visual')<CR>
|
||||
Sort selection
|
||||
n gss ^gsg_
|
||||
Sort line
|
||||
n gs * v:lua.MiniOperators.sort()
|
||||
Sort operator
|
||||
x gr * <Cmd>lua MiniOperators.replace('visual')<CR>
|
||||
Replace selection
|
||||
n grr gr_
|
||||
Replace line
|
||||
n gr * v:lua.MiniOperators.replace()
|
||||
Replace operator
|
||||
x gm * <Cmd>lua MiniOperators.multiply('visual')<CR>
|
||||
Multiply selection
|
||||
n gmm gm_
|
||||
Multiply line
|
||||
n gm * v:lua.MiniOperators.multiply()
|
||||
Multiply operator
|
||||
n gxx gx_
|
||||
Exchange line
|
||||
x g= * <Cmd>lua MiniOperators.evaluate('visual')<CR>
|
||||
Evaluate selection
|
||||
n g== g=_
|
||||
Evaluate line
|
||||
n g= * v:lua.MiniOperators.evaluate()
|
||||
Evaluate operator
|
||||
x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR>
|
||||
Toggle arguments
|
||||
n gS * v:lua.MiniSplitjoin.operator("toggle") . " "
|
||||
Toggle arguments
|
||||
o gh * <Cmd>lua MiniDiff.textobject()<CR>
|
||||
Hunk range textobject
|
||||
x gH * <Lua 417: ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua:960>
|
||||
Reset hunks
|
||||
n gH * <Lua 416: ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua:960>
|
||||
Reset hunks
|
||||
x gh * <Lua 415: ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua:958>
|
||||
Apply hunks
|
||||
n gh * <Lua 414: ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua:958>
|
||||
Apply hunks
|
||||
o gc * <Lua 13: vim/_defaults.lua:0>
|
||||
o gc * <Cmd>lua MiniComment.textobject()<CR>
|
||||
Comment textobject
|
||||
n gcc * <Lua 12: vim/_defaults.lua:0>
|
||||
Toggle comment line
|
||||
x gc * <Lua 11: vim/_defaults.lua:0>
|
||||
Toggle comment
|
||||
n gc * <Lua 10: vim/_defaults.lua:0>
|
||||
Toggle comment
|
||||
x gx * <Lua 9: vim/_defaults.lua:0>
|
||||
Opens filepath or URI under cursor with the system handler (file explorer, web browser, …)
|
||||
n gx * <Lua 8: vim/_defaults.lua:0>
|
||||
Opens filepath or URI under cursor with the system handler (file explorer, web browser, …)
|
||||
n gcc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua
|
||||
Comment line
|
||||
x gc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua
|
||||
Comment selection
|
||||
n gc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua
|
||||
Comment
|
||||
x gx * <Cmd>lua MiniOperators.exchange('visual')<CR>
|
||||
Exchange selection
|
||||
n gx * v:lua.MiniOperators.exchange()
|
||||
Exchange operator
|
||||
o ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||
Object scope
|
||||
x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||
@@ -135,50 +323,78 @@ n j * v:count == 0 ? 'gj' : 'j'
|
||||
Move down
|
||||
n k * v:count == 0 ? 'gk' : 'k'
|
||||
Move up
|
||||
o r * <Lua 97: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Remote Flash
|
||||
n shn * <Lua 547: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n shn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Highlight next surrounding
|
||||
n sFn * <Lua 546: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sFn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Find next left surrounding
|
||||
n sfn * <Lua 545: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sfn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Find next right surrounding
|
||||
n srn * <Lua 544: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n srn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Replace next surrounding
|
||||
n sdn * <Lua 543: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sdn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Delete next surrounding
|
||||
n shl * <Lua 542: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n shl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Highlight previous surrounding
|
||||
n sFl * <Lua 541: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sFl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Find previous left surrounding
|
||||
n sfl * <Lua 540: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sfl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Find previous right surrounding
|
||||
n srl * <Lua 539: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n srl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Replace previous surrounding
|
||||
n sdl * <Lua 538: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sdl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Delete previous surrounding
|
||||
x sa * :<C-U>lua MiniSurround.add('visual')<CR>
|
||||
Add surrounding to selection
|
||||
n sn * <Lua 537: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:895>
|
||||
n sn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Update `MiniSurround.config.n_lines`
|
||||
n sh * <Lua 536: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sh * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Highlight surrounding
|
||||
n sF * <Lua 535: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sF * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Find left surrounding
|
||||
n sf * <Lua 534: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sf * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Find right surrounding
|
||||
n sr * <Lua 533: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sr * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Replace surrounding
|
||||
n sd * <Lua 532: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sd * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Delete surrounding
|
||||
n sa * <Lua 531: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
n sa * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
||||
Add surrounding
|
||||
n zk * <Lua 100: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
o t * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
||||
Jump forward till
|
||||
x t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
||||
Jump forward till
|
||||
n t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
||||
Jump forward till
|
||||
x zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash
|
||||
o zk * <Lua 94: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash
|
||||
x zk * <Lua 92: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
o zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash
|
||||
n <C-W>= * <C-W>=
|
||||
Equal Size Splits
|
||||
n <C-W>+ * :resize +5<CR>
|
||||
H Resize +
|
||||
n <C-W>- * :resize -5<CR>
|
||||
H Resize -
|
||||
n <C-W>. * :vertical resize +10<CR>
|
||||
V Resize +
|
||||
n <C-W>, * :vertical resize -10<CR>
|
||||
V Resize -
|
||||
v <C-J> * :m '>+1<CR>gv=gv
|
||||
Move Block Down
|
||||
n <C-J> * :m '>+1<CR>gv=gv
|
||||
Move Block Down
|
||||
v <C-K> * :m '<-2<CR>gv=gv
|
||||
Move Block Up
|
||||
n <C-K> * :m '<-2<CR>gv=gv
|
||||
Move Block Up
|
||||
n <C-S> * :w!<CR>
|
||||
Save
|
||||
n <Down> * :echo "Use j to move!!"<CR>
|
||||
n <Up> * :echo "Use k to move!!"<CR>
|
||||
n <Right> * :echo "Use l to move!!"<CR>
|
||||
n <Left> * :echo "Use h to move!!"<CR>
|
||||
x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
||||
o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR>
|
||||
o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR>
|
||||
@@ -192,29 +408,29 @@ x <Plug>(MatchitVisualBackward) * :<C-U>call matchit#Match_wrapper('',0,'v')<CR
|
||||
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
||||
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
||||
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
||||
s <Plug>luasnip-jump-prev * <Lua 345: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:57>
|
||||
LuaSnip: Jump to the previous node
|
||||
s <Plug>luasnip-jump-next * <Lua 344: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:54>
|
||||
LuaSnip: Jump to the next node
|
||||
s <Plug>luasnip-prev-choice * <Lua 343: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:51>
|
||||
LuaSnip: Change to the previous choice from the choiceNode
|
||||
s <Plug>luasnip-next-choice * <Lua 342: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:48>
|
||||
LuaSnip: Change to the next choice from the choiceNode
|
||||
s <Plug>luasnip-expand-snippet * <Lua 341: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:45>
|
||||
LuaSnip: Expand the current snippet
|
||||
s <Plug>luasnip-expand-or-jump * <Lua 340: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:42>
|
||||
LuaSnip: Expand or jump in the current snippet
|
||||
<Plug>luasnip-expand-repeat * <Lua 338: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:35>
|
||||
LuaSnip: Repeat last node expansion
|
||||
n <Plug>luasnip-delete-check * <Lua 336: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:28>
|
||||
LuaSnip: Removes current snippet from jumplist
|
||||
n <M-k> * <Cmd>lua MiniMove.move_line('up')<CR>
|
||||
Move line up
|
||||
n <M-j> * <Cmd>lua MiniMove.move_line('down')<CR>
|
||||
Move line down
|
||||
n <M-l> * <Cmd>lua MiniMove.move_line('right')<CR>
|
||||
Move line right
|
||||
n <M-h> * <Cmd>lua MiniMove.move_line('left')<CR>
|
||||
Move line left
|
||||
x <M-k> * <Cmd>lua MiniMove.move_selection('up')<CR>
|
||||
Move up
|
||||
x <M-j> * <Cmd>lua MiniMove.move_selection('down')<CR>
|
||||
Move down
|
||||
x <M-l> * <Cmd>lua MiniMove.move_selection('right')<CR>
|
||||
Move right
|
||||
x <M-h> * <Cmd>lua MiniMove.move_selection('left')<CR>
|
||||
Move left
|
||||
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
||||
n <C-W><C-D> <C-W>d
|
||||
Show diagnostics under the cursor
|
||||
n <C-W>d * <Lua 16: vim/_defaults.lua:0>
|
||||
n <C-W>d * vim/_defaults.lua
|
||||
Show diagnostics under the cursor
|
||||
n <C-L> * <Cmd>nohlsearch|diffupdate|normal! <C-L><CR>
|
||||
:help CTRL-L-default
|
||||
n <C-L> * :lua vim.lsp.buf.signature_help()<CR>
|
||||
Signature
|
||||
```
|
||||
|
||||
- Generated on Fri 22 Nov 2024 15:30:39 EET
|
||||
- Generated on Mon 9 Dec 2024 10:05:25 EET
|
||||
|
||||
@@ -19,8 +19,12 @@ main()
|
||||
|
||||
printf "\n\`\`\`\n\n- Generated on %s\n" "$(date)" >> "$DEST"
|
||||
|
||||
# Remove lines with "Last set from" from the file
|
||||
sed -e '/^ Last set from/d' "$DEST" > "${DEST}.tmp" && mv "${DEST}.tmp" "$DEST"
|
||||
# Remove unnecessary information from the output and the last line
|
||||
sed -E \
|
||||
-e 's/<Lua [^:]+: ([^:>]+):[0-9]+>/\1/' \
|
||||
-e '/^ Last set from/d' "$DEST" \
|
||||
> "${DEST}.tmp" \
|
||||
&& mv "${DEST}.tmp" "$DEST"
|
||||
|
||||
msg "Neovim keybindings documentation generated at $DEST"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user