Update runtime files
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index 3615875..71200a3 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -26,6 +26,7 @@
 		      Option			  '	   :help 'textwidth'
 		      Regular expression	  /	   :help /[
 		    See |help-summary| for more contexts and an explanation.
+		    See |notation| for an explanation of the help syntax.
 
   Search for help:  Type ":help word", then hit CTRL-D to see matching
 		    help entries for "word".
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 55c2146..ee17e64 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -808,8 +808,33 @@
 	When on, Vim will change the current working directory whenever you
 	change the directory of the shell running in a terminal window. You
 	need proper setting-up, so whenever the shell's pwd changes an OSC 7
-	escape sequence will be emitted. For example, on Linux, you can source
-	/etc/profile.d/vte.sh in your shell profile if you use bash or zsh.
+	escape sequence will be emitted.  For example, on Linux, you can
+	source /etc/profile.d/vte.sh in your shell profile if you use bash or
+	zsh.  For bash this should work (put it in a bash init file): >
+		if [[ -n "$VIM_TERMINAL" ]]; then
+		    PROMPT_COMMAND='_vim_sync_PWD'
+		    function _vim_sync_PWD() {
+			printf "\033]7;file://%s\033\\" "$PWD"
+		    }
+		fi
+<
+	Or, in a zsh init file: >
+		if [[ -n "$VIM_TERMINAL" ]]; then
+		    autoload -Uz add-zsh-hook
+		    add-zsh-hook -Uz chpwd _vim_sync_PWD
+		    function _vim_sync_PWD() {
+			printf "\033]7;file://%s\033\\" "$PWD"
+		    }
+		fi
+<
+	In a fish init file: >
+		if test -n "$VIM_TERMINAL"
+		    function _vim_sync_PWD --on-variable=PWD
+			printf "\033]7;file://%s\033\\" "$PWD"
+		    end
+		end
+<
+	You can find an alternative method at |terminal-autoshelldir|.
 	When the parsing of the OSC sequence fails you get *E1179* .
 
 				*'arabic'* *'arab'* *'noarabic'* *'noarab'*
@@ -1767,7 +1792,8 @@
 	page can have a different value.
 
 	When 'cmdheight' is zero, there is no command-line unless it is being
-	used.  Any messages will cause the |hit-enter| prompt.
+	used.  Some informative messages will not be displayed, any other
+	messages will cause the |hit-enter| prompt.
 
 						*'cmdwinheight'* *'cwh'*
 'cmdwinheight' 'cwh'	number	(default 7)
@@ -5027,8 +5053,8 @@
 						*'lispwords'* *'lw'*
 'lispwords' 'lw'	string	(default is very long)
 			global or local to buffer |global-local|
-	Comma-separated list of words that influence the Lisp indenting.
-	|'lisp'|
+	Comma-separated list of words that influence the Lisp indenting when
+	enabled with the |'lisp'| option.
 
 						*'list'* *'nolist'*
 'list'			boolean	(default off)
@@ -7327,6 +7353,7 @@
 	Name of the word list file where words are added for the |zg| and |zw|
 	commands.  It must end in ".{encoding}.add".  You need to include the
 	path, otherwise the file is placed in the current directory.
+	The path may include characters from 'isfname', space, comma and '@'.
 								*E765*
 	It may also be a comma-separated list of names.  A count before the
 	|zg| and |zw| commands can be used to access each.  This allows using
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 6074361..7e3fe43 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -7900,6 +7900,7 @@
 ignore-errors	eval.txt	/*ignore-errors*
 ignore-timestamp	editing.txt	/*ignore-timestamp*
 import-legacy	vim9.txt	/*import-legacy*
+import-map	vim9.txt	/*import-map*
 improved-autocmds-5.4	version5.txt	/*improved-autocmds-5.4*
 improved-quickfix	version5.txt	/*improved-quickfix*
 improved-sessions	version5.txt	/*improved-sessions*
@@ -10086,6 +10087,7 @@
 termdebug_wide	terminal.txt	/*termdebug_wide*
 terminal	terminal.txt	/*terminal*
 terminal-api	terminal.txt	/*terminal-api*
+terminal-autoshelldir	terminal.txt	/*terminal-autoshelldir*
 terminal-client-server	terminal.txt	/*terminal-client-server*
 terminal-close	terminal.txt	/*terminal-close*
 terminal-colors	os_unix.txt	/*terminal-colors*
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 81dd7c6..56f0dc8 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1019,6 +1019,36 @@
 
 Rationale: Why not allow for any command or expression?  Because that might
 create a security problem.
+						*terminal-autoshelldir*
+This can be used to pass the current directory from a shell to Vim.
+Put this in your .vimrc: >
+	def g:Tapi_lcd(_, args: string)
+	    execute 'silent lcd ' .. args
+	enddef
+<
+And, in a bash init file: >
+        if [[ -n "$VIM_TERMINAL" ]]; then
+            PROMPT_COMMAND='_vim_sync_PWD'
+            function _vim_sync_PWD() {
+              printf '\033]51;["call", "Tapi_lcd", "%q"]\007' "$PWD"
+            }
+        fi
+<
+Or, for zsh: >
+	if [[ -n "$VIM_TERMINAL" ]]; then
+	    autoload -Uz add-zsh-hook
+	    add-zsh-hook -Uz chpwd _vim_sync_PWD
+	    function _vim_sync_PWD() {
+		printf '\033]51;["call", "Tapi_lcd", "%q"]\007' "$PWD"
+	    }
+	fi
+<
+Or, for fish: >
+	if test -n "$VIM_TERMINAL"
+	    function _vim_sync_PWD --on-variable=PWD
+		printf '\033]51;["call", "Tapi_lcd", "%s"]\007' "$PWD"
+	    end
+	end
 
 
 Using the client-server feature ~
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index d2adeff..059e44b 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -38,20 +38,6 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Support virtual text:  #7553
-- Wrong cursor position in Insert mode, wrong pos after typing char #10786
-- implement "text_align" - right
-    when not truncated, may increase line height
-- implement "text_align" - below
-    need to compute extra screen line
-- implement "text_wrap" - truncate
-- when Tab is in text handle it like a space
-- Also consider an empty line, should fix #10786.  Also check inserting text.
-- win_lbr_chartabsize() TODO item: count screen cells
-- check that when inserting/deleting text col == MAXCOL isn't changed
-- wrong cursor position (Yegappan, July 27)
-- many tests
-
 Further Vim9 improvements, possibly after launch:
 - Use Vim9 for more runtime files.
 - Check performance with callgrind and kcachegrind.
@@ -129,19 +115,6 @@
   Use ERROR_IF_POPUP_WINDOW for these.
 - Figure out the size and position better if wrapping inserts indent
 
-Text properties:
-- property is overruled by cursorline. (#8225).
-  Add better control over priority?  Make list of all highlighting, specify
-  where property fits in.
-  Or Should we let the textprop highlight overrule other (e.g. diff) highlight
-  if the priority is above a certain value?  (#7392)
-  Combining text property with 'cursorline' does not always work (Billie
-  Cleek, #5533)
-- Add text property that shifts text to make room for annotation (e.g.
-  variable type).  Like the opposite of conceal.  Requires fixing the cursor
-  positioning and mouse clicks as with conceal mode.
-- See remarks at top of src/textprop.c
-
 'incsearch' with :s:
 - :s/foo  using CTRL-G moves to another line, should not happen, or use the
   correct line (it uses the last but one line) (Lifepillar, Aug 18, #3345)
@@ -248,6 +221,7 @@
 
 To avoid flicker: add an option that when a screen clear is requested, instead
 of clearing it draws everything and uses "clear to end of line" for every line.
+Resetting 't_ut' already causes this?
 
 When scheme can't be found by configure there is no clear "not found" message:
     configure:5769: checking MzScheme install prefix
@@ -2679,6 +2653,8 @@
 
 
 Spell checking:
+-   [s does not find missing capital at start of the line.  #10838
+    Probably because the dot at the end of the previous line isn't seen.
 -   When 'cursorline' is set and the first word should have SpellCap
     highlighting, redrawing the line removes it when moving the cursor away
     from the line. (#7085)  Would need to inspect the end of the previous line
@@ -3784,6 +3760,7 @@
 Syntax highlighting:
     Long term goal: faster, better, etc.  Options:
     - use treesitter, NeoVim uses it - Many people don't like it.
+	After changes requires rebuilding the library.
     - use TextMate, vscode uses it.  #9087 - Other people don't like it.
       Vscode is asked to switch to treesitter:
       https://github.com/microsoft/vscode/issues/50140
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 7f9cee4..c1f74d6 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -268,14 +268,15 @@
 You cannot `unlet` script-local variables in |Vim9| script, only in legacy
 script.
 
-When a script finishes, the local variables declared there will not be
-deleted.  Functions defined in the script can use them.  Example:
+When a script has been processed to the end, the local variables declared
+there will not be deleted.  Functions defined in the script can use them.
+Example:
 >
 	vim9script
 	var counter = 0
 	def g:GetCount(): number
-	  s:counter += 1
-	  return s:counter
+	  counter += 1
+	  return counter
 	enddef
 
 Every time you call the function it will return the next count: >
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 5fba47b..01412a0 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1773,7 +1773,7 @@
 		name   # Error!
 	echo that
 		.name  # Error!
-
+<						*import-map*
 When you've imported a function from one script into a vim9 script you can
 refer to the imported function in a mapping by prefixing it with |<SID>|: >
 	noremap <silent> ,a :call <SID>name.Function()<CR>