diff --git a/extensions/java/OSSREADME.json b/extensions/java/OSSREADME.json index 614dd8aeae3..6a2da0d287b 100644 --- a/extensions/java/OSSREADME.json +++ b/extensions/java/OSSREADME.json @@ -19,4 +19,24 @@ "to the base-name name of the original file, and an extension of txt, html, or similar. For example", "\"tidy\" is accompanied by \"tidy-license.txt\"." ] +},{ + "name": "textmate/javadoc.tmbundle", + "version": "0.0.0", + "license": "TextMate Bundle License", + "repositoryURL": "https://github.com/textmate/javadoc.tmbundle", + "licenseDetail": [ + "Copyright (c) textmate-javadoc.tmbundle project authors", + "", + "If not otherwise specified (see below), files in this repository fall under the following license:", + "", + "Permission to copy, use, modify, sell and distribute this", + "software is granted. This software is provided \"as is\" without", + "express or implied warranty, and with no claim as to its", + "suitability for any purpose.", + "", + "An exception is made for files in readable text which contain their own license information,", + "or files where an accompanying file exists (in the same directory) with a \"-license\" suffix added", + "to the base-name name of the original file, and an extension of txt, html, or similar. For example", + "\"tidy\" is accompanied by \"tidy-license.txt\"." + ] }] diff --git a/extensions/java/package.json b/extensions/java/package.json index 07e901cc20f..ee0e7e616ab 100644 --- a/extensions/java/package.json +++ b/extensions/java/package.json @@ -4,7 +4,7 @@ "publisher": "vscode", "engines": { "vscode": "*" }, "scripts": { - "update-grammar": "node ../../build/npm/update-grammar.js textmate/java.tmbundle Syntaxes/Java.plist ./syntaxes/java.json" + "update-grammar": "node ../../build/npm/update-grammar.js textmate/java.tmbundle Syntaxes/Java.plist ./syntaxes/java.tmLanguage.json && node ../../build/npm/update-grammar.js textmate/javadoc.tmbundle Syntaxes/JavaDoc.tmLanguage ./syntaxes/javadoc.tmLanguage.json" }, "contributes": { "languages": [{ @@ -16,7 +16,10 @@ "grammars": [{ "language": "java", "scopeName": "source.java", - "path": "./syntaxes/java.json" + "path": "./syntaxes/java.tmLanguage.json" + },{ + "scopeName": "text.html.javadoc", + "path": "./syntaxes/javadoc.tmLanguage.json" }] } } \ No newline at end of file diff --git a/extensions/java/syntaxes/java.json b/extensions/java/syntaxes/java.tmLanguage.json similarity index 100% rename from extensions/java/syntaxes/java.json rename to extensions/java/syntaxes/java.tmLanguage.json diff --git a/extensions/java/syntaxes/javadoc.tmLanguage.json b/extensions/java/syntaxes/javadoc.tmLanguage.json new file mode 100644 index 00000000000..06d352fe633 --- /dev/null +++ b/extensions/java/syntaxes/javadoc.tmLanguage.json @@ -0,0 +1,432 @@ +{ + "fileTypes": [], + "name": "JavaDoc", + "patterns": [ + { + "begin": "(/\\*\\*)\\s*$", + "beginCaptures": { + "1": { + "name": "punctuation.definition.comment.begin.javadoc" + } + }, + "contentName": "text.html", + "end": "\\*/", + "endCaptures": { + "0": { + "name": "punctuation.definition.comment.end.javadoc" + } + }, + "name": "comment.block.documentation.javadoc", + "patterns": [ + { + "include": "#inline" + }, + { + "begin": "((\\@)param)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.param.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.param.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)return)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.return.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.return.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)throws)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.throws.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.throws.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)exception)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.exception.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.exception.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)author)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.author.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.author.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)version)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.version.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.version.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)see)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.see.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.see.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)since)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.since.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.since.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)serial)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.serial.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.serial.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)serialField)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.serialField.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.serialField.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)serialData)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.serialData.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.serialData.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "begin": "((\\@)deprecated)", + "beginCaptures": { + "1": { + "name": "keyword.other.documentation.deprecated.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "end": "(?=^\\s*\\*?\\s*@|\\*/)", + "name": "meta.documentation.tag.deprecated.javadoc", + "patterns": [ + { + "include": "#inline" + } + ] + }, + { + "captures": { + "1": { + "name": "keyword.other.documentation.custom.javadoc" + }, + "2": { + "name": "punctuation.definition.keyword.javadoc" + } + }, + "match": "((\\@)\\S+)\\s" + } + ] + } + ], + "repository": { + "inline": { + "patterns": [ + { + "include": "#inline-formatting" + }, + { + "comment": "This prevents < characters in commented source from starting\n\t\t\t\t\t\t\t\ta tag that will not end. List of allowed tags taken from\n\t\t\t\t\t\t\t\tjava checkstyle.", + "match": "<(?!(a|abbr|acronym|address|area|b|bdo|big|blockquote|br|caption|cite|code|colgroup|dd|del|div|dfn|dl|dt|em|fieldset|font|h1toh6|hr|i|img|ins|kbd|li|ol|p|pre|q|samp|small|span|strong|sub|sup|table|tbody|td|tfoot|th|thread|tr|tt|u|ul)\\b[^>]*>)" + }, + { + "include": "text.html.basic" + }, + { + "match": "((https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt)://|mailto:)[-:@a-zA-Z0-9_.,~%+/?=&#;]+(?