Refresh generated nvim config
This commit is contained in:
@ -1496,6 +1496,27 @@ actions.insert_original_cword = function(prompt_bufnr)
|
||||
current_picker:set_prompt(current_picker.original_cword, false)
|
||||
end
|
||||
|
||||
--- Insert the WORD under the cursor of the original (pre-Telescope) window
|
||||
---@param prompt_bufnr number: The prompt bufnr
|
||||
actions.insert_original_cWORD = function(prompt_bufnr)
|
||||
local current_picker = action_state.get_current_picker(prompt_bufnr)
|
||||
current_picker:set_prompt(current_picker.original_cWORD, false)
|
||||
end
|
||||
|
||||
--- Insert the file under the cursor of the original (pre-Telescope) window
|
||||
---@param prompt_bufnr number: The prompt bufnr
|
||||
actions.insert_original_cfile = function(prompt_bufnr)
|
||||
local current_picker = action_state.get_current_picker(prompt_bufnr)
|
||||
current_picker:set_prompt(current_picker.original_cfile, false)
|
||||
end
|
||||
|
||||
--- Insert the line under the cursor of the original (pre-Telescope) window
|
||||
---@param prompt_bufnr number: The prompt bufnr
|
||||
actions.insert_original_cline = function(prompt_bufnr)
|
||||
local current_picker = action_state.get_current_picker(prompt_bufnr)
|
||||
current_picker:set_prompt(current_picker.original_cline, false)
|
||||
end
|
||||
|
||||
actions.nop = function(_) end
|
||||
|
||||
actions.mouse_click = function(prompt_bufnr)
|
||||
|
||||
@ -132,12 +132,12 @@ diagnostics.get = function(opts)
|
||||
if opts.bufnr ~= 0 then
|
||||
opts.bufnr = nil
|
||||
end
|
||||
if opts.bufnr == nil then
|
||||
opts.path_display = vim.F.if_nil(opts.path_display, {})
|
||||
end
|
||||
if type(opts.bufnr) == "string" then
|
||||
opts.bufnr = tonumber(opts.bufnr)
|
||||
end
|
||||
if opts.bufnr ~= nil then
|
||||
opts.path_display = vim.F.if_nil(opts.path_display, "hidden")
|
||||
end
|
||||
|
||||
local locations = diagnostics_to_tbl(opts)
|
||||
|
||||
@ -157,7 +157,6 @@ diagnostics.get = function(opts)
|
||||
return
|
||||
end
|
||||
|
||||
opts.path_display = vim.F.if_nil(opts.path_display, "hidden")
|
||||
pickers
|
||||
.new(opts, {
|
||||
prompt_title = opts.bufnr == nil and "Workspace Diagnostics" or "Document Diagnostics",
|
||||
|
||||
@ -531,7 +531,7 @@ internal.oldfiles = function(opts)
|
||||
local results = {}
|
||||
|
||||
if opts.include_current_session then
|
||||
for _, buffer in ipairs(vim.split(vim.fn.execute ":buffers! t", "\n")) do
|
||||
for _, buffer in ipairs(utils.split_lines(vim.fn.execute ":buffers! t")) do
|
||||
local match = tonumber(string.match(buffer, "%s*(%d+)"))
|
||||
local open_by_lsp = string.match(buffer, "line 0$")
|
||||
if match and not open_by_lsp then
|
||||
@ -574,7 +574,7 @@ end
|
||||
|
||||
internal.command_history = function(opts)
|
||||
local history_string = vim.fn.execute "history cmd"
|
||||
local history_list = vim.split(history_string, "\n")
|
||||
local history_list = utils.split_lines(history_string)
|
||||
|
||||
local results = {}
|
||||
local filter_fn = opts.filter_fn
|
||||
@ -614,7 +614,7 @@ end
|
||||
|
||||
internal.search_history = function(opts)
|
||||
local search_string = vim.fn.execute "history search"
|
||||
local search_list = vim.split(search_string, "\n")
|
||||
local search_list = utils.split_lines(search_string)
|
||||
|
||||
local results = {}
|
||||
for i = #search_list, 3, -1 do
|
||||
@ -690,7 +690,7 @@ internal.help_tags = function(opts)
|
||||
opts.fallback = vim.F.if_nil(opts.fallback, true)
|
||||
opts.file_ignore_patterns = {}
|
||||
|
||||
local langs = vim.split(opts.lang, ",", true)
|
||||
local langs = vim.split(opts.lang, ",", { trimempty = true })
|
||||
if opts.fallback and not vim.tbl_contains(langs, "en") then
|
||||
table.insert(langs, "en")
|
||||
end
|
||||
@ -729,11 +729,11 @@ internal.help_tags = function(opts)
|
||||
local delimiter = string.char(9)
|
||||
for _, lang in ipairs(langs) do
|
||||
for _, file in ipairs(tag_files[lang] or {}) do
|
||||
local lines = vim.split(Path:new(file):read(), "\n", true)
|
||||
local lines = utils.split_lines(Path:new(file):read(), { trimempty = true })
|
||||
for _, line in ipairs(lines) do
|
||||
-- TODO: also ignore tagComment starting with ';'
|
||||
if not line:match "^!_TAG_" then
|
||||
local fields = vim.split(line, delimiter, true)
|
||||
local fields = vim.split(line, delimiter, { trimempty = true })
|
||||
if #fields == 3 and not tags_map[fields[1]] then
|
||||
if fields[1] ~= "help-tags" or fields[2] ~= "tags" then
|
||||
table.insert(tags, {
|
||||
|
||||
@ -184,7 +184,7 @@ do
|
||||
|
||||
if k == "path" then
|
||||
local retpath = Path:new({ t.cwd, t.value }):absolute()
|
||||
if not vim.loop.fs_access(retpath, "R", nil) then
|
||||
if not vim.loop.fs_access(retpath, "R") then
|
||||
retpath = t.value
|
||||
end
|
||||
return retpath
|
||||
@ -540,8 +540,14 @@ function make_entry.gen_from_lsp_symbols(opts)
|
||||
msg,
|
||||
}
|
||||
else
|
||||
local display_path, path_style = utils.transform_path(opts, entry.filename)
|
||||
return displayer {
|
||||
utils.transform_path(opts, entry.filename),
|
||||
{
|
||||
display_path,
|
||||
function()
|
||||
return path_style
|
||||
end,
|
||||
},
|
||||
entry.symbol_name,
|
||||
{ entry.symbol_type:lower(), type_highlight[entry.symbol_type] },
|
||||
msg,
|
||||
@ -1043,7 +1049,7 @@ function make_entry.gen_from_ctags(opts)
|
||||
}
|
||||
|
||||
local make_display = function(entry)
|
||||
local filename = utils.transform_path(opts, entry.filename)
|
||||
local display_path, path_style = utils.transform_path(opts, entry.filename)
|
||||
|
||||
local scode
|
||||
if opts.show_line then
|
||||
@ -1057,7 +1063,12 @@ function make_entry.gen_from_ctags(opts)
|
||||
}
|
||||
else
|
||||
return displayer {
|
||||
filename,
|
||||
{
|
||||
display_path,
|
||||
function()
|
||||
return path_style
|
||||
end,
|
||||
},
|
||||
entry.tag,
|
||||
scode,
|
||||
}
|
||||
@ -1073,7 +1084,7 @@ function make_entry.gen_from_ctags(opts)
|
||||
|
||||
if k == "path" then
|
||||
local retpath = Path:new({ t.filename }):absolute()
|
||||
if not vim.loop.fs_access(retpath, "R", nil) then
|
||||
if not vim.loop.fs_access(retpath, "R") then
|
||||
retpath = t.filename
|
||||
end
|
||||
return retpath
|
||||
@ -1174,7 +1185,7 @@ function make_entry.gen_from_diagnostics(opts)
|
||||
}
|
||||
|
||||
local make_display = function(entry)
|
||||
local filename = utils.transform_path(opts, entry.filename)
|
||||
local display_path, path_style = utils.transform_path(opts, entry.filename)
|
||||
|
||||
-- add styling of entries
|
||||
local pos = string.format("%4d:%2d", entry.lnum, entry.col)
|
||||
@ -1187,7 +1198,12 @@ function make_entry.gen_from_diagnostics(opts)
|
||||
return displayer {
|
||||
line_info,
|
||||
entry.text,
|
||||
filename,
|
||||
{
|
||||
display_path,
|
||||
function()
|
||||
return path_style
|
||||
end,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@ -1345,11 +1361,18 @@ function make_entry.gen_from_git_status(opts)
|
||||
local status_x = git_abbrev[x] or {}
|
||||
local status_y = git_abbrev[y] or {}
|
||||
|
||||
local display_path, path_style = utils.transform_path(opts, entry.path)
|
||||
|
||||
local empty_space = " "
|
||||
return displayer {
|
||||
{ status_x.icon or empty_space, status_x.hl },
|
||||
{ status_y.icon or empty_space, status_y.hl },
|
||||
utils.transform_path(opts, entry.path),
|
||||
{
|
||||
display_path,
|
||||
function()
|
||||
return path_style
|
||||
end,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@ -176,6 +176,9 @@ mappings.default_mappings = config.values.default_mappings
|
||||
["<C-_>"] = actions.which_key, -- keys from pressing <C-/>
|
||||
["<C-w>"] = { "<c-s-w>", type = "command" },
|
||||
["<C-r><C-w>"] = actions.insert_original_cword,
|
||||
["<C-r><C-a>"] = actions.insert_original_cWORD,
|
||||
["<C-r><C-f>"] = actions.insert_original_cfile,
|
||||
["<C-r><C-l>"] = actions.insert_original_cline,
|
||||
|
||||
-- disable c-j because we dont want to allow new lines #2123
|
||||
["<C-j>"] = actions.nop,
|
||||
|
||||
@ -537,6 +537,10 @@ function Picker:find()
|
||||
|
||||
self.original_win_id = a.nvim_get_current_win()
|
||||
_, self.original_cword = pcall(vim.fn.expand, "<cword>")
|
||||
_, self.original_cWORD = pcall(vim.fn.expand, "<cWORD>")
|
||||
_, self.original_cfile = pcall(vim.fn.expand, "<cfile>")
|
||||
_, self.original_cline = pcall(vim.api.nvim_get_current_line)
|
||||
_, self.original_cline = pcall(vim.trim, self.original_cline)
|
||||
|
||||
-- User autocmd run it before create Telescope window
|
||||
vim.api.nvim_exec_autocmds("User", { pattern = "TelescopeFindPre" })
|
||||
|
||||
@ -1090,7 +1090,7 @@ previewers.highlights = defaulter(function(_)
|
||||
|
||||
define_preview = function(self, entry)
|
||||
if not self.state.bufname then
|
||||
local output = vim.split(vim.fn.execute "highlight", "\n")
|
||||
local output = utils.split_lines(vim.fn.execute "highlight")
|
||||
local hl_groups = {}
|
||||
for _, v in ipairs(output) do
|
||||
if v ~= "" then
|
||||
|
||||
@ -5,12 +5,14 @@ local conf = require("telescope.config").values
|
||||
local Job = require "plenary.job"
|
||||
local Path = require "plenary.path"
|
||||
|
||||
local telescope_utils = require "telescope.utils"
|
||||
|
||||
local utils = {}
|
||||
|
||||
local detect_from_shebang = function(p)
|
||||
local s = p:readbyterange(0, 256)
|
||||
if s then
|
||||
local lines = vim.split(s, "\n")
|
||||
local lines = telescope_utils.split_lines(s)
|
||||
return vim.filetype.match { contents = lines }
|
||||
end
|
||||
end
|
||||
@ -24,7 +26,7 @@ end
|
||||
local detect_from_modeline = function(p)
|
||||
local s = p:readbyterange(-256, 256)
|
||||
if s then
|
||||
local lines = vim.split(s, "\n")
|
||||
local lines = telescope_utils.split_lines(s)
|
||||
local idx = lines[#lines] ~= "" and #lines or #lines - 1
|
||||
if idx >= 1 then
|
||||
return parse_modeline(lines[idx])
|
||||
|
||||
@ -216,13 +216,25 @@ end)()
|
||||
utils.path_tail = (function()
|
||||
local os_sep = utils.get_separator()
|
||||
|
||||
return function(path)
|
||||
for i = #path, 1, -1 do
|
||||
if path:sub(i, i) == os_sep then
|
||||
return path:sub(i + 1, -1)
|
||||
if os_sep == "/" then
|
||||
return function(path)
|
||||
for i = #path, 1, -1 do
|
||||
if path:sub(i, i) == os_sep then
|
||||
return path:sub(i + 1, -1)
|
||||
end
|
||||
end
|
||||
return path
|
||||
end
|
||||
else
|
||||
return function(path)
|
||||
for i = #path, 1, -1 do
|
||||
local c = path:sub(i, i)
|
||||
if c == os_sep or c == "/" then
|
||||
return path:sub(i + 1, -1)
|
||||
end
|
||||
end
|
||||
return path
|
||||
end
|
||||
return path
|
||||
end
|
||||
end)()
|
||||
|
||||
@ -727,4 +739,16 @@ utils.reverse_table = function(input_table)
|
||||
return temp_table
|
||||
end
|
||||
|
||||
utils.split_lines = (function()
|
||||
if utils.iswin then
|
||||
return function(s, opts)
|
||||
return vim.split(s, "\r?\n", opts)
|
||||
end
|
||||
else
|
||||
return function(s, opts)
|
||||
return vim.split(s, "\n", opts)
|
||||
end
|
||||
end
|
||||
end)()
|
||||
|
||||
return utils
|
||||
|
||||
@ -307,3 +307,87 @@ describe("transform_path", function()
|
||||
end, new_relpath "doc/mydoc.md", new_relpath "d/mydoc.md")
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("path_tail", function()
|
||||
local function assert_tails(paths)
|
||||
for _, path in ipairs(paths) do
|
||||
it("gets the tail of " .. path, function()
|
||||
local tail = vim.fn.fnamemodify(path, ":p:t")
|
||||
eq(tail, utils.path_tail(path))
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
if jit and jit.os:lower() == "windows" then
|
||||
describe("handles windows paths", function()
|
||||
local paths = {
|
||||
[[C:\Users\username\AppData\Local\nvim-data\log]],
|
||||
[[D:\Projects\project_folder\source_code.py]],
|
||||
[[E:\Music\song.mp3]],
|
||||
[[/home/usuario/documents/archivo.txt]],
|
||||
[[/var/www/html/index.html]],
|
||||
[[/mnt/backup/backup_file.tar.gz]],
|
||||
}
|
||||
|
||||
assert_tails(paths)
|
||||
end)
|
||||
elseif jit and jit.os:lower() == "linux" then
|
||||
describe("handles linux paths", function()
|
||||
local paths = {
|
||||
[[/home/usuario/documents/archivo.txt]],
|
||||
[[/var/www/html/index.html]],
|
||||
[[/mnt/backup/backup_file.tar.gz]],
|
||||
}
|
||||
|
||||
assert_tails(paths)
|
||||
end)
|
||||
elseif jit and jit.os:lower() == "osx" then
|
||||
describe("handles macos paths", function()
|
||||
local paths = {
|
||||
[[/Users/Usuario/Documents/archivo.txt]],
|
||||
[[/Applications/App.app/Contents/MacOS/app_executable]],
|
||||
[[/Volumes/ExternalDrive/Data/file.xlsx]],
|
||||
}
|
||||
|
||||
assert_tails(paths)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
describe("split_lines", function()
|
||||
local expect = {
|
||||
"",
|
||||
"",
|
||||
"line3 of the file",
|
||||
"",
|
||||
"line5 of the file",
|
||||
"",
|
||||
"",
|
||||
"line8 of the file, last line of file",
|
||||
"",
|
||||
}
|
||||
|
||||
local function get_fake_file(line_ending)
|
||||
return table.concat(expect, line_ending)
|
||||
end
|
||||
|
||||
local newline_file = get_fake_file "\n"
|
||||
local carriage_newline_file = get_fake_file "\r\n"
|
||||
|
||||
if utils.iswin then
|
||||
describe("handles files on Windows", function()
|
||||
it("reads file with newline only", function()
|
||||
assert.are.same(expect, utils.split_lines(newline_file))
|
||||
end)
|
||||
it("reads file with carriage return and newline", function()
|
||||
assert.are.same(expect, utils.split_lines(carriage_newline_file))
|
||||
end)
|
||||
end)
|
||||
else
|
||||
describe("handles files on non Windows environment", function()
|
||||
it("reads file with newline only", function()
|
||||
assert.are.same(expect, utils.split_lines(newline_file))
|
||||
end)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user