mirror of
				https://github.com/vim/vim.git
				synced 2025-10-28 09:27:14 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			275 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			275 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	Tcl/Tk
 | |
| " Maintainer:	Taylor Venable <taylor@metasyntax.net>
 | |
| " 		(previously Brett Cannon <brett@python.org>)
 | |
| " 		(previously Dean Copsey <copsey@cs.ucdavis.edu>)
 | |
| "		(previously Matt Neumann <mattneu@purpleturtle.com>)
 | |
| "		(previously Allan Kelly <allan@fruitloaf.co.uk>)
 | |
| " Original:	Robin Becker <robin@jessikat.demon.co.uk>
 | |
| " Last Change:	2021 Nov 16
 | |
| " Version:	1.14 plus improvements from PR #8948
 | |
| " URL:		(removed, no longer worked)
 | |
| 
 | |
| " quit when a syntax file was already loaded
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| " Basic Tcl commands: http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm
 | |
| syn keyword tclCommand		after append array bgerror binary cd chan clock close concat
 | |
| syn keyword tclCommand		dde dict encoding eof error eval exec exit expr fblocked
 | |
| syn keyword tclCommand		fconfigure fcopy file fileevent flush format gets glob
 | |
| syn keyword tclCommand		global history http incr info interp join lappend lassign
 | |
| syn keyword tclCommand		lindex linsert list llength lmap load lrange lrepeat
 | |
| syn keyword tclCommand		lreplace lreverse lsearch lset lsort memory my namespace
 | |
| syn keyword tclCommand		next nextto open package pid puts pwd read refchan regexp
 | |
| syn keyword tclCommand		registry regsub rename scan seek self set socket source
 | |
| syn keyword tclCommand		split string subst tell time trace unknown unload unset
 | |
| syn keyword tclCommand		update uplevel upvar variable vwait
 | |
| 
 | |
| " The 'Tcl Standard Library' commands: http://www.tcl.tk/man/tcl8.6/TclCmd/library.htm
 | |
| syn keyword tclCommand		auto_execok auto_import auto_load auto_mkindex auto_reset
 | |
| syn keyword tclCommand		auto_qualify tcl_findLibrary parray tcl_endOfWord
 | |
| syn keyword tclCommand		tcl_startOfNextWord tcl_startOfPreviousWord
 | |
| syn keyword tclCommand		tcl_wordBreakAfter tcl_wordBreakBefore
 | |
| 
 | |
| " Global variables used by Tcl: http://www.tcl.tk/man/tcl8.6/TclCmd/tclvars.htm
 | |
| syn keyword tclVars		auto_path env errorCode errorInfo tcl_library tcl_patchLevel
 | |
| syn keyword tclVars		tcl_pkgPath tcl_platform tcl_precision tcl_rcFileName
 | |
| syn keyword tclVars		tcl_traceCompile tcl_traceExec tcl_wordchars
 | |
| syn keyword tclVars		tcl_nonwordchars tcl_version argc argv argv0 tcl_interactive
 | |
| 
 | |
| " Strings which expr accepts as boolean values, aside from zero / non-zero.
 | |
| syn keyword tclBoolean		true false on off yes no
 | |
| 
 | |
| syn keyword tclProcCommand	apply coroutine proc return tailcall yield yieldto
 | |
| syn keyword tclConditional	if then else elseif switch
 | |
| syn keyword tclConditional	catch try throw finally
 | |
| syn keyword tclLabel		default
 | |
| syn keyword tclRepeat		while for foreach break continue
 | |
| 
 | |
| syn keyword tcltkSwitch	contained	insert create polygon fill outline tag
 | |
| 
 | |
| " WIDGETS
 | |
| " commands associated with widgets
 | |
| syn keyword tcltkWidgetSwitch contained background highlightbackground insertontime cget
 | |
| syn keyword tcltkWidgetSwitch contained selectborderwidth borderwidth highlightcolor insertwidth
 | |
| syn keyword tcltkWidgetSwitch contained selectforeground cursor highlightthickness padx setgrid
 | |
| syn keyword tcltkWidgetSwitch contained exportselection insertbackground pady takefocus
 | |
| syn keyword tcltkWidgetSwitch contained font insertborderwidth relief xscrollcommand
 | |
| syn keyword tcltkWidgetSwitch contained foreground insertofftime selectbackground yscrollcommand
 | |
| syn keyword tcltkWidgetSwitch contained height spacing1 spacing2 spacing3
 | |
| syn keyword tcltkWidgetSwitch contained state tabs width wrap
 | |
| " button
 | |
| syn keyword tcltkWidgetSwitch contained command default
 | |
| " canvas
 | |
| syn keyword tcltkWidgetSwitch contained closeenough confine scrollregion xscrollincrement yscrollincrement orient
 | |
| " checkbutton, radiobutton
 | |
| syn keyword tcltkWidgetSwitch contained indicatoron offvalue onvalue selectcolor selectimage state variable
 | |
| " entry, frame
 | |
| syn keyword tcltkWidgetSwitch contained show class colormap container visual
 | |
| " listbox, menu
 | |
| syn keyword tcltkWidgetSwitch contained selectmode postcommand selectcolor tearoff tearoffcommand title type
 | |
| " menubutton, message
 | |
| syn keyword tcltkWidgetSwitch contained direction aspect justify
 | |
| " scale
 | |
| syn keyword tcltkWidgetSwitch contained bigincrement digits from length resolution showvalue sliderlength sliderrelief tickinterval to
 | |
| " scrollbar
 | |
| syn keyword tcltkWidgetSwitch contained activerelief elementborderwidth
 | |
| " image
 | |
| syn keyword tcltkWidgetSwitch contained delete names types create
 | |
| " variable reference
 | |
| 	" ::optional::namespaces
 | |
| syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_]*::\)*\)\a[[:alnum:]_]*"
 | |
| 	" ${...} may contain any character except '}'
 | |
| syn match tclVarRef "${[^}]*}"
 | |
| 
 | |
| " Used to facilitate hack to utilize string background for certain color
 | |
| " schemes, e.g. inkpot and lettuce.
 | |
| syn cluster tclVarRefC add=tclVarRef
 | |
| syn cluster tclSpecialC add=tclSpecial
 | |
| 
 | |
| " The syntactic unquote-splicing replacement for [expand].
 | |
| syn match tclExpand '\s{\*}'
 | |
| syn match tclExpand '^{\*}'
 | |
| 
 | |
| " menu, mane add
 | |
| syn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator
 | |
| syn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak
 | |
| syn keyword tcltkWidgetSwitch contained font foreground hidemargin image indicatoron label menu offvalue onvalue
 | |
| syn keyword tcltkWidgetSwitch contained selectcolor selectimage state underline value variable
 | |
| syn keyword tcltkWidgetSwitch contained add clone configure delete entrycget entryconfigure index insert invoke
 | |
| syn keyword tcltkWidgetSwitch contained post postcascade type unpost yposition activate
 | |
| "syn keyword tcltkWidgetSwitch contained
 | |
| "syn match tcltkWidgetSwitch contained
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<button\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<scale\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| 
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<canvas\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<checkbutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<entry\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<frame\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<image\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<listbox\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<menubutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<message\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<radiobutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<scrollbar\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| " These words are dual purpose.
 | |
| " match switches
 | |
| "syn match tcltkWidgetSwitch contained "-text"hs=s+1
 | |
| syn match tcltkWidgetSwitch contained "-text\(var\)\?"hs=s+1
 | |
| syn match tcltkWidgetSwitch contained "-menu"hs=s+1
 | |
| syn match tcltkWidgetSwitch contained "-label"hs=s+1
 | |
| " match commands - 2 lines for pretty match.
 | |
| "variable
 | |
| " Special case - If a number follows a variable region, it must be at the end of
 | |
| " the pattern, by definition. Therefore, (1) either include a number as the region
 | |
| " end and exclude tclNumber from the contains list, or (2) make variable
 | |
| " keepend. As (1) would put variable out of step with everything else, use (2).
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="^\<variable\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="\s\<variable\>\|\[\<variable\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand
 | |
| " menu
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<menu\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<menu\>\|\[\<menu\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| " label
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<label\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<label\>\|\[\<label\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| " text
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<text\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tcltkSwitch,tclNumber,tclVarRef,tclString
 | |
| syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<text\>\|\[\<text\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
 | |
| 
 | |
| " This isn't contained (I don't think) so it's OK to just associate with the Color group.
 | |
| " TODO: This could be wrong.
 | |
| syn keyword tcltkWidgetColor	toplevel
 | |
| 
 | |
| 
 | |
| syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\<configure\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef keepend
 | |
| syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\<cget\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1  contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef
 | |
| 
 | |
| 
 | |
| " NAMESPACE
 | |
| " commands associated with namespace
 | |
| syn keyword tcltkNamespaceSwitch contained children code current delete eval
 | |
| syn keyword tcltkNamespaceSwitch contained export forget import inscope origin
 | |
| syn keyword tcltkNamespaceSwitch contained parent qualifiers tail which command variable
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="\<namespace\>" matchgroup=NONE skip="^\s*$" end="{\|}\|]\|\"\|[^\\]*\s*$"me=e-1  contains=tclLineContinue,tcltkNamespaceSwitch
 | |
| 
 | |
| " EXPR
 | |
| " commands associated with expr
 | |
| syn keyword tcltkMaths contained	abs acos asin atan atan2 bool ceil cos cosh double entier
 | |
| syn keyword tcltkMaths contained	exp floor fmod hypot int isqrt log log10 max min pow rand
 | |
| syn keyword tcltkMaths contained	round sin sinh sqrt srand tan tanh wide
 | |
| 
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="\<expr\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1  contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf
 | |
| 
 | |
| " format
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="\<format\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1  contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf
 | |
| 
 | |
| " PACK
 | |
| " commands associated with pack
 | |
| syn keyword tcltkPackSwitch	contained	forget info propagate slaves
 | |
| syn keyword tcltkPackConfSwitch	contained	after anchor before expand fill in ipadx ipady padx pady side
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="\<pack\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkPackSwitch,tcltkPackConf,tcltkPackConfSwitch,tclNumber,tclVarRef,tclString,tcltkCommand keepend
 | |
| 
 | |
| " STRING
 | |
| " commands associated with string
 | |
| syn keyword tcltkStringSwitch	contained	compare first index last length match range tolower toupper trim trimleft trimright wordstart wordend
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="\<string\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkStringSwitch,tclNumber,tclVarRef,tclString,tcltkCommand
 | |
| 
 | |
| " ARRAY
 | |
| " commands associated with array
 | |
| syn keyword tcltkArraySwitch	contained	anymore donesearch exists get names nextelement size startsearch set
 | |
| " match from command name to ] or EOL
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="\<array\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkArraySwitch,tclNumber,tclVarRef,tclString,tcltkCommand
 | |
| 
 | |
| " LSORT
 | |
| " switches for lsort
 | |
| syn keyword tcltkLsortSwitch	contained	ascii dictionary integer real command increasing decreasing index
 | |
| " match from command name to ] or EOL
 | |
| syn region tcltkCommand matchgroup=tcltkCommandColor start="\<lsort\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1  contains=tclLineContinue,tcltkLsortSwitch,tclNumber,tclVarRef,tclString,tcltkCommand
 | |
| 
 | |
| syn keyword tclTodo contained	TODO
 | |
| 
 | |
| " Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16
 | |
| " Octal, hexadecimal, Unicode codepoints, and the classics.
 | |
| " Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'.
 | |
| syn match   tclSpecial contained '\\\(\o\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)'
 | |
| syn match   tclSpecial contained '\\[\[\]\{\}\"\$]'
 | |
| 
 | |
| " Command appearing inside another command or inside a string.
 | |
| syn region tclEmbeddedStatement	start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement
 | |
| " A string needs the skip argument as it may legitimately contain \".
 | |
| " Match at start of line
 | |
| syn region  tclString		  start=+^"+ end=+"+ contains=@tclSpecialC,@Spell skip=+\\\\\|\\"+
 | |
| "Match all other legal strings.
 | |
| syn region  tclString		  start=+[^\\]"+ms=s+1  end=+"+ contains=@tclSpecialC,@tclVarRefC,tclEmbeddedStatement,@Spell skip=+\\\\\|\\"+
 | |
| 
 | |
| " Line continuation is backslash immediately followed by newline.
 | |
| syn match tclLineContinue '\\$'
 | |
| 
 | |
| if exists('g:tcl_warn_continuation')
 | |
|     syn match tclNotLineContinue '\\\s\+$'
 | |
| endif
 | |
| 
 | |
| "integer number, or floating point number without a dot and with "f".
 | |
| syn case ignore
 | |
| syn match  tclNumber		"\<\d\+\(u\=l\=\|lu\|f\)\>"
 | |
| "floating point number, with dot, optional exponent
 | |
| syn match  tclNumber		"\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
 | |
| "floating point number, starting with a dot, optional exponent
 | |
| syn match  tclNumber		"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
 | |
| "floating point number, without dot, with exponent
 | |
| syn match  tclNumber		"\<\d\+e[-+]\=\d\+[fl]\=\>"
 | |
| "hex number
 | |
| syn match  tclNumber		"0x\x\+\(u\=l\=\|lu\)\>"
 | |
| "syn match  tclIdentifier	"\<\h\w*\>"
 | |
| syn case match
 | |
| 
 | |
| syn region  tclComment		start="^\s*\#" skip="\\$" end="$" contains=tclTodo,@Spell
 | |
| syn region  tclComment		start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo,@Spell
 | |
| 
 | |
| "syn match tclComment /^\s*\#.*$/
 | |
| "syn match tclComment /;\s*\#.*$/hs=s+1
 | |
| 
 | |
| "syn sync ccomment tclComment
 | |
| 
 | |
| " Define the default highlighting.
 | |
| " Only when an item doesn't have highlighting yet
 | |
| 
 | |
| hi def link tcltkSwitch		Special
 | |
| hi def link tclExpand		Special
 | |
| hi def link tclLabel		Label
 | |
| hi def link tclConditional		Conditional
 | |
| hi def link tclRepeat		Repeat
 | |
| hi def link tclNumber		Number
 | |
| hi def link tclError		Error
 | |
| hi def link tclCommand		Statement
 | |
| hi def link tclProcCommand		Type
 | |
| hi def link tclString		String
 | |
| hi def link tclComment		Comment
 | |
| hi def link tclSpecial		Special
 | |
| hi def link tclTodo		Todo
 | |
| " Below here are the commands and their options.
 | |
| hi def link tcltkCommandColor	Statement
 | |
| hi def link tcltkWidgetColor	Structure
 | |
| hi def link tclLineContinue	WarningMsg
 | |
| if exists('g:tcl_warn_continuation')
 | |
| hi def link tclNotLineContinue	ErrorMsg
 | |
| endif
 | |
| hi def link tcltkStringSwitch	Special
 | |
| hi def link tcltkArraySwitch	Special
 | |
| hi def link tcltkLsortSwitch	Special
 | |
| hi def link tcltkPackSwitch	Special
 | |
| hi def link tcltkPackConfSwitch	Special
 | |
| hi def link tcltkMaths		Special
 | |
| hi def link tcltkNamespaceSwitch	Special
 | |
| hi def link tcltkWidgetSwitch	Special
 | |
| hi def link tcltkPackConfColor	Identifier
 | |
| hi def link tclVarRef		Identifier
 | |
| 
 | |
| 
 | |
| let b:current_syntax = "tcl"
 | |
| 
 | |
| " vim: ts=8 noet nolist
 |