From b5877e40fbc0c96b352d9eef4d193ffb2f9ffec6 Mon Sep 17 00:00:00 2001 From: Alex Vear Date: Mon, 24 Aug 2020 21:48:18 +0100 Subject: [PATCH] Syntax cluster groups and clean up --- syntax/org.vim | 36 +++++++++++++++++++----------------- syntax/outline.vim | 4 ++++ 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/syntax/org.vim b/syntax/org.vim index 057310a..802ea1b 100644 --- a/syntax/org.vim +++ b/syntax/org.vim @@ -17,11 +17,12 @@ endif " Enable spell check for non syntax highlighted text syntax spell toplevel + " Bold, underine, italic, etc. syntax region orgItalic matchgroup=orgItalicDelimiter start="\(^\|[- '"({\]]\)\@<=\/\ze[^ ]" end="^\@!\/\([^\k\/]\|$\)\@=" keepend contains=@Spell syntax region orgBold matchgroup=orgBoldDelimiter start="\(^\|[- '"({\]]\)\@<=\*\ze[^ ]" end="^\@!\*\([^\k\*]\|$\)\@=" keepend contains=@Spell syntax region orgUnderline matchgroup=orgUnderlineDelimiter start="\(^\|[- '"({\]]\)\@<=_\ze[^ ]" end="^\@!_\([^\k_]\|$\)\@=" keepend contains=@Spell -syntax region orgStrikethrough matchgroup=orgStrikethroughDelimiter start="\(^\|[ '"({\]]\)\@<=+\ze[^ ]" end="^\@!+\([^\k+]\|$\)\@=" keepend contains=@Spell +syntax region orgStrikethrough matchgroup=orgStrikethroughDelimiter start="\(^\|[ '"({\]]\)\@<=+\ze[^ ]" end="^\@!+\([^\k+]\|$\)\@=" keepend contains=@Spell if org#option('org_use_italics', 1) highlight def orgItalic term=italic cterm=italic gui=italic @@ -36,10 +37,10 @@ highlight def link orgBoldDelimiter orgBold highlight def link orgUnderlineDelimiter orgUnderline highlight def link orgStrikethroughDelimiter orgStrikethrough + " Options syntax match orgOption /^\s*#+\w\+.*$/ keepend syntax region orgTitle matchgroup=orgOption start="\c^\s*#+TITLE:\s*" end="$" keepend oneline - highlight def link orgBlockDelimiter SpecialComment highlight def link orgOption SpecialComment highlight def link orgTitle Title @@ -73,6 +74,8 @@ syntax match orgHeading4 /^\s*\*\{4}\s\+.*$/ keepend contains=@Spell,orgTag,orgT syntax match orgHeading5 /^\s*\*\{5}\s\+.*$/ keepend contains=@Spell,orgTag,orgTodo,orgMath syntax match orgHeading6 /^\s*\*\{6,}\s\+.*$/ keepend contains=@Spell,orgTag,orgTodo,orgMath +syntax cluster orgHeadingGroup contains=orgHeading1,orgHeading2,orgHeading3,orgHeading4,orgHeading5,orgHeading6 + syntax match orgTag /:\w\{-}:/ contained contains=orgTag exec 'syntax keyword orgTodo contained ' . join(org#option('org_state_keywords', ['TODO', 'NEXT', 'DONE']), ' ') @@ -106,29 +109,28 @@ syntax match orgHyperLeft /\[\{2}/ contained conceal syntax match orgHyperRight /\]\{2}/ contained conceal syntax match orgHyperURL /[^][]\{-1,}\]\[/ contains=orgHyperCentre contained conceal syntax match orgHyperCentre /\]\[/ contained conceal + +syntax cluster orgHyperlinkBracketsGroup contains=orgHyperLeft,orgHyperRight,orgHyperCentre +syntax cluster orgHyperlinkGroup contains=orgHyperlink,orgHyperURL,orgHyperlinkBracketsGroup + highlight def link orgHyperlink Underlined highlight def link orgHyperURL String highlight def link orgHyperCentre Comment highlight def link orgHyperLeft Comment highlight def link orgHyperRight Comment + " TeX -" Support for both inline and block based embedded latex -" eg: $Latex$ for inline or $$ LaTeX $$ for a block -" Note: -" - $LaTeX$ uses the tex.vim syntax for its conceal properties -" - Inspired by https://github.com/vim-pandoc/vim-pandoc-syntax -" - the conceal settings follows your g:tex_conceal setting for -" more info run :h tex-conceal. -" Ref: https://orgmode.org/manual/LaTeX-fragments.html#LaTeX-fragments +" Ref: https://orgmode.org/manual/LaTeX-fragments.html syntax include @LATEX syntax/tex.vim -syntax region orgMath start="\\begin\[.*\]{.*}" end="\\end{.*}" keepend contains=@LATEX -syntax region orgMath start="\\begin{.*}" end="\\end{.*}" keepend contains=@LATEX -syntax region orgMath start="\\\[" end="\\\]" keepend contains=@LATEX -syntax region orgMath start="\\(" end="\\)" keepend contains=@LATEX -syntax region orgMath start="\S\@<=\$\|\$\S\@=" end="\S\@<=\$\|\$\S\@=" keepend oneline contains=@LATEX -syntax region orgMath start=/\$\$/ end=/\$\$/ keepend contains=@LATEX +syntax region orgMath start="\\begin\[.*\]{.*}" end="\\end{.*}" keepend contains=@LATEX +syntax region orgMath start="\\begin{.*}" end="\\end{.*}" keepend contains=@LATEX +syntax region orgMath start="\\\[" end="\\\]" keepend contains=@LATEX +syntax region orgMath start="\\(" end="\\)" keepend contains=@LATEX +syntax region orgMath start="\S\@<=\$\|\$\S\@=" end="\S\@<=\$\|\$\S\@=" keepend oneline contains=@LATEX +syntax region orgMath start=/\$\$/ end=/\$\$/ keepend contains=@LATEX syntax match orgMath /\\\$/ conceal cchar=$ -hi def link orgMath String +highlight def link orgMath String + let b:current_syntax = 'org' diff --git a/syntax/outline.vim b/syntax/outline.vim index a60f24b..da93451 100644 --- a/syntax/outline.vim +++ b/syntax/outline.vim @@ -17,6 +17,7 @@ endif " Enable spell check for non syntax highlighted text syntax spell toplevel + " Headings syntax match outlineHeading1 /^\s*\*\{1}\s\+.*$/ keepend contains=@Spell syntax match outlineHeading2 /^\s*\*\{2}\s\+.*$/ keepend contains=@Spell @@ -25,6 +26,8 @@ syntax match outlineHeading4 /^\s*\*\{4}\s\+.*$/ keepend contains=@Spell syntax match outlineHeading5 /^\s*\*\{5}\s\+.*$/ keepend contains=@Spell syntax match outlineHeading6 /^\s*\*\{6,}\s\+.*$/ keepend contains=@Spell +syntax cluster outlineHeadingGroup contains=outlineHeading1,outlineHeading2,outlineHeading3,outlineHeading4,outlineHeading5,outlineHeading6 + hi def link outlineHeading1 Title hi def link outlineHeading2 outlineHeading1 hi def link outlineHeading3 outlineHeading2 @@ -32,4 +35,5 @@ hi def link outlineHeading4 outlineHeading3 hi def link outlineHeading5 outlineHeading4 hi def link outlineHeading6 outlineHeading5 + let b:current_syntax = 'outline'