summaryrefslogtreecommitdiff
path: root/lua/telescope
diff options
context:
space:
mode:
authorLuke Kershaw <35707277+l-kershaw@users.noreply.github.com>2021-11-14 09:37:15 +0000
committerGitHub <noreply@github.com>2021-11-14 09:37:15 +0000
commit729492406ec3b545c4ecf2beadf7bd30c81e70e4 (patch)
treeca01ef0d8f5392326bf1df6817464d9166635bb1 /lua/telescope
parentb2f16c788ec0f1c72a500c67f5ad93d08a646b30 (diff)
feat: `exclude` option for `shorten` in `path_display` (#1429)
* feat: allow excluding positions for `shorten` in `path_display` * [docgen] Update doc/telescope.txt skip-checks: true Co-authored-by: Github Actions <actions@github>
Diffstat (limited to 'lua/telescope')
-rw-r--r--lua/telescope/config.lua14
-rw-r--r--lua/telescope/utils.lua7
2 files changed, 20 insertions, 1 deletions
diff --git a/lua/telescope/config.lua b/lua/telescope/config.lua
index 8c90bbb..8e5b682 100644
--- a/lua/telescope/config.lua
+++ b/lua/telescope/config.lua
@@ -273,6 +273,20 @@ append(
Similarly, `path_display.shorten = 2` will give a path like:
`al/be/ga/delta.txt`
+ You can also further customise the shortening behaviour by
+ setting `path_display.shorten = { len = num, exclude = list }`,
+ where `len` acts as above, and `exclude` is a list of positions
+ that are not shortened. Negative numbers in the list are considered
+ relative to the end of the path.
+ e.g. for a path like
+ `alpha/beta/gamma/delta.txt`
+ setting `path_display.shorten = { len = 1, exclude = {1, -1} }`
+ will give a path like:
+ `alpha/b/g/delta.txt`
+ setting `path_display.shorten = { len = 2, exclude = {2, -2} }`
+ will give a path like:
+ `al/beta/gamma/de`
+
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
diff --git a/lua/telescope/utils.lua b/lua/telescope/utils.lua
index 5a14cc6..e8aefd4 100644
--- a/lua/telescope/utils.lua
+++ b/lua/telescope/utils.lua
@@ -363,7 +363,12 @@ utils.transform_path = function(opts, path)
end
if vim.tbl_contains(path_display, "shorten") or path_display["shorten"] ~= nil then
- transformed_path = Path:new(transformed_path):shorten(path_display["shorten"])
+ if type(path_display["shorten"]) == "table" then
+ local shorten = path_display["shorten"]
+ transformed_path = Path:new(transformed_path):shorten(shorten.len, shorten.exclude)
+ else
+ transformed_path = Path:new(transformed_path):shorten(path_display["shorten"])
+ end
end
if vim.tbl_contains(path_display, "truncate") or path_display.truncate then
if opts.__length == nil then