runtime(helptoc): reload cached g:helptoc.shell_prompt when starting toc
Follow up on PR 10446 [1] so that changes at run-time (or after loading
a vimrc) are reflected at next use. Instead of "uncaching" the variable
by computing SHELL_PROMPT on each use, which could negatively impact
performance, reload any user settings before creating the TOC.
Also make sure, changes to the shell prompt variable do correctly
invalidate b:toc, so that the table of content is correctly re-created
after user makes any changes.
[1]: https://github.com/vim/vim/pull/10446#issuecomment-2485169333
closes: #16097
Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim b/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim
index 087da79..c0d86a4 100644
--- a/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim
+++ b/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim
@@ -2,9 +2,20 @@
# Config {{{1
-const SHELL_PROMPT: string = g:
- ->get('helptoc', {})
- ->get('shell_prompt', '^\w\+@\w\+:\f\+\$\s')
+var SHELL_PROMPT: string = ''
+
+def UpdateUserSettings() #{{{2
+ var new_prompt: string = g:
+ ->get('helptoc', {})
+ ->get('shell_prompt', '^\w\+@\w\+:\f\+\$\s')
+ if new_prompt != SHELL_PROMPT
+ SHELL_PROMPT = new_prompt
+ # invalidate cache: user config has changed
+ unlet! b:toc
+ endif
+enddef
+
+UpdateUserSettings()
# Init {{{1
@@ -141,6 +152,8 @@
return
endif
+ UpdateUserSettings()
+
# invalidate the cache if the buffer's contents has changed
if exists('b:toc') && &filetype != 'man'
if b:toc.changedtick != b:changedtick