fix: some improvements for telescope.symbols if run in insert mode (#1117)

- keep insert if run in insert mode
- also look in `.local/share/nvim/telescope/symbols/*.json` for symbols
  can be overriden with `symbol_path`
This commit is contained in:
Simon Hauser
2021-08-21 16:48:19 +02:00
committed by GitHub
parent 81ab591180
commit 364d795d22
4 changed files with 51 additions and 7 deletions

View File

@@ -202,8 +202,14 @@ builtin.builtin = require("telescope.builtin.internal").builtin
---@param opts table: options to pass to the picker
builtin.planets = require("telescope.builtin.internal").planets
--- Lists symbols inside of data/telescope-sources/*.json found in your runtime path. Check README for more info
--- Lists symbols inside of `data/telescope-sources/*.json` found in your runtime path
--- or found in `stdpath("data")/telescope/symbols/*.json`. The second path can be customized.
--- We provide a couple of default symbols which can be found in
--- https://github.com/nvim-telescope/telescope-symbols.nvim. This repos README also provides more
--- information about the format in which the symbols have to be.
---@param opts table: options to pass to the picker
---@field symbol_path string: specify the second path. Default: `stdpath("data")/telescope/symbols/*.json`
---@field sources table: specify a table of sources you want to load this time
builtin.symbols = require("telescope.builtin.internal").symbols
--- Lists available plugin/user commands and runs them on `<cr>`

View File

@@ -113,8 +113,22 @@ internal.planets = function(opts)
end
internal.symbols = function(opts)
local initial_mode = vim.fn.mode()
local files = vim.api.nvim_get_runtime_file("data/telescope-sources/*.json", true)
if table.getn(files) == 0 then
local data_path = (function()
if not opts.symbol_path then
return Path:new { vim.fn.stdpath "data", "telescope", "symbols" }
else
return Path:new { opts.symbol_path }
end
end)()
if data_path:exists() then
for _, v in ipairs(require("plenary.scandir").scan_dir(data_path:absolute(), { search_pattern = "%.json$" })) do
table.insert(files, v)
end
end
if #files == 0 then
print(
"No sources found! Check out https://github.com/nvim-telescope/telescope-symbols.nvim "
.. "for some prebuild symbols or how to create you own symbol source."
@@ -157,7 +171,11 @@ internal.symbols = function(opts)
},
sorter = conf.generic_sorter(opts),
attach_mappings = function(_)
actions.select_default:replace(actions.insert_symbol)
if initial_mode == "i" then
actions.select_default:replace(actions.insert_symbol_i)
else
actions.select_default:replace(actions.insert_symbol)
end
return true
end,
}):find()