aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/window.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-10-22 20:27:35 -0700
committerGitHub <noreply@github.com>2019-10-22 20:27:35 -0700
commit9e4db2ef508b02583c7f30d12c045ccc07328f16 (patch)
tree1f239179a6cf53520290949ae9ac30be537b133c /src/nvim/window.c
parent02393a0c74d3aaeece939bafa4f658763acca965 (diff)
parent3b6b528ea98ca7bf8cd5ae1cf103203e3ca67814 (diff)
downloadrneovim-9e4db2ef508b02583c7f30d12c045ccc07328f16.tar.gz
rneovim-9e4db2ef508b02583c7f30d12c045ccc07328f16.tar.bz2
rneovim-9e4db2ef508b02583c7f30d12c045ccc07328f16.zip
Merge #11199 from bobrippling/vim-8.1.1228
vim-patch:8.1.{1099,1228,1962} add 'tagfunc'
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r--src/nvim/window.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 4d8eaa9dcc..ce5be8e904 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -70,8 +70,8 @@ static char *m_onlyone = N_("Already only one window");
/*
* all CTRL-W window commands are handled here, called from normal_cmd().
*/
-void
-do_window (
+void
+do_window(
int nchar,
long Prenum,
int xchar /* extra char from ":wincmd gx" or NUL */
@@ -1537,10 +1537,14 @@ static void win_init(win_T *newp, win_T *oldp, int flags)
/* copy tagstack and folds */
for (i = 0; i < oldp->w_tagstacklen; i++) {
- newp->w_tagstack[i] = oldp->w_tagstack[i];
- if (newp->w_tagstack[i].tagname != NULL)
- newp->w_tagstack[i].tagname =
- vim_strsave(newp->w_tagstack[i].tagname);
+ taggy_T *tag = &newp->w_tagstack[i];
+ *tag = oldp->w_tagstack[i];
+ if (tag->tagname != NULL) {
+ tag->tagname = vim_strsave(tag->tagname);
+ }
+ if (tag->user_data != NULL) {
+ tag->user_data = vim_strsave(tag->user_data);
+ }
}
newp->w_tagstackidx = oldp->w_tagstackidx;
newp->w_tagstacklen = oldp->w_tagstacklen;
@@ -4638,8 +4642,10 @@ win_free (
xfree(wp->w_lines);
- for (i = 0; i < wp->w_tagstacklen; ++i)
+ for (i = 0; i < wp->w_tagstacklen; i++) {
xfree(wp->w_tagstack[i].tagname);
+ xfree(wp->w_tagstack[i].user_data);
+ }
xfree(wp->w_localdir);