Add port of GNU Emacs' Outline mode
<https://www.gnu.org/software/emacs/manual/html_node/emacs/Outline-Mode.html>
This commit is contained in:
16
ftplugin/outline.vim
Normal file
16
ftplugin/outline.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
" =============================================================
|
||||||
|
" Description: Folding for GNU Emacs' Outline mode
|
||||||
|
" Author: Alex Vear (axvr) <av@axvr.io>
|
||||||
|
" 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
|
||||||
29
syntax/outline.vim
Normal file
29
syntax/outline.vim
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
" =============================================================
|
||||||
|
" Description: Syntax file for GNU Emacs' Outline mode
|
||||||
|
" Author: Alex Vear (axvr) <av@axvr.io>
|
||||||
|
" 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'
|
||||||
Reference in New Issue
Block a user