patch 9.1.1391: Vim does not have a vertical tabpanel

Problem:  Vim does not have a tabpanel
Solution: include the tabpanel feature
          (Naruhiko Nishino, thinca)

closes: #17263

Co-authored-by: thinca <thinca@gmail.com>
Signed-off-by: Naruhiko Nishino <naru123456789@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 5563a05..274d56e 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 9.1.  Last change: 2025 May 10
+*options.txt*	For Vim version 9.1.  Last change: 2025 May 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3657,11 +3657,12 @@
 	  trunc		'>'		truncated text in the
 					|ins-completion-menu|.
 	  truncrl	'<'		same as "trunc" in 'rightleft' mode
+	  tpl_vert	'|'		vertical separators of 'tabpanel'
 
 	Any one that is omitted will fall back to the default.
 
 	Example: >
-	    :set fillchars=stl:\ ,stlnc:\ ,vert:\|,fold:-,diff:-
+	    :set fillchars=stl:\ ,stlnc:\ ,vert:\|,fold:-,diff:-,tpl_vert:\|
 <
 	All items support single-byte and multibyte characters.  But
 	double-width characters are not supported. |E1512|
@@ -7689,6 +7690,20 @@
 	line.
 	See |tab-page| for more information about tab pages.
 
+						*'showtabpanel'* *'stpl'*
+'showtabpanel' 'stpl'	number	(default 0)
+			global
+			{not in Vi}
+			{not available when compiled without the |+tabpanel|
+			feature}
+	The value of this option specifies when the |tabpanel| with tab page
+	labels will be displayed:
+		0: never
+		1: only if there are at least two tab pages
+		2: always
+	This is for the non-GUI implementation of the tabpanel only.
+	See |tab-page| for more information about tab page labels.
+
 						*'sidescroll'* *'ss'*
 'sidescroll' 'ss'	number	(default 0)
 			global
@@ -8408,6 +8423,71 @@
 	Maximum number of tab pages to be opened by the |-p| command line
 	argument or the ":tab all" command. |tabpage|
 
+				*'tabpanel'* *'tpl'* *g:actual_curtabpage*
+'tabpanel' 'tpl'			string	(default empty)
+			global
+			{not in Vi}
+	When non empty, this option determines the content of the |tabpanel|.
+	The option consists of printf style '%' items interspersed with
+	normal text, similar to the 'statusline' or 'tabline'.
+
+	When changing something that is used in 'tabpanel' that does not
+	trigger it to be updated, use |:redrawtabpanel|.
+	This option cannot be set in a modeline when 'modelineexpr' is off.
+
+	You can use |g:actual_curtabpage| within a function assigned to
+	tabpanel. |g:actual_curtabpage| represents current tab's label number.
+	This option can contain line breaks:
+>
+	set tabpanel=%!TabPanel()
+	function! TabPanel() abort
+	  return printf("(%2d)\n  %%f", g:actual_curtabpage)
+	endfunction
+<
+	The result is:
+>
+	+-----------+---------------------------------
+	|(1)        |
+	|  ~/aaa.txt|
+	|(2)        |
+	|  ~/.vimrc |
+	|           |
+	|           |
+	|           |
+<
+
+					*'tabpanelopt'* *'tplo'*
+'tabpanelopt' 'tplo'		string	(default "")
+			global
+			{not in Vi}
+	Optional settings for the |tabpanel|,  It can consist of the following
+	items.  Items must be separated by a comma.
+
+		align:{text}	Specified the position of tabpanel.
+				Currently supported positions are:
+
+				left	left-aligned
+				right	right-aligned
+
+				(default "left")
+
+		columns:{n}	Use the size (in char) of tabpanel.
+				The tabpanel is never shown when using zero
+				or less than the size of Vim window.
+				(default 20)
+
+		vert		Use a vertical separator for tabpanel.
+				This vertical separator is used "tpl_vert" of
+				'fillchars'.
+				(default off)
+
+	Examples: >
+		:set tabpanelopt=columns:16,align:right
+		:set tabpanelopt=
+		:set tabpanelopt=vert,align:right
+		:set tabpanelopt=columns:16
+<
+
 						*'tabstop'* *'ts'*
 'tabstop' 'ts'		number	(default 8)
 			local to buffer