aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2016-05-29 12:59:15 -0400
committerJames McCoy <jamessan@jamessan.com>2016-06-15 18:04:05 -0400
commit0d3ff4b55d454bff2090853f3abf6303735c5969 (patch)
treee36f0064a9c19e1324a09c141d905c22dc74be5a /src
parentef273f97be8abab8f05862236bd28eb8bbf7124f (diff)
downloadrneovim-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')
-rw-r--r--src/nvim/eval.c52
-rw-r--r--src/nvim/version.c2
2 files changed, 31 insertions, 23 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);
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 04a6f63451..c2e17b7377 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -567,7 +567,7 @@ static int included_patches[] = {
// 1129 NA
// 1128 NA
// 1127 NA
- // 1126,
+ 1126,
// 1125 NA
// 1124 NA
1123,