diff --git a/ftplugin/outline.vim b/ftplugin/outline.vim new file mode 100644 index 0000000..dd3707d --- /dev/null +++ b/ftplugin/outline.vim @@ -0,0 +1,16 @@ +" ============================================================= +" Description: Folding for GNU Emacs' Outline mode +" Author: Alex Vear (axvr) +" Licence: ISC (2019) +" ============================================================= + +function! OutlineFold() + let l:depth = match(getline(v:lnum), '\(^\*\+\)\@<=\( .*$\)\@=') + if l:depth > 0 && synIDattr(synID(v:lnum, 1, 1), 'name') =~# 'outlineHeading' + return ">" . l:depth + endif + return "=" +endfunction + +setlocal foldexpr=OutlineFold() +setlocal foldmethod=expr diff --git a/syntax/outline.vim b/syntax/outline.vim new file mode 100644 index 0000000..7e72cb5 --- /dev/null +++ b/syntax/outline.vim @@ -0,0 +1,29 @@ +" ============================================================= +" Description: Syntax file for GNU Emacs' Outline mode +" Author: Alex Vear (axvr) +" Licence: ISC (2019) +" ============================================================= + +if exists("b:current_syntax") + finish +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 +syntax match outlineHeading3 /^\s*\*\{3}\s\+.*$/ keepend contains=@Spell +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 + +hi def link outlineHeading1 Title +hi def link outlineHeading2 outlineHeading1 +hi def link outlineHeading3 outlineHeading2 +hi def link outlineHeading4 outlineHeading3 +hi def link outlineHeading5 outlineHeading4 +hi def link outlineHeading6 outlineHeading5 + +let b:current_syntax = 'org'