summaryrefslogtreecommitdiffstats
path: root/syntax/julia.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/julia.vim')
-rw-r--r--syntax/julia.vim42
1 files changed, 24 insertions, 18 deletions
diff --git a/syntax/julia.vim b/syntax/julia.vim
index 88aa464e..bafae9b4 100644
--- a/syntax/julia.vim
+++ b/syntax/julia.vim
@@ -13,6 +13,9 @@ elseif exists("b:current_syntax")
finish
endif
+let s:cpo_save = &cpo
+set cpo&vim
+
if version < 704
" this is used to disable regex syntax like `\@3<='
" on older vim versions
@@ -40,9 +43,9 @@ let s:julia_highlight_operators = get(g:, "julia_highlight_operators", 1)
" It doesn't include a few characters (spaces and all closing parentheses)
" because those may or may not be valid in the lookbehind on a case-by-case
" basis.
-let s:nonid_chars = '\U00-\U08' . '\U0A-\U1F' .
- \ '\U21-\U28' . '\U2A-\U2F' . '\U3A-\U40' . '\U5B-\U5E' . '\U60' . '\U7B\U7C' .
- \ '\U7E-\UA1' . '\UA7\UA8' . '\UAB-\UAD' . '\UAF\UB1\UB4' . '\UB6-\UB8' . '\UBB\UBF' . '\UD7\UF7'
+let s:nonid_chars = '\U00-\U08' . '\U0A-\U1F'
+ \ . '\U21-\U28' . '\U2A-\U2F' . '\U3A-\U40' . '\U5B-\U5E' . '\U60' . '\U7B\U7C'
+ \ . '\U7E-\UA1' . '\UA7\UA8' . '\UAB-\UAD' . '\UAF\UB1\UB4' . '\UB6-\UB8' . '\UBB\UBF' . '\UD7\UF7'
" The complete list
let s:nonidS_chars = '[:space:])\U5D}' . s:nonid_chars
@@ -60,10 +63,10 @@ let s:op_chars = '\U25\U26\U2A\U2B\U2D\U2F\U3C-\U3E\U5C\U5E\U7C\U7E\UAC\UB1\UD7\
let s:op_chars_wc = '\U2026\U205D\U214B\U2190-\U2194\U219A-\U219E\U21A0\U21A2-\U21A4\U21A6\U21A9-\U21AC\U21AE\U21B6\U21B7\U21BA-\U21BD\U21C0\U21C1\U21C4\U21C6\U21C7\U21C9\U21CB-\U21D0\U21D2\U21D4\U21DA-\U21DD\U21E0\U21E2\U21F4-\U21FF\U2208-\U220D\U2213\U2214\U2217-\U221D\U2224-\U222A\U2237\U2238\U223A\U223B\U223D\U223E\U2240-\U228B\U228D-\U229C\U229E-\U22A3\U22A9\U22AC\U22AE\U22B0-\U22B7\U22BB-\U22BD\U22C4-\U22C7\U22C9-\U22D3\U22D5-\U22FF\U233F\U25B7\U27C2\U27C8\U27C9\U27D1\U27D2\U27D5-\U27D7\U27F0\U27F1\U27F5-\U27F7\U27F9-\U27FF\U2900-\U2918\U291D-\U2920\U2944-\U2970\U29B7\U29B8\U29BC\U29BE-\U29C1\U29E1\U29E3-\U29E5\U29F4\U29F6\U29F7\U29FA\U29FB\U2A07\U2A08\U2A1D\U2A1F\U2A22-\U2A2E\U2A30-\U2A3D\U2A40-\U2A45\U2A4A-\U2A58\U2A5A-\U2A63\U2A66\U2A67\U2A6A-\U2AD9\U2ADB\U2AF7-\U2AFA\U2B30-\U2B44\U2B47-\U2B4C\UFFE9-\UFFEC'
" Full operators regex
-let s:operators = '\%(' . '\.\%([-+*/^÷%|&⊻]\|//\|\\\|>>\|>>>\?\)\?=' .
- \ '\|' . '[:<>]=\|||\|&&\||>\|<|\|[<>:]:\|<<\|>>>\?\|//\|[-=]>\|\.\.\.\?' .
- \ '\|' . '\.\?[!' . s:op_chars . s:op_chars_wc . ']' .
- \ '\)'
+let s:operators = '\%(' . '\.\%([-+*/^÷%|&⊻]\|//\|\\\|>>\|>>>\?\)\?='
+ \ . '\|' . '[:<>]=\|||\|&&\||>\|<|\|[<>:]:\|<<\|>>>\?\|//\|[-=]>\|\.\.\.\?'
+ \ . '\|' . '\.\?[!' . s:op_chars . s:op_chars_wc . ']'
+ \ . '\)'
" Characters that can be used to start an identifier. Above \UBF we don't
@@ -247,11 +250,11 @@ let s:hex_regex = '0x\x\%(_\?\x\)*\%(\>\|im\>\|\ze\X\)'
let s:bin_regex = '0b[01]\%(_\?[01]\)*\%(\>\|im\>\|\ze[^01]\)'
let s:oct_regex = '0o\o\%(_\?\o\)*\%(\>\|im\>\|\ze\O\)'
-let s:int_regex = '\%(' . s:hex_regex .
- \ '\|' . s:bin_regex .
- \ '\|' . s:oct_regex .
- \ '\|' . s:dec_regex .
- \ '\)'
+let s:int_regex = '\%(' . s:hex_regex
+ \ . '\|' . s:bin_regex
+ \ . '\|' . s:oct_regex
+ \ . '\|' . s:dec_regex
+ \ . '\)'
"floating point regexes
" starting with a dot, optional exponent
@@ -267,12 +270,12 @@ let s:hexfloat_regex1 = '0x\.\%\(\x\%(_\?\x\)*\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze
" starting with a digit
let s:hexfloat_regex2 = '0x\x\%(_\?\x\)*\%\(\.\%\(\x\%(_\?\x\)*\)\?\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'
-let s:float_regex = '\%(' . s:float_regex3 .
- \ '\|' . s:float_regex2 .
- \ '\|' . s:float_regex1 .
- \ '\|' . s:hexfloat_regex2 .
- \ '\|' . s:hexfloat_regex1 .
- \ '\)'
+let s:float_regex = '\%(' . s:float_regex3
+ \ . '\|' . s:float_regex2
+ \ . '\|' . s:float_regex1
+ \ . '\|' . s:hexfloat_regex2
+ \ . '\|' . s:hexfloat_regex1
+ \ . '\)'
exec 'syntax match juliaNumber contained "' . s:int_regex . '" contains=juliaComplexUnit'
exec 'syntax match juliaFloat contained "' . s:float_regex . '" contains=juliaComplexUnit'
@@ -545,3 +548,6 @@ hi def link juliaError Error
syntax sync fromstart
let b:current_syntax = "julia"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save