mirror of
https://github.com/neovim/neovim.git
synced 2025-09-19 09:48:19 +00:00
vim-patch:9.0.1554: code for handling 'switchbuf' is repeated (#23632)
Problem: Code for handling 'switchbuf' is repeated.
Solution: Add a function to handle 'switchbuf'. (Yegappan Lakshmanan,
closes vim/vim#12397)
e42c27d9e8
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
@@ -1459,16 +1459,11 @@ int do_buffer(int action, int start, int dir, int count, int forceit)
|
||||
|
||||
// make "buf" the current buffer
|
||||
if (action == DOBUF_SPLIT) { // split window first
|
||||
// If 'switchbuf' contains "useopen": jump to first window containing
|
||||
// "buf" if one exists
|
||||
if ((swb_flags & SWB_USEOPEN) && buf_jump_open_win(buf)) {
|
||||
return OK;
|
||||
}
|
||||
// If 'switchbuf' contains "usetab": jump to first window in any tab
|
||||
// page containing "buf" if one exists
|
||||
if ((swb_flags & SWB_USETAB) && buf_jump_open_tab(buf)) {
|
||||
// If 'switchbuf' is set jump to the window containing "buf".
|
||||
if (swbuf_goto_win_with_buf(buf) != NULL) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
if (win_split(0, 0) == FAIL) {
|
||||
return FAIL;
|
||||
}
|
||||
@@ -2072,17 +2067,8 @@ int buflist_getfile(int n, linenr_T lnum, int options, int forceit)
|
||||
}
|
||||
|
||||
if (options & GETF_SWITCH) {
|
||||
// If 'switchbuf' contains "useopen": jump to first window containing
|
||||
// "buf" if one exists
|
||||
if (swb_flags & SWB_USEOPEN) {
|
||||
wp = buf_jump_open_win(buf);
|
||||
}
|
||||
|
||||
// If 'switchbuf' contains "usetab": jump to first window in any tab
|
||||
// page containing "buf" if one exists
|
||||
if (wp == NULL && (swb_flags & SWB_USETAB)) {
|
||||
wp = buf_jump_open_tab(buf);
|
||||
}
|
||||
// If 'switchbuf' is set jump to the window containing "buf".
|
||||
wp = swbuf_goto_win_with_buf(buf);
|
||||
|
||||
// If 'switchbuf' contains "split", "vsplit" or "newtab" and the
|
||||
// current buffer isn't empty: open new tab or window
|
||||
|
Reference in New Issue
Block a user