mirror of
https://github.com/neovim/neovim.git
synced 2025-09-05 19:08:15 +00:00
vim-patch:100a665634a0
runtime(java): Improve the recognition of literals (vim/vim#14120)
* Emend the Unicode and octal escape sequence patterns;
* Accept the (repeated) underscore separators in all
numerical literals;
* Recognise hexadecimal floating-point literals.
(The space escape sequence '\s' will be introduced along
with text blocks in another PR.)
References:
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.3
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.1
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.2
https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.7
100a665634
Co-authored-by: Aliaksei Budavei <32549825+zzzyxwvut@users.noreply.github.com>
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
" Language: Java
|
||||
" Maintainer: Claudio Fleiner <claudio@fleiner.com>
|
||||
" URL: https://github.com/fleiner/vim/blob/master/runtime/syntax/java.vim
|
||||
" Last Change: 2024 Feb 27
|
||||
" Last Change: 2024 Mar 01
|
||||
|
||||
" Please check :help java.vim for comments on some of the options available.
|
||||
|
||||
@@ -226,20 +226,28 @@ syn match javaComment "/\*\*/"
|
||||
" Strings and constants
|
||||
syn match javaSpecialError contained "\\."
|
||||
syn match javaSpecialCharError contained "[^']"
|
||||
syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
|
||||
" Escape Sequences (JLS-17, §3.10.7):
|
||||
syn match javaSpecialChar contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[btnfr"'\\]\)"
|
||||
syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
|
||||
" next line disabled, it can cause a crash for a long line
|
||||
" The next line is commented out, it can cause a crash for a long line
|
||||
"syn match javaStringError +"\([^"\\]\|\\.\)*$+
|
||||
syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
|
||||
syn match javaCharacter "'\\''" contains=javaSpecialChar
|
||||
syn match javaCharacter "'[^\\]'"
|
||||
syn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>"
|
||||
syn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\="
|
||||
syn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>"
|
||||
syn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>"
|
||||
" Integer literals (JLS-17, §3.10.1):
|
||||
syn keyword javaNumber 0 0l 0L
|
||||
syn match javaNumber "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>"
|
||||
" Decimal floating-point literals (JLS-17, §3.10.2):
|
||||
" Against "\<\d\+\>\.":
|
||||
syn match javaNumber "\<\d\%(_*\d\)*\."
|
||||
syn match javaNumber "\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>"
|
||||
syn match javaNumber "\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
|
||||
syn match javaNumber "\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>"
|
||||
" Hexadecimal floating-point literals (JLS-17, §3.10.2):
|
||||
syn match javaNumber "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
|
||||
|
||||
" unicode characters
|
||||
syn match javaSpecial "\\u\d\{4\}"
|
||||
" Unicode characters
|
||||
syn match javaSpecial "\\u\x\x\x\x"
|
||||
|
||||
syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
|
||||
|
||||
@@ -265,16 +273,19 @@ endif
|
||||
if exists("java_highlight_debug")
|
||||
|
||||
" Strings and constants
|
||||
syn match javaDebugSpecial contained "\\\d\d\d\|\\."
|
||||
syn match javaDebugSpecial contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[btnfr"'\\]\)"
|
||||
syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
|
||||
syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
|
||||
syn match javaDebugStringError contained +"\%([^"\\]\|\\.\)*$+
|
||||
syn match javaDebugCharacter contained "'[^\\]'"
|
||||
syn match javaDebugSpecialCharacter contained "'\\.'"
|
||||
syn match javaDebugSpecialCharacter contained "'\\''"
|
||||
syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
|
||||
syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
|
||||
syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
|
||||
syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
|
||||
syn keyword javaDebugNumber contained 0 0l 0L
|
||||
syn match javaNumber contained "\<\d\%(_*\d\)*\."
|
||||
syn match javaDebugNumber contained "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>"
|
||||
syn match javaDebugNumber contained "\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>"
|
||||
syn match javaDebugNumber contained "\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
|
||||
syn match javaDebugNumber contained "\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>"
|
||||
syn match javaDebugNumber contained "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
|
||||
syn keyword javaDebugBoolean contained true false
|
||||
syn keyword javaDebugType contained null this super
|
||||
syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
|
||||
|
Reference in New Issue
Block a user