home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / runtime / dos / syntax / tcsh.vim < prev    next >
Encoding:
Text File  |  2010-08-15  |  13.2 KB  |  249 lines

  1. " tcsh.vim: Vim syntax file for tcsh scripts
  2. " Maintainer:    Gautam Iyer <gi1242@gmail.com>
  3. " Modified:    Thu 17 Dec 2009 06:05:07 PM EST
  4. "
  5. " Description: We break up each statement into a "command" and an "end" part.
  6. " All groups are either a "command" or part of the "end" of a statement (ie
  7. " everything after the "command"). This is because blindly highlighting tcsh
  8. " statements as keywords caused way too many false positives. Eg:
  9. "
  10. "     set history=200
  11. "
  12. " causes history to come up as a keyword, which we want to avoid.
  13.  
  14. " Quit when a syntax file was already loaded
  15. if exists('b:current_syntax')
  16.   finish
  17. endif
  18.  
  19. let s:oldcpo = &cpo
  20. set cpo&vim " Line continuation is used
  21.  
  22. setlocal iskeyword+=-
  23.  
  24. syn case match
  25.  
  26. " ----- Clusters -----
  27. syn cluster tcshModifiers    contains=tcshModifier,tcshModifierError
  28. syn cluster tcshQuoteList    contains=tcshDQuote,tcshSQuote,tcshBQuote
  29. syn cluster tcshStatementEnds    contains=@tcshQuoteList,tcshComment,@tcshVarList,tcshRedir,tcshMeta,tcshHereDoc,tcshSpecial,tcshArguement
  30. syn cluster tcshStatements    contains=tcshBuiltin,tcshCommands,tcshIf,tcshWhile
  31. syn cluster tcshVarList        contains=tcshUsrVar,tcshArgv,tcshSubst
  32. syn cluster tcshConditions    contains=tcshCmdSubst,tcshParenExpr,tcshOperator,tcshNumber,@tcshVarList
  33.  
  34. " ----- Errors -----
  35. " Define first, so can be easily overridden.
  36. syn match tcshError contained '\v\S.+'
  37.  
  38. " ----- Statements -----
  39. " Tcsh commands: Any filename / modifiable variable (must be first!)
  40. syn match tcshCommands    '\v[a-zA-Z0-9\\./_$:-]+' contains=tcshSpecial,tcshUsrVar,tcshArgv,tcshVarError nextgroup=tcshStatementEnd
  41.  
  42. " Builtin commands except those treated specially. Currently (un)set(env),
  43. " (un)alias, if, while, else, bindkey
  44. syn keyword tcshBuiltin nextgroup=tcshStatementEnd alloc bg break breaksw builtins bye case cd chdir complete continue default dirs echo echotc end endif endsw eval exec exit fg filetest foreach getspath getxvers glob goto hashstat history hup inlib jobs kill limit log login logout ls ls-F migrate newgrp nice nohup notify onintr popd printenv pushd rehash repeat rootnode sched setpath setspath settc setty setxvers shift source stop suspend switch telltc time umask uncomplete unhash universe unlimit ver wait warp watchlog where which
  45.  
  46. " StatementEnd is anything after a built-in / command till the lexical end of a
  47. " statement (;, |, ||, |&, && or end of line)
  48. syn region tcshStatementEnd    transparent contained matchgroup=tcshBuiltin start='' end='\v\\@<!(;|\|[|&]?|\&\&|$)' contains=@tcshStatementEnds
  49.  
  50. " set expressions (Contains shell variables)
  51. syn keyword tcshShellVar contained afsuser ampm argv autocorrect autoexpand autolist autologout backslash_quote catalog cdpath color colorcat command complete continue continue_args correct cwd dextract dirsfile dirstack dspmbyte dunique echo echo_style edit ellipsis fignore filec gid group histchars histdup histfile histlit history home ignoreeof implicitcd inputmode killdup killring listflags listjobs listlinks listmax listmaxrows loginsh logout mail matchbeep nobeep noclobber noding noglob nokanji nonomatch nostat notify oid owd path printexitvalue prompt prompt2 prompt3 promptchars pushdtohome pushdsilent recexact recognize_only_executables rmstar rprompt savedirs savehist sched shell shlvl status symlinks tcsh term time tperiod tty uid user verbose version visiblebell watch who wordchars
  52. syn keyword tcshBuiltin    nextgroup=tcshSetEnd set unset
  53. syn region  tcshSetEnd    contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=tcshShellVar,@tcshStatementEnds
  54.  
  55. " setenv expressions (Contains environment variables)
  56. syn keyword tcshEnvVar contained AFSUSER COLUMNS DISPLAY EDITOR GROUP HOME HOST HOSTTYPE HPATH LANG LC_CTYPE LINES LS_COLORS MACHTYPE NOREBIND OSTYPE PATH PWD REMOTEHOST SHLVL SYSTYPE TERM TERMCAP USER VENDOR VISUAL
  57. syn keyword tcshBuiltin    nextgroup=tcshEnvEnd setenv unsetenv
  58. syn region  tcshEnvEnd    contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=tcshEnvVar,@tcshStatementEnds
  59.  
  60. " alias and unalias (contains special aliases)
  61. syn keyword tcshAliases contained beepcmd cwdcmd jobcmd helpcommand periodic precmd postcmd shell
  62. syn keyword tcshBuiltin    nextgroup=tcshAliCmd skipwhite alias unalias
  63. syn match   tcshAliCmd    contained nextgroup=tcshAliEnd skipwhite '\v(\w|-)+' contains=tcshAliases
  64. syn region  tcshAliEnd    contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=@tcshStatementEnds
  65.  
  66. " if statements
  67. syn keyword tcshIf    nextgroup=tcshIfEnd skipwhite if
  68. syn region  tcshIfEnd    contained start='\S' skip='\\$' matchgroup=tcshBuiltin end='\v<then>|$' contains=@tcshConditions,tcshSpecial,@tcshStatementEnds
  69. syn region  tcshIfEnd    contained matchgroup=tcshBuiltin contains=@tcshConditions,tcshSpecial start='(' end='\v\)%(\s+then>)?' skipwhite nextgroup=@tcshStatementEnds 
  70. syn region  tcshIfEnd    contained matchgroup=tcshBuiltin contains=tcshCommands,tcshSpecial start='\v\{\s+' end='\v\s+\}%(\s+then>)?' skipwhite nextgroup=@tcshStatementEnds keepend
  71.  
  72. " else statements
  73. syn keyword tcshBuiltin    nextgroup=tcshIf skipwhite else
  74.  
  75. " while statements (contains expressions / operators)
  76. syn keyword tcshBuiltin    nextgroup=@tcshConditions,tcshSpecial skipwhite while
  77.  
  78. " Conditions (for if and while)
  79. syn region tcshParenExpr contained contains=@tcshConditions,tcshSpecial matchgroup=tcshBuiltin start='(' end=')'
  80. syn region tcshCmdSubst  contained contains=tcshCommands matchgroup=tcshBuiltin start='\v\{\s+' end='\v\s+\}' keepend
  81.  
  82. " Bindkey. Internal editor functions
  83. syn keyword tcshBindkeyFuncs contained backward-char backward-delete-char
  84.         \ backward-delete-word backward-kill-line backward-word
  85.         \ beginning-of-line capitalize-word change-case
  86.         \ change-till-end-of-line clear-screen complete-word
  87.         \ complete-word-fwd complete-word-back complete-word-raw
  88.         \ copy-prev-word copy-region-as-kill dabbrev-expand delete-char
  89.         \ delete-char-or-eof delete-char-or-list
  90.         \ delete-char-or-list-or-eof delete-word digit digit-argument
  91.         \ down-history downcase-word end-of-file end-of-line
  92.         \ exchange-point-and-mark expand-glob expand-history expand-line
  93.         \ expand-variables forward-char forward-word
  94.         \ gosmacs-transpose-chars history-search-backward
  95.         \ history-search-forward insert-last-word i-search-fwd
  96.         \ i-search-back keyboard-quit kill-line kill-region
  97.         \ kill-whole-line list-choices list-choices-raw list-glob
  98.         \ list-or-eof load-average magic-space newline normalize-path
  99.         \ normalize-command overwrite-mode prefix-meta quoted-insert
  100.         \ redisplay run-fg-editor run-help self-insert-command
  101.         \ sequence-lead-in set-mark-command spell-word spell-line
  102.         \ stuff-char toggle-literal-history transpose-chars
  103.         \ transpose-gosling tty-dsusp tty-flush-output tty-sigintr
  104.         \ tty-sigquit tty-sigtsusp tty-start-output tty-stop-output
  105.         \ undefined-key universal-argument up-history upcase-word
  106.         \ vi-beginning-of-next-word vi-add vi-add-at-eol vi-chg-case
  107.         \ vi-chg-meta vi-chg-to-eol vi-cmd-mode vi-cmd-mode-complete
  108.         \ vi-delprev vi-delmeta vi-endword vi-eword vi-char-back
  109.         \ vi-char-fwd vi-charto-back vi-charto-fwd vi-insert
  110.         \ vi-insert-at-bol vi-repeat-char-fwd vi-repeat-char-back
  111.         \ vi-repeat-search-fwd vi-repeat-search-back vi-replace-char
  112.         \ vi-replace-mode vi-search-back vi-search-fwd vi-substitute-char
  113.         \ vi-substitute-line vi-word-back vi-word-fwd vi-undo vi-zero
  114.         \ which-command yank yank-pop e_copy_to_clipboard
  115.         \ e_paste_from_clipboard e_dosify_next e_dosify_prev e_page_up
  116.         \ e_page_down
  117. syn keyword tcshBuiltin nextgroup=tcshBindkeyEnd bindkey
  118. syn region tcshBindkeyEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$' contains=@tcshQuoteList,tcshComment,@tcshVarList,tcshMeta,tcshSpecial,tcshArguement,tcshBindkeyFuncs
  119.  
  120. " Expressions start with @.
  121. syn match tcshExprStart '\v\@\s+' nextgroup=tcshExprVar
  122. syn match tcshExprVar    contained '\v\h\w*%(\[\d+\])?' contains=tcshShellVar,tcshEnvVar nextgroup=tcshExprOp
  123. syn match tcshExprOp    contained '++\|--'
  124. syn match tcshExprOp    contained '\v\s*\=' nextgroup=tcshExprEnd
  125. syn match tcshExprEnd    contained '\v.*$'hs=e+1 contains=@tcshConditions
  126. syn match tcshExprEnd    contained '\v.{-};'hs=e    contains=@tcshConditions
  127.  
  128. " ----- Comments: -----
  129. syn match tcshComment    '#\s.*' contains=tcshTodo,tcshCommentTi,@Spell
  130. syn match tcshComment    '\v#($|\S.*)' contains=tcshTodo,tcshCommentTi
  131. syn match tcshSharpBang '^#! .*$'
  132. syn match tcshCommentTi contained '\v#\s*\u\w*(\s+\u\w*)*:'hs=s+1 contains=tcshTodo
  133. syn match tcshTodo    contained '\v\c<todo>'
  134.  
  135. " ----- Strings -----
  136. " Tcsh does not allow \" in strings unless the "backslash_quote" shell
  137. " variable is set. Set the vim variable "tcsh_backslash_quote" to 0 if you
  138. " want VIM to assume that no backslash quote constructs exist.
  139.  
  140. " Backquotes are treated as commands, and are not contained in anything
  141. if(exists('tcsh_backslash_quote') && tcsh_backslash_quote == 0)
  142.     syn region tcshSQuote    keepend contained start="\v\\@<!'" end="'"
  143.     syn region tcshDQuote    keepend contained start='\v\\@<!"' end='"' contains=@tcshVarList,tcshSpecial,@Spell
  144.     syn region tcshBQuote    keepend start='\v\\@<!`' end='`' contains=@tcshStatements
  145. else
  146.     syn region tcshSQuote    contained start="\v\\@<!'" skip="\v\\\\|\\'" end="'"
  147.     syn region tcshDQuote    contained start='\v\\@<!"' end='"' contains=@tcshVarList,tcshSpecial,@Spell
  148.     syn region tcshBQuote    keepend matchgroup=tcshBQuoteGrp start='\v\\@<!`' skip='\v\\\\|\\`' end='`' contains=@tcshStatements
  149. endif
  150.  
  151. " ----- Variables -----
  152. " Variable Errors. Must come first! \$ constructs will be flagged by
  153. " tcshSpecial, so we don't consider them here.
  154. syn match tcshVarError    '\v\$\S*'    contained
  155.  
  156. " Modifiable Variables without {}.
  157. syn match tcshUsrVar contained '\v\$\h\w*%(\[\d+%(-\d+)?\])?' nextgroup=@tcshModifiers contains=tcshShellVar,tcshEnvVar
  158. syn match tcshArgv   contained '\v\$%(\d+|\*)' nextgroup=@tcshModifiers
  159.  
  160. " Modifiable Variables with {}.
  161. syn match tcshUsrVar contained '\v\$\{\h\w*%(\[\d+%(-\d+)?\])?%(:\S*)?\}' contains=@tcshModifiers,tcshShellVar,tcshEnvVar
  162. syn match tcshArgv   contained '\v\$\{%(\d+|\*)%(:\S*)?\}' contains=@tcshModifiers
  163.  
  164. " Un-modifiable Substitutions. Order is important here.
  165. syn match tcshSubst contained    '\v\$[?#$!_<]' nextgroup=tcshModifierError
  166. syn match tcshSubst contained    '\v\$[%#?]%(\h\w*|\d+)' nextgroup=tcshModifierError contains=tcshShellVar,tcshEnvVar
  167. syn match tcshSubst contained    '\v\$\{[%#?]%(\h\w*|\d+)%(:\S*)?\}' contains=tcshModifierError contains=tcshShellVar,tcshEnvVar
  168.  
  169. " Variable Name Expansion Modifiers (order important)
  170. syn match tcshModifierError    contained '\v:\S*'
  171. syn match tcshModifier        contained '\v:[ag]?[htreuls&qx]' nextgroup=@tcshModifiers
  172.  
  173. " ----- Operators / Specials -----
  174. " Standard redirects (except <<) [<, >, >>, >>&, >>!, >>&!]
  175. syn match tcshRedir contained    '\v\<|\>\>?\&?!?'
  176.  
  177. " Meta-chars
  178. syn match tcshMeta  contained    '\v[]{}*?[]'
  179.  
  180. " Here documents (<<)
  181. syn region tcshHereDoc contained matchgroup=tcshShellVar start='\v\<\<\s*\z(\h\w*)' end='^\z1$' contains=@tcshVarList,tcshSpecial
  182. syn region tcshHereDoc contained matchgroup=tcshShellVar start="\v\<\<\s*'\z(\h\w*)'" start='\v\<\<\s*"\z(\h\w*)"$' start='\v\<\<\s*\\\z(\h\w*)$' end='^\z1$'
  183.  
  184. " Operators
  185. syn match tcshOperator    contained '&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||'
  186. "syn match tcshOperator    contained '[(){}]'
  187.  
  188. " Numbers
  189. syn match tcshNumber    contained '\v<-?\d+>'
  190.  
  191. " Arguments
  192. syn match tcshArguement    contained '\v\s@<=-(\w|-)*'
  193.  
  194. " Special characters. \xxx, or backslashed characters.
  195. "syn match tcshSpecial    contained '\v\\@<!\\(\d{3}|.)'
  196. syn match tcshSpecial    contained '\v\\%([0-7]{3}|.)'
  197.  
  198. " ----- Synchronising -----
  199. if exists('tcsh_minlines')
  200.     if tcsh_minlines == 'fromstart'
  201.     syn sync fromstart
  202.     else
  203.     exec 'syn sync minlines=' . tcsh_minlines
  204.     endif
  205. else
  206.     syn sync minlines=100    " Some completions can be quite long
  207. endif
  208.  
  209. " Define highlighting of syntax groups
  210. hi def link tcshError        Error
  211. hi def link tcshBuiltin        Statement
  212. hi def link tcshShellVar    Preproc
  213. hi def link tcshEnvVar        tcshShellVar
  214. hi def link tcshAliases        tcshShellVar
  215. hi def link tcshAliCmd        Identifier
  216. hi def link tcshCommands    Identifier
  217. hi def link tcshIf        tcshBuiltin
  218. hi def link tcshWhile        tcshBuiltin
  219. hi def link tcshBindkeyFuncs    Function
  220. hi def link tcshExprStart    tcshBuiltin
  221. hi def link tcshExprVar        tcshUsrVar
  222. hi def link tcshExprOp        tcshOperator
  223. hi def link tcshExprEnd        tcshOperator
  224. hi def link tcshComment        Comment
  225. hi def link tcshCommentTi    Preproc
  226. hi def link tcshSharpBang    tcshCommentTi
  227. hi def link tcshTodo        Todo
  228. hi def link tcshSQuote        Constant
  229. hi def link tcshDQuote        tcshSQuote
  230. hi def link tcshBQuoteGrp    Include
  231. hi def link tcshVarError    Error
  232. hi def link tcshUsrVar        Type
  233. hi def link tcshArgv        tcshUsrVar
  234. hi def link tcshSubst        tcshUsrVar
  235. hi def link tcshModifier    tcshArguement
  236. hi def link tcshModifierError    tcshVarError
  237. hi def link tcshMeta        tcshSubst
  238. hi def link tcshRedir        tcshOperator
  239. hi def link tcshHereDoc        tcshSQuote
  240. hi def link tcshOperator    Operator
  241. hi def link tcshNumber        Number
  242. hi def link tcshArguement    Special
  243. hi def link tcshSpecial        SpecialChar
  244.  
  245. let &cpo = s:oldcpo
  246. unlet s:oldcpo
  247.  
  248. let b:current_syntax = 'tcsh'
  249.