diff options
| author | James McCoy <jamessan@jamessan.com> | 2016-05-29 12:59:15 -0400 | 
|---|---|---|
| committer | James McCoy <jamessan@jamessan.com> | 2016-06-15 18:04:05 -0400 | 
| commit | 0d3ff4b55d454bff2090853f3abf6303735c5969 (patch) | |
| tree | e36f0064a9c19e1324a09c141d905c22dc74be5a /src/nvim/eval.c | |
| parent | ef273f97be8abab8f05862236bd28eb8bbf7124f (diff) | |
| download | rneovim-0d3ff4b55d454bff2090853f3abf6303735c5969.tar.gz rneovim-0d3ff4b55d454bff2090853f3abf6303735c5969.tar.bz2 rneovim-0d3ff4b55d454bff2090853f3abf6303735c5969.zip | |
vim-patch:7.4.1126
Problem:    Can only get the directory of the current window.
Solution:   Add window and tab arguments to getcwd() and haslocaldir().
            (Thinca, Hirohito Higashi)
https://github.com/vim/vim/commit/c970330676eaae7ba7cd05cfa46df5a413853ef9
Diffstat (limited to 'src/nvim/eval.c')
| -rw-r--r-- | src/nvim/eval.c | 52 | 
1 files changed, 30 insertions, 22 deletions
| diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 111105fa37..915484ebfb 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -7541,25 +7541,9 @@ static void f_argidx(typval_T *argvars, typval_T *rettv)  static void f_arglistid(typval_T *argvars, typval_T *rettv)  {    rettv->vval.v_number = -1; -  if (argvars[0].v_type != VAR_UNKNOWN) { -    tabpage_T *tp = NULL; -    if (argvars[1].v_type != VAR_UNKNOWN) { -      long n = get_tv_number(&argvars[1]); -      if (n >= 0) { -        tp = find_tabpage(n); -      } -    } else { -      tp = curtab; -    } - -    if (tp != NULL) { -      win_T *wp = find_win_by_nr(&argvars[0], tp); -      if (wp != NULL) { -        rettv->vval.v_number = wp->w_alist->id; -      } -    } -  } else { -    rettv->vval.v_number = curwin->w_alist->id; +  win_T *wp = find_tabwin(&argvars[0], &argvars[1]); +  if (wp != NULL) { +    rettv->vval.v_number = wp->w_alist->id;    }  } @@ -10473,9 +10457,33 @@ find_win_by_nr (    return NULL;  } -/* - * "getwinvar()" function - */ +/// Find window specified by "wvp" in tabpage "tvp". +static win_T *find_tabwin(typval_T *wvp, typval_T *tvp) +{ +  win_T *wp = NULL; +  tabpage_T *tp = NULL; + +  if (wvp->v_type != VAR_UNKNOWN) { +    if (tvp->v_type != VAR_UNKNOWN) { +      long n = get_tv_number(tvp); +      if (n >= 0) { +        tp = find_tabpage(n); +      } +    } else { +      tp = curtab; +    } + +    if (tp != NULL) { +      wp = find_win_by_nr(wvp, tp); +    } +  } else { +    wp = curwin; +  } + +  return wp; +} + +/// "getwinvar()" function  static void f_getwinvar(typval_T *argvars, typval_T *rettv)  {    getwinvar(argvars, rettv, 0); | 
