Hi!
I've implemented conceal support for asciidoc.
This is Vim feature which let you hide some symbols while they ain't
needed. For example, instead of seeing *BOLD* in your text highlighted
by some color you'll see just BOLD - still highlighted by same color
but without *…* around it. When you'll enter INSERT/REPLACE mode to
edit text you'll see *BOLD* with markers again - when your cursor will
be in line with this text.
Also I've added some minor fixes/features to syntax highlight:
- highlight line breaks (+ at EOL) in lists
- highlight *…* _…_ `…` etc delimiters as SpecialChar instead of same
color as used for their content
- fix highlight for joined markup like _underline_`mono`
(this fix is incomplete, some joined markup isn't understood by asciidoc,
more work needed to make highlight work exactly in same way as asciidoc)
- fix highlight when first symbol in markup is open paren )
- conceal escaping in arrows (to prevent default replacement by unicode
arrows)
To use it you'll need two files, both named asciidoc.vim. Because of same
name I decide to attach larger one and include in email text second file.
1) Save attached file to ~/.vim/after/syntax/asciidoc.vim
2) Save these lines to ~/.vim/ftplugin/asciidoc.vim :
---cut---
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
if has("conceal")
setlocal conceallevel=2 concealcursor=nc
endif
let b:undo_ftplugin = 'setlocal conceallevel< concealcursor<'
\ . '|unlet b:did_ftplugin'
---cut---
--
WBR, Alex.
--
You received this message because you are subscribed to the Google Groups
"asciidoc" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/asciidoc?hl=en.
" allow ) as first char
" allow -−~^+`_ around
syn match asciidocQuotedMonospaced /\(^\|[-−~^+`_| \t([.,=\]]\)\@<=+\([
\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(+\([-−~^+`_| \t)[\],.?!;:=]\|$\)\@=\)/
contains=asciidocEntityRef
\ containedin=asciidocQuotedSubscript,asciidocQuotedSuperscript
syn match asciidocQuotedMonospaced2 /\(^\|[-−~^+`_| \t([.,=\]]\)\@<=`\([
\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(`\([-−~^+`_| \t)[\],.?!;:=]\|$\)\@=\)/
\ containedin=asciidocQuotedSubscript,asciidocQuotedSuperscript
syn match asciidocQuotedEmphasized /\(^\|[-−~^+`_| \t([.,=\]]\)\@<=_\([
\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(_\([-−~^+`_| \t)[\],.?!;:=]\|$\)\@=\)/
contains=asciidocEntityRef
\ containedin=asciidocQuotedSubscript,asciidocQuotedSuperscript
syn match asciidocQuotedEmphasized2 /\(^\|[-−~^+`_| \t([.,=\]]\)\@<='\([
\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\('\([-−~^+`_| \t)[\],.?!;:=]\|$\)\@=\)/
contains=asciidocEntityRef
\ containedin=asciidocQuotedSubscript,asciidocQuotedSuperscript
syn match asciidocQuotedBold /\(^\|[-−~^+`_| \t([.,=\]]\)\@<=\*\([
\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(\*\([-−~^+`_| \t)[\],.?!;:=]\|$\)\@=\)/
contains=asciidocEntityRef
\ containedin=asciidocQuotedSubscript,asciidocQuotedSuperscript
syn match asciidocQuotedSingleQuoted /\(^\|[-−~^+`_| \t([.,=\]]\)\@<=`\([
\n\t]\)\@!\([^`]\|\n\(\s*\n\)\@!\)\{-}[^` \t]\('\([-−~^+`_|
\t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
\ containedin=asciidocQuotedSubscript,asciidocQuotedSuperscript
syn match asciidocQuotedDoubleQuoted /\(^\|[-−~^+`_| \t([.,=\]]\)\@<=``\([
\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(''\([-−~^+`_| \t)[\],.?!;:=]\|$\)\@=\)/
contains=asciidocEntityRef
\ containedin=asciidocQuotedSubscript,asciidocQuotedSuperscript
" not modified, but have to be executed after Quoted*
syn match asciidocQuotedUnconstrainedMonospaced
/[\\+]\@<!++\S\_.\{-}\(++\|\n\s*\n\)/ contains=asciidocEntityRef
" add to allow delimiter highlight
syn match asciidocQuotedUnquoted /\(^\|[-−~^+`_| \t([.,=\]]\)\@<=#\([
\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(#\([-−~^+`_| \t)[\],.?!;:=]\|$\)\@=\)/
contains=asciidocEntityRef
" allow line break in lists
syn match asciidocLineBreak /[ \t]+$/ conceal
containedin=asciidocList
" delimiters: conceal or highlight as SpecialChar
syn match asciidocConcealMonospaced contained "[+]" conceal
containedin=asciidocQuotedMonospaced
syn match asciidocConcealMonospaced2 contained "[`]" conceal
containedin=asciidocQuotedMonospaced2
syn match asciidocConcealUMonospaced contained "++" conceal
containedin=asciidocQuotedUnconstrainedMonospaced
syn match asciidocConcealEmphasized contained "[_]" conceal
containedin=asciidocQuotedEmphasized
syn match asciidocConcealEmphasized2 contained "[']" conceal
containedin=asciidocQuotedEmphasized2
syn match asciidocConcealBold contained "[*]" conceal
containedin=asciidocQuotedBold
" delimiters: highlight as SpecialChar
syn match asciidocDelimiterUnquoted contained "[#]"
containedin=asciidocQuotedUnquoted
syn match asciidocDelimiterSubscript contained "[~]"
containedin=asciidocQuotedSubscript
syn match asciidocDelimiterSuperscript contained "\^"
containedin=asciidocQuotedSuperscript
" escaping: conceal
syn match asciidocConcealUnReplacement contained "\\\([-=]>\)\@=" conceal
containedin=asciidocQuotedMonospaced,asciidocQuotedMonospaced2
syn match asciidocConcealUnReplacement contained "\\\(<[-=]\)\@=" conceal
containedin=asciidocQuotedMonospaced,asciidocQuotedMonospaced2
" not modified, but have to be executed after ???
syn region asciidocListLabel start=/^\s*/ end=/\(:\{2,4}\|;;\)$/ oneline
contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocToDo
keepend
hi def link asciidocConcealMonospaced SpecialChar
hi def link asciidocConcealMonospaced2 SpecialChar
hi def link asciidocConcealUMonospaced SpecialChar
hi def link asciidocConcealEmphasized SpecialChar
hi def link asciidocConcealEmphasized2 SpecialChar
hi def link asciidocConcealBold SpecialChar
hi def link asciidocDelimiterUnquoted SpecialChar
hi def link asciidocDelimiterSubscript SpecialChar
hi def link asciidocDelimiterSuperscript SpecialChar
hi def link asciidocConcealUnReplacement SpecialChar