mirror of
https://github.com/vim/vim.git
synced 2025-10-01 04:54:07 -04:00
patch 9.1.0934: hard to view an existing buffer in the preview window
Problem: hard to view an existing buffer in the preview window Solution: add the :pbuffer command (Yinzuo Jiang) Similar as `:pedit` and `:buffer` command. `:pbuffer` edits buffer [N] from the buffer list in the preview window. `:pbuffer` can also open special buffer, for example terminal buffer. closes: #16222 Signed-off-by: Yinzuo Jiang <jiangyinzuo@foxmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
3920bb4356
commit
a2a2fe841e
@@ -36,6 +36,7 @@ static void ex_autocmd(exarg_T *eap);
|
||||
static void ex_doautocmd(exarg_T *eap);
|
||||
static void ex_bunload(exarg_T *eap);
|
||||
static void ex_buffer(exarg_T *eap);
|
||||
static void do_exbuffer(exarg_T *eap);
|
||||
static void ex_bmodified(exarg_T *eap);
|
||||
static void ex_bnext(exarg_T *eap);
|
||||
static void ex_bprevious(exarg_T *eap);
|
||||
@@ -101,10 +102,14 @@ static void ex_tabs(exarg_T *eap);
|
||||
static void ex_pclose(exarg_T *eap);
|
||||
static void ex_ptag(exarg_T *eap);
|
||||
static void ex_pedit(exarg_T *eap);
|
||||
static void ex_pbuffer(exarg_T *eap);
|
||||
static void prepare_preview_window(void);
|
||||
static void back_to_current_window(win_T *curwin_save);
|
||||
#else
|
||||
# define ex_pclose ex_ni
|
||||
# define ex_ptag ex_ni
|
||||
# define ex_pedit ex_ni
|
||||
# define ex_pbuffer ex_ni
|
||||
#endif
|
||||
static void ex_hide(exarg_T *eap);
|
||||
static void ex_exit(exarg_T *eap);
|
||||
@@ -5734,6 +5739,15 @@ ex_buffer(exarg_T *eap)
|
||||
{
|
||||
if (ERROR_IF_ANY_POPUP_WINDOW)
|
||||
return;
|
||||
do_exbuffer(eap);
|
||||
}
|
||||
|
||||
/*
|
||||
* ":buffer" command and alike.
|
||||
*/
|
||||
static void
|
||||
do_exbuffer(exarg_T *eap)
|
||||
{
|
||||
if (*eap->arg)
|
||||
eap->errmsg = ex_errmsg(e_trailing_characters_str, eap->arg);
|
||||
else
|
||||
@@ -9437,17 +9451,43 @@ ex_ptag(exarg_T *eap)
|
||||
ex_pedit(exarg_T *eap)
|
||||
{
|
||||
win_T *curwin_save = curwin;
|
||||
prepare_preview_window();
|
||||
|
||||
// Edit the file.
|
||||
do_exedit(eap, NULL);
|
||||
|
||||
back_to_current_window(curwin_save);
|
||||
}
|
||||
|
||||
/*
|
||||
* ":pbuffer"
|
||||
*/
|
||||
static void
|
||||
ex_pbuffer(exarg_T *eap)
|
||||
{
|
||||
win_T *curwin_save = curwin;
|
||||
prepare_preview_window();
|
||||
|
||||
// Go to the buffer.
|
||||
do_exbuffer(eap);
|
||||
|
||||
back_to_current_window(curwin_save);
|
||||
}
|
||||
|
||||
static void
|
||||
prepare_preview_window(void)
|
||||
{
|
||||
if (ERROR_IF_ANY_POPUP_WINDOW)
|
||||
return;
|
||||
|
||||
// Open the preview window or popup and make it the current window.
|
||||
g_do_tagpreview = p_pvh;
|
||||
prepare_tagpreview(TRUE, TRUE, FALSE);
|
||||
}
|
||||
|
||||
// Edit the file.
|
||||
do_exedit(eap, NULL);
|
||||
|
||||
static void
|
||||
back_to_current_window(win_T *curwin_save)
|
||||
{
|
||||
if (curwin != curwin_save && win_valid(curwin_save))
|
||||
{
|
||||
// Return cursor to where we were
|
||||
|
Reference in New Issue
Block a user