diff options
| author | Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> | 2021-11-14 09:37:15 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-14 09:37:15 +0000 |
| commit | 729492406ec3b545c4ecf2beadf7bd30c81e70e4 (patch) | |
| tree | ca01ef0d8f5392326bf1df6817464d9166635bb1 /lua | |
| parent | b2f16c788ec0f1c72a500c67f5ad93d08a646b30 (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')
| -rw-r--r-- | lua/telescope/config.lua | 14 | ||||
| -rw-r--r-- | lua/telescope/utils.lua | 7 |
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 |
