diff options
author | André Twupack <atwupack@mailbox.org> | 2014-09-22 20:27:04 +0200 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2014-11-14 11:56:25 -0500 |
commit | e199470bd31c0f79bdd3de2239058ef238ff9bcd (patch) | |
tree | f5e90d8d21c26273ef3494cbc8f5a5cde956d987 /src | |
parent | c347d9226a00d1ff8015fcdab1fb414e2c3e4c0a (diff) | |
download | rneovim-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.c | 38 | ||||
-rw-r--r-- | src/nvim/testdir/Makefile | 1 | ||||
-rw-r--r-- | src/nvim/testdir/test_qf_title.in | 18 | ||||
-rw-r--r-- | src/nvim/testdir/test_qf_title.ok | 2 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
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, |