diff options
author | Colin Kennedy <colinvfx@gmail.com> | 2023-12-25 20:41:09 -0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2024-03-11 11:38:13 +0800 |
commit | 141182d6c6c06ad56413b81a518ba9b777a0cbe0 (patch) | |
tree | 451ef95315a55caf7ca95c9ef6eb8bedd48e77d9 /src/nvim/window.c | |
parent | a09ddd7ce55037edc9747a682810fba6a26bc201 (diff) | |
download | rneovim-141182d6c6c06ad56413b81a518ba9b777a0cbe0.tar.gz rneovim-141182d6c6c06ad56413b81a518ba9b777a0cbe0.tar.bz2 rneovim-141182d6c6c06ad56413b81a518ba9b777a0cbe0.zip |
vim-patch:9.1.0147: Cannot keep a buffer focused in a window
Problem: Cannot keep a buffer focused in a window
(Amit Levy)
Solution: Add the 'winfixbuf' window-local option
(Colin Kennedy)
fixes: vim/vim#6445
closes: vim/vim#13903
https://github.com/vim/vim/commit/215703563757a4464907ead6fb9edaeb7f430bea
N/A patch:
vim-patch:58f1e5c0893a
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r-- | src/nvim/window.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c index ff40a9adef..9f84713ee7 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -133,6 +133,35 @@ static void log_frame_layout(frame_T *frame) } #endif +/// Check if the current window is allowed to move to a different buffer. +/// +/// @return If the window has 'winfixbuf', or this function will return false. +bool check_can_set_curbuf_disabled(void) +{ + if (curwin->w_p_wfb) { + semsg("%s", e_winfixbuf_cannot_go_to_buffer); + return false; + } + + return true; +} + +/// Check if the current window is allowed to move to a different buffer. +/// +/// @param forceit If true, do not error. If false and 'winfixbuf' is enabled, error. +/// +/// @return If the window has 'winfixbuf', then forceit must be true +/// or this function will return false. +bool check_can_set_curbuf_forceit(int forceit) +{ + if (!forceit && curwin->w_p_wfb) { + semsg("%s", e_winfixbuf_cannot_go_to_buffer); + return false; + } + + return true; +} + /// @return the current window, unless in the cmdline window and "prevwin" is /// set, then return "prevwin". win_T *prevwin_curwin(void) @@ -597,7 +626,7 @@ wingotofile: ptr = xmemdupz(ptr, len); find_pattern_in_path(ptr, 0, len, true, Prenum == 0, - type, Prenum1, ACTION_SPLIT, 1, MAXLNUM); + type, Prenum1, ACTION_SPLIT, 1, MAXLNUM, false); xfree(ptr); curwin->w_set_curswant = true; break; |