diff options
Diffstat (limited to 'syntax/nim.vim')
-rw-r--r-- | syntax/nim.vim | 14 |
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 |