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 / unix / vim-6.2.tar.bz2 / vim-6.2.tar / vim62 / runtime / syntax / nroff.vim < prev    next >
Encoding:
Text File  |  2003-05-24  |  7.8 KB  |  260 lines

  1. " VIM syntax file
  2. " Language:    nroff/groff
  3. " Maintainer:    Alejandro L≤pez-Valencia <dradul@yahoo.com>
  4. " URL:        http://dradul.tripod.com/vim
  5. " Last Change:    2003 May 24
  6. "
  7. " {{{1 Acknowledgements
  8. "
  9. " ACKNOWLEDGEMENTS:
  10. "
  11. " My thanks to JΘr⌠me Pl√t <Jerome.Plut@ens.fr>, who was the
  12. " creator and maintainer of this syntax file for several years.
  13. " May I be as good at it as he has been.
  14. "
  15. " {{{1 Todo
  16. "
  17. " TODO:
  18. "
  19. " * Write syntax highlighting files for the preprocessors,
  20. "    and integrate with nroff.vim.
  21. "
  22. "
  23. " {{{1 Start syntax highlighting.
  24. "
  25. " For version 5.x: Clear all syntax items
  26. " For version 6.x: Quit when a syntax file was already loaded
  27. "
  28. if version < 600
  29.     syntax clear
  30. elseif exists("b:current_syntax")
  31.     finish
  32. endif
  33.  
  34. "
  35. " {{{1 plugin settings...
  36. "
  37. " {{{2 enable spacing error highlighting
  38. "
  39. if exists("nroff_space_errors")
  40.     syn match nroffError /\s\+$/
  41.     syn match nroffSpaceError /[.,:;!?]\s\{2,}/
  42. endif
  43. "
  44. "
  45. " {{{1 Special file settings
  46. "
  47. " {{{2  ms exdented paragraphs are not in the default paragraphs list.
  48. "
  49. setlocal paragraphs+=XP
  50. "
  51. " {{{2 Activate navigation to preporcessor sections.
  52. "
  53. if exists("b:preprocs_as_sections")
  54.     setlocal sections=EQTSPS[\ G1GS
  55. endif
  56.  
  57. " {{{1 Escape sequences
  58. " ------------------------------------------------------------
  59.  
  60. syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg
  61. syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg
  62. syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize
  63. syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg
  64.  
  65. syn match nroffEscRegArg /./ contained
  66. syn match nroffEscRegArg2 /../ contained
  67. syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2
  68. syn match nroffEscArg /./ contained
  69. syn match nroffEscArg2 /../ contained
  70. syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2
  71. syn match nroffSize /\((\d\)\=\d/ contained
  72.  
  73. syn region nroffEscCharArg start=/'/ end=/'/ contained
  74. syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial
  75.  
  76. if exists("b:nroff_is_groff")
  77.     syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline
  78.     syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained
  79. endif
  80.  
  81. syn match nroffEscape /\\[adprtu{}]/
  82. syn match nroffEscape /\\$/
  83. syn match nroffEscape /\\\$[@*]/
  84.  
  85. " {{{1 Strings and special characters
  86. " ------------------------------------------------------------
  87.  
  88. syn match nroffSpecialChar /\\[\\eE?!-]/
  89. syn match nroffSpace "\\[&%~|^0)/,]"
  90. syn match nroffSpecialChar /\\(../
  91.  
  92. if exists("b:nroff_is_groff")
  93.     syn match nroffSpecialChar /\\\[[^]]*]/
  94.     syn region nroffPreserve  matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline
  95. endif
  96.  
  97. syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline
  98.  
  99. syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace
  100.  
  101.  
  102. syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained
  103. syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained
  104.  
  105.  
  106. " {{{1 Numbers and units
  107. " ------------------------------------------------------------
  108. syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber
  109. syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar
  110. syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar
  111. syn match nroffBadChar /./ contained
  112. syn match nroffUnit /[icpPszmnvMu]/ contained
  113.  
  114.  
  115. " {{{1 Requests
  116. " ------------------------------------------------------------
  117.  
  118. " Requests begin with . or ' at the beginning of a line, or
  119. " after .if or .ie.
  120.  
  121. syn match nroffReqLeader /^[.']/    nextgroup=nroffReqName skipwhite
  122. syn match nroffReqLeader /[.']/    contained nextgroup=nroffReqName skipwhite
  123.  
  124. if exists("b:nroff_is_groff")
  125. "
  126. " GNU troff allows long request names
  127. "
  128. syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg
  129. else
  130.     syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg
  131. endif
  132.  
  133. syn region roffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment
  134.  
  135. " {{{2 Conditional: .if .ie .el
  136. syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite
  137. syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite
  138. syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite
  139.  
  140. " {{{2 String definition: .ds .as
  141. syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite
  142. syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite
  143. syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial
  144. syn match nroffDefSpecial /\\$/ contained
  145. syn match nroffDefSpecial /\\\((.\)\=./ contained
  146.  
  147. if exists("b:nroff_is_groff")
  148.     syn match nroffDefSpecial /\\\[[^]]*]/ contained
  149. endif
  150.  
  151. " {{{2 Macro definition: .de .am, also diversion: .di
  152. syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite
  153. syn match nroffIdent /[^[?( \t]\+/ contained
  154. if exists("b:nroff_is_groff")
  155.     syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite
  156. endif
  157.  
  158. " {{{2 Register definition: .rn .rr
  159. syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite
  160. if exists("b:nroff_is_groff")
  161.     syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite
  162. endif
  163.  
  164.  
  165. " {{{1 eqn/tbl/pic
  166. " ------------------------------------------------------------
  167. " <jp>
  168. " XXX: write proper syntax highlight for eqn / tbl / pic ?
  169. " <jp />
  170.  
  171. syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/
  172. syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/
  173. syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/
  174. syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/
  175. syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/
  176. syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/
  177.  
  178. " {{{1 Comments
  179. " ------------------------------------------------------------
  180.  
  181. syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./
  182. syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo
  183. syn match nroffComment /^'''.*/  contains=nroffTodo
  184.  
  185. if exists("b:nroff_is_groff")
  186.     syn match nroffComment "\\#.*$" contains=nroffTodo
  187. endif
  188.  
  189. syn keyword nroffTodo TODO XXX FIXME contained
  190.  
  191. " {{{1 Hilighting
  192. " ------------------------------------------------------------
  193. "
  194.  
  195. "
  196. " Define the default highlighting.
  197. " For version 5.7 and earlier: only when not done already
  198. " For version 5.8 and later: only when an item doesn't have highlighting yet
  199. "
  200. if version >= 508 || !exists("did_nroff_syn_inits")
  201.  
  202.     if version < 508
  203.         let did_nroff_syn_inits = 1
  204.         command -nargs=+ HiLink hi link <args>
  205.     else
  206.         command -nargs=+ HiLink hi def link <args>
  207.     endif
  208.  
  209.     HiLink nroffEscChar nroffSpecialChar
  210.     HiLink nroffEscCharAr nroffSpecialChar
  211.     HiLink nroffSpecialChar SpecialChar
  212.     HiLink nroffSpace Delimiter
  213.  
  214.     HiLink nroffEscRegArg2 nroffEscRegArg
  215.     HiLink nroffEscRegArg nroffIdent
  216.  
  217.     HiLink nroffEscArg2 nroffEscArg
  218.     HiLink nroffEscPar nroffEscape
  219.  
  220.     HiLink nroffEscRegPar nroffEscape
  221.     HiLink nroffEscArg nroffEscape
  222.     HiLink nroffSize nroffEscape
  223.     HiLink nroffEscape Preproc
  224.  
  225.     HiLink nroffIgnore Comment
  226.     HiLink nroffComment Comment
  227.     HiLink nroffTodo Todo
  228.  
  229.     HiLink nroffReqLeader nroffRequest
  230.     HiLink nroffReqName nroffRequest
  231.     HiLink nroffRequest Statement
  232.     HiLink nroffCond PreCondit
  233.     HiLink nroffDefIdent nroffIdent
  234.     HiLink nroffIdent Identifier
  235.  
  236.     HiLink nroffEquation PreProc
  237.     HiLink nroffTable PreProc
  238.     HiLink nroffPicture PreProc
  239.     HiLink nroffRefer PreProc
  240.     HiLink nroffGrap PreProc
  241.     HiLink nroffGremlin PreProc
  242.  
  243.     HiLink nroffNumber Number
  244.     HiLink nroffBadChar nroffError
  245.     HiLink nroffSpaceError nroffError
  246.     HiLink nroffError Error
  247.  
  248.     HiLink nroffPreserve String
  249.     HiLink nroffString String
  250.     HiLink nroffDefinition String
  251.     HiLink nroffDefSpecial Special
  252.  
  253.     delcommand HiLink
  254.  
  255. endif
  256.  
  257. let b:current_syntax = "nroff"
  258.  
  259. " vim600: set fdm=marker fdl=2:
  260.