patch 9.0.0007: no support for double, dotted and dashed underlines

Problem:    No support for double, dotted and dashed underlines.
Solution:   Add the termcap entries and highlight modes. (closes #9553)
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 84ab1fb..1d14c44 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -4211,7 +4211,10 @@
 		b	bold		(termcap entry "md" and "me")
 		s	standout	(termcap entry "so" and "se")
 		u	underline	(termcap entry "us" and "ue")
-		c	undercurl	(termcap entry "Cs" and "Ce")
+		c	undercurl	(termcap entry "Us" and "Ce")
+		2	double underline (termcap entry "Ds" and "Ce")
+		d	dotted underline (termcap entry "ds" and "Ce")
+		=	dashed underline (termcap entry "Ds" and "Ce")
 		t	strikethrough	(termcap entry "Ts" and "Te")
 		n	no highlighting
 		-	no highlighting
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index c3d6777..1229b19 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -5002,14 +5002,18 @@
 1. highlight arguments for normal terminals
 
 					*bold* *underline* *undercurl*
-					*inverse* *italic* *standout*
-					*nocombine* *strikethrough*
+					*underdouble* *underdotted*
+					*underdashed* *inverse* *italic*
+					*standout* *nocombine* *strikethrough*
 term={attr-list}			*attr-list* *highlight-term* *E418*
 	attr-list is a comma-separated list (without spaces) of the
 	following items (in any order):
 		bold
 		underline
 		undercurl	not always available
+		underdouble	not always available
+		underdotted	not always available
+		underdashed	not always available
 		strikethrough	not always available
 		reverse
 		inverse		same as reverse
@@ -5020,6 +5024,7 @@
 
 	Note that "bold" can be used here and by using a bold font.  They
 	have the same effect.
+							*underline-codes*
 	"undercurl" is a curly underline.  When "undercurl" is not possible
 	then "underline" is used.  In general "undercurl" and "strikethrough"
 	are only available in the GUI and some terminals.  The color is set
@@ -5028,6 +5033,17 @@
 	    let &t_Cs = "\e[4:3m"
 	    let &t_Ce = "\e[4:0m"
 
+<	"underdouble" is a double underline, "underdotted" is a dotted
+	underline and "underdashed" is a dashed underline.  These are only
+	supported by some terminals.  If your terminal supports them you may
+	have to specify the codes like this: >
+	    let &t_Us = "\e[4:2m"
+	    let &t_ds = "\e[4:4m"
+	    let &t_Ds = "\e[4:5m"
+<	They are reset with |t_Ce|, the same as curly underline (undercurl).
+	When t_Us, t_ds or t_Ds is not set then underline will be used as a
+	fallback.
+
 
 start={term-list}				*highlight-start* *E422*
 stop={term-list}				*term-list* *highlight-stop*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index f103405..c4199c2 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -372,8 +372,11 @@
 
 Added by Vim (there are no standard codes for these):
 	t_AU	set underline color (ANSI)			*t_AU* *'t_AU'*
-	t_Ce	undercurl end					*t_Ce* *'t_Ce'*
-	t_Cs	undercurl mode					*t_Cs* *'t_Cs'*
+	t_Ce	undercurl and underline end			*t_Ce* *'t_Ce'*
+	t_Cs	undercurl (curly underline) mode		*t_Cs* *'t_Cs'*
+	t_Us	double underline mode				*t_Us* *'t_Us'*
+	t_ds	dotted underline mode				*t_ds* *'t_ds'*
+	t_Ds	dashed underline mode				*t_Ds* *'t_Ds'*
 	t_Te	strikethrough end				*t_Te* *'t_Te'*
 	t_Ts	strikethrough mode				*t_Ts* *'t_Ts'*
 	t_IS	set icon text start				*t_IS* *'t_IS'*