diff options
author | Christian Clason <c.clason@uni-graz.at> | 2024-10-05 11:02:55 +0200 |
---|---|---|
committer | Christian Clason <c.clason@uni-graz.at> | 2024-10-05 11:27:05 +0200 |
commit | 988482d9422b40e86225935326127063d881b090 (patch) | |
tree | 234c61bf6e96643c59a33586039c82b492ca86af /runtime/syntax/java.vim | |
parent | ab98c5b5a0fdc9aad87feaf230239454f0a5e532 (diff) | |
download | rneovim-988482d9422b40e86225935326127063d881b090.tar.gz rneovim-988482d9422b40e86225935326127063d881b090.tar.bz2 rneovim-988482d9422b40e86225935326127063d881b090.zip |
vim-patch:60310a4: runtime(java): Manage circularity for every :syn-included syntax file
With "g:markdown_fenced_languages" defined and "java" added
to its list, a circular dependency between the Markdown and
Java syntax files will be made. To break it, no Markdown
documentation comments will be recognised in fenced blocks
in Markdown files; in order to view Java source files,
"java" must be removed from "g:markdown_fenced_languages",
and this task can be automated as follows.
1) Add to "~/.after/ftplugin/java.vim":
------------------------------------------------------------
if exists("g:markdown_fenced_languages") &&
\ !(exists("g:java_ignore_javadoc") ||
\ exists("g:java_ignore_markdown"))
let s:idx = index(g:markdown_fenced_languages, 'java')
if s:idx > -1
call remove(g:markdown_fenced_languages, s:idx)
endif
unlet s:idx
endif
------------------------------------------------------------
2) Optionally add to "~/.after/ftplugin/markdown.vim":
------------------------------------------------------------
if exists("g:markdown_fenced_languages") &&
\ index(g:markdown_fenced_languages, 'java') < 0
call add(g:markdown_fenced_languages, 'java')
endif
------------------------------------------------------------
(Make sure that the above snippets appear in the files under
the "ftplugin" NOT "syntax" directory.)
Finally, unless the new version of the syntax file is made
available from "$VIMRUNTIME" (and from "~/.vim/syntax" if
necessary), OTHER discoverable file versions will be used
whose behaviour may interfere with this fix.
related: vim/vim#15740
closes: vim/vim#15796
https://github.com/vim/vim/commit/60310a4b2630a4d3bb0b6da9bc03061ecfbac9ee
Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
Diffstat (limited to 'runtime/syntax/java.vim')
-rw-r--r-- | runtime/syntax/java.vim | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim index 737219afce..307fc26349 100644 --- a/runtime/syntax/java.vim +++ b/runtime/syntax/java.vim @@ -3,16 +3,32 @@ " 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: 2024 Sep 28 +" Last Change: 2024 Oct 03 -" Please check :help java.vim for comments on some of the options available. +" Please check ":help java.vim" for comments on some of the options +" available. -" quit when a syntax file was already loaded -if !exists("g:main_syntax") - if exists("b:current_syntax") - finish +" Do not aggregate syntax items from circular inclusion. +if exists("b:current_syntax") + finish +endif + +if exists("g:main_syntax") + " Reject attendant circularity for every :syn-included syntax file, + " but ACCEPT FAILURE when "g:main_syntax" is set to "java". + if g:main_syntax == 'html' + if !exists("g:java_ignore_html") + let g:java_ignore_html = 1 + let s:clear_java_ignore_html = 1 + endif + elseif g:main_syntax == 'markdown' + if !exists("g:java_ignore_markdown") + let g:java_ignore_markdown = 1 + let s:clear_java_ignore_markdown = 1 + endif endif - " we define it here so that included files can test for it +else + " Allow syntax files that include this file test for its inclusion. let g:main_syntax = 'java' endif @@ -364,15 +380,17 @@ if !exists("g:java_ignore_javadoc") && (s:with_html || s:with_markdown) && g:mai " Include HTML syntax coloring for Javadoc comments. if s:with_html - syntax include @javaHtml syntax/html.vim - unlet b:current_syntax + try + syntax include @javaHtml syntax/html.vim + finally + unlet! b:current_syntax + endtry endif " Include Markdown syntax coloring (v7.2.437) for Javadoc comments. if s:with_markdown try syntax include @javaMarkdown syntax/markdown.vim - unlet b:current_syntax let s:ff.WithMarkdown = s:ff.LeftConstant catch /\<E48[45]:/ call s:ReportOnce(v:exception) @@ -383,6 +401,8 @@ if !exists("g:java_ignore_javadoc") && (s:with_html || s:with_markdown) && g:mai hi clear markdownCodeBlock hi clear markdownCodeDelimiter hi clear markdownLinkDelimiter + finally + unlet! b:current_syntax endtry endif @@ -839,6 +859,14 @@ if g:main_syntax == 'java' unlet g:main_syntax endif +if exists("s:clear_java_ignore_html") + unlet! s:clear_java_ignore_html g:java_ignore_html +endif + +if exists("s:clear_java_ignore_markdown") + unlet! s:clear_java_ignore_markdown g:java_ignore_markdown +endif + let b:spell_options = "contained" let &cpo = s:cpo_save unlet s:cpo_save s:ff s:with_html s:with_markdown |