mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-10 20:43:52 -05:00
149 lines
6.9 KiB
VimL
149 lines
6.9 KiB
VimL
if polyglot#init#is_disabled(expand('<sfile>:p'), 'unison', 'syntax/unison.vim')
|
|
finish
|
|
endif
|
|
|
|
" Vim syntax file, adapted from Haskell file by John Williams <jrw@pobox.com>
|
|
"
|
|
" Language: unison
|
|
" Maintainer: Unison Computing
|
|
" Last Change: Aug 23, 2018
|
|
" Original Author: Paul Chiusano and Rúnar Bjarnason
|
|
"
|
|
" Options-assign a value to these variables to turn the option on:
|
|
"
|
|
" u_highlight_delimiters - Highlight delimiter characters--users
|
|
" with a light-colored background will
|
|
" probably want to turn this on.
|
|
" u_highlight_boolean - Treat True and False as keywords.
|
|
" u_highlight_types - Treat names of primitive types as keywords.
|
|
" u_highlight_more_types - Treat names of other common types as keywords.
|
|
" u_highlight_debug - Highlight names of debugging functions.
|
|
" u_allow_hash_operator - Don't highlight seemingly incorrect C
|
|
" preprocessor directives but assume them to be
|
|
" operators
|
|
" 2023 Jan 6: Update for current syntax (dt)
|
|
" 2018 Aug 23: Adapt Haskell highlighting to Unison, cleanup.
|
|
" 2004 Feb 19: Added C preprocessor directive handling, corrected eol comments
|
|
" cleaned away literate unison support (should be entirely in
|
|
" lunison.vim)
|
|
" 2004 Feb 20: Cleaned up C preprocessor directive handling, fixed single \
|
|
" in eol comment character class
|
|
" 2004 Feb 23: Made the leading comments somewhat clearer where it comes
|
|
" to attribution of work.
|
|
|
|
" Remove any old syntax stuff hanging around
|
|
if version < 600
|
|
syn clear
|
|
elseif exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
syntax include @markdown $VIMRUNTIME/syntax/markdown.vim
|
|
|
|
syn cluster markdownLikeDocs contains=markdownBold,markdownItalic,markdownLinkText,markdownListMarker,markdownOrderedListMarker,markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6
|
|
|
|
syn match uOperator "[-!#$%&\*\+/<=>\?@\\^|~]"
|
|
syn match uDelimiter "[\[\](){},.]"
|
|
|
|
" Strings and constants
|
|
syn match uSpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)"
|
|
syn match uSpecialChar contained "\\\(NUL\|SOH\|STX\|ETX\|EOT\|ENQ\|ACK\|BEL\|BS\|HT\|LF\|VT\|FF\|CR\|SO\|SI\|DLE\|DC1\|DC2\|DC3\|DC4\|NAK\|SYN\|ETB\|CAN\|EM\|SUB\|ESC\|FS\|GS\|RS\|US\|SP\|DEL\)"
|
|
syn match uSpecialCharError contained "\\&\|'''\+"
|
|
syn region uString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=uSpecialChar
|
|
syn match uCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=uSpecialChar,uSpecialCharError
|
|
syn match uCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=uSpecialChar,uSpecialCharError
|
|
syn match uNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>"
|
|
syn match uFloat "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
|
|
|
|
" Keyword definitions. These must be patterns instead of keywords
|
|
" because otherwise they would match as keywords at the start of a
|
|
" "literate" comment (see lu.vim).
|
|
syn match uModule "\<namespace\>"
|
|
syn match uImport "\<use\>"
|
|
syn match uTypedef "\<\(unique\|structural\|∀\|forall\)\>"
|
|
syn match uStatement "\<\(ability\|do\|type\|where\|match\|cases\|;\|let\|with\|handle\)\>"
|
|
syn match uConditional "\<\(if\|else\|then\)\>"
|
|
|
|
syn match uBoolean "\<\(true\|false\)\>"
|
|
|
|
syn match uType "\<\C[A-Z][0-9A-Za-z_'!]*\>"
|
|
syn match uName "\<\C[a-z_][0-9A-Za-z_'!]*\>"
|
|
|
|
" Comments
|
|
syn match uLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$"
|
|
syn region uBlockComment start="{-" end="-}" contains=uBlockComment
|
|
syn region uPragma start="{-#" end="#-}"
|
|
syn region uBelowFold start="^---" skip="." end="." contains=uBelowFold
|
|
|
|
" Docs
|
|
syn region uDocBlock matchgroup=unisonDoc start="{{" end="}}" contains=uDocTypecheck,uDocQuasiquote,uDocDirective,uDocCode,uDocCodeInline,uDocCodeRaw,uDocMono,@markdownLikeDocs
|
|
syn region uDocQuasiquote contained matchgroup=unisonDocQuote start="{{" end= "}}" contains=TOP
|
|
syn region uDocCode contained matchgroup=unisonDocCode start="^\s*```\s*$" end="^\s*```\s*$" contains=TOP
|
|
syn region uDocTypecheck contained matchgroup=unisonDocCode start="^\s*@typecheck\s*```\s*$" end="^\s*```\s*$" contains=TOP
|
|
syn region uDocCodeRaw contained matchgroup=unisonDocCode start="^\s*```\s*raw\s*$" end="^\s*```\s*$" contains=NoSyntax
|
|
syn region uDocCodeInline contained matchgroup=unisonDocCode start="`\@<!``" end="`\@<!``" contains=TOP
|
|
syn match uDocMono "''[^']*''"
|
|
syn region uDocDirective contained matchgroup=unisonDocDirective start="\(@\([a-zA-Z0-9_']*\)\)\?{{\@!" end="}" contains=TOP
|
|
|
|
syn match uDebug "\<\(todo\|bug\|Debug.trace\)\>"
|
|
|
|
" things like
|
|
" > my_func 1 3
|
|
" test> Function.tap.tests.t1 = check let
|
|
" use Nat == +
|
|
" ( 99, 100 ) === (withInitialValue 0 do
|
|
" : : :
|
|
syn match uWatch "^[A-Za-z]*>"
|
|
|
|
" Define the default highlighting.
|
|
" For version 5.7 and earlier: only when not done already
|
|
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
|
if version >= 508 || !exists("did_u_syntax_inits")
|
|
if version < 508
|
|
let did_u_syntax_inits = 1
|
|
command -nargs=+ HiLink hi link <args>
|
|
else
|
|
command -nargs=+ HiLink hi def link <args>
|
|
endif
|
|
|
|
HiLink uWatch Debug
|
|
HiLink uDocMono Delimiter
|
|
HiLink unisonDocDirective Import
|
|
HiLink unisonDocQuote Delimiter
|
|
HiLink unisonDocCode Delimiter
|
|
HiLink unisonDoc String
|
|
HiLink uBelowFold Comment
|
|
HiLink uBlockComment Comment
|
|
HiLink uBoolean Boolean
|
|
HiLink uCharacter Character
|
|
HiLink uComment Comment
|
|
HiLink uConditional Conditional
|
|
HiLink uConditional Conditional
|
|
HiLink uDebug Debug
|
|
HiLink uDelimiter Delimiter
|
|
HiLink uDocBlock String
|
|
HiLink uDocDirective Import
|
|
HiLink uDocIncluded Import
|
|
HiLink uFloat Float
|
|
HiLink uImport Include
|
|
HiLink uLineComment Comment
|
|
HiLink uLink Type
|
|
HiLink uName Identifier
|
|
HiLink uNumber Number
|
|
HiLink uOperator Operator
|
|
HiLink uPragma SpecialComment
|
|
HiLink uSpecialChar SpecialChar
|
|
HiLink uSpecialCharError Error
|
|
HiLink uStatement Statement
|
|
HiLink uString String
|
|
HiLink uType Type
|
|
HiLink uTypedef Typedef
|
|
|
|
delcommand HiLink
|
|
endif
|
|
|
|
|
|
let b:current_syntax = "unison"
|
|
|
|
" Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim
|