summaryrefslogtreecommitdiff
path: root/runtime/syntax/lhaskell.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/lhaskell.vim')
-rw-r--r--runtime/syntax/lhaskell.vim21
1 files changed, 13 insertions, 8 deletions
diff --git a/runtime/syntax/lhaskell.vim b/runtime/syntax/lhaskell.vim
index 7ff09e7b3..8cc1ded01 100644
--- a/runtime/syntax/lhaskell.vim
+++ b/runtime/syntax/lhaskell.vim
@@ -4,8 +4,8 @@
" \begin{code} \end{code} blocks
" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
" Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl>
-" Last Change: 2008 Jul 01
-" Version: 1.02
+" Last Change: 2009 May 08
+" Version: 1.04
"
" Thanks to Ian Lynagh for thoughtful comments on initial versions and
" for the inspiration for writing this in the first place.
@@ -29,8 +29,10 @@
" 2004 February 20: Cleaned up the guessing and overriding a bit
" 2004 February 23: Cleaned up syntax highlighting for \begin{code} and
" \end{code}, added some clarification to the attributions
-" 2008 July 1: Removed % from guess list, as it totally breaks plain
-" text markup guessing
+" 2008 July 1: Removed % from guess list, as it totally breaks plain
+" text markup guessing
+" 2009 April 29: Fixed highlighting breakage in TeX mode,
+" thanks to Kalman Noel
"
@@ -73,14 +75,14 @@ call cursor(1,1)
" - \begin{env} (for env != code)
" - \part, \chapter, \section, \subsection, \subsubsection, etc
if b:lhs_markup == "unknown"
- if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub \)*section\|\\chapter|\\part','W') != 0
+ if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
let b:lhs_markup = "tex"
else
let b:lhs_markup = "plain"
endif
endif
-" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it.
+" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it.
if b:lhs_markup == "tex"
if version < 600
source <sfile>:p:h/tex.vim
@@ -91,6 +93,9 @@ if b:lhs_markup == "tex"
" Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
setlocal isk+=_
endif
+ syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
+else
+ syntax cluster lhsTeXContainer contains=.*
endif
" Literate Haskell is Haskell in between text, so at least read Haskell
@@ -101,8 +106,8 @@ else
syntax include @haskellTop syntax/haskell.vim
endif
-syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack
-syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode
+syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
+syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode containedin=@lhsTeXContainer
syntax match lhsBirdTrack "^>" contained