aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_cmds2.c
diff options
context:
space:
mode:
authorColin Kennedy <colinvfx@gmail.com>2023-12-25 20:41:09 -0800
committerzeertzjq <zeertzjq@outlook.com>2024-03-11 11:38:13 +0800
commit141182d6c6c06ad56413b81a518ba9b777a0cbe0 (patch)
tree451ef95315a55caf7ca95c9ef6eb8bedd48e77d9 /src/nvim/ex_cmds2.c
parenta09ddd7ce55037edc9747a682810fba6a26bc201 (diff)
downloadrneovim-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/ex_cmds2.c')
-rw-r--r--src/nvim/ex_cmds2.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c
index 8016e37ca7..3120868350 100644
--- a/src/nvim/ex_cmds2.c
+++ b/src/nvim/ex_cmds2.c
@@ -444,6 +444,27 @@ int buf_write_all(buf_T *buf, bool forceit)
/// ":argdo", ":windo", ":bufdo", ":tabdo", ":cdo", ":ldo", ":cfdo" and ":lfdo"
void ex_listdo(exarg_T *eap)
{
+ if (curwin->w_p_wfb) {
+ if ((eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo) && !eap->forceit) {
+ // Disallow :ldo if 'winfixbuf' is applied
+ semsg("%s", e_winfixbuf_cannot_go_to_buffer);
+ return;
+ }
+
+ if (win_valid(prevwin)) {
+ // Change the current window to another because 'winfixbuf' is enabled
+ curwin = prevwin;
+ } else {
+ // Split the window, which will be 'nowinfixbuf', and set curwin to that
+ exarg_T new_eap = {
+ .cmdidx = CMD_split,
+ .cmd = "split",
+ .arg = "",
+ };
+ ex_splitview(&new_eap);
+ }
+ }
+
char *save_ei = NULL;
// Temporarily override SHM_OVER and SHM_OVERALL to avoid that file