diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 2a5f5fd73..4b68a16b4 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -365,6 +365,7 @@ Name			triggered by ~
 |InsertEnter|		starting Insert mode
 |InsertChange|		when typing <Insert> while in Insert or Replace mode
 |InsertLeave|		when leaving Insert mode
+|InsertLeavePre| 	just before leaving Insert mode
 |InsertCharPre|		when a character was typed in Insert mode, before
 			inserting it
 
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 8403baca6..79c9c1d97 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1170,7 +1170,7 @@ tag		command		action ~
 				be remapped
 |:args|		:ar[gs]		print the argument list
 |:argadd|	:arga[dd]	add items to the argument list
-:argdedupe	:argdedupe	remove duplicates from the argument list
+|:argdedupe|	:argdedupe	remove duplicates from the argument list
 |:argdelete|	:argd[elete]	delete items from the argument list
 |:argedit|	:arge[dit]	add item to the argument list and edit it
 |:argdo|	:argdo		do a command on all items in the argument list
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index ca0bbbca7..6f39785be 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -71,6 +71,127 @@ Various new items					*new-items-9*
 TODO
 
 
+Options: ~
+
+'autoshelldir'		change directory to the shell's current directory
+'cdhome'		change directory to the home directory by ":cd"
+'guiligatures'		GTK GUI: ASCII characters that can form shapes
+'quickfixtextfunc'	function for the text in the quickfix window
+'spelloptions'		options for spell checking
+'thesaurusfunc'		function to be used for thesaurus completion
+'xtermcodes'		request terminal codes from an xterm
+
+
+Ex commands: ~
+
+|:asbtract|
+|:argdedupe|		remove duplicates from the argument list
+|:balt|			like ":badd" but also set the alternate file
+|:class|		reserved for future use
+|:def|			define a Vim9 user function
+|:defcompile|		compile Vim9 user functions in current script
+|:disassemble|		disassemble Vim9 user function
+|:echoconsole|		like :echomsg but write to stdout
+|:endinterface|		reserved for future use
+|:endclass|		reserved for future use
+|:enddef|		end of a user function started with :def
+|:endenum|		reserved for future use
+|:enum|			reserved for future use
+|:export|		Vim9: export an item from a script
+|:final|		declare an immutable variable in Vim9
+|:import|		Vim9: import an item from another script
+|:interface|		reserved for future use
+|:legacy|		make following command use legacy script syntax
+|:static|		reserved for future use
+|:type|			reserved for future use
+|:var|			variable declaration in Vim9
+|:vim9cmd|		make following command use Vim9 script syntax
+|:vim9script|		indicates Vim9 script file
+
+
+New and extended functions: ~
+
+|assert_nobeep()|	assert that a command does not cause a beep
+|blob2list()|		get a list of numbers from a blob
+|charclass()|		class of a character
+|charcol()|		character number of the cursor or a mark
+|charidx()|		character index of a byte in a string
+|digraph_get()|		get digraph
+|digraph_getlist()|	get all digraphs
+|digraph_set()|		register digraph
+|digraph_setlist()|	register multiple digraphs
+|echoraw()|		output characters as-is
+|exists_compiled()|	like exists() but check at compile time
+|extendnew()|		make a new Dictionary and append items
+|flatten()|		flatten a List
+|flattennew()|		flatten a copy of a List
+|fullcommand()|		get full command name
+|getcharpos()|		get character position of cursor, mark, etc.
+|getcharstr()|		get a character from the user as a string
+|getcursorcharpos()|	get character position of the cursor
+|getmarklist()|		list of global/local marks
+|getreginfo()|		get information about a register
+|gettext()|		lookup message translation
+|hlget()|		get highlight group attributes
+|hlset()|		set highlight group attributes
+|list2blob()|		get a blob from a list of numbers
+|mapnew()|		make a new List with changed items
+|mapset()|		restore a mapping
+|matchfuzzy()|		fuzzy matches a string in a list of strings
+|matchfuzzypos()|	fuzzy matches a string in a list of strings
+|menu_info()|		get information about a menu item
+|popup_list()|		get list of all popup window IDs
+|prompt_getprompt()|	get the effective prompt text for a buffer
+|prop_add_list()|	attach a property at multiple positions
+|prop_find()|		search for a property
+|readblob()|		read a file into a Blob
+|readdirex()|		get a List of file information in a directory
+|reduce()|		reduce a List to a value
+|searchcount()|		get number of matches before/after the cursor
+|setcellwidths()|	set character cell width overrides
+|setcharpos()|		set character position of cursor, mark, etc.
+|setcursorcharpos()|	set character position of the cursor
+|slice()|		take a slice of a List
+|strcharlen()|		length of a string in characters
+|terminalprops()|	properties of the terminal
+|test_gui_event()|	generate a GUI event for testing
+|test_null_function()|	return a null Funcref
+|test_srand_seed()|	set the seed value for srand()
+|test_unknown()|	return a value with unknown type
+|test_void()|		return a value with void type
+|typename()|		type of a variable as text
+|win_gettype()|		get type of window
+|win_move_separator()|	move window vertical separator
+|win_move_statusline()|	move window status line
+|windowsversion()|	get MS-Windows version
+
+
+New Vim variables: ~
+
+|v:numbermax|		maximum value of a number
+|v:numbermin|		minimum value of a number (negative)
+|v:numbersize|		number of bits in a Number
+|v:collate|		current locale setting for collation order
+|v:exiting|		vim exit code
+|v:colornames|		dictionary that maps color names to hex color strings
+|v:sizeofint|		number of bytes in an int
+|v:sizeoflong|		number of bytes in a long
+|v:sizeofpointer|	number of bytes in a pointer
+|v:maxcol|		maximum line length
+
+
+New autocommand events: ~
+
+|CompleteDonePre|	after Insert mode completion is done, before clearing
+			info
+|DirChangedPre|		before the working directory will change
+|InsertLeavePre| 	just before leaving Insert mode
+|ModeChanged|		after changing the mode
+|SigUSR1|		after the SIGUSR1 signal has been detected
+|WinClosed|		after closing a window
+|VimSuspend|		when suspending Vim
+|VimResume|		when Vim is resumed after being suspended
+
 New runtime files: ~
 
 Too many to list here.
