aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/_stringbuffer.lua
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2026-08-04 17:13:32 +0200
committerJustin M. Keyes <justinkz@gmail.com>2026-08-04 20:48:44 +0200
commit9cd4dd1c1934b21cf4acc7950da6b2b811c41b71 (patch)
treecd3617cd49d1eaae8cd5f5fa04f2102b58c414d5 /runtime/lua/vim/_stringbuffer.lua
parent46ca2365256e9d9fa7d845d6757b15ea96e47fbc (diff)
downloadrneovim-9cd4dd1c1934b21cf4acc7950da6b2b811c41b71.tar.gz
rneovim-9cd4dd1c1934b21cf4acc7950da6b2b811c41b71.tar.bz2
rneovim-9cd4dd1c1934b21cf4acc7950da6b2b811c41b71.zip
fix(:bcd): do not "inherit" buffer-local dir
Problem: Buffer-local CWD (:bcd) is "sticky", similar to window-local CWD (:lcd). But this contradicts one of its main benefits: per-buffer "project root" for LSP, OSC7. Other problems: - A buffer created with :edit/:enew/:new silently inherits b_localdir (and b_prevdir) from the previous buffer. - curbuf_reusable() refuses to recycle a scratch buffer that has `b_localdir`. - After :new/:vnew/:tabnew the CWD sticks to previous buffer's `b_localdir` even though the new curbuf has none, so :new is not equivalent to ":split | enew", and getcwd() disagrees with haslocaldir(). - Requires "which buffer spawned this buffer" semantics that no other buffer-local state has. Solution: Drop sticky/inherit behavior of buffer-local CWD (:bcd). - do_ecmd: always apply the new curbuf's dir (`fix_current_dir`), like `do_autochdir` already does. :tabnew from a :bcd buffer now reverts to global CWD (and fires DirChanged), same as :tabnew from a :lcd window. - curbuf_reusable(): recycling a scratch buffer frees its b_localdir. To get sticky/inherit behavior of CWD, use `:lcd`.
Diffstat (limited to 'runtime/lua/vim/_stringbuffer.lua')
0 files changed, 0 insertions, 0 deletions