* chore(mappings): migrate legacy mappings under the hood
* chore(mappings): POC for help and :help on_attach keymaps
* chore(mappings): POC for help and :help on_attach keymaps
* chore(mappings): add desc to all mappings, show in help, reformat help
* chore(mappings): add desc to all mappings
* chore(mappings): add desc to all mappings
* chore(mappings): escape help keys
* chore(mappings): migrate legacy mappings under the hood: map keymap to legacy mappings
* chore(mappings): migrate legacy mappings under the hood: remove dispatch
* Revert "chore(mappings): migrate legacy mappings under the hood: remove dispatch"
This reverts commit f6f439ba59.
* chore(mappings): migrate legacy mappings under the hood: pass node to action_cb
* chore(mappings): migrate legacy mappings under the hood: remove dispatch
* chore(mappings): migrate legacy mappings under the hood: replace mappigns with keymaps in help
* chore(mappings): generate on_attach from user's legacy mappings
* chore(mappings): generate on_attach from user's legacy mappings
* chore(mappings): merge cleanup
* chore(mappings): use default mappings when on_attach not present, log legacy migration
* on_attach is default or user only, legacy and generation includes defaults (#1777)
* chore(mappings): remove mappings via vim.keymap.del instead of filtering mappings, to allow for multiple ways of specifying a key
* doc: specify that the terminal emulator must be configured to use the patched font
* feat(renderer): add NvimTreeOpenedFolderIcon NvimTreeClosedFolderIcon (#1768)
* feat: Add highlight group for opened folder
closes #1674
* docs: Add NvimTreeOpenedFolderIcon default
* feat: Add NvimTreeClosedFolderIcon highlight group
Defaults to NvimTreeFolderIcon
* feat: add diagnostics.show_on_open_dirs git.show_on_open_dirs (#1778)
* feat(diagnostics): only show diagnostic on closed folder
* feat(git): only show git icon on closed folder
* docs: Update feature_request.md (#1788)
* Update feature_request.md
Closes #1654
* Update feature_request.md
Co-authored-by: Alexander Courtis <alex@courtis.org>
* 1786 git next prev land on dirs (#1787)
* Filtered dir with git status that are open when show_on_open_dir is false
* refactored for single source of truth of existence of git status on a node
Putting `has_git_status()` in `explorer.common` because that's where node.status is constructed
Or at least I think that's where it's constructed
* 1786 semantic nit
Co-authored-by: Alexander Courtis <alex@courtis.org>
* fix(git): git rename not showing up for the renamed file (#1783)
* fixed git rename not showing up for the renamed file
* considered " -> " being a part of the filename
Fixed -> pattern to escape -
Fixed "\"" and "\\" in filename
* using string.find(, , true) to match plain ->
* Using -z and removed unnecessary logic
* feat(view): always enable cursorline, users may change this behaviour via Event.TreeOpen (#1814)
* Update view.lua
* set cursorline to true
* feat(event): dispatch Event.NodeRenamed on cut-paste (#1817)
* feat(view): add filters.git_clean, filters.no_buffer (#1784)
* feat(view): add filters.git_clean
* feat(view): add filters.git_clean
* feat(view): add filters.no_buffer
* feat(view): filters.no_buffer misses unloaded, handles buffer in/out
* feat(view): filters.no_buffer matches directories specifically
* feat(view): filters.no_buffer clarify targets
* feat: add placeholder filters.diagnostics_ok, refactor filters
* feat(view): remove placeholder filters.diagnostics_ok
* doc: consolidate and clarify :help examples
* doc: format help
* feat: paste and create always target closed folder, remove create_in_closed_folder (#1802)
* Fix default for file creation in closed directories
* Make paste in closed directories consistent with create
* doc: clarify create_in_closed_folder
* Remove create_in_closed_folder option
* doc: clarify create_in_closed_folder removal message (whoops)
Co-authored-by: Alexander Courtis <alex@courtis.org>
* on_attach is user's or default, nothing else; legacy generated on_attach includes defaults
Co-authored-by: baahrens <bahrens@compeon.de>
Co-authored-by: Richard Li <38484873+chomosuke@users.noreply.github.com>
Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>
Co-authored-by: rishabhjain9191 <rishabh.jain9191@gmail.com>
Co-authored-by: Anton <14187674+antosha417@users.noreply.github.com>
Co-authored-by: Eric Haynes <ehaynes99@gmail.com>
* on_attach_default hardcoded
* format default_on_attach
* source default on_attach directly
* remove human mappings help
* simplified on_attach generation
* simplified on_attach generation
* generate default on_attach
* generate default on_attach
* split out keymap_legacy
* add recently introduced mappings
* legacy api.config.mappings.active and default
* legacy api.config.mappings.active and default
* on_attach help and readme
* legacy generate handles action = ""
* legacy generate handles action =
* legacy generate gives defaults when no user mappings
* legacy generate handles action = ""
* legacy generate api handles overrides
* legacy generate handles subsequent setup, on_attach retains deep copies of legacy config
* add wiki link to generated on_attach
* add opts helper function for on_attach, prefixing 'nvim-tree: '
---------
Co-authored-by: kiyan <yazdani.kiyan@protonmail.com>
Co-authored-by: baahrens <bahrens@compeon.de>
Co-authored-by: Richard Li <38484873+chomosuke@users.noreply.github.com>
Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>
Co-authored-by: rishabhjain9191 <rishabh.jain9191@gmail.com>
Co-authored-by: Anton <14187674+antosha417@users.noreply.github.com>
Co-authored-by: Eric Haynes <ehaynes99@gmail.com>
91 lines
2.2 KiB
Lua
91 lines
2.2 KiB
Lua
local M = {}
|
|
|
|
local function tidy_lhs(lhs)
|
|
-- nvim_buf_get_keymap replaces leading "<" with "<lt>" e.g. "<lt>CTRL-v>"
|
|
lhs = lhs:gsub("^<lt>", "<")
|
|
|
|
-- shorten ctrls
|
|
if lhs:lower():match "^<ctrl%-" then
|
|
lhs = lhs:lower():gsub("^<ctrl%-", "<C%-")
|
|
end
|
|
|
|
-- uppercase ctrls
|
|
if lhs:lower():match "^<c%-" then
|
|
lhs = lhs:upper()
|
|
end
|
|
|
|
-- space is not escaped
|
|
lhs = lhs:gsub(" ", "<Space>")
|
|
|
|
return lhs
|
|
end
|
|
|
|
--- Remove prefix 'nvim-tree: '
|
|
--- Hardcoded to keep default_on_attach simple
|
|
--- @param desc string
|
|
--- @return string
|
|
--- @return number
|
|
local function tidy_desc(desc)
|
|
return desc:gsub("^nvim%-tree: ", "")
|
|
end
|
|
|
|
-- sort lhs roughly as per :help index
|
|
local PAT_MOUSE = "^<.*Mouse"
|
|
local PAT_CTRL = "^<C%-"
|
|
local PAT_SPECIAL = "^<.+"
|
|
local function sort_lhs(a, b)
|
|
-- mouse last
|
|
if a:match(PAT_MOUSE) and not b:match(PAT_MOUSE) then
|
|
return false
|
|
elseif not a:match(PAT_MOUSE) and b:match(PAT_MOUSE) then
|
|
return true
|
|
end
|
|
|
|
-- ctrl first
|
|
if a:match(PAT_CTRL) and not b:match(PAT_CTRL) then
|
|
return true
|
|
elseif not a:match(PAT_CTRL) and b:match(PAT_CTRL) then
|
|
return false
|
|
end
|
|
|
|
-- special next
|
|
if a:match(PAT_SPECIAL) and not b:match(PAT_SPECIAL) then
|
|
return true
|
|
elseif not a:match(PAT_SPECIAL) and b:match(PAT_SPECIAL) then
|
|
return false
|
|
end
|
|
|
|
-- lowercase alpha characters only
|
|
return a:gsub("[^a-zA-Z]", ""):lower() < b:gsub("[^a-zA-Z]", ""):lower()
|
|
end
|
|
|
|
function M.compute_lines()
|
|
local help_lines = { "HELP" }
|
|
local help_hl = { { "NvimTreeRootFolder", 0, 0, #help_lines[1] } }
|
|
|
|
local buf_keymaps = vim.api.nvim_buf_get_keymap(vim.api.nvim_get_current_buf(), "")
|
|
|
|
local lines = vim.tbl_map(function(bkm)
|
|
return { lhs = tidy_lhs(bkm.lhs), desc = tidy_desc(bkm.desc) }
|
|
end, buf_keymaps)
|
|
|
|
table.sort(lines, function(a, b)
|
|
return sort_lhs(a.lhs, b.lhs)
|
|
end)
|
|
|
|
local num = 0
|
|
for _, p in pairs(lines) do
|
|
num = num + 1
|
|
local bind_string = string.format("%-5s %s", p.lhs, p.desc)
|
|
local hl_len = math.max(5, string.len(p.lhs))
|
|
table.insert(help_lines, bind_string)
|
|
|
|
table.insert(help_hl, { "NvimTreeFolderName", num, 0, hl_len })
|
|
|
|
table.insert(help_hl, { "NvimTreeFileRenamed", num, hl_len, -1 })
|
|
end
|
|
return help_lines, help_hl
|
|
end
|
|
|
|
return M
|