0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

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>
This commit is contained in:
D. Ben Knoble
2024-12-01 16:06:18 +01:00
committed by Christian Brabandt
parent c7a96d6d1a
commit c74a87eea2

View File

@@ -2,9 +2,20 @@ vim9script noclear
# Config {{{1 # Config {{{1
const SHELL_PROMPT: string = g: var SHELL_PROMPT: string = ''
def UpdateUserSettings() #{{{2
var new_prompt: string = g:
->get('helptoc', {}) ->get('helptoc', {})
->get('shell_prompt', '^\w\+@\w\+:\f\+\$\s') ->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 # Init {{{1
@@ -141,6 +152,8 @@ export def Open() #{{{2
return return
endif endif
UpdateUserSettings()
# invalidate the cache if the buffer's contents has changed # invalidate the cache if the buffer's contents has changed
if exists('b:toc') && &filetype != 'man' if exists('b:toc') && &filetype != 'man'
if b:toc.changedtick != b:changedtick if b:toc.changedtick != b:changedtick