From 071aca9c8a751579e396227a4e08faa8ada924b8 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Thu, 5 Mar 2015 18:06:43 -0300 Subject: api: Move switch_to_win_for_buf/restore_win_for_buf to api helpers --- src/nvim/api/private/helpers.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/nvim/api/private/helpers.c') diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index 39ca0756f3..d21033bd87 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -553,6 +553,34 @@ Dictionary api_metadata(void) return copy_object(DICTIONARY_OBJ(metadata)).data.dictionary; } +// Find a window that contains "buf" and switch to it. +// If there is no such window, use the current window and change "curbuf". +// Caller must initialize save_curbuf to NULL. +// restore_win_for_buf() MUST be called later! +void switch_to_win_for_buf(buf_T *buf, + win_T **save_curwinp, + tabpage_T **save_curtabp, + buf_T **save_curbufp) +{ + win_T *wp; + tabpage_T *tp; + + if (!find_win_for_buf(buf, &wp, &tp) + || switch_win(save_curwinp, save_curtabp, wp, tp, true) == FAIL) + switch_buffer(save_curbufp, buf); +} + +void restore_win_for_buf(win_T *save_curwin, + tabpage_T *save_curtab, + buf_T *save_curbuf) +{ + if (save_curbuf == NULL) { + restore_win(save_curwin, save_curtab, true); + } else { + restore_buffer(save_curbuf); + } +} + static void init_error_type_metadata(Dictionary *metadata) { Dictionary types = ARRAY_DICT_INIT; -- cgit