feat: Add length option for shorten_path (#886)
* feat: add `shorten_len` option for path shortening
- adds option to configure the length of shortened parts of filenames
- only affects paths when "shorten" is in `path_display`
* chore: revert rebase for `path.lua` to 876bed9
* refactor: replace `shorten_len` with the `shorten` key in `path_display`
- also deprecates `utils.path_shorten` and passes straight to `plenary`s `Path:shorten`
* feat: allow `path_display` to handle table keys, as well as strings
This commit is contained in:
@@ -188,6 +188,15 @@ local telescope_defaults = {
|
||||
- "shorten" only display the first character of each directory in
|
||||
the path
|
||||
|
||||
You can also specify the number of characters of each directory name
|
||||
to keep by setting `path_display.shorten = num`.
|
||||
e.g. for a path like
|
||||
`alpha/beta/gamma/delta.txt`
|
||||
setting `path_display.shorten = 1` will give a path like:
|
||||
`a/b/g/delta.txt`
|
||||
Similarly, `path_display.shorten = 2` will give a path like:
|
||||
`al/be/ga/delta.txt`
|
||||
|
||||
path_display can also be set to 'hidden' string to hide file names
|
||||
|
||||
path_display can also be set to a function for custom formatting of
|
||||
@@ -202,6 +211,7 @@ local telescope_defaults = {
|
||||
Default: {}]]
|
||||
},
|
||||
|
||||
|
||||
borderchars = { { "─", "│", "─", "│", "╭", "╮", "╯", "╰" } },
|
||||
|
||||
get_status_text = {
|
||||
|
||||
@@ -3,6 +3,8 @@ local has_devicons, devicons = pcall(require, 'nvim-web-devicons')
|
||||
local Path = require('plenary.path')
|
||||
local Job = require('plenary.job')
|
||||
|
||||
local log = require('telescope.log')
|
||||
|
||||
local utils = {}
|
||||
|
||||
utils.get_separator = function()
|
||||
@@ -251,8 +253,9 @@ utils.diagnostics_to_tbl = function(opts)
|
||||
return items
|
||||
end
|
||||
|
||||
utils.path_shorten = function(file)
|
||||
return Path:new(file):shorten()
|
||||
utils.path_shorten = function(filename,len)
|
||||
log.warn("`utils.path_shorten` is deprecated. Use `require('plenary.path').shorten`.")
|
||||
return Path:new(filename):shorten(len)
|
||||
end
|
||||
|
||||
utils.path_tail = (function()
|
||||
@@ -268,7 +271,7 @@ utils.is_path_hidden = function(opts, path_display)
|
||||
path_display = path_display or utils.get_default(opts.path_display, require('telescope.config').values.path_display)
|
||||
|
||||
return path_display == nil or path_display == "hidden" or
|
||||
type(path_display) ~= "table" or vim.tbl_contains(path_display, "hidden")
|
||||
type(path_display) ~= "table" or vim.tbl_contains(path_display, "hidden") or path_display.hidden
|
||||
end
|
||||
|
||||
utils.transform_path = function(opts, path)
|
||||
@@ -284,10 +287,10 @@ utils.transform_path = function(opts, path)
|
||||
return ''
|
||||
end
|
||||
|
||||
if vim.tbl_contains(path_display, "tail") then
|
||||
if vim.tbl_contains(path_display, "tail") or path_display.tail then
|
||||
transformed_path = utils.path_tail(transformed_path)
|
||||
else
|
||||
if not vim.tbl_contains(path_display, "absolute") then
|
||||
if not vim.tbl_contains(path_display, "absolute") or path_display.absolute == false then
|
||||
local cwd
|
||||
if opts.cwd then
|
||||
cwd = opts.cwd
|
||||
@@ -300,8 +303,8 @@ utils.transform_path = function(opts, path)
|
||||
transformed_path = Path:new(transformed_path):make_relative(cwd)
|
||||
end
|
||||
|
||||
if vim.tbl_contains(path_display, "shorten") then
|
||||
transformed_path = Path:new(transformed_path):shorten()
|
||||
if vim.tbl_contains(path_display, "shorten") or path_display["shorten"] ~= nil then
|
||||
transformed_path = Path:new(transformed_path):shorten(path_display["shorten"])
|
||||
end
|
||||
end
|
||||
|
||||
@@ -439,7 +442,7 @@ utils.transform_devicons = (function()
|
||||
end
|
||||
|
||||
local icon, icon_highlight = devicons.get_icon(filename, string.match(filename, '%a+$'), { default = true })
|
||||
local icon_display = (icon or ' ') .. ' ' .. display
|
||||
local icon_display = (icon or ' ') .. ' ' .. (display or '')
|
||||
|
||||
if conf.color_devicons then
|
||||
return icon_display, icon_highlight
|
||||
|
||||
Reference in New Issue
Block a user