mirror of
https://github.com/neovim/neovim.git
synced 2026-01-14 17:15:23 +00:00
This reverts commits:
- 6b652a785033fd4164e049492a7327c1ed7c3e5f
- 2f689d5abde0ccddca9e20d8c93a0299bd054e32
- a025a46d4169587145fb54f04af349cd05cb6122
Several email addresses that are known to be valid caused bounces
due to an issue with my email setup. The previous commits incorrectly
marked these addresses as invalid. So revert the whole thing again.
62d8f3dab5
N/A patch:
vim-patch:2f689d5: runtime: mark more invalid email addresses
Co-authored-by: Christian Brabandt <cb@256bit.org>
135 lines
4.8 KiB
VimL
135 lines
4.8 KiB
VimL
" Vim syntax file
|
|
" Language: Haskell with literate comments, Bird style,
|
|
" Markdown style, TeX style and plain text surrounding
|
|
" \begin{code} \end{code} blocks
|
|
" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
|
|
" Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl>
|
|
" Last Change: 2020 Feb 25
|
|
" Version: 1.05
|
|
"
|
|
" Thanks to Ian Lynagh for thoughtful comments on initial versions and
|
|
" for the inspiration for writing this in the first place.
|
|
"
|
|
" This style guesses as to the type of markup used in a literate haskell
|
|
" file and will highlight (La)TeX markup if it finds any
|
|
" This behaviour can be overridden, both glabally and locally using
|
|
" the lhs_markup variable or b:lhs_markup variable respectively.
|
|
"
|
|
" lhs_markup must be set to either tex or none to indicate that
|
|
" you always want (La)TeX highlighting or no highlighting
|
|
" must not be set to let the highlighting be guessed
|
|
" b:lhs_markup must be set to eiterh tex or none to indicate that
|
|
" you want (La)TeX highlighting or no highlighting for
|
|
" this particular buffer
|
|
" must not be set to let the highlighting be guessed
|
|
"
|
|
"
|
|
" 2004 February 18: New version, based on Ian Lynagh's TeX guessing
|
|
" lhaskell.vim, cweb.vim, tex.vim, sh.vim and fortran.vim
|
|
" 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
|
|
" 2009 April 29: Fixed highlighting breakage in TeX mode,
|
|
" thanks to Kalman Noel
|
|
"
|
|
|
|
|
|
" quit when a syntax file was already loaded
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
" First off, see if we can inherit a user preference for lhs_markup
|
|
if !exists("b:lhs_markup")
|
|
if exists("lhs_markup")
|
|
if lhs_markup =~ '\<\%(tex\|md\|none\)\>'
|
|
let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|md\|none\)\>')
|
|
else
|
|
echohl WarningMsg | echo "Unknown value of lhs_markup" | echohl None
|
|
let b:lhs_markup = "unknown"
|
|
endif
|
|
else
|
|
let b:lhs_markup = "unknown"
|
|
endif
|
|
else
|
|
if b:lhs_markup !~ '\<\%(tex\|md\|none\)\>'
|
|
let b:lhs_markup = "unknown"
|
|
endif
|
|
endif
|
|
|
|
" Remember where the cursor is, and go to upperleft
|
|
let s:oldline=line(".")
|
|
let s:oldcolumn=col(".")
|
|
call cursor(1,1)
|
|
|
|
" If no user preference, scan buffer for our guess of the markup to
|
|
" highlight. We only differentiate between TeX and plain markup, where
|
|
" plain is not highlighted. The heuristic for finding TeX markup is if
|
|
" one of the following occurs anywhere in the file:
|
|
" - \documentclass
|
|
" - \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
|
|
let b:lhs_markup = "tex"
|
|
elseif search('```haskell','W') != 0
|
|
let b:lhs_markup = "md"
|
|
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 b:lhs_markup == "tex"
|
|
runtime! syntax/tex.vim
|
|
unlet b:current_syntax
|
|
" Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
|
|
setlocal isk+=_
|
|
syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
|
|
elseif b:lhs_markup == "md"
|
|
runtime! syntax/markdown.vim
|
|
unlet b:current_syntax
|
|
syntax cluster lhsTeXContainer contains=markdown.*
|
|
else
|
|
syntax cluster lhsTeXContainer contains=.*
|
|
endif
|
|
|
|
" Literate Haskell is Haskell in between text, so at least read Haskell
|
|
" highlighting
|
|
syntax include @haskellTop syntax/haskell.vim
|
|
|
|
syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
|
|
syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer
|
|
syntax region lhsHaskellMDBlock start="^```haskell$" matchgroup=NONE end="^```$" keepend contains=@haskellTop,lhsMarkdownCode containedin=@lhsTeXContainer
|
|
|
|
syntax match lhsBirdTrack "^>" contained
|
|
|
|
syntax match lhsMarkdownCode "^\(```haskell\|^```\)$" contained
|
|
|
|
syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained
|
|
syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}"
|
|
|
|
" Define the default highlighting.
|
|
" Only when an item doesn't have highlighting yet
|
|
|
|
hi def link lhsBirdTrack Comment
|
|
|
|
hi def link lhsMarkdownCode Comment
|
|
|
|
hi def link beginCodeBegin texCmdName
|
|
hi def link beginCodeCode texSection
|
|
|
|
|
|
" Restore cursor to original position, as it may have been disturbed
|
|
" by the searches in our guessing code
|
|
call cursor (s:oldline, s:oldcolumn)
|
|
|
|
unlet s:oldline
|
|
unlet s:oldcolumn
|
|
|
|
let b:current_syntax = "lhaskell"
|
|
|
|
" vim: ts=8
|