Mercurial > vim
diff src/evalfunc.c @ 9881:4b53f6be10c0 v7.4.2215
commit https://github.com/vim/vim/commit/386600f0cbcb8add099c723cf84634f46df2f788
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Aug 15 22:16:25 2016 +0200
patch 7.4.2215
Problem: It's not easy to find out if a window is a quickfix or location
list window.
Solution: Add "loclist" and "quickfix" entries to the dict returnec by
getwininfo(). (Yegappan Lakshmanan)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 15 Aug 2016 22:30:06 +0200 |
parents | cbe23f6769f9 |
children | bff8a09016a5 |
line wrap: on
line diff
--- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -4027,7 +4027,7 @@ f_getbufinfo(typval_T *argvars, typval_T } /* Return information about all the buffers or a specified buffer */ - for (buf = firstbuf; buf != NULL; buf = buf->b_next) + FOR_ALL_BUFFERS(buf) { if (argbuf != NULL && argbuf != buf) continue; @@ -5030,7 +5030,7 @@ f_gettabinfo(typval_T *argvars, typval_T #ifdef FEAT_WINDOWS tabpage_T *tp, *tparg = NULL; dict_T *d; - int tpnr = 1; + int tpnr = 0; if (rettv_list_alloc(rettv) != OK) return; @@ -5044,8 +5044,9 @@ f_gettabinfo(typval_T *argvars, typval_T } /* Get information about a specific tab page or all tab pages */ - for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, tpnr++) - { + FOR_ALL_TABPAGES(tp) + { + tpnr++; if (tparg != NULL && tp != tparg) continue; d = get_tabpage_info(tp, tpnr); @@ -5131,6 +5132,12 @@ get_win_info(win_T *wp, short tpnr, shor dict_add_nr_str(dict, "width", wp->w_width, NULL); dict_add_nr_str(dict, "bufnum", wp->w_buffer->b_fnum, NULL); +#ifdef FEAT_QUICKFIX + dict_add_nr_str(dict, "quickfix", bt_quickfix(wp->w_buffer), NULL); + dict_add_nr_str(dict, "loclist", + (bt_quickfix(wp->w_buffer) && wp->w_llist_ref != NULL), NULL); +#endif + /* Copy window variables */ vars = dict_copy(wp->w_vars, TRUE, 0); if (vars != NULL) @@ -5155,7 +5162,7 @@ f_getwininfo(typval_T *argvars, typval_T tabpage_T *tp; win_T *wp = NULL, *wparg = NULL; dict_T *d; - short tabnr, winnr; + short tabnr = 0, winnr; #endif if (rettv_list_alloc(rettv) != OK) @@ -5172,13 +5179,13 @@ f_getwininfo(typval_T *argvars, typval_T /* Collect information about either all the windows across all the tab * pages or one particular window. */ - tabnr = 1; - for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, tabnr++) - { - wp = (tp == curtab) ? firstwin : tp->tp_firstwin; - winnr = 1; - for (; wp; wp = wp->w_next, winnr++) - { + FOR_ALL_TABPAGES(tp) + { + tabnr++; + winnr = 0; + FOR_ALL_WINDOWS_IN_TAB(tp, wp) + { + winnr++; if (wparg != NULL && wp != wparg) continue; d = get_win_info(wp, tabnr, winnr);