From c74a87eea2cffe911dc5741ca29199165bea631e Mon Sep 17 00:00:00 2001 From: "D. Ben Knoble" Date: Sun, 1 Dec 2024 16:06:18 +0100 Subject: [PATCH] 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 Signed-off-by: Christian Brabandt --- .../dist/opt/helptoc/autoload/helptoc.vim | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim b/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim index 087da798e9..c0d86a4e63 100644 --- a/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim +++ b/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim @@ -2,9 +2,20 @@ vim9script noclear # 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 @@ export def Open() #{{{2 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