summaryrefslogtreecommitdiffstats
path: root/syntax/nim.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/nim.vim')
-rw-r--r--syntax/nim.vim14
1 files changed, 10 insertions, 4 deletions
diff --git a/syntax/nim.vim b/syntax/nim.vim
index fe7944cb..d69166b3 100644
--- a/syntax/nim.vim
+++ b/syntax/nim.vim
@@ -84,10 +84,16 @@ syn match nimEscapeError "\\x\x\=\X" display contained
if nim_highlight_numbers == 1
" numbers (including longs and complex)
- syn match nimNumber "\v<0x\x+(\'(i|I|f|F|u|U)(8|16|32|64))?>"
- syn match nimNumber "\v<[0-9_]+(\'(i|I|f|F|u|U)(8|16|32|64))?>"
- syn match nimNumber "\v[0-9]\.[0-9_]+([eE][+-]=[0-9_]+)=>"
- syn match nimNumber "\v<[0-9_]+(\.[0-9_]+)?([eE][+-]?[0-9_]+)?(\'(f|F)(32|64))?>"
+ let s:dec_num = '\d%(_?\d)*'
+ let s:int_suf = '%(''%(%(i|I|u|U)%(8|16|32|64)|u|U))'
+ let s:float_suf = '%(''%(%(f|F)%(32|64|128)?|d|D))'
+ let s:exp = '%([eE][+-]?'.s:dec_num.')'
+ exe 'syn match nimNumber /\v<0[bB][01]%(_?[01])*%('.s:int_suf.'|'.s:float_suf.')?>/'
+ exe 'syn match nimNumber /\v<0[ocC]\o%(_?\o)*%('.s:int_suf.'|'.s:float_suf.')?>/'
+ exe 'syn match nimNumber /\v<0[xX]\x%(_?\x)*%('.s:int_suf.'|'.s:float_suf.')?>/'
+ exe 'syn match nimNumber /\v<'.s:dec_num.'%('.s:int_suf.'|'.s:exp.'?'.s:float_suf.'?)>/'
+ exe 'syn match nimNumber /\v<'.s:dec_num.'\.'.s:dec_num.s:exp.'?'.s:float_suf.'?>/'
+ unlet s:dec_num s:int_suf s:float_suf s:exp
endif
if nim_highlight_builtins == 1