Refine keymap descriptions for clarity and consistency
Updated keymap descriptions across various plugins to include specific prefixes for better identification and organization.
This commit is contained in:
parent
99ea741fbb
commit
f4f6260b20
|
|
@ -14,16 +14,16 @@ local map = vim.keymap.set
|
|||
map('n', 'gd', function()
|
||||
-- Built-in: jump to definition via tags or included files
|
||||
vim.cmd("normal! gd")
|
||||
end, { desc = 'Go to definition (built-in fallback)', silent = true })
|
||||
end, { desc = 'Vim: Go to definition (built-in fallback)', silent = true })
|
||||
|
||||
map('n', 'gD', function()
|
||||
-- Built-in: jump to declaration (global)
|
||||
vim.cmd("normal! gD")
|
||||
end, { desc = 'Go to declaration (built-in fallback)', silent = true })
|
||||
end, { desc = 'Vim: Go to declaration (built-in fallback)', silent = true })
|
||||
|
||||
-- LSP-only keymaps (no useful fallback for these in non-LSP contexts)
|
||||
map('n', 'gr', '<Nop>', { desc = 'References (requires LSP)', silent = true })
|
||||
map('n', 'gI', '<Nop>', { desc = 'Implementation (requires LSP)', silent = true })
|
||||
map('n', 'gr', '<Nop>', { desc = 'LSP: References (requires LSP)', silent = true })
|
||||
map('n', 'gI', '<Nop>', { desc = 'LSP: Implementation (requires LSP)', silent = true })
|
||||
|
||||
-- K: Hover/Help with sensible fallback
|
||||
map('n', 'K', function()
|
||||
|
|
@ -32,20 +32,20 @@ map('n', 'K', function()
|
|||
if vim.bo.keywordprg ~= '' then
|
||||
vim.cmd("normal! K")
|
||||
end
|
||||
end, { desc = 'Hover/Help (LSP or keywordprg fallback)', silent = true })
|
||||
end, { desc = 'Vim: Hover/Help (keywordprg fallback)', silent = true })
|
||||
|
||||
-- Diagnostic keymaps
|
||||
map('n', '<leader>xx', vim.diagnostic.setloclist, { desc = 'Show buffer diagnostics in location list', silent = true })
|
||||
map('n', '<leader>xX', vim.diagnostic.setqflist, { desc = 'Show all diagnostics in quickfix', silent = true })
|
||||
map('n', '<leader>xx', vim.diagnostic.setloclist, { desc = 'Diagnostics: Buffer diagnostics (location list)', silent = true })
|
||||
map('n', '<leader>xX', vim.diagnostic.setqflist, { desc = 'Diagnostics: All diagnostics (quickfix)', silent = true })
|
||||
map('n', '<leader>xe', function()
|
||||
vim.diagnostic.setloclist({ severity = vim.diagnostic.severity.ERROR })
|
||||
end, { desc = 'Show buffer errors in location list', silent = true })
|
||||
end, { desc = 'Diagnostics: Buffer errors (location list)', silent = true })
|
||||
map('n', '<leader>xE', function()
|
||||
vim.diagnostic.setqflist({ severity = vim.diagnostic.severity.ERROR })
|
||||
end, { desc = 'Show all errors in quickfix', silent = true })
|
||||
map('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic', silent = true })
|
||||
map('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic', silent = true })
|
||||
map('n', '<leader>xd', vim.diagnostic.open_float, { desc = 'Show diagnostic under cursor', silent = true })
|
||||
end, { desc = 'Diagnostics: All errors (quickfix)', silent = true })
|
||||
map('n', '[d', vim.diagnostic.goto_prev, { desc = 'Diagnostics: Previous diagnostic', silent = true })
|
||||
map('n', ']d', vim.diagnostic.goto_next, { desc = 'Diagnostics: Next diagnostic', silent = true })
|
||||
map('n', '<leader>xd', vim.diagnostic.open_float, { desc = 'Diagnostics: Show diagnostic under cursor', silent = true })
|
||||
|
||||
-- Debug: Show highlight group and color under cursor
|
||||
map('n', '<leader>hi', function()
|
||||
|
|
@ -180,4 +180,4 @@ map('n', '<leader>hi', function()
|
|||
}
|
||||
|
||||
vim.api.nvim_open_win(buf, false, opts)
|
||||
end, { desc = 'Show highlight group and color under cursor', silent = true })
|
||||
end, { desc = 'Debug: Show highlight group and color under cursor', silent = true })
|
||||
|
|
|
|||
|
|
@ -44,10 +44,18 @@ map('n', '<leader>te', function()
|
|||
local current_file_dir = vim.fn.expand('%:p:h')
|
||||
vim.cmd('tabnew')
|
||||
vim.cmd('Explore ' .. vim.fn.fnameescape(current_file_dir))
|
||||
end, { desc = 'Tab explore (current file dir)', silent = true })
|
||||
end, { desc = 'Netrw: Tab explore (current file dir)', silent = true })
|
||||
|
||||
-- Open netrw in new tab at project root (cwd)
|
||||
map('n', '<leader>tE', function()
|
||||
vim.cmd('tabnew')
|
||||
vim.cmd('Explore ' .. vim.fn.fnameescape(vim.fn.getcwd()))
|
||||
end, { desc = 'Tab explore (project root)', silent = true })
|
||||
end, { desc = 'Netrw: Tab explore (project root)', silent = true })
|
||||
-- Enable line numbers in netrw buffers
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
pattern = 'netrw',
|
||||
callback = function()
|
||||
vim.opt_local.number = true
|
||||
vim.opt_local.relativenumber = true
|
||||
end,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -30,28 +30,28 @@ return {
|
|||
if vim.wo.diff then return ']c' end
|
||||
vim.schedule(function() gs.next_hunk() end)
|
||||
return '<Ignore>'
|
||||
end, { expr = true, desc = 'Next hunk' })
|
||||
end, { expr = true, desc = 'Gitsigns: Next hunk' })
|
||||
|
||||
map('n', '[h', function()
|
||||
if vim.wo.diff then return '[c' end
|
||||
vim.schedule(function() gs.prev_hunk() end)
|
||||
return '<Ignore>'
|
||||
end, { expr = true, desc = 'Previous hunk' })
|
||||
end, { expr = true, desc = 'Gitsigns: Previous hunk' })
|
||||
|
||||
-- Hunk actions
|
||||
map('n', '<leader>hs', gs.stage_hunk, { desc = 'Stage hunk' })
|
||||
map('n', '<leader>hr', gs.reset_hunk, { desc = 'Reset hunk' })
|
||||
map('v', '<leader>hs', function() gs.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end, { desc = 'Stage hunk' })
|
||||
map('v', '<leader>hr', function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end, { desc = 'Reset hunk' })
|
||||
map('n', '<leader>hS', gs.stage_buffer, { desc = 'Stage buffer' })
|
||||
map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'Undo stage hunk' })
|
||||
map('n', '<leader>hR', gs.reset_buffer, { desc = 'Reset buffer' })
|
||||
map('n', '<leader>hp', gs.preview_hunk, { desc = 'Preview hunk' })
|
||||
map('n', '<leader>hd', gs.diffthis, { desc = 'Diff this' })
|
||||
map('n', '<leader>hD', function() gs.diffthis('~') end, { desc = 'Diff this ~' })
|
||||
map('n', '<leader>hs', gs.stage_hunk, { desc = 'Gitsigns: Stage hunk' })
|
||||
map('n', '<leader>hr', gs.reset_hunk, { desc = 'Gitsigns: Reset hunk' })
|
||||
map('v', '<leader>hs', function() gs.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end, { desc = 'Gitsigns: Stage hunk' })
|
||||
map('v', '<leader>hr', function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end, { desc = 'Gitsigns: Reset hunk' })
|
||||
map('n', '<leader>hS', gs.stage_buffer, { desc = 'Gitsigns: Stage buffer' })
|
||||
map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'Gitsigns: Undo stage hunk' })
|
||||
map('n', '<leader>hR', gs.reset_buffer, { desc = 'Gitsigns: Reset buffer' })
|
||||
map('n', '<leader>hp', gs.preview_hunk, { desc = 'Gitsigns: Preview hunk' })
|
||||
map('n', '<leader>hd', gs.diffthis, { desc = 'Gitsigns: Diff this' })
|
||||
map('n', '<leader>hD', function() gs.diffthis('~') end, { desc = 'Gitsigns: Diff this ~' })
|
||||
|
||||
-- Text object
|
||||
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = 'Select hunk' })
|
||||
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = 'Gitsigns: Select hunk' })
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,16 +104,16 @@ return {
|
|||
vim.g.format_on_save = not vim.g.format_on_save
|
||||
local status = vim.g.format_on_save and "enabled" or "disabled"
|
||||
vim.notify("Format on save " .. status, vim.log.levels.INFO)
|
||||
end, { desc = "Toggle format on save", silent = true, noremap = true })
|
||||
end, { desc = "Formatting: Toggle format on save", silent = true, noremap = true })
|
||||
|
||||
-- Manual format (buffer)
|
||||
vim.keymap.set("n", "<leader>lf", function()
|
||||
vim.lsp.buf.format({ async = false })
|
||||
end, { desc = "Format buffer", silent = true, noremap = true })
|
||||
end, { desc = "Formatting: Format buffer", silent = true, noremap = true })
|
||||
|
||||
-- Manual format (visual range)
|
||||
vim.keymap.set("v", "<leader>lf", function()
|
||||
vim.lsp.buf.format({ async = false })
|
||||
end, { desc = "Format selection", silent = true, noremap = true })
|
||||
end, { desc = "Formatting: Format selection", silent = true, noremap = true })
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,12 +4,15 @@
|
|||
|
||||
return {
|
||||
'stevearc/oil.nvim',
|
||||
lazy = false,
|
||||
-- set lazy loading
|
||||
lazy = true,
|
||||
keys = {
|
||||
{ '<leader>fo', '<cmd>Oil<cr>', desc = 'Open Oil file browser' },
|
||||
{ '<leader>fO', '<cmd>Oil --float<cr>', desc = 'Open Oil in floating window' },
|
||||
{ '<leader>fo', '<cmd>Oil<cr>', desc = 'Oil: Open file browser' },
|
||||
{ '<leader>fO', '<cmd>Oil --float<cr>', desc = 'Oil: Open in floating window' },
|
||||
},
|
||||
opts = {
|
||||
-- Don't hijack netrw - allow both to coexist
|
||||
default_file_explorer = false,
|
||||
-- Columns shown in the oil buffer
|
||||
columns = {
|
||||
'icon',
|
||||
|
|
@ -32,6 +35,8 @@ return {
|
|||
list = false,
|
||||
conceallevel = 3,
|
||||
concealcursor = 'nvic',
|
||||
number = true,
|
||||
relativenumber = true,
|
||||
},
|
||||
-- Delete to trash instead of permanently deleting
|
||||
delete_to_trash = false,
|
||||
|
|
|
|||
|
|
@ -80,26 +80,30 @@ return {
|
|||
end,
|
||||
keys = {
|
||||
-- Find files in current working directory
|
||||
{ '<leader>ff', '<cmd>Telescope find_files<cr>', desc = 'Find files' },
|
||||
{ '<leader>ff', '<cmd>Telescope find_files<cr>', desc = 'Telescope: Find files' },
|
||||
|
||||
-- Live grep (search text across project)
|
||||
{ '<leader>fg', '<cmd>Telescope live_grep<cr>', desc = 'Live grep' },
|
||||
{ '<leader>fg', '<cmd>Telescope live_grep<cr>', desc = 'Telescope: Live grep' },
|
||||
|
||||
-- Search in open buffers
|
||||
{ '<leader>fb', '<cmd>Telescope buffers<cr>', desc = 'Find buffers' },
|
||||
{ '<leader>fb', '<cmd>Telescope buffers<cr>', desc = 'Telescope: Find buffers' },
|
||||
|
||||
-- Search help tags
|
||||
{ '<leader>fh', '<cmd>Telescope help_tags<cr>', desc = 'Find help' },
|
||||
{ '<leader>fh', '<cmd>Telescope help_tags<cr>', desc = 'Telescope: Find help' },
|
||||
|
||||
-- Recent files
|
||||
{ '<leader>fr', '<cmd>Telescope oldfiles<cr>', desc = 'Recent files' },
|
||||
{ '<leader>fr', '<cmd>Telescope oldfiles<cr>', desc = 'Telescope: Recent files' },
|
||||
|
||||
-- Search current buffer
|
||||
{ '<leader>/', '<cmd>Telescope current_buffer_fuzzy_find<cr>', desc = 'Search buffer' },
|
||||
{ '<leader>/', '<cmd>Telescope current_buffer_fuzzy_find<cr>', desc = 'Telescope: Search buffer' },
|
||||
|
||||
-- Search keymaps
|
||||
{ '<leader>fk', '<cmd>Telescope keymaps<cr>', desc = 'Telescope: Find keymaps' },
|
||||
{ '<leader>?', '<cmd>Telescope keymaps<cr>', desc = 'Telescope: Find keymaps' },
|
||||
|
||||
-- LSP-related pickers (optional, for when LSP is active)
|
||||
{ '<leader>fs', '<cmd>Telescope lsp_document_symbols<cr>', desc = 'Document symbols' },
|
||||
{ '<leader>fS', '<cmd>Telescope lsp_dynamic_workspace_symbols<cr>', desc = 'Workspace symbols (dynamic)' },
|
||||
{ '<leader>fs', '<cmd>Telescope lsp_document_symbols<cr>', desc = 'Telescope: Document symbols' },
|
||||
{ '<leader>fS', '<cmd>Telescope lsp_dynamic_workspace_symbols<cr>', desc = 'Telescope: Workspace symbols' },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,17 +6,17 @@ return {
|
|||
},
|
||||
event = { 'BufReadPost', 'BufNewFile' },
|
||||
keys = {
|
||||
{ 'zR', function() require('ufo').openAllFolds() end, desc = 'Open all folds' },
|
||||
{ 'zM', function() require('ufo').closeAllFolds() end, desc = 'Close all folds' },
|
||||
{ 'zr', function() require('ufo').openFoldsExceptKinds() end, desc = 'Open folds except kinds' },
|
||||
{ 'zm', function() require('ufo').closeFoldsWith() end, desc = 'Close folds with' },
|
||||
{ 'zR', function() require('ufo').openAllFolds() end, desc = 'UFO: Open all folds' },
|
||||
{ 'zM', function() require('ufo').closeAllFolds() end, desc = 'UFO: Close all folds' },
|
||||
{ 'zr', function() require('ufo').openFoldsExceptKinds() end, desc = 'UFO: Open folds except kinds' },
|
||||
{ 'zm', function() require('ufo').closeFoldsWith() end, desc = 'UFO: Close folds with' },
|
||||
{ 'K', function()
|
||||
local winid = require('ufo').peekFoldedLinesUnderCursor()
|
||||
if not winid then
|
||||
-- Fall back to LSP hover if not on a fold
|
||||
vim.lsp.buf.hover()
|
||||
end
|
||||
end, desc = 'Peek fold or LSP hover' },
|
||||
end, desc = 'UFO: Peek fold or LSP hover' },
|
||||
},
|
||||
opts = {
|
||||
provider_selector = function(bufnr, filetype, buftype)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ return {
|
|||
'mbbill/undotree',
|
||||
cmd = 'UndotreeToggle', -- Lazy load on command
|
||||
keys = {
|
||||
{ '<leader>u', '<cmd>UndotreeToggle<cr>', desc = 'Toggle Undotree' },
|
||||
{ '<leader>u', '<cmd>UndotreeToggle<cr>', desc = 'Undotree: Toggle undo tree' },
|
||||
},
|
||||
config = function()
|
||||
-- Configure undotree
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Test file for PHP LSP diagnostics
|
||||
* Tests error, warning, info, and hint virtual text colors
|
||||
*
|
||||
*
|
||||
* Note: Configure Intelephense to show different diagnostic levels:
|
||||
* - diagnostics.undefinedSymbols = true (errors)
|
||||
* - diagnostics.undefinedVariables = true (warnings)
|
||||
|
|
@ -11,10 +12,10 @@
|
|||
|
||||
// Define some valid functions and variables first to avoid cascading errors
|
||||
function validFunction(): void {
|
||||
echo "This is valid\n";
|
||||
echo "This is valid\n";
|
||||
}
|
||||
|
||||
$definedVariable = "I exist";
|
||||
$definedVariable = 'I exist';
|
||||
|
||||
// ERROR: Undefined function
|
||||
someUndefinedFunction();
|
||||
|
|
@ -23,26 +24,26 @@ someUndefinedFunction();
|
|||
echo $completelyUndefined;
|
||||
|
||||
// WARNING/HINT: Unused variable (depends on Intelephense config)
|
||||
$unused = "Never used anywhere";
|
||||
$unused = 'Never used anywhere';
|
||||
|
||||
// Valid code to separate errors
|
||||
validFunction();
|
||||
|
||||
// ERROR: Wrong number of arguments
|
||||
function requiresTwoArgs(string $a, string $b): void {
|
||||
echo "$a $b\n";
|
||||
function requiresTwoArgs( string $a, string $b ): void {
|
||||
echo "$a $b\n";
|
||||
}
|
||||
requiresTwoArgs("only one"); // Missing second argument
|
||||
requiresTwoArgs( 'only one' ); // Missing second argument
|
||||
|
||||
// ERROR: Type mismatch
|
||||
function expectsString(string $param): void {
|
||||
echo $param;
|
||||
function expectsString( string $param ): void {
|
||||
echo $param;
|
||||
}
|
||||
expectsString(123); // Passing int to string parameter
|
||||
expectsString( 123 ); // Passing int to string parameter
|
||||
|
||||
// WARNING: Variable might not be defined in all code paths
|
||||
if (rand(0, 1)) {
|
||||
$maybeUndefined = "sometimes defined";
|
||||
if ( rand( 0, 1 ) ) {
|
||||
$maybeUndefined = 'sometimes defined';
|
||||
}
|
||||
// Commenting out to reduce errors: echo $maybeUndefined;
|
||||
|
||||
|
|
@ -50,21 +51,20 @@ if (rand(0, 1)) {
|
|||
echo $definedVariable . "\n";
|
||||
|
||||
// ERROR: Calling method on non-object
|
||||
$notAnObject = "string";
|
||||
$notAnObject = 'string';
|
||||
$notAnObject->someMethod();
|
||||
|
||||
// ERROR: Invalid array access (multiple levels)
|
||||
$emptyArray = [];
|
||||
$emptyArray = array();
|
||||
echo $emptyArray['key']['nested']['deep'];
|
||||
|
||||
// Valid function call
|
||||
requiresTwoArgs("hello", "world");
|
||||
requiresTwoArgs( 'hello', 'world' );
|
||||
|
||||
// HINT/WARNING: Unreachable code (some configs)
|
||||
function hasDeadCode(): string {
|
||||
return "done";
|
||||
echo "This is unreachable"; // Dead code
|
||||
return 'done';
|
||||
echo 'This is unreachable'; // Dead code.
|
||||
}
|
||||
|
||||
echo "Test complete!\n";
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue