diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-10-10 15:42:25 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-10-10 22:58:39 -0400 |
commit | 4cd69151cf39cd4c3f083da2275f17206dcf5bc3 (patch) | |
tree | 00cf5ebb0af8dd177d8ba3f43619c3c5a3b534ed /src/nvim/quickfix.c | |
parent | 9606317486416aeba590d44fd9fcc955834d1e3b (diff) | |
download | rneovim-4cd69151cf39cd4c3f083da2275f17206dcf5bc3.tar.gz rneovim-4cd69151cf39cd4c3f083da2275f17206dcf5bc3.tar.bz2 rneovim-4cd69151cf39cd4c3f083da2275f17206dcf5bc3.zip |
vim-patch:8.1.1015: quickfix buffer shows up in list, can't get buffer number
Problem: Quickfix buffer shows up in list, can't get buffer number.
Solution: Make the quickfix buffer unlisted when the quickfix window is
closed. get the quickfix buffer number with getqflist().
(Yegappan Lakshmanan, closes vim/vim#4113)
https://github.com/vim/vim/commit/647e24ba3dbf7ff448aa471b1a659a18267ae056
Diffstat (limited to 'src/nvim/quickfix.c')
-rw-r--r-- | src/nvim/quickfix.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index 06fed9c2cf..713cace259 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -5577,7 +5577,8 @@ enum { QF_GETLIST_SIZE = 0x80, QF_GETLIST_TICK = 0x100, QF_GETLIST_FILEWINID = 0x200, - QF_GETLIST_ALL = 0x3FF, + QF_GETLIST_QFBUFNR = 0x400, + QF_GETLIST_ALL = 0x7FF, }; /// Parse text from 'di' and return the quickfix list items. @@ -5632,6 +5633,15 @@ static int qf_winid(qf_info_T *qi) return 0; } +// Returns the number of the buffer displayed in the quickfix/location list +// window. If there is no buffer associated with the list, then returns 0. +static int qf_getprop_qfbufnr(const qf_info_T *qi, dict_T *retdict) + FUNC_ATTR_NONNULL_ARG(2) +{ + return tv_dict_add_nr(retdict, S_LEN("qfbufnr"), + (qi == NULL) ? 0 : qi->qf_bufnr); +} + /// Convert the keys in 'what' to quickfix list property flags. static int qf_getprop_keys2flags(const dict_T *what, bool loclist) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT @@ -5675,6 +5685,9 @@ static int qf_getprop_keys2flags(const dict_T *what, bool loclist) if (loclist && tv_dict_find(what, S_LEN("filewinid")) != NULL) { flags |= QF_GETLIST_FILEWINID; } + if (tv_dict_find(what, S_LEN("qfbufnr")) != NULL) { + flags |= QF_GETLIST_QFBUFNR; + } return flags; } @@ -5766,6 +5779,9 @@ static int qf_getprop_defaults(qf_info_T *qi, if ((status == OK) && locstack && (flags & QF_GETLIST_FILEWINID)) { status = tv_dict_add_nr(retdict, S_LEN("filewinid"), 0); } + if ((status == OK) && (flags & QF_GETLIST_QFBUFNR)) { + status = qf_getprop_qfbufnr(qi, retdict); + } return status; } @@ -5900,6 +5916,9 @@ int qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict) if ((status == OK) && (wp != NULL) && (flags & QF_GETLIST_FILEWINID)) { status = qf_getprop_filewinid(wp, qi, retdict); } + if ((status == OK) && (flags & QF_GETLIST_QFBUFNR)) { + status = qf_getprop_qfbufnr(qi, retdict); + } return status; } |