Mercurial > vim
annotate runtime/syntax/lhaskell.vim @ 13705:7dd71a906267
Added tag v8.0.1724 for changeset e7b8c896fa96e91f239ec522e3b7bb885887f53f
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 16 Apr 2018 15:45:07 +0200 |
parents | 46763b01cd9a |
children | ef454a7f485d |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Language: Haskell with literate comments, Bird style, | |
3 " TeX style and plain text surrounding | |
4 " \begin{code} \end{code} blocks | |
5 " Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org> | |
6 " Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl> | |
2152 | 7 " Last Change: 2010 Apr 11 |
2034 | 8 " Version: 1.04 |
7 | 9 " |
10 " Thanks to Ian Lynagh for thoughtful comments on initial versions and | |
11 " for the inspiration for writing this in the first place. | |
12 " | |
13 " This style guesses as to the type of markup used in a literate haskell | |
14 " file and will highlight (La)TeX markup if it finds any | |
15 " This behaviour can be overridden, both glabally and locally using | |
16 " the lhs_markup variable or b:lhs_markup variable respectively. | |
17 " | |
18 " lhs_markup must be set to either tex or none to indicate that | |
19 " you always want (La)TeX highlighting or no highlighting | |
20 " must not be set to let the highlighting be guessed | |
21 " b:lhs_markup must be set to eiterh tex or none to indicate that | |
22 " you want (La)TeX highlighting or no highlighting for | |
23 " this particular buffer | |
24 " must not be set to let the highlighting be guessed | |
25 " | |
26 " | |
27 " 2004 February 18: New version, based on Ian Lynagh's TeX guessing | |
28 " lhaskell.vim, cweb.vim, tex.vim, sh.vim and fortran.vim | |
29 " 2004 February 20: Cleaned up the guessing and overriding a bit | |
30 " 2004 February 23: Cleaned up syntax highlighting for \begin{code} and | |
31 " \end{code}, added some clarification to the attributions | |
2034 | 32 " 2008 July 1: Removed % from guess list, as it totally breaks plain |
33 " text markup guessing | |
34 " 2009 April 29: Fixed highlighting breakage in TeX mode, | |
35 " thanks to Kalman Noel | |
7 | 36 " |
37 | |
38 | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
39 " quit when a syntax file was already loaded |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
40 if exists("b:current_syntax") |
7 | 41 finish |
42 endif | |
43 | |
44 " First off, see if we can inherit a user preference for lhs_markup | |
45 if !exists("b:lhs_markup") | |
46 if exists("lhs_markup") | |
47 if lhs_markup =~ '\<\%(tex\|none\)\>' | |
48 let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|none\)\>') | |
49 else | |
50 echohl WarningMsg | echo "Unknown value of lhs_markup" | echohl None | |
51 let b:lhs_markup = "unknown" | |
52 endif | |
53 else | |
54 let b:lhs_markup = "unknown" | |
55 endif | |
56 else | |
57 if b:lhs_markup !~ '\<\%(tex\|none\)\>' | |
58 let b:lhs_markup = "unknown" | |
59 endif | |
60 endif | |
61 | |
62 " Remember where the cursor is, and go to upperleft | |
63 let s:oldline=line(".") | |
64 let s:oldcolumn=col(".") | |
65 call cursor(1,1) | |
66 | |
67 " If no user preference, scan buffer for our guess of the markup to | |
68 " highlight. We only differentiate between TeX and plain markup, where | |
69 " plain is not highlighted. The heuristic for finding TeX markup is if | |
70 " one of the following occurs anywhere in the file: | |
71 " - \documentclass | |
72 " - \begin{env} (for env != code) | |
73 " - \part, \chapter, \section, \subsection, \subsubsection, etc | |
74 if b:lhs_markup == "unknown" | |
2034 | 75 if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0 |
7 | 76 let b:lhs_markup = "tex" |
77 else | |
78 let b:lhs_markup = "plain" | |
79 endif | |
80 endif | |
81 | |
2034 | 82 " If user wants us to highlight TeX syntax or guess thinks it's TeX, read it. |
7 | 83 if b:lhs_markup == "tex" |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
84 runtime! syntax/tex.vim |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
85 unlet b:current_syntax |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
86 " Tex.vim removes "_" from 'iskeyword', but we need it for Haskell. |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
87 setlocal isk+=_ |
2034 | 88 syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract |
89 else | |
90 syntax cluster lhsTeXContainer contains=.* | |
7 | 91 endif |
92 | |
93 " Literate Haskell is Haskell in between text, so at least read Haskell | |
94 " highlighting | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
95 syntax include @haskellTop syntax/haskell.vim |
7 | 96 |
2034 | 97 syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer |
2152 | 98 syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer |
7 | 99 |
100 syntax match lhsBirdTrack "^>" contained | |
101 | |
102 syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained | |
103 syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}" | |
104 | |
105 " Define the default highlighting. | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
106 " Only when an item doesn't have highlighting yet |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
2152
diff
changeset
|
107 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
108 hi def link lhsBirdTrack Comment |
7 | 109 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
110 hi def link beginCodeBegin texCmdName |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
111 hi def link beginCodeCode texSection |
7 | 112 |
113 | |
114 " Restore cursor to original position, as it may have been disturbed | |
115 " by the searches in our guessing code | |
116 call cursor (s:oldline, s:oldcolumn) | |
117 | |
118 unlet s:oldline | |
119 unlet s:oldcolumn | |
120 | |
121 let b:current_syntax = "lhaskell" | |
122 | |
123 " vim: ts=8 |