aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-02-07 05:21:39 +0800
committerGitHub <noreply@github.com>2022-02-07 05:21:39 +0800
commite2466d84bc818c8e61751972b501551aab07d13c (patch)
treee0a70770c74c482b3e22d380bddb8ce31a8ede4c /src/nvim/eval/funcs.c
parentf0699f43566cd3e5f7fbc4d1e2802c610b5bfa5c (diff)
parentd65ee129143fedd43178c9be52095b5d2d06b5c2 (diff)
downloadrneovim-e2466d84bc818c8e61751972b501551aab07d13c.tar.gz
rneovim-e2466d84bc818c8e61751972b501551aab07d13c.tar.bz2
rneovim-e2466d84bc818c8e61751972b501551aab07d13c.zip
Merge pull request #17305 from zeertzjq/vim-8.2.1741
vim-patch:8.2.1741: pathshorten() only supports using one character
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index aa60bc6b22..138745094c 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -6846,12 +6846,23 @@ static void f_or(typval_T *argvars, typval_T *rettv, FunPtr fptr)
*/
static void f_pathshorten(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
+ int trim_len = 1;
+
+ if (argvars[1].v_type != VAR_UNKNOWN) {
+ trim_len = (int)tv_get_number(&argvars[1]);
+ if (trim_len < 1) {
+ trim_len = 1;
+ }
+ }
+
rettv->v_type = VAR_STRING;
- const char *const s = tv_get_string_chk(&argvars[0]);
- if (!s) {
- return;
+ const char_u *p = (char_u *)tv_get_string_chk(&argvars[0]);
+ if (p == NULL) {
+ rettv->vval.v_string = NULL;
+ } else {
+ rettv->vval.v_string = vim_strsave(p);
+ shorten_dir_len(rettv->vval.v_string, trim_len);
}
- rettv->vval.v_string = shorten_dir((char_u *)xstrdup(s));
}
/*