feat(nvim): keymaps tweaks, cleanup, docs

This commit is contained in:
2024-09-25 14:52:56 +03:00
parent 8f96922033
commit 250e7f5666
18 changed files with 345 additions and 353 deletions

View File

@@ -31,7 +31,7 @@ return {
help = true,
},
},
}
},
},
config = function()
require('copilot_cmp').setup()
@@ -51,7 +51,7 @@ return {
min_width = 40,
max_width = 100,
symbol_map = {
Copilot = ''
Copilot = '',
},
},
},

View File

@@ -8,7 +8,7 @@ return {
keys = {
-- Stolen from https://github.com/erikw/dotfiles/blob/d68d6274d67ac47afa20b9a0b9f3b0fa54bcdaf3/.config/nvim/lua/plugins.lua
-- Search for files in given path.
{ '<Leader><space>', ':FZF<space>', desc = 'FZF: search for files in given path.' },
{ '<Leader>zf', ':FZF<space>', desc = 'FZF: search for files in given path.' },
-- Sublime-like shortcut 'go to file' ctrl+p.
{ '<C-p>', ':Files<CR>', desc = 'FZF: search for files starting at current directory.' },
{ '<Leader>zc', ':Commands<CR>', desc = 'FZF: search commands.' },

View File

@@ -3,6 +3,7 @@ return {
-- https://github.com/lewis6991/gitsigns.nvim
{
'lewis6991/gitsigns.nvim',
lazy = false,
config = function()
require('gitsigns').setup {
signs = {

View File

@@ -6,9 +6,10 @@ return {
{ 'nvim-telescope/telescope.nvim' },
},
keys = {
{ 'n', 'gp', group = 'Goto Preview' },
{ 'n', 'gpd', '<cmd>lua require("goto-preview").goto_preview_definition()<CR>' },
{ 'n', 'gpi', '<cmd>lua require("goto-preview").goto_preview_implementation()<CR>' },
{ 'n', 'gP', '<cmd>lua require("goto-preview").close_all_windows()<CR>' },
{ 'n', 'gpP', '<cmd>lua require("goto-preview").close_all_windows()<CR>' },
},
config = function()
require('goto-preview').setup {

View File

@@ -15,7 +15,7 @@ return {
vim.keymap.set('n', '<leader>ht', function()
harpoon.ui:toggle_quick_menu(harpoon:list())
end)
end, { desc = 'Open Harpoon Quick menu' })
-- basic telescope configuration
local conf = require('telescope.config').values
@@ -37,27 +37,27 @@ return {
:find()
end
vim.keymap.set('n', '<leader>xa', function()
vim.keymap.set('n', '<leader>hw', function()
toggle_telescope(harpoon:list())
end, { desc = 'Open harpoon window' })
end, { desc = 'Open harpoon window with telescope' })
end,
keys = {
{
'<leader>xa',
'<leader>ha',
function()
require('harpoon'):list():add()
end,
desc = 'harpoon file',
},
{
'<leader>xN',
'<leader>hp',
function()
require('harpoon'):list():prev()
end,
desc = 'harpoon to previous file',
},
{
'<leader>xn',
'<leader>hn',
function()
require('harpoon'):list():next()
end,

View File

@@ -1,16 +1,29 @@
return {
-- vscode-like pictograms for neovim lsp completion items
-- https://github.com/onsails/lspkind-nvim
{ 'onsails/lspkind.nvim' },
-- A better annotation generator.
-- Supports multiple languages and annotation conventions.
-- https://github.com/danymat/neogen
{
'danymat/neogen',
version = '*',
keys = {
{
'<leader>cg',
'<cmd>lua require("neogen").generate()<CR>',
desc = 'Generate annotations',
},
},
config = function()
require('neogen').setup {
enabled = true,
snippet_engine = 'luasnip',
}
end,
},
-- Rethinking Vim as a tool for writing
-- https://github.com/preservim/vim-pencil
{ 'preservim/vim-pencil' },
-- obsession.vim: continuously updated session files
-- https://github.com/tpope/vim-obsession
{ 'tpope/vim-obsession' },
-- surround.vim: Delete/change/add parentheses/quotes/XML-tags/much more with ease
-- https://github.com/tpope/vim-surround
{ 'tpope/vim-surround' },
@@ -25,11 +38,6 @@ return {
end,
},
-- LSP Configuration & Plugins
-- Meta type definitions for the Lua platform Luvit.
-- https://github.com/Bilal2453/luvit-meta
{ 'Bilal2453/luvit-meta', lazy = true },
-- Indent guides for Neovim
-- https://github.com/lukas-reineke/indent-blankline.nvim
{

View File

@@ -1,65 +1,39 @@
-- Quickstart configs for Nvim LSP
-- https://github.com/neovim/nvim-lspconfig
return {
-- Neovim plugin to manage global and project-local settings
-- Should be included before LSP Config
-- https://github.com/folke/neoconf.nvim
{
'folke/neoconf.nvim',
keys = {
{ '<leader>?c', '<cmd>Neoconf<CR>', desc = 'Neoconf: Open' },
{ '<leader>?g', '<cmd>Neoconf global<CR>', desc = 'Neoconf: Global' },
{ '<leader>?l', '<cmd>Neoconf local<CR>', desc = 'Neoconf: Local' },
{ '<leader>?m', '<cmd>Neoconf lsp<CR>', desc = 'Neoconf: Show merged LSP config' },
{ '<leader>?s', '<cmd>Neoconf show<CR>', desc = 'Neoconf: Show merged config' },
},
config = function()
require('neoconf').setup()
end,
},
{
'neovim/nvim-lspconfig',
lazy = false,
dependencies = {
-- Neovim plugin to manage global and project-local settings
-- Should be included before LSP Config
-- https://github.com/folke/neoconf.nvim
{
'folke/neoconf.nvim',
lazy = false,
keys = {
{ '<leader>?c', '<cmd>Neoconf<CR>', desc = 'Neoconf: Open' },
{ '<leader>?g', '<cmd>Neoconf global<CR>', desc = 'Neoconf: Global' },
{ '<leader>?l', '<cmd>Neoconf local<CR>', desc = 'Neoconf: Local' },
{ '<leader>?m', '<cmd>Neoconf lsp<CR>', desc = 'Neoconf: Show merged LSP config' },
{ '<leader>?s', '<cmd>Neoconf show<CR>', desc = 'Neoconf: Show merged config' },
},
config = function()
require('neoconf').setup()
end,
},
-- Automatically install LSPs to stdpath for neovim
'williamboman/mason.nvim',
{
'williamboman/mason.nvim',
lazy = false,
run = ':call MasonUpdate',
},
'williamboman/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
-- Useful status updates for LSP
{
'j-hui/fidget.nvim',
opts = {
notification = {
window = {
winblend = 50,
align = 'top',
},
},
},
},
'b0o/schemastore.nvim',
{
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis
'folke/lazydev.nvim',
dependencies = {
-- `wezterm-types` provides types for the Wezterm terminal
{
'justinsgithub/wezterm-types',
as = 'wezterm',
},
},
ft = 'lua',
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
-- Load wezterm types when the `wezterm` word is found
{ path = 'wezterm-types', mods = { 'wezterm' } },
},
},
},
'folke/neoconf.nvim',
-- vscode-like pictograms for neovim lsp completion items
-- https://github.com/onsails/lspkind-nvim
{ 'onsails/lspkind.nvim' },
},
keys = {
{ '<leader>do', '<cmd>lua vim.diagnostic.open_float()<CR>', desc = 'Diagnostic: Open float' },
@@ -215,7 +189,7 @@ return {
end
-- Turn on lsp status information
require('fidget').setup()
-- require('fidget').setup()
-- Example custom configuration for lua
--

View File

@@ -66,19 +66,17 @@ return {
local wk = require 'which-key'
wk.add {
-- { '<leader><space>', b.buffers, desc = '[ ] Find existing buffers' },
{ '<leader>gR', "<cmd>lua require('telescope').extensions.git_worktree.create_git_worktree()<CR>", desc = 'Create Git worktree' },
{ '<leader>gr', "<cmd>lua require('telescope').extensions.git_worktree.git_worktrees()<CR>", desc = 'Git worktrees' },
{ '<leader>sS', b.git_status, desc = '' },
{ '<leader>sd', b.diagnostics, desc = '[S]earch [D]iagnostics' },
{ '<leader>sf', b.find_files, desc = '[S]earch [F]iles' },
{ '<leader>sg', b.live_grep, desc = '[S]earch by [G]rep' },
{ '<leader><space>', b.buffers, desc = '[ ] Find existing buffers' },
{ '<leader><tab>', "<Cmd>lua require('telescope.builtin').commands()<CR>", desc = 'Telescope: Commands' },
{ '<leader>sS', b.git_status, desc = 'Git Status' },
{ '<leader>sd', b.diagnostics, desc = 'Search Diagnostics' },
{ '<leader>sf', b.find_files, desc = 'Search Files' },
{ '<leader>sg', b.live_grep, desc = 'Search by Grep' },
{ '<leader>sm', ':Telescope harpoon marks<CR>', desc = 'Harpoon Marks' },
{ '<leader>sn', "<cmd>lua require('telescope').extensions.notify.notify()<CR>", desc = 'Notify' },
{ '<leader>so', b.oldfiles, desc = '[?] Find recently opened files' },
{ '<leader>sw', b.grep_string, desc = '[S]earch current [W]ord' },
{ '<leader>so', b.oldfiles, desc = 'Find recently Opened files' },
{ '<leader>st', ':TodoTelescope<CR>', desc = 'Telescope: Todo' },
{ '<leader><tab>', "<Cmd>lua require('telescope.builtin').commands()<CR>", desc = 'Telescope: Commands' },
{ '<leader>sw', b.grep_string, desc = 'Search current Word' },
}
vim.keymap.set('n', '<leader>/', function()

View File

@@ -10,6 +10,10 @@ return {
},
config = function()
require('nvim-treesitter.configs').setup {
auto_install = true,
ignore_install = {},
sync_install = true,
modules = {},
-- Add languages to be installed here that you want installed for treesitter
ensure_installed = {
@@ -95,10 +99,10 @@ return {
swap = {
enable = true,
swap_next = {
['<leader>a'] = '@parameter.inner',
['<leader>cn'] = '@parameter.inner',
},
swap_previous = {
['<leader>A'] = '@parameter.inner',
['<leader>cP'] = '@parameter.inner',
},
},
},

View File

@@ -3,12 +3,12 @@ return {
lazy = false,
dependencies = 'nvim-tree/nvim-web-devicons',
keys = {
{ '<leader>xx', '<cmd>TroubleToggle<cr>', desc = 'Toggle Trouble' },
{ '<leader>xw', '<cmd>TroubleToggle workspace_diagnostics<cr>', desc = 'Toggle Workspace Diagnostics' },
{ '<leader>xd', '<cmd>TroubleToggle document_diagnostics<cr>', desc = 'Toggle Document Diagnostics' },
{ '<leader>xl', '<cmd>TroubleToggle loclist<cr>', desc = 'Toggle Loclist' },
{ '<leader>xq', '<cmd>TroubleToggle quickfix<cr>', desc = 'Toggle Quickfix' },
{ 'gR', '<cmd>TroubleToggle lsp_references<cr>', desc = 'Toggle LSP References' },
{ '<leader>xx', '<cmd>Trouble<cr>', desc = 'Toggle Trouble' },
{ '<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' },
{ 'gR', '<cmd>Trouble lsp_references<cr>', desc = 'Toggle LSP References' },
},
config = function()
require('trouble').setup {

View File

@@ -1,3 +1,22 @@
-- Not UFO in the sky, but an ultra fold in Neovim.
-- https://github.com/kevinhwang91/nvim-ufo/
-- 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.
-- The handler is called with the following arguments:
-- virtText: The current virtual text list.
-- lnum: The line number of the first line in the fold.
-- endLnum: The line number of the last line in the fold.
-- width: The width of the window.
--
--@type function
--@param virtText
--@param lnum
--@param endLnum
--@param width
--@param truncate
--@return table
local handler = function(virtText, lnum, endLnum, width, truncate)
local newVirtText = {}
local suffix = (' 󰁂 %d '):format(endLnum - lnum)
@@ -27,8 +46,6 @@ local handler = function(virtText, lnum, endLnum, width, truncate)
end
return {
-- Not UFO in the sky, but an ultra fold in Neovim.
-- https://github.com/kevinhwang91/nvim-ufo/
{
'kevinhwang91/nvim-ufo',
lazy = false,

View File

@@ -72,6 +72,9 @@ return {
enabled = true,
lazy = false,
version = '*',
keys = {
{ '<leader>tc', '<cmd>CloakToggle<cr>', desc = '[tc] Toggle Cloak' },
},
config = function()
require('cloak').setup {
enabled = true,
@@ -95,9 +98,6 @@ return {
},
}
end,
keys = {
{ '<leader>tc', '<cmd>CloakToggle<cr>', desc = '[tc] Toggle Cloak' },
},
},
-- Close buffer without messing up with the window.
-- https://github.com/famiu/bufdelete.nvim
@@ -125,18 +125,6 @@ return {
{
'LudoPinelli/comment-box.nvim',
opts = {},
init = function()
local wk = require 'which-key'
wk.add {
{ '<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' },
}
end,
},
-- Automatically expand width of the current window.
-- Maximizes and restore it. And all this with nice animations!

View File

@@ -14,7 +14,14 @@ return {
wk.setup()
wk.add {
-- Groups
-- Better default experience
{ '<space>', '<Nop>', mode = { 'n', 'v' } },
-- ╭─────────────────────────────────────────────────────────╮
-- │ With leader │
-- ╰─────────────────────────────────────────────────────────╯
-- ── Buffer ──────────────────────────────────────────────────────────
{
'<leader>b',
group = '[b] Buffer',
@@ -22,17 +29,54 @@ return {
return require('which-key.extras').expand.buf()
end,
},
{ '<leader>bk', ':blast<cr>', desc = 'Buffer: Last', mode = 'n' },
{ '<leader>bj', ':bfirst<cr>', desc = 'Buffer: First', mode = 'n' },
{ '<leader>bh', ':bprev<cr>', desc = 'Buffer: Prev', mode = 'n' },
{ '<leader>bl', ':bnext<cr>', desc = 'Buffer: Next', mode = 'n' },
{ '<leader>bd', ':Bdelete<cr>', desc = 'Buffer: Delete', mode = 'n' },
{ '<leader>bw', ':Bwipeout<cr>', desc = 'Buffer: Wipeout', mode = 'n' },
-- ── Code ────────────────────────────────────────────────────────────
{ '<leader>c', group = '[c] Code' },
{ '<leader>d', group = '[d] Document' },
-- ── 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' },
{ '<leader>d', group = '[d] DAP' },
-- See: lua/plugins/dap.lua
{ '<leader>g', group = '[g] Git' },
-- See: lua/plugins/git.lua
{ '<leader>h', group = '[h] Harpoon' },
-- See: lua/plugins/harpoon.lua
{ '<leader>l', group = '[l] LSP' },
{ '<leader>p', group = '[p] Project' },
-- See: lua/plugins/lsp.lua
-- ── Quit ────────────────────────────────────────────────────────────
{ '<leader>q', group = '[q] Quit' },
{ '<leader>qf', ':q<CR>', desc = 'Quicker close split' },
{ '<leader>qq', ':wq!<CR>', desc = 'Quit with force saving' },
{ '<leader>qw', ':wq<CR>', desc = 'Write and quit' },
{ '<leader>s', group = '[s] Search' },
-- See: lua/plugins/telescope.lua
-- ── Toggle ──────────────────────────────────────────────────────────
{ '<leader>t', group = '[t] Toggle' },
{ '<leader>tt', ':TransparentToggle<CR>', desc = 'Toggle Transparency' },
{ '<leader>ts', ':noh<CR>', desc = 'Toggle Search Highlighting' },
{ '<leader>w', group = '[w] Workspace' },
{ '<leader>x', group = '[z] Trouble' },
{ '<leader>z', group = '[x] FZF & Harpoon' },
{ '<leader>x', group = '[x] Trouble' },
{ '<leader>z', group = '[z] FZF' },
-- ── Help ────────────────────────────────────────────────────────────
{ '<leader>?', group = '[?] Help' },
{
'<leader>?w',
@@ -41,8 +85,56 @@ return {
end,
desc = 'Buffer Local Keymaps (which-key)',
},
-- Misc keybinds
-- ╭─────────────────────────────────────────────────────────╮
-- │ Without leader │
-- ╰─────────────────────────────────────────────────────────╯
{ 'y', group = 'Yank & Surround' },
-- ── Old habits ──────────────────────────────────────────────────────
{ '<C-s>', ':w<CR>', desc = 'Save file' },
-- ── Text manipulation in visual mode ────────────────────────────────
{ '>', '>gv', desc = 'Indent Right', mode = 'v' },
{ '<', '<gv', desc = 'Indent Left', mode = 'v' },
{ 'J', ":m '>+1<CR>gv=gv", desc = 'Move Block Down', mode = 'v' },
{ 'K', ":m '<-2<CR>gv=gv", desc = 'Move Block Up', mode = 'v' },
-- ── Misc keybinds ───────────────────────────────────────────────────
{ 'QQ', ':q!<CR>', desc = 'Quit without saving' },
{ 'WW', ':w!<CR>', desc = 'Force write to file' },
{ 'ss', ':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>,', ':vertical resize -10<CR>', desc = 'V Resize -' },
{ '<C-w>.', ':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>', ':noh<CR>', desc = 'Clear search highlights' },
}
end,
}