Merge pull request #230 from parmort/rework-helptags
Rework helptags builtin, including helps tags from installed plugins
This commit is contained in:
@@ -486,22 +486,20 @@ end
|
||||
builtin.help_tags = function(opts)
|
||||
opts = opts or {}
|
||||
|
||||
local sourced_file = require('plenary.debug_utils').sourced_filepath()
|
||||
local base_directory = vim.fn.fnamemodify(sourced_file, ":h:h:h")
|
||||
local file = base_directory .. "/data/help/tags"
|
||||
|
||||
local tags = {}
|
||||
local f = assert(io.open(file, "rb"))
|
||||
for line in f:lines() do
|
||||
table.insert(tags, line)
|
||||
end
|
||||
f:close()
|
||||
for _, file in pairs(vim.fn.findfile('doc/tags', vim.o.runtimepath, -1)) do
|
||||
local f = assert(io.open(file, "rb"))
|
||||
for line in f:lines() do
|
||||
table.insert(tags, line)
|
||||
end
|
||||
f:close()
|
||||
end
|
||||
|
||||
pickers.new(opts, {
|
||||
prompt_title = 'Help',
|
||||
finder = finders.new_table {
|
||||
results = tags,
|
||||
entry_maker = make_entry.gen_from_tagfile(opts),
|
||||
entry_maker = make_entry.gen_from_taglist(opts),
|
||||
},
|
||||
-- TODO: previewer for Vim help
|
||||
previewer = previewers.help.new(opts),
|
||||
|
||||
@@ -365,47 +365,16 @@ function make_entry.gen_from_treesitter(opts)
|
||||
end
|
||||
end
|
||||
|
||||
function make_entry.gen_from_tagfile(opts)
|
||||
local help_entry, version
|
||||
local delim = string.char(7)
|
||||
|
||||
local make_display = function(line)
|
||||
help_entry = ""
|
||||
display = ""
|
||||
version = ""
|
||||
|
||||
line = line .. delim
|
||||
for section in line:gmatch("(.-)" .. delim) do
|
||||
if section:find("^vim:") == nil then
|
||||
local ver = section:match("^neovim:(.*)")
|
||||
if ver == nil then
|
||||
help_entry = section
|
||||
else
|
||||
version = ver:sub(1, -2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
result = {}
|
||||
if version ~= "" then -- some Vim only entries are unversioned
|
||||
if opts.show_version then
|
||||
result.display = string.format("%s [%s]", help_entry, version)
|
||||
else
|
||||
result.display = help_entry
|
||||
end
|
||||
result.value = help_entry
|
||||
end
|
||||
|
||||
return result
|
||||
end
|
||||
function make_entry.gen_from_taglist(_)
|
||||
local delim = string.char(9)
|
||||
|
||||
return function(line)
|
||||
local entry = {}
|
||||
local d = make_display(line)
|
||||
entry.valid = next(d) ~= nil
|
||||
entry.display = d.display
|
||||
entry.value = d.value
|
||||
entry.ordinal = d.value
|
||||
local tag = (line..delim):match("(.-)" .. delim)
|
||||
entry.valid = tag ~= ""
|
||||
entry.display = tag
|
||||
entry.value = tag
|
||||
entry.ordinal = tag
|
||||
|
||||
return entry
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user