aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndré Twupack <atwupack@mailbox.org>2014-09-22 20:27:04 +0200
committerJustin M. Keyes <justinkz@gmail.com>2014-11-14 11:56:25 -0500
commite199470bd31c0f79bdd3de2239058ef238ff9bcd (patch)
treef5e90d8d21c26273ef3494cbc8f5a5cde956d987 /src
parentc347d9226a00d1ff8015fcdab1fb414e2c3e4c0a (diff)
downloadrneovim-e199470bd31c0f79bdd3de2239058ef238ff9bcd.tar.gz
rneovim-e199470bd31c0f79bdd3de2239058ef238ff9bcd.tar.bz2
rneovim-e199470bd31c0f79bdd3de2239058ef238ff9bcd.zip
vim-patch:7.4.378 #1217
Problem: Title of quickfist list is not kept for setqflist(list, 'r'). Solution: Keep the title. Add a test. (Lcd) https://code.google.com/p/vim/source/detail?r=v7-4-378
Diffstat (limited to 'src')
-rw-r--r--src/nvim/quickfix.c38
-rw-r--r--src/nvim/testdir/Makefile1
-rw-r--r--src/nvim/testdir/test_qf_title.in18
-rw-r--r--src/nvim/testdir/test_qf_title.ok2
-rw-r--r--src/nvim/version.c2
5 files changed, 44 insertions, 17 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c
index 738bfb4c58..5ffd5ea263 100644
--- a/src/nvim/quickfix.c
+++ b/src/nvim/quickfix.c
@@ -798,6 +798,16 @@ qf_init_end:
return retval;
}
+static void qf_store_title(qf_info_T *qi, char_u *title)
+{
+ if (title != NULL) {
+ char_u *p = xmalloc(STRLEN(title) + 2);
+
+ qi->qf_lists[qi->qf_curlist].qf_title = p;
+ sprintf((char *)p, ":%s", (char *)title);
+ }
+}
+
/*
* Prepare for adding a new quickfix list.
*/
@@ -805,11 +815,9 @@ static void qf_new_list(qf_info_T *qi, char_u *qf_title)
{
int i;
- /*
- * If the current entry is not the last entry, delete entries below
- * the current entry. This makes it possible to browse in a tree-like
- * way with ":grep'.
- */
+ // If the current entry is not the last entry, delete entries beyond
+ // the current entry. This makes it possible to browse in a tree-like
+ // way with ":grep'.
while (qi->qf_listcount > qi->qf_curlist + 1)
qf_free(qi, --qi->qf_listcount);
@@ -825,12 +833,7 @@ static void qf_new_list(qf_info_T *qi, char_u *qf_title)
} else
qi->qf_curlist = qi->qf_listcount++;
memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T)));
- if (qf_title != NULL) {
- char_u *p = xmalloc(STRLEN(qf_title) + 2);
-
- qi->qf_lists[qi->qf_curlist].qf_title = p;
- sprintf((char *)p, ":%s", (char *)qf_title);
- }
+ qf_store_title(qi, qf_title);
}
/*
@@ -2124,8 +2127,9 @@ void ex_copen(exarg_T *eap)
*/
qf_fill_buffer(qi);
- if (qi->qf_lists[qi->qf_curlist].qf_title != NULL)
- qf_set_title(qi);
+ if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) {
+ qf_set_title_var(qi);
+ }
curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index;
curwin->w_cursor.col = 0;
@@ -2263,7 +2267,7 @@ static void qf_update_buffer(qf_info_T *qi)
&& (win = qf_find_win(qi)) != NULL) {
curwin_save = curwin;
curwin = win;
- qf_set_title(qi);
+ qf_set_title_var(qi);
curwin = curwin_save;
}
@@ -2275,7 +2279,7 @@ static void qf_update_buffer(qf_info_T *qi)
}
}
-static void qf_set_title(qf_info_T *qi)
+static void qf_set_title_var(qf_info_T *qi)
{
set_internal_string_var((char_u *)"w:quickfix_title",
qi->qf_lists[qi->qf_curlist].qf_title);
@@ -3302,8 +3306,10 @@ int set_errorlist(win_T *wp, list_T *list, int action, char_u *title)
for (prevp = qi->qf_lists[qi->qf_curlist].qf_start;
prevp->qf_next != prevp; prevp = prevp->qf_next)
;
- else if (action == 'r')
+ else if (action == 'r') {
qf_free(qi, qi->qf_curlist);
+ qf_store_title(qi, title);
+ }
for (li = list->lv_first; li != NULL; li = li->li_next) {
if (li->li_tv.v_type != VAR_DICT)
diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile
index 521fbc19cf..9ca2c9688a 100644
--- a/src/nvim/testdir/Makefile
+++ b/src/nvim/testdir/Makefile
@@ -34,6 +34,7 @@ SCRIPTS := test_autoformat_join.out \
test_options.out \
test_listlbr.out test_listlbr_utf8.out \
test_changelist.out \
+ test_qf_title.out \
test_breakindent.out \
test_insertcount.out \
test_utf8.out
diff --git a/src/nvim/testdir/test_qf_title.in b/src/nvim/testdir/test_qf_title.in
new file mode 100644
index 0000000000..fce0c260e3
--- /dev/null
+++ b/src/nvim/testdir/test_qf_title.in
@@ -0,0 +1,18 @@
+Tests for quickfix window's title vim: set ft=vim :
+
+STARTTEST
+:so small.vim
+:if !has('quickfix') | e! test.ok | wq! test.out | endif
+:set efm=%E%f:%l:%c:%m
+:cgetexpr ['file:1:1:message']
+:let qflist=getqflist()
+:call setqflist(qflist, 'r')
+:copen
+:let g:quickfix_title=w:quickfix_title
+:wincmd p
+:$put =g:quickfix_title
+:/^Results/,$w test.out
+:qa!
+ENDTEST
+
+Results of test_qf_title:
diff --git a/src/nvim/testdir/test_qf_title.ok b/src/nvim/testdir/test_qf_title.ok
new file mode 100644
index 0000000000..4ebdbeff3b
--- /dev/null
+++ b/src/nvim/testdir/test_qf_title.ok
@@ -0,0 +1,2 @@
+Results of test_qf_title:
+:setqflist()
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 2bc99fcad4..c2818edcc5 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -287,7 +287,7 @@ static int included_patches[] = {
381,
//380 NA
379,
- //378,
+ 378,
377,
376,
375,