mirror of
https://github.com/vim/vim
synced 2025-07-16 09:12:00 +00:00
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: #15740 closes: #15796 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
075ab5ab3b
commit
60310a4b26
@ -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
|
||||
|
20
runtime/syntax/testdir/dumps/markdown_circularity_00.dump
Normal file
20
runtime/syntax/testdir/dumps/markdown_circularity_00.dump
Normal file
@ -0,0 +1,20 @@
|
||||
>N+0&#ffffff0|o| |c|o|d|e| |i|s| |r|e|c|o|g|n|i|s|e|d| |i|n| |H|T|M|L| |s|n|i|p@1|e|t|s|.| @35
|
||||
@75
|
||||
|~+0#e000e06&@2|h|t|m|l| +0#0000000&@67
|
||||
|<+0#00e0e07&|p+0#af5f00255&|r|e|>+0#00e0e07&|<|c+0#af5f00255&|o|d|e|>+0#00e0e07&| +0#0000000&@63
|
||||
|/|*@1| |H|T|M|L| |s|y|n|t|a|x| |c|i|r|c|u|l|a|r|i|t|y| |t|e|s|t|s|.| |*|/| @37
|
||||
|c|l|a|s@1| |H|T|M|L|S|y|n|t|a|x|C|i|r|c|u|l|a|r|i|t|y|T|e|s|t|s| @42
|
||||
|{| @73
|
||||
@4|/@2| |@|h|i|d@1|e|n| @59
|
||||
@4|/@2| @67
|
||||
@4|/@2| |@|p|a|r|a|m| |a|r|g|s| |o|p|t|i|o|n|a|l| |c|o|m@1|a|n|d|-|l|i|n|e| |a|r|g|u|m|e|n|t|s| @23
|
||||
@4|p|u|b|l|i|c| |s|t|a|t|i|c| |v|o|i|d| |m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| @32
|
||||
@4|{| @69
|
||||
@8|S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|"@2| @44
|
||||
@12|`@2|j|a|v|a| @55
|
||||
@12|c|l|a|s@1| |S|y|n|t|a|x|C|i|r|c|u|l|a|r|i|t|y|T|e|s|t|s| @34
|
||||
@12|{| @61
|
||||
@16|p|u|b|l|i|c| |s|t|a|t|i|c| |v|o|i|d| |m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| @20
|
||||
@16|{| @57
|
||||
@20|S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|"|.|"|)|;| @30
|
||||
@57|1|,|1| @10|T|o|p|
|
20
runtime/syntax/testdir/dumps/markdown_circularity_01.dump
Normal file
20
runtime/syntax/testdir/dumps/markdown_circularity_01.dump
Normal file
@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@11|`@2|j|a|v|a| @55
|
||||
@12|c|l|a|s@1| |S|y|n|t|a|x|C|i|r|c|u|l|a|r|i|t|y|T|e|s|t|s| @34
|
||||
@12|{| @61
|
||||
@16|p|u|b|l|i|c| |s|t|a|t|i|c| |v|o|i|d| |m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| @20
|
||||
@16|{| @57
|
||||
@20>S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|"|.|"|)|;| @30
|
||||
@16|}| @57
|
||||
@12|}| @61
|
||||
@12|`@2| @59
|
||||
@8|"@2|)|;| @61
|
||||
@4|}| @69
|
||||
|}| @73
|
||||
|<+0#00e0e07&|/|c+0#af5f00255&|o|d|e|>+0#00e0e07&|<|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@61
|
||||
|~+0#e000e06&@2| +0#0000000&@71
|
||||
@75
|
||||
@75
|
||||
|M|a|r|k|d|o|w|n| |d|o|c|u|m|e|n|t|a|t|i|o|n| |c|o|m@1|e|n|t|s| |a|r|e| |n|o|t| |r|e|c|o|g|n|i|s|e|d| |i|n| |J|a|v|a| |s|n|i|p@1|e|t|s|.| @6
|
||||
@75
|
||||
|`+0#e000e06&@2|j|a|v|a| +0#0000000&@67
|
||||
@57|1|9|,|2|1| @8|3|7|%|
|
20
runtime/syntax/testdir/dumps/markdown_circularity_02.dump
Normal file
20
runtime/syntax/testdir/dumps/markdown_circularity_02.dump
Normal file
@ -0,0 +1,20 @@
|
||||
|`+0#e000e06#ffffff0@2|j|a|v|a| +0#0000000&@67
|
||||
|/+0#0000e05&|*@1| +0#e000e06&|J|a|v|a| |s|y|n|t|a|x| |c|i|r|c|u|l|a|r|i|t|y| |t|e|s|t|s|.| +0#0000e05&|*|/| +0#0000000&@37
|
||||
|c+0#00e0003&|l|a|s@1| +0#0000000&|J|a|v|a|S|y|n|t|a|x|C|i|r|c|u|l|a|r|i|t|y|T|e|s|t|s| @42
|
||||
|{| @73
|
||||
@4|/+0#0000e05&@2| |@|h|i|d@1|e|n| +0#0000000&@59
|
||||
@4>/+0#0000e05&@2| +0#0000000&@67
|
||||
@4|/+0#0000e05&@2| |@|p|a|r|a|m| |a|r|g|s| |o|p|t|i|o|n|a|l| |c|o|m@1|a|n|d|-|l|i|n|e| |a|r|g|u|m|e|n|t|s| +0#0000000&@23
|
||||
@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|m|a|i|n|(|S+0#e000002&|t|r|i|n|g|[+0#0000000&|]| |a|r|g|s|)| @32
|
||||
@4|{| @69
|
||||
@8|S+0#e000e06&|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|"@2| +0#0000000&@44
|
||||
| +0#e000002&@11|<|p|r|e|>|<|c|o|d|e|>| +0#0000000&@51
|
||||
| +0#e000002&@11|c|l|a|s@1| |S|y|n|t|a|x|C|i|r|c|u|l|a|r|i|t|y|T|e|s|t|s| +0#0000000&@34
|
||||
| +0#e000002&@11|{| +0#0000000&@61
|
||||
| +0#e000002&@15|p|u|b|l|i|c| |s|t|a|t|i|c| |v|o|i|d| |m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| +0#0000000&@20
|
||||
| +0#e000002&@15|{| +0#0000000&@57
|
||||
| +0#e000002&@19|S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|"|.|"|)|;| +0#0000000&@30
|
||||
| +0#e000002&@15|}| +0#0000000&@57
|
||||
| +0#e000002&@11|}| +0#0000000&@61
|
||||
| +0#e000002&@11|<|/|c|o|d|e|>|<|/|p|r|e|>| +0#0000000&@49
|
||||
@57|3|7|,|5| @9|8@1|%|
|
20
runtime/syntax/testdir/dumps/markdown_circularity_03.dump
Normal file
20
runtime/syntax/testdir/dumps/markdown_circularity_03.dump
Normal file
@ -0,0 +1,20 @@
|
||||
| +0#e000002#ffffff0@11|<|/|c|o|d|e|>|<|/|p|r|e|>| +0#0000000&@49
|
||||
| +0#e000002&@7|"+0#e000e06&@2|)|;+0#0000000&| @61
|
||||
@4|}| @69
|
||||
|}| @73
|
||||
>`+0#e000e06&@2| +0#0000000&@71
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|5|4|,|1| @9|B|o|t|
|
54
runtime/syntax/testdir/input/markdown_circularity.markdown
Normal file
54
runtime/syntax/testdir/input/markdown_circularity.markdown
Normal file
@ -0,0 +1,54 @@
|
||||
No code is recognised in HTML snippets.
|
||||
|
||||
~~~html
|
||||
<pre><code>
|
||||
/** HTML syntax circularity tests. */
|
||||
class HTMLSyntaxCircularityTests
|
||||
{
|
||||
/// @hidden
|
||||
///
|
||||
/// @param args optional command-line arguments
|
||||
public static void main(String[] args)
|
||||
{
|
||||
System.out.println("""
|
||||
```java
|
||||
class SyntaxCircularityTests
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
System.out.println(".");
|
||||
}
|
||||
}
|
||||
```
|
||||
""");
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
~~~
|
||||
|
||||
|
||||
Markdown documentation comments are not recognised in Java snippets.
|
||||
|
||||
```java
|
||||
/** Java syntax circularity tests. */
|
||||
class JavaSyntaxCircularityTests
|
||||
{
|
||||
/// @hidden
|
||||
///
|
||||
/// @param args optional command-line arguments
|
||||
public static void main(String[] args)
|
||||
{
|
||||
System.out.println("""
|
||||
<pre><code>
|
||||
class SyntaxCircularityTests
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
System.out.println(".");
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
""");
|
||||
}
|
||||
}
|
||||
```
|
@ -0,0 +1,4 @@
|
||||
unlet! g:java_ignore_javadoc g:java_ignore_markdown
|
||||
let g:java_highlight_debug = 1
|
||||
let g:java_highlight_java_lang = 1
|
||||
let g:markdown_fenced_languages = ['html', 'java']
|
Reference in New Issue
Block a user