Mercurial > vim
view runtime/syntax/colortest.vim @ 35039:fbdb6aeca2e2
runtime(java): Improve the recognition of the "style" method declarations
Commit: https://github.com/vim/vim/commit/a4c085a3e607bd01d34e1db600b6460fc35fb0a3
Author: Aliaksei Budavei <0x000c70@gmail.com>
Date: Wed Apr 24 21:04:25 2024 +0200
runtime(java): Improve the recognition of the "style" method declarations
- Request the new regexp engine (v7.3.970) for [:upper:] and
[:lower:].
- Recognise declarations of in-line annotated methods.
- Recognise declarations of _strictfp_ methods.
- Establish partial order for method modifiers as shown in
the MethodModifier production; namely, _public_ and
friends should be written the leftmost, possibly followed
by _abstract_ or _default_, or possibly followed by other
modifiers.
- Stop looking for parameterisable primitive types (void<?>,
int<Object>, etc., are malformed).
- Stop looking for arrays of _void_.
- Acknowledge the prevailing convention for method names to
begin with a small letter and for class/interface names to
begin with a capital letter; and, therefore, desist from
claiming declarations of enum constants and constructors
with javaFuncDef.
Rationale:
+ Constructor is distinct from method:
* its (overloaded) name is not arbitrary;
* its return type is implicit;
* its _throws_ clause depends on indirect vagaries of
instance (variable) initialisers;
* its invocation makes other constructors of its type
hierarchy invoked one by one, concluding with the
primordial constructor;
* its explicit invocation, via _this_ or _super_, can
only appear as the first statement in a constructor
(not anymore, see JEP 447); else, its _super_ call
cannot appear in constructors of _record_ or _enum_;
and neither invocation is allowed for the primordial
constructor;
* it is not a member of its class, like initialisers,
and is never inherited;
* it is never _abstract_ or _native_.
+ Constructor declarations tend to be few in number and
merit visual recognition from method declarations.
+ Enum constants define a fixed set of type instances
and more resemble class variable initialisers.
Note that the code duplicated for @javaFuncParams is written
keeping in mind for g:java_highlight_functions a pending 3rd
variant, which would require none of the :syn-cluster added
groups.
closes: #14620
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 24 Apr 2024 21:15:02 +0200 |
parents | 4027cefc2aab |
children |
line wrap: on
line source
" Vim script for testing colors " Maintainer: The Vim Project <https://github.com/vim/vim> " Contributors: Rafael Garcia-Suarez, Charles Campbell " Last Change: 2023 Aug 10 " Former Maintainer: Bram Moolenaar <Bram@vim.org> " edit this file, then do ":source %", and check if the colors match " black black_on_white white_on_black " black_on_black black_on_black " darkred darkred_on_white white_on_darkred " darkred_on_black black_on_darkred " darkgreen darkgreen_on_white white_on_darkgreen " darkgreen_on_black black_on_darkgreen " brown brown_on_white white_on_brown " brown_on_black black_on_brown " darkblue darkblue_on_white white_on_darkblue " darkblue_on_black black_on_darkblue " darkmagenta darkmagenta_on_white white_on_darkmagenta " darkmagenta_on_black black_on_darkmagenta " darkcyan darkcyan_on_white white_on_darkcyan " darkcyan_on_black black_on_darkcyan " lightgray lightgray_on_white white_on_lightgray " lightgray_on_black black_on_lightgray " darkgray darkgray_on_white white_on_darkgray " darkgray_on_black black_on_darkgray " red red_on_white white_on_red " red_on_black black_on_red " green green_on_white white_on_green " green_on_black black_on_green " yellow yellow_on_white white_on_yellow " yellow_on_black black_on_yellow " blue blue_on_white white_on_blue " blue_on_black black_on_blue " magenta magenta_on_white white_on_magenta " magenta_on_black black_on_magenta " cyan cyan_on_white white_on_cyan " cyan_on_black black_on_cyan " white white_on_white white_on_white " white_on_black black_on_white " grey grey_on_white white_on_grey " grey_on_black black_on_grey " lightred lightred_on_white white_on_lightred " lightred_on_black black_on_lightred " lightgreen lightgreen_on_white white_on_lightgreen " lightgreen_on_black black_on_lightgreen " lightyellow lightyellow_on_white white_on_lightyellow " lightyellow_on_black black_on_lightyellow " lightblue lightblue_on_white white_on_lightblue " lightblue_on_black black_on_lightblue " lightmagenta lightmagenta_on_white white_on_lightmagenta " lightmagenta_on_black black_on_lightmagenta " lightcyan lightcyan_on_white white_on_lightcyan " lightcyan_on_black black_on_lightcyan " Open this file in a window if it isn't edited yet. " Use the current window if it's empty. if expand('%:p') != expand('<sfile>:p') let s:fname = expand('<sfile>') if exists('*fnameescape') let s:fname = fnameescape(s:fname) else let s:fname = escape(s:fname, ' \|') endif if &mod || line('$') != 1 || getline(1) != '' exe "new " . s:fname else exe "edit " . s:fname endif unlet s:fname endif syn clear 8 while search("_on_", "W") < 55 let col1 = substitute(expand("<cword>"), '\(\a\+\)_on_\a\+', '\1', "") let col2 = substitute(expand("<cword>"), '\a\+_on_\(\a\+\)', '\1', "") exec 'hi col_'.col1.'_'.col2.' ctermfg='.col1.' guifg='.col1.' ctermbg='.col2.' guibg='.col2 exec 'syn keyword col_'.col1.'_'.col2.' '.col1.'_on_'.col2 endwhile 8,54g/^" \a/exec 'hi col_'.expand("<cword>").' ctermfg='.expand("<cword>").' guifg='.expand("<cword>")| exec 'syn keyword col_'.expand("<cword>")." ".expand("<cword>") nohlsearch