aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/private/helpers.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-03-05 18:06:43 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-03-25 18:57:35 -0300
commit071aca9c8a751579e396227a4e08faa8ada924b8 (patch)
tree5ad08f880c459f26815db5b46c9e8b70f2129e91 /src/nvim/api/private/helpers.c
parent05d60c4812f1981f2d03991e33ed54aa2cca3ed6 (diff)
downloadrneovim-071aca9c8a751579e396227a4e08faa8ada924b8.tar.gz
rneovim-071aca9c8a751579e396227a4e08faa8ada924b8.tar.bz2
rneovim-071aca9c8a751579e396227a4e08faa8ada924b8.zip
api: Move switch_to_win_for_buf/restore_win_for_buf to api helpers
Diffstat (limited to 'src/nvim/api/private/helpers.c')
-rw-r--r--src/nvim/api/private/helpers.c28
1 files changed, 28 insertions, 0 deletions
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;