aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/man.lua
diff options
context:
space:
mode:
authorVadim A. Misbakh-Soloviov <msva@users.noreply.github.com>2023-05-05 11:15:39 +0700
committerVadim Misbakh-Soloviov <git@mva.name>2023-05-07 17:31:33 +0700
commit209ed16f57a73518296c3dce0a1ef3975181318d (patch)
treea8ca2ae1fd5aad3506f47603f3cf24628527b484 /runtime/lua/man.lua
parentfa1baa9a47cdb3eed17d48b6011a164d4009d2ee (diff)
downloadrneovim-209ed16f57a73518296c3dce0a1ef3975181318d.tar.gz
rneovim-209ed16f57a73518296c3dce0a1ef3975181318d.tar.bz2
rneovim-209ed16f57a73518296c3dce0a1ef3975181318d.zip
fix(man.lua): return support of all sections
Current behaviour of `:Man` is to only work with "number" sections. This is caused by wrong assumptions about man sections naming. Also, there was similar assumption about length of section dirs in `paths` variable. fixes #23485 Signed-off-by: Vadim Misbakh-Soloviov <git@mva.name>
Diffstat (limited to 'runtime/lua/man.lua')
-rw-r--r--runtime/lua/man.lua9
1 files changed, 7 insertions, 2 deletions
diff --git a/runtime/lua/man.lua b/runtime/lua/man.lua
index 1158d80941..ac493bdc7f 100644
--- a/runtime/lua/man.lua
+++ b/runtime/lua/man.lua
@@ -583,7 +583,7 @@ local function get_paths(sect, name)
local mandirs = table.concat(vim.split(mandirs_raw, '[:\n]', { trimempty = true }), ',')
---@type string[]
- local paths = fn.globpath(mandirs, 'man?/' .. name .. '*.' .. sect .. '*', false, true)
+ local paths = fn.globpath(mandirs, 'man[^\\/]*/' .. name .. '*.' .. sect .. '*', false, true)
-- Prioritize the result from find_path as it obeys b:man_default_sects.
local first = M.find_path(sect, name)
@@ -739,7 +739,12 @@ function M.open_page(count, smods, args)
else
-- Combine the name and sect into a manpage reference so that all
-- verification/extraction can be kept in a single function.
- if tonumber(args[1]) then
+ if args[1]:match('^%d$') or args[1]:match('^%d%a') or args[1]:match('^%a$') then
+ -- NB: Valid sections are not only digits, but also:
+ -- - <digit><word> (see POSIX mans),
+ -- - and even <letter> and <word> (see, for example, by tcl/tk)
+ -- NB2: don't optimize to :match("^%d"), as it will match manpages like
+ -- 441toppm and others whose name starts with digit
local sect = args[1]
table.remove(args, 1)
local name = table.concat(args, ' ')