about summary refs log tree commit diff
path: root/vim
diff options
context:
space:
mode:
authorBen Harris <ben@tilde.team>2020-11-03 10:06:23 -0500
committerBen Harris <ben@tilde.team>2020-11-03 10:06:23 -0500
commit2b8232332cdcf24edc08ab0a9fa8e1dc614f95f7 (patch)
tree5b717995f70c8469608607f12ee9c59e9663592f /vim
parent63b67331d9b7db95d45369b3573daf4162d5bd3d (diff)
add gemtext highlighting
Diffstat (limited to 'vim')
-rw-r--r--vim/.vim/ftdetect/gemtext.vim4
-rw-r--r--vim/.vim/syntax/gemtext.vim40
2 files changed, 44 insertions, 0 deletions
diff --git a/vim/.vim/ftdetect/gemtext.vim b/vim/.vim/ftdetect/gemtext.vim
new file mode 100644
index 0000000..d47d324
--- /dev/null
+++ b/vim/.vim/ftdetect/gemtext.vim
@@ -0,0 +1,4 @@
+" Vim file type detection for Gemtext markup
+
+au BufRead,BufNewFile *.gmi set filetype=gemtext
+au BufRead,BufNewFile *.gemini set filetype=gemtext
diff --git a/vim/.vim/syntax/gemtext.vim b/vim/.vim/syntax/gemtext.vim
new file mode 100644
index 0000000..0dbc3f3
--- /dev/null
+++ b/vim/.vim/syntax/gemtext.vim
@@ -0,0 +1,40 @@
+" Vim syntax file for Gemtext markup
+" as described by section 5 of the Gemini Specification
+" https://gemini.circumlunar.space/docs/specification.html
+
+if exists("b:current_syntax")
+    finish
+endif
+
+syntax sync fromstart
+
+syntax match gemtextLinkOperator '\v^\=\>' nextgroup=gemtextLinkURL skipwhite
+syntax match gemtextLinkURL '\v\S+' contained nextgroup=gemtextLinkText skipwhite
+syntax match gemtextLinkText '\v\S.*$' contained
+
+syntax match gemtextHeadingOperator '\v^\##?#?' nextgroup=gemtextHeadingText skipwhite
+syntax match gemtextHeadingText '\v\s*\S.*$' contained
+syntax match gemtextNotAHeadingOperator '\v^\####'
+
+syntax match gemtextUnorderedListItemOperator '\v^\*\s'
+
+syntax match gemtextQuoteOperator '\v^\>' nextgroup=gemtextQuoteText skipwhite
+syntax match gemtextQuoteText '\v.*$' contained
+
+syntax region gemtextPreformatBlock start="\v^```.*$" end="\v^```" keepend
+
+let b:current_syntax = "gemtext"
+
+hi def link gemtextLinkOperator Operator
+hi def link gemtextLinkURL Underlined
+hi def link gemtextLinkText String
+
+hi def link gemtextHeadingOperator Operator
+hi def link gemtextHeadingText Identifier
+
+hi def link gemtextUnorderedListItemOperator Operator
+
+hi def link gemtextQuoteOperator Operator
+hi def link gemtextQuoteText String
+
+hi def link gemtextPreformatBlock PreProc