diff options
-rw-r--r-- | runtime/doc/syntax.txt | 6 | ||||
-rw-r--r-- | runtime/syntax/java.vim | 24 | ||||
-rw-r--r-- | runtime/syntax/lf.vim | 194 | ||||
-rw-r--r-- | src/nvim/mapping.c | 3 | ||||
-rw-r--r-- | test/functional/api/keymap_spec.lua | 8 |
5 files changed, 127 insertions, 108 deletions
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index d44e3cea8e..93a385359d 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1723,12 +1723,12 @@ cycles for such a feature to become either integrated into the platform or withdrawn from this effort. To cater for early adopters, there is optional support in Vim for syntax related preview features that are implemented. You can request it by specifying a list of preview feature numbers as follows: > - :let g:java_syntax_previews = [455, 476] + :let g:java_syntax_previews = [488, 494] The supported JEP numbers are to be drawn from this table: `430`: String Templates [JDK 21] - `455`: Primitive types in Patterns, instanceof, and switch - `476`: Module Import Declarations + `488`: Primitive types in Patterns, instanceof, and switch + `494`: Module Import Declarations Note that as soon as the particular preview feature will have been integrated into the Java platform, its entry will be removed from the table and related diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim index 9b38ccd4dc..8dabc5e3df 100644 --- a/runtime/syntax/java.vim +++ b/runtime/syntax/java.vim @@ -3,7 +3,7 @@ " Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com> " Former Maintainer: Claudio Fleiner <claudio@fleiner.com> " Repository: https://github.com/zzzyxwvut/java-vim.git -" Last Change: 2025 Jan 02 +" Last Change: 2025 Mar 26 " Please check ":help java.vim" for comments on some of the options " available. @@ -46,8 +46,10 @@ function! s:ff.RightConstant(x, y) abort return a:y endfunction -function! s:ff.IsRequestedPreviewFeature(n) abort - return exists("g:java_syntax_previews") && index(g:java_syntax_previews, a:n) + 1 +function! s:ff.IsAnyRequestedPreviewFeatureOf(ns) abort + return exists("g:java_syntax_previews") && + \ !empty(filter(a:ns, printf('index(%s, v:val) + 1', + \ string(g:java_syntax_previews)))) endfunction if !exists("*s:ReportOnce") @@ -108,7 +110,7 @@ syn keyword javaTypedef this super syn keyword javaOperator new instanceof syn match javaOperator "\<var\>\%(\s*(\)\@!" -if s:ff.IsRequestedPreviewFeature(476) +if s:ff.IsAnyRequestedPreviewFeatureOf([476, 494]) " Module imports can be used in any source file. syn match javaExternal "\<import\s\+module\>" contains=javaModuleImport syn keyword javaModuleImport contained module @@ -262,8 +264,12 @@ if exists("g:java_highlight_all") || exists("g:java_highlight_java") || exists(" syn keyword javaC_JavaLang Class InheritableThreadLocal ThreadLocal Enum ClassValue endif - " As of JDK 21, java.lang.Compiler is no more (deprecated in JDK 9). - syn keyword javaLangDeprecated Compiler + " As of JDK 24, SecurityManager is rendered non-functional + " (JDK-8338625). + " (Note that SecurityException and RuntimePermission are still + " not deprecated.) + " As of JDK 21, Compiler is no more (JDK-8205129). + syn keyword javaLangDeprecated Compiler SecurityManager syn cluster javaClasses add=javaC_JavaLang hi def link javaC_JavaLang javaC_Java syn keyword javaE_JavaLang AbstractMethodError ClassCircularityError ClassFormatError Error IllegalAccessError IncompatibleClassChangeError InstantiationError InternalError LinkageError NoClassDefFoundError NoSuchFieldError NoSuchMethodError OutOfMemoryError StackOverflowError ThreadDeath UnknownError UnsatisfiedLinkError VerifyError VirtualMachineError ExceptionInInitializerError UnsupportedClassVersionError AssertionError BootstrapMethodError @@ -311,7 +317,7 @@ endif exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*::\@!"he=e-1' -if s:ff.IsRequestedPreviewFeature(455) +if s:ff.IsAnyRequestedPreviewFeatureOf([455, 488]) syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaBoolean,javaNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaType,javaLabelDefault,javaLabelVarType,javaLabelWhenClause else syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaLabelDefault,javaLabelVarType,javaLabelWhenClause @@ -609,7 +615,7 @@ syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaS syn region javaString start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecialChar,javaSpecialError,javaTextBlockError,@Spell syn match javaTextBlockError +"""\s*"""+ -if s:ff.IsRequestedPreviewFeature(430) +if s:ff.IsAnyRequestedPreviewFeatureOf([430]) syn region javaStrTemplEmbExp contained matchgroup=javaStrTempl start="\\{" end="}" contains=TOP exec 'syn region javaStrTempl start=+\%(\.[[:space:]\n]*\)\@' . s:ff.Peek('80', '') . '<="+ end=+"+ contains=javaStrTemplEmbExp,javaSpecialChar,javaSpecialError,@Spell' exec 'syn region javaStrTempl start=+\%(\.[[:space:]\n]*\)\@' . s:ff.Peek('80', '') . '<="""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaStrTemplEmbExp,javaSpecialChar,javaSpecialError,javaTextBlockError,@Spell' @@ -688,7 +694,7 @@ if exists("g:java_highlight_debug") syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial syn region javaDebugString contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaDebugSpecial,javaDebugTextBlockError - if s:ff.IsRequestedPreviewFeature(430) + if s:ff.IsAnyRequestedPreviewFeatureOf([430]) " The highlight groups of java{StrTempl,Debug{,Paren,StrTempl}}\, " share one colour by default. Do not conflate unrelated parens. syn region javaDebugStrTemplEmbExp contained matchgroup=javaDebugStrTempl start="\\{" end="}" contains=javaComment,javaLineComment,javaDebug\%(Paren\)\@!.* diff --git a/runtime/syntax/lf.vim b/runtime/syntax/lf.vim index e4cf014865..3c1513fe68 100644 --- a/runtime/syntax/lf.vim +++ b/runtime/syntax/lf.vim @@ -2,15 +2,18 @@ " Language: lf file manager configuration file (lfrc) " Maintainer: Andis Sprinkis <andis@sprinkis.com> " Former Maintainer: Cameron Wright -" Former URL: https://github.com/andis-sprinkis/lf-vim -" Last Change: 13 October 2024 +" URL: https://github.com/andis-sprinkis/lf-vim +" Last Change: 28 March 2025 +" 29 Mar 2025 by Vim Project (save and restore 'cpo' setting) " " The shell syntax highlighting is configurable. See $VIMRUNTIME/doc/syntax.txt -" lf version: 32 +" lf version: 34 if exists("b:current_syntax") finish endif +let s:cpo = &cpo +set cpo&vim let b:current_syntax = "lf" @@ -33,122 +36,80 @@ syn keyword lfKeyword set setlocal cmd map cmap skipwhite "{{{ Options Keywords syn keyword lfOptions - \ quit - \ up - \ half-up - \ page-up - \ scroll-up - \ down - \ half-down - \ page-down - \ scroll-down - \ updir - \ open - \ jump-next - \ jump-prev - \ top + \ anchorfind + \ autoquit + \ borderfmt \ bottom - \ high - \ middle - \ low - \ toggle - \ invert - \ invert-below - \ unselect - \ glob-select - \ glob-unselect \ calcdirsize - \ clearmaps - \ copy - \ cut - \ paste - \ clear - \ sync - \ draw - \ redraw - \ load - \ reload - \ echo - \ echomsg - \ echoerr \ cd - \ select - \ delete - \ rename - \ source - \ push - \ read - \ shell - \ shell-pipe - \ shell-wait - \ shell-async - \ find - \ find-back - \ find-next - \ find-prev - \ search - \ search-back - \ search-next - \ search-prev - \ filter - \ setfilter - \ mark-save - \ mark-load - \ mark-remove - \ tag - \ tag-toggle - \ cmd-escape + \ cleaner + \ clear + \ clearmaps + \ cmd-capitalize-word \ cmd-complete - \ cmd-menu-complete - \ cmd-menu-complete-back - \ cmd-menu-accept + \ cmd-delete + \ cmd-delete-back + \ cmd-delete-end + \ cmd-delete-home + \ cmd-delete-unix-word + \ cmd-delete-word + \ cmd-delete-word-back + \ cmd-end \ cmd-enter - \ cmd-interrupt + \ cmd-escape \ cmd-history-next \ cmd-history-prev + \ cmd-home + \ cmd-interrupt \ cmd-left + \ cmd-lowercase-word + \ cmd-menu-accept + \ cmd-menu-complete + \ cmd-menu-complete-back \ cmd-right - \ cmd-home - \ cmd-end - \ cmd-delete - \ cmd-delete-back - \ cmd-delete-home - \ cmd-delete-end - \ cmd-delete-unix-word - \ cmd-yank \ cmd-transpose \ cmd-transpose-word + \ cmd-uppercase-word \ cmd-word \ cmd-word-back - \ cmd-delete-word - \ cmd-delete-word-back - \ cmd-capitalize-word - \ cmd-uppercase-word - \ cmd-lowercase-word - \ anchorfind - \ autoquit - \ borderfmt - \ cleaner + \ cmd-yank + \ copy \ copyfmt \ cursoractivefmt \ cursorparentfmt \ cursorpreviewfmt + \ cut \ cutfmt + \ delete \ dircache \ dircounts \ dirfirst \ dironly \ dirpreviews + \ down + \ draw \ drawbox \ dupfilefmt + \ echo + \ echoerr + \ echomsg \ errorfmt \ filesep + \ filter + \ find + \ find-back + \ find-next + \ find-prev \ findlen + \ glob-select + \ glob-unselect \ globfilter \ globsearch + \ half-down + \ half-up \ hidden \ hiddenfiles - \ hidecursorinactive + \ high \ history \ icons \ ifs @@ -159,45 +120,90 @@ syn keyword lfOptions \ info \ infotimefmtnew \ infotimefmtold + \ invert + \ invert-below + \ jump-next + \ jump-prev + \ load + \ locale + \ low + \ mark-load + \ mark-remove + \ mark-save + \ middle \ mouse \ number \ numberfmt + \ on-cd + \ on-focus-gained + \ on-focus-lost + \ on-init + \ on-quit + \ on-redraw + \ on-select + \ open + \ page-down + \ page-up + \ paste \ period + \ pre-cd \ preserve \ preview \ previewer \ promptfmt + \ push + \ quit \ ratios + \ read + \ redraw \ relativenumber + \ reload + \ rename \ reverse \ roundbox - \ ruler \ rulerfmt + \ scroll-down + \ scroll-up \ scrolloff + \ search + \ search-back + \ search-next + \ search-prev + \ select \ selectfmt \ selmode + \ setfilter \ shell + \ shell-async + \ shell-pipe + \ shell-wait \ shellflag \ shellopts + \ showbinds \ sixel \ smartcase \ smartdia \ sortby + \ source \ statfmt + \ sync \ tabstop + \ tag + \ tag-toggle \ tagfmt \ tempmarks \ timefmt + \ toggle + \ top \ truncatechar \ truncatepct + \ unselect + \ up + \ updir \ waitmsg + \ watch \ wrapscan \ wrapscroll - \ pre-cd - \ on-cd - \ on-select - \ on-redraw - \ on-quit "}}} "{{{ Special Matching @@ -234,3 +240,5 @@ hi def link lfExternalShell Normal hi def link lfExternalPatch Special hi def link lfIgnore Special "}}} +let &cpo = s:cpo +unlet s:cpo diff --git a/src/nvim/mapping.c b/src/nvim/mapping.c index ab9d68f911..147985377e 100644 --- a/src/nvim/mapping.c +++ b/src/nvim/mapping.c @@ -2804,8 +2804,7 @@ void modify_keymap(uint64_t channel_id, Buffer buffer, bool is_unmap, String mod api_set_error(err, kErrorTypeException, e_nomap, 0); goto fail_and_free; case 5: - api_set_error(err, kErrorTypeException, - "E227: mapping already exists for %s", parsed_args.lhs); + api_set_error(err, kErrorTypeException, e_mapping_already_exists_for_str, lhs.data); goto fail_and_free; default: assert(false && "Unrecognized return code!"); diff --git a/test/functional/api/keymap_spec.lua b/test/functional/api/keymap_spec.lua index 995711507f..73dae0dd60 100644 --- a/test/functional/api/keymap_spec.lua +++ b/test/functional/api/keymap_spec.lua @@ -803,11 +803,17 @@ describe('nvim_set_keymap, nvim_del_keymap', function() it('throws appropriate error messages when setting <unique> maps', function() api.nvim_set_keymap('l', 'lhs', 'rhs', {}) eq( - 'E227: mapping already exists for lhs', + 'E227: Mapping already exists for lhs', pcall_err(api.nvim_set_keymap, 'l', 'lhs', 'rhs', { unique = true }) ) -- different mapmode, no error should be thrown api.nvim_set_keymap('t', 'lhs', 'rhs', { unique = true }) + + api.nvim_set_keymap('n', '<tab>', 'rhs', {}) + eq( + 'E227: Mapping already exists for <tab>', + pcall_err(api.nvim_set_keymap, 'n', '<tab>', 'rhs', { unique = true }) + ) end) it('can set <expr> mappings whose RHS change dynamically', function() |