aboutsummaryrefslogtreecommitdiff
path: root/runtime/syntax/java.vim
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2024-10-05 11:02:55 +0200
committerChristian Clason <c.clason@uni-graz.at>2024-10-05 11:27:05 +0200
commit988482d9422b40e86225935326127063d881b090 (patch)
tree234c61bf6e96643c59a33586039c82b492ca86af /runtime/syntax/java.vim
parentab98c5b5a0fdc9aad87feaf230239454f0a5e532 (diff)
downloadrneovim-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.vim48
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