diff --git a/.gitignore b/.gitignore index 8b99448..153ce94 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,14 @@ +node_modules +.browser_modules + +lib +*.log + +*-app/* +!*-app/package.json +yarn.lock +lsp4xml/org.eclipse.lsp4xml-all.jar + dist/ -node_modules/ *.theia -lsp4xml/org.eclipse.lsp4xml-all.jar -yarn.lock +.vscode \ No newline at end of file diff --git a/README.md b/README.md index bb526f9..719eab3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,59 @@ -# checker-framework-theia -checker-framework-theia Plugin example for Theia. +# Checker Framework Theia +## Getting started +1. Install yarn +``` +npm install -g yarn +``` -# References +2. Run the setup script +``` +yarn run setup +``` -- [Checker Framework Language Server](https://github.com/eisopux/checker-framework-languageserver) -- [Authoring Theia Plug-ins](https://theia-ide.org/docs/authoring_plugins) +3. Build the packages +``` +yarn run prepare +``` + +Now, the node_modules should be installed and the Theia packages should be setup and ready for development. +## Running it in the Browser +1. Rebuild it for the browser +``` +yarn run rebuild:browser +``` + +2. Start it for the browser +``` +yarn run start:browser +``` + +Open http://localhost:3000 in the browser and the Theia application should appear. + +## Running it in Electron +1. Rebuild it for Electron +``` +yarn run rebuild:electron +``` + +1. Start it for Electron +``` +yarn run start:electron +``` + +The Electron app should open. + +## Folder Structure +### browser-app +This folder contains the npm package for the Browser Application of Theia. + +### checkerframeworkdemo +This folder contains the npm package for the Checker Framework Demo extensions for Theia. + +### electron-app +This folder contains the npm package for the Electron Application of Theia. + +### plugins +This folder contains the VSCode plugins incuded in the Theia IDE. It includes the following plugins: + +- Checker Framework +- Java \ No newline at end of file diff --git a/browser-app/package.json b/browser-app/package.json new file mode 100644 index 0000000..0670e16 --- /dev/null +++ b/browser-app/package.json @@ -0,0 +1,32 @@ +{ + "private": true, + "name": "browser-app", + "version": "0.0.0", + "dependencies": { + "@theia/core": "latest", + "@theia/editor": "latest", + "@theia/filesystem": "latest", + "@theia/markers": "latest", + "@theia/messages": "latest", + "@theia/monaco": "latest", + "@theia/navigator": "latest", + "@theia/plugin-ext": "latest", + "@theia/plugin-ext-vscode": "latest", + "@theia/preferences": "latest", + "@theia/process": "latest", + "@theia/terminal": "latest", + "@theia/workspace": "latest", + "checkerframeworkdemo": "0.0.0" + }, + "devDependencies": { + "@theia/cli": "latest" + }, + "scripts": { + "prepare": "theia build --mode development", + "start": "theia start --plugins=local-dir:../plugins", + "watch": "theia build --watch --mode development" + }, + "theia": { + "target": "browser" + } +} diff --git a/checkerframeworkdemo/README.md b/checkerframeworkdemo/README.md new file mode 100644 index 0000000..47ad1ba --- /dev/null +++ b/checkerframeworkdemo/README.md @@ -0,0 +1,9 @@ +# Checker Framework Demo Extension +This is the npm package for extending the Theia IDE for the demo page. It does the following: + +- Remove the About menu and command +- Remove the Help menu +- Remove the Terminal menu +- Remove the File menu + +These can be further extended to customize the Theia IDE. Some information can be found in the [Authoring Extensions](https://theia-ide.org/docs/authoring_extensions) docs for Theia. \ No newline at end of file diff --git a/checkerframeworkdemo/package.json b/checkerframeworkdemo/package.json new file mode 100644 index 0000000..0a48f02 --- /dev/null +++ b/checkerframeworkdemo/package.json @@ -0,0 +1,29 @@ +{ + "name": "checkerframeworkdemo", + "keywords": [ + "theia-extension" + ], + "version": "0.0.0", + "files": [ + "lib", + "src" + ], + "dependencies": { + "@theia/core": "latest" + }, + "devDependencies": { + "rimraf": "latest", + "typescript": "latest" + }, + "scripts": { + "prepare": "yarn run clean && yarn run build", + "clean": "rimraf lib", + "build": "tsc", + "watch": "tsc -w" + }, + "theiaExtensions": [ + { + "frontend": "lib/browser/checkerframeworkdemo-frontend-module" + } + ] +} \ No newline at end of file diff --git a/checkerframeworkdemo/src/browser/checkerframeworkdemo-contribution.ts b/checkerframeworkdemo/src/browser/checkerframeworkdemo-contribution.ts new file mode 100644 index 0000000..18e1ca7 --- /dev/null +++ b/checkerframeworkdemo/src/browser/checkerframeworkdemo-contribution.ts @@ -0,0 +1,62 @@ +import { injectable } from "inversify"; +import { CommandContribution, CommandRegistry, MenuContribution, MenuModelRegistry } from "@theia/core/lib/common"; +import { CommonMenus, CommonCommands } from "@theia/core/lib/browser"; +// import { WorkspaceCommands } from "@theia/workspace/lib/browser"; +import { TerminalMenus } from "@theia/terminal/lib/browser/terminal-frontend-contribution"; + +// Remove Menus +export const RemoveMenuCommand = { + id: 'CheckerFrameworkDemo.removeMenu' +}; + +@injectable() +export class RemoveMenuContribution implements CommandContribution, MenuContribution { + + constructor() { } + + registerCommands(registry: CommandRegistry): void { + // Help + registry.unregisterCommand(CommonCommands.ABOUT_COMMAND); + + // File + // registry.unregisterCommand(WorkspaceCommands.NEW_FILE); + // registry.unregisterCommand(WorkspaceCommands.NEW_FOLDER); + // registry.unregisterCommand(WorkspaceCommands.OPEN); + // registry.unregisterCommand(WorkspaceCommands.OPEN_WORKSPACE); + // registry.unregisterCommand(WorkspaceCommands.OPEN_RECENT_WORKSPACE); + // registry.unregisterCommand(WorkspaceCommands.SAVE_WORKSPACE_AS); + // registry.unregisterCommand(WorkspaceCommands.SAVE_AS); + // registry.unregisterCommand(WorkspaceCommands.SAVE_WORKSPACE_AS); + // registry.unregisterCommand(WorkspaceCommands.CLOSE); + } + + registerMenus(menus: MenuModelRegistry): void { + menus.unregisterMenuAction(CommonMenus.HELP.slice(-1)[0]); + + menus.unregisterMenuAction(CommonMenus.FILE.slice(-1)[0]); + menus.unregisterMenuAction(CommonMenus.FILE_SETTINGS_SUBMENU.slice(-1)[0]); + + menus.unregisterMenuAction(TerminalMenus.TERMINAL.slice(-1)[0]); + + // Add settings sub menu to Edit + menus.registerSubmenu(CommonMenus.FILE_SETTINGS_SUBMENU, 'Settings'); + } +} + +// dummy class to remove terminal +// @injectable() +// export class TerminalFrontendContributionStub { +// registerMenus(): void {} +// registerCommands(): void {} +// } + +// @injectable() +// export class TaskFrontendContributionStub { +// registerMenus(): void {} +// registerCommands(): void {} +// onStart(): void {} +// onStop(): void {} +// updateRunningTasksItem(): void {} +// registerQuickOpenHandlers(): void {} +// registerKeybindings(): void {} +// } \ No newline at end of file diff --git a/checkerframeworkdemo/src/browser/checkerframeworkdemo-frontend-module.ts b/checkerframeworkdemo/src/browser/checkerframeworkdemo-frontend-module.ts new file mode 100644 index 0000000..2827f6d --- /dev/null +++ b/checkerframeworkdemo/src/browser/checkerframeworkdemo-frontend-module.ts @@ -0,0 +1,23 @@ +/** + * Generated using theia-extension-generator + */ + import { + RemoveMenuContribution, + // TerminalFrontendContributionStub, + // TaskFrontendContributionStub + } from './checkerframeworkdemo-contribution'; +import { + CommandContribution, + MenuContribution +} from "@theia/core/lib/common"; +// import { TerminalFrontendContribution } from '@theia/terminal/lib/browser/terminal-frontend-contribution'; +// import { TaskFrontendContribution } from '@theia/task/lib/browser/task-frontend-contribution'; +import { ContainerModule } from "inversify"; + +export default new ContainerModule(bind => { + // enable/disable certain menus + bind(CommandContribution).to(RemoveMenuContribution); + bind(MenuContribution).to(RemoveMenuContribution); + // bind(TerminalFrontendContribution).to(TerminalFrontendContributionStub); + // bind(TaskFrontendContribution).to(TaskFrontendContributionStub); +}); diff --git a/tsconfig.json b/checkerframeworkdemo/tsconfig.json similarity index 56% rename from tsconfig.json rename to checkerframeworkdemo/tsconfig.json index 0a49c8d..889b54d 100644 --- a/tsconfig.json +++ b/checkerframeworkdemo/tsconfig.json @@ -1,19 +1,24 @@ { "compilerOptions": { - "strict": true, - "experimentalDecorators": true, + "skipLibCheck": true, + "declaration": true, + "declarationMap": true, + "noImplicitAny": true, + "noEmitOnError": false, + "noImplicitThis": true, "noUnusedLocals": true, + "strictNullChecks": true, + "experimentalDecorators": true, "emitDecoratorMetadata": true, "downlevelIteration": true, + "resolveJsonModule": true, "module": "commonjs", "moduleResolution": "node", - "target": "es6", + "target": "es5", + "jsx": "react", "lib": [ "es6", - - - "webworker" - + "dom" ], "sourceMap": true, "rootDir": "src", diff --git a/electron-app/package.json b/electron-app/package.json new file mode 100644 index 0000000..5e0f475 --- /dev/null +++ b/electron-app/package.json @@ -0,0 +1,33 @@ +{ + "private": true, + "name": "electron-app", + "version": "0.0.0", + "dependencies": { + "@theia/core": "latest", + "@theia/editor": "latest", + "@theia/electron": "latest", + "@theia/filesystem": "latest", + "@theia/markers": "latest", + "@theia/messages": "latest", + "@theia/monaco": "latest", + "@theia/navigator": "latest", + "@theia/plugin-ext": "latest", + "@theia/plugin-ext-vscode": "latest", + "@theia/preferences": "latest", + "@theia/process": "latest", + "@theia/terminal": "latest", + "@theia/workspace": "latest", + "checkerframeworkdemo": "0.0.0" + }, + "devDependencies": { + "@theia/cli": "latest" + }, + "scripts": { + "prepare": "theia build --mode development", + "start": "theia start --plugins=local-dir:../plugins", + "watch": "theia build --watch --mode development" + }, + "theia": { + "target": "electron" + } +} diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..10fe79d --- /dev/null +++ b/lerna.json @@ -0,0 +1,11 @@ +{ + "lerna": "2.4.0", + "version": "0.0.0", + "useWorkspaces": true, + "npmClient": "yarn", + "command": { + "run": { + "stream": true + } + } +} \ No newline at end of file diff --git a/lib/checker-framework-theia-backend.js b/lib/checker-framework-theia-backend.js deleted file mode 100644 index 8c0dee6..0000000 --- a/lib/checker-framework-theia-backend.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; -/** - * Generated using theia-plugin-generator - */ -Object.defineProperty(exports, "__esModule", { value: true }); -const theia = require("@theia/plugin"); -const path = require("path"); -function start(context) { - const JAR_PATH = path.resolve(__dirname, '..', 'lsp4xml', 'org.eclipse.lsp4xml-all.jar'); - const XML_LS_ID = 'xml'; - const xmlLanguageServerInfo = { - id: XML_LS_ID, - name: 'XML', - globPatterns: ['**/*.xml'], - command: 'java', - args: ['-jar', JAR_PATH] - }; - context.subscriptions.push(theia.languageServer.registerLanguageServerProvider(xmlLanguageServerInfo)); - registerCommands(xmlLanguageServerInfo, context); -} -exports.start = start; -function registerCommands(lsInfo, context) { - const startCommand = { - id: 'Start XML LS', - label: "XML: Start XML Language Server" - }; - const stopCommand = { - id: 'Stop XML LS', - label: "XML: Stop XML Language Server" - }; - context.subscriptions.push(theia.commands.registerCommand(startCommand, (...args) => { - context.subscriptions.push(theia.languageServer.registerLanguageServerProvider(lsInfo)); - }), theia.commands.registerCommand(stopCommand, (...args) => { - theia.languageServer.stop(lsInfo.id); - })); -} -function stop() { -} -exports.stop = stop; -//# sourceMappingURL=checker-framework-theia-backend.js.map \ No newline at end of file diff --git a/lib/checker-framework-theia-backend.js.map b/lib/checker-framework-theia-backend.js.map deleted file mode 100644 index f11bfba..0000000 --- a/lib/checker-framework-theia-backend.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checker-framework-theia-backend.js","sourceRoot":"","sources":["../src/checker-framework-theia-backend.ts"],"names":[],"mappings":";AACA;;GAEG;;AAGH,uCAAuC;AACvC,6BAA6B;AAE7B,eAAsB,OAA4B;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,6BAA6B,CAAC,CAAC;IACzF,MAAM,SAAS,GAAG,KAAK,CAAC;IAExB,MAAM,qBAAqB,GAA6B;QACpD,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,KAAK;QACX,YAAY,EAAE,CAAC,UAAU,CAAC;QAC1B,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;KAC3B,CAAA;IAED,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,8BAA8B,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvG,gBAAgB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAfD,sBAeC;AAED,0BAA0B,MAAgC,EAAE,OAA4B;IACpF,MAAM,YAAY,GAAG;QACjB,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,gCAAgC;KAC1C,CAAC;IAEF,MAAM,WAAW,GAAG;QAChB,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,+BAA+B;KACzC,CAAC;IAEF,OAAO,CAAC,aAAa,CAAC,IAAI,CACtB,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QAC5D,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,EACF,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QAC3D,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED;AACA,CAAC;AADD,oBACC"} \ No newline at end of file diff --git a/package.json b/package.json index 2a435a4..bc62e78 100644 --- a/package.json +++ b/package.json @@ -1,65 +1,23 @@ { - "name": "checker-framework-theia", - "publisher": "theia", - "keywords": [ - "theia-plugin" - ], - "version": "0.0.1", - "license": "none", - - "files": [ - "src" - ], - "dependencies": { - "await-notify": "^1.0.1", - "vscode-debugadapter": "^1.32.0" - }, - "devDependencies": { - "@theia/plugin": "next", - "@theia/plugin-packager": "latest", - "rimraf": "2.6.2", - "typescript-formatter": "7.2.2", - "typescript": "2.9.2" - }, - "scripts": { - "prepare": "yarn run clean && yarn run build", - "clean": "rimraf lib", - "postinstall": "node ./src/download-xml-ls.js", - "format-code": "tsfmt -r", - "watch": "tsc -watch", - "compile": "tsc", - "build": "yarn run format-code && yarn run compile && theia-plugin pack" - }, - "engines": { - "theiaPlugin": "next" - }, - "theiaPlugin": { - - - "backend": "lib/checker-framework-theia-backend.js" - - }, - "contributes": { - "languages": [ - { - "id": "xml", - "aliases": [ - "XML", - "xml" - ], - "extensions": [ - ".xml" - ], - "firstLine": "(\\<\\?xml.*)|(\\ + + + \ No newline at end of file diff --git a/plugins/vscode-builtin-java/extension.vsixmanifest b/plugins/vscode-builtin-java/extension.vsixmanifest new file mode 100644 index 0000000..94bda8d --- /dev/null +++ b/plugins/vscode-builtin-java/extension.vsixmanifest @@ -0,0 +1,42 @@ + + + + + Java Language Basics + Provides snippets, syntax highlighting, bracket matching and folding in Java files. + snippet,java,Java,__ext_java,__ext_jav + + Public + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/vscode-builtin-java/extension/language-configuration.json b/plugins/vscode-builtin-java/extension/language-configuration.json new file mode 100644 index 0000000..a2909ab --- /dev/null +++ b/plugins/vscode-builtin-java/extension/language-configuration.json @@ -0,0 +1,33 @@ +{ + "comments": { + "lineComment": "//", + "blockComment": [ "/*", "*/" ] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"], + { "open": "/**", "close": " */", "notIn": ["string"] } + ], + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"], + ["<", ">"] + ], + "folding": { + "markers": { + "start": "^\\s*//\\s*(?:(?:#?region\\b)|(?:))" + } + } +} diff --git a/plugins/vscode-builtin-java/extension/package.json b/plugins/vscode-builtin-java/extension/package.json new file mode 100644 index 0000000..c0d9e18 --- /dev/null +++ b/plugins/vscode-builtin-java/extension/package.json @@ -0,0 +1,45 @@ +{ + "name": "java", + "displayName": "%displayName%", + "description": "%description%", + "version": "1.39.1-prel", + "publisher": "vscode", + "license": "MIT", + "engines": { + "vscode": "*" + }, + "scripts": {}, + "contributes": { + "languages": [ + { + "id": "java", + "extensions": [ + ".java", + ".jav" + ], + "aliases": [ + "Java", + "java" + ], + "configuration": "./language-configuration.json" + } + ], + "grammars": [ + { + "language": "java", + "scopeName": "source.java", + "path": "./syntaxes/java.tmLanguage.json" + } + ], + "snippets": [ + { + "language": "java", + "path": "./snippets/java.snippets.json" + } + ] + }, + "repository": { + "type": "git", + "url": "https://github.com/theia-ide/vscode-builtin-extensions" + } +} \ No newline at end of file diff --git a/plugins/vscode-builtin-java/extension/package.nls.json b/plugins/vscode-builtin-java/extension/package.nls.json new file mode 100644 index 0000000..72c9857 --- /dev/null +++ b/plugins/vscode-builtin-java/extension/package.nls.json @@ -0,0 +1,4 @@ +{ + "displayName": "Java Language Basics", + "description": "Provides snippets, syntax highlighting, bracket matching and folding in Java files." +} \ No newline at end of file diff --git a/plugins/vscode-builtin-java/extension/snippets/java.snippets.json b/plugins/vscode-builtin-java/extension/snippets/java.snippets.json new file mode 100644 index 0000000..9a2300b --- /dev/null +++ b/plugins/vscode-builtin-java/extension/snippets/java.snippets.json @@ -0,0 +1,16 @@ +{ + "Region Start": { + "prefix": "#region", + "body": [ + "//#region" + ], + "description": "Folding Region Start" + }, + "Region End": { + "prefix": "#endregion", + "body": [ + "//#endregion" + ], + "description": "Folding Region End" + } +} diff --git a/plugins/vscode-builtin-java/extension/syntaxes/java.tmLanguage.json b/plugins/vscode-builtin-java/extension/syntaxes/java.tmLanguage.json new file mode 100644 index 0000000..8d27d74 --- /dev/null +++ b/plugins/vscode-builtin-java/extension/syntaxes/java.tmLanguage.json @@ -0,0 +1 @@ +{"information_for_contributors":["This file has been converted from https://github.com/atom/language-java/blob/master/grammars/java.cson","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."],"version":"https://github.com/atom/language-java/commit/ed8ad7451b4d0454374885a102dbe63befdea509","name":"Java","scopeName":"source.java","patterns":[{"begin":"\\b(package)\\b\\s*","beginCaptures":{"1":{"name":"keyword.other.package.java"}},"end":"\\s*(;)","endCaptures":{"1":{"name":"punctuation.terminator.java"}},"name":"meta.package.java","contentName":"storage.modifier.package.java","patterns":[{"include":"#comments"},{"match":"(?<=\\.)\\s*\\.|\\.(?=\\s*;)","name":"invalid.illegal.character_not_allowed_here.java"},{"match":"(?","endCaptures":{"0":{"name":"punctuation.bracket.angle.java"}},"patterns":[{"match":"\\b(extends|super)\\b","name":"storage.modifier.$1.java"},{"match":"(?>>?|~|\\^)","name":"keyword.operator.bitwise.java"},{"match":"((&|\\^|\\||<<|>>>?)=)","name":"keyword.operator.assignment.bitwise.java"},{"match":"(===?|!=|<=|>=|<>|<|>)","name":"keyword.operator.comparison.java"},{"match":"([+*/%-]=)","name":"keyword.operator.assignment.arithmetic.java"},{"match":"(=)","name":"keyword.operator.assignment.java"},{"match":"(\\-\\-|\\+\\+)","name":"keyword.operator.increment-decrement.java"},{"match":"(\\-|\\+|\\*|\\/|%)","name":"keyword.operator.arithmetic.java"},{"match":"(!|&&|\\|\\|)","name":"keyword.operator.logical.java"},{"match":"(\\||&)","name":"keyword.operator.bitwise.java"},{"match":"\\b(const|goto)\\b","name":"keyword.reserved.java"}]},"lambda-expression":{"patterns":[{"match":"->","name":"storage.type.function.arrow.java"}]},"member-variables":{"begin":"(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)","end":"(?=\\=|;)","patterns":[{"include":"#storage-modifiers"},{"include":"#variables"},{"include":"#primitive-arrays"},{"include":"#object-types"}]},"method-call":{"begin":"(\\.)\\s*([A-Za-z_$][\\w$]*)\\s*(\\()","beginCaptures":{"1":{"name":"punctuation.separator.period.java"},"2":{"name":"entity.name.function.java"},"3":{"name":"punctuation.definition.parameters.begin.bracket.round.java"}},"end":"\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.java"}},"name":"meta.method-call.java","patterns":[{"include":"#code"}]},"methods":{"begin":"(?!new)(?=[\\w<].*\\s+)(?=([^=/]|/(?!/))+\\()","end":"(})|(?=;)","endCaptures":{"1":{"name":"punctuation.section.method.end.bracket.curly.java"}},"name":"meta.method.java","patterns":[{"include":"#storage-modifiers"},{"begin":"(\\w+)\\s*(\\()","beginCaptures":{"1":{"name":"entity.name.function.java"},"2":{"name":"punctuation.definition.parameters.begin.bracket.round.java"}},"end":"\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.java"}},"name":"meta.method.identifier.java","patterns":[{"include":"#parameters"},{"include":"#parens"},{"include":"#comments"}]},{"include":"#generics"},{"begin":"(?=\\w.*\\s+\\w+\\s*\\()","end":"(?=\\s+\\w+\\s*\\()","name":"meta.method.return-type.java","patterns":[{"include":"#all-types"},{"include":"#parens"},{"include":"#comments"}]},{"include":"#throws"},{"begin":"{","beginCaptures":{"0":{"name":"punctuation.section.method.begin.bracket.curly.java"}},"end":"(?=})","contentName":"meta.method.body.java","patterns":[{"include":"#code"}]},{"include":"#comments"}]},"module":{"begin":"((open)\\s)?(module)\\s+(\\w+)","end":"}","beginCaptures":{"1":{"name":"storage.modifier.java"},"3":{"name":"storage.modifier.java"},"4":{"name":"entity.name.type.module.java"}},"endCaptures":{"0":{"name":"punctuation.section.module.end.bracket.curly.java"}},"name":"meta.module.java","patterns":[{"begin":"{","beginCaptures":{"0":{"name":"punctuation.section.module.begin.bracket.curly.java"}},"end":"(?=})","contentName":"meta.module.body.java","patterns":[{"match":"\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b","name":"keyword.module.java"}]}]},"numbers":{"patterns":[{"match":"(?x)\n\\b(?(\\w+\\.)*[A-Z_]+\\w*) # e.g. `javax.ws.rs.Response`, or `String`\n )\n \\s*\n (\n <[\\w<>,\\.?\\s\\[\\]]*> # e.g. `HashMap`, or `List`\n )?\n \\s*\n (\n (\\[\\])* # int[][]\n )?\n \\s+\n [A-Za-z_$][\\w$]* # At least one identifier after space\n ([\\w\\[\\],$][\\w\\[\\],\\s]*)? # possibly primitive array or additional identifiers\n \\s*(=|:|;)\n)","end":"(?=\\=|:|;)","name":"meta.definition.variable.java","patterns":[{"match":"([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(;|:|=|,))","captures":{"1":{"name":"variable.other.definition.java"}}},{"include":"#all-types"},{"include":"#code"}]},"variables-local":{"begin":"(?=\\b(var)\\b\\s+[A-Za-z_$][\\w$]*\\s*(=|:|;))","end":"(?=\\=|:|;)","name":"meta.definition.variable.local.java","patterns":[{"match":"\\bvar\\b","name":"storage.type.local.java"},{"match":"([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(=|:|;))","captures":{"1":{"name":"variable.other.definition.java"}}},{"include":"#code"}]}}} \ No newline at end of file diff --git a/plugins/zhangjiangqige.checkerframework-language-server-0.2.0.vsix b/plugins/zhangjiangqige.checkerframework-language-server-0.2.0.vsix new file mode 100644 index 0000000..8dea4de Binary files /dev/null and b/plugins/zhangjiangqige.checkerframework-language-server-0.2.0.vsix differ diff --git a/src/checker-framework-theia-backend.ts b/src/checker-framework-theia-backend.ts deleted file mode 100644 index f2b9b6c..0000000 --- a/src/checker-framework-theia-backend.ts +++ /dev/null @@ -1,49 +0,0 @@ - -/** - * Generated using theia-plugin-generator - */ - - -import * as theia from '@theia/plugin'; -import * as path from 'path'; - -export function start(context: theia.PluginContext) { - const JAR_PATH = path.resolve(__dirname, '..', 'lsp4xml', 'org.eclipse.lsp4xml-all.jar'); - const XML_LS_ID = 'xml'; - - const xmlLanguageServerInfo: theia.LanguageServerInfo = { - id: XML_LS_ID, - name: 'XML', - globPatterns: ['**/*.xml'], - command: 'java', - args: ['-jar', JAR_PATH] - } - - context.subscriptions.push(theia.languageServer.registerLanguageServerProvider(xmlLanguageServerInfo)); - - registerCommands(xmlLanguageServerInfo, context); -} - -function registerCommands(lsInfo: theia.LanguageServerInfo, context: theia.PluginContext): void { - const startCommand = { - id: 'Start XML LS', - label: "XML: Start XML Language Server" - }; - - const stopCommand = { - id: 'Stop XML LS', - label: "XML: Stop XML Language Server" - }; - - context.subscriptions.push( - theia.commands.registerCommand(startCommand, (...args: any[]) => { - context.subscriptions.push(theia.languageServer.registerLanguageServerProvider(lsInfo)); - }), - theia.commands.registerCommand(stopCommand, (...args: any[]) => { - theia.languageServer.stop(lsInfo.id); - }) - ); -} - -export function stop() { -} diff --git a/src/download-xml-ls.js b/src/download-xml-ls.js deleted file mode 100644 index cd18ed0..0000000 --- a/src/download-xml-ls.js +++ /dev/null @@ -1,60 +0,0 @@ - -/** - * Generated using theia-plugin-generator - */ - - -// @ts-check -const fs = require('fs'); -const https = require('https'); -const http = require('http'); -const path = require('path'); - -// @ts-ignore -const packagePath = path.join(__dirname, '..'); -let downloadUrl = 'https://github.com/angelozerr/lsp4xml/releases/download/0.3.0/org.eclipse.lsp4xml-0.3.0-uber.jar'; -const downloadDir = 'lsp4xml'; -const filename = 'org.eclipse.lsp4xml-all.jar'; -const downloadPath = path.join(packagePath, downloadDir); -const archivePath = path.join(downloadPath, filename); - -function downloadXMLServer() { - return new Promise((resolve, reject) => { - if (fs.existsSync(archivePath)) { - resolve(); - return; - } - if (!fs.existsSync(downloadPath)) { - fs.mkdirSync(downloadPath); - } - const file = fs.createWriteStream(archivePath); - const downloadWithRedirect = url => { - /** @type { any } */ - const h = url.toString().startsWith('https') ? https : http; - h.get(url, response => { - const statusCode = response.statusCode; - const redirectLocation = response.headers.location; - if (statusCode >= 300 && statusCode < 400 && redirectLocation) { - console.log('Redirect location: ' + redirectLocation); - downloadWithRedirect(redirectLocation); - } else if (statusCode === 200) { - response.on('end', () => resolve()); - response.on('error', e => { - file.destroy(); - reject(e); - }); - response.pipe(file); - } else { - file.destroy(); - reject(new Error(`Failed to download XML LS with code: ${statusCode}`)); - } - }) - - }; - downloadWithRedirect(downloadUrl); - }); -} - -downloadXMLServer().catch(error => { - console.error(error); -}); diff --git a/src/language-configuration.json b/src/language-configuration.json deleted file mode 100644 index 2e7c685..0000000 --- a/src/language-configuration.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "comments": { - "blockComment": [ - "" - ] - }, - "brackets": [ - [ - "<", - ">" - ] - ], - "autoClosingPairs": [ - { - "open": "<", - "close": ">" - }, - { - "open": "\"", - "close": "\"" - }, - { - "open": "'", - "close": "'" - } - ], - "surroundingPairs": [ - { - "open": "<", - "close": ">" - }, - { - "open": "\"", - "close": "\"" - }, - { - "open": "'", - "close": "'" - } - ] -} diff --git a/src/xml.tmLanguage.json b/src/xml.tmLanguage.json deleted file mode 100644 index 7abd427..0000000 --- a/src/xml.tmLanguage.json +++ /dev/null @@ -1,322 +0,0 @@ -{ - "information_for_contributors": [ - "This file has been converted from https://github.com/atom/language-xml/blob/master/grammars/xml.cson", - "If you want to provide a fix or improvement, please create a pull request against the original repository.", - "Once accepted there, we are happy to receive an update request." - ], - "version": "https://github.com/atom/language-xml/commit/27352842917b911383122bdcf98ed0d69d55c179", - "name": "XML", - "scopeName": "text.xml", - "patterns": [ - { - "begin": "(<\\?)\\s*([-_a-zA-Z0-9]+)", - "captures": { - "1": { - "name": "punctuation.definition.tag.xml" - }, - "2": { - "name": "entity.name.tag.xml" - } - }, - "end": "(\\?>)", - "name": "meta.tag.preprocessor.xml", - "patterns": [ - { - "match": " ([a-zA-Z-]+)", - "name": "entity.other.attribute-name.xml" - }, - { - "include": "#doublequotedString" - }, - { - "include": "#singlequotedString" - } - ] - }, - { - "begin": "()", - "name": "meta.tag.sgml.doctype.xml", - "patterns": [ - { - "include": "#internalSubset" - } - ] - }, - { - "include": "#comments" - }, - { - "begin": "(<)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(?=(\\s[^>]*)?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.xml" - }, - "2": { - "name": "entity.name.tag.xml" - }, - "3": { - "name": "entity.name.tag.namespace.xml" - }, - "4": { - "name": "punctuation.separator.namespace.xml" - }, - "5": { - "name": "entity.name.tag.localname.xml" - } - }, - "end": "(>)()", - "endCaptures": { - "1": { - "name": "punctuation.definition.tag.xml" - }, - "2": { - "name": "punctuation.definition.tag.xml" - }, - "3": { - "name": "entity.name.tag.xml" - }, - "4": { - "name": "entity.name.tag.namespace.xml" - }, - "5": { - "name": "punctuation.separator.namespace.xml" - }, - "6": { - "name": "entity.name.tag.localname.xml" - }, - "7": { - "name": "punctuation.definition.tag.xml" - } - }, - "name": "meta.tag.no-content.xml", - "patterns": [ - { - "include": "#tagStuff" - } - ] - }, - { - "begin": "()", - "name": "meta.tag.xml", - "patterns": [ - { - "include": "#tagStuff" - } - ] - }, - { - "include": "#entity" - }, - { - "include": "#bare-ampersand" - }, - { - "begin": "", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.xml" - } - }, - "name": "string.unquoted.cdata.xml" - } - ], - "repository": { - "EntityDecl": { - "begin": "()", - "patterns": [ - { - "include": "#doublequotedString" - }, - { - "include": "#singlequotedString" - } - ] - }, - "bare-ampersand": { - "match": "&", - "name": "invalid.illegal.bad-ampersand.xml" - }, - "doublequotedString": { - "begin": "\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.xml" - } - }, - "end": "\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.xml" - } - }, - "name": "string.quoted.double.xml", - "patterns": [ - { - "include": "#entity" - }, - { - "include": "#bare-ampersand" - } - ] - }, - "entity": { - "captures": { - "1": { - "name": "punctuation.definition.constant.xml" - }, - "3": { - "name": "punctuation.definition.constant.xml" - } - }, - "match": "(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)", - "name": "constant.character.entity.xml" - }, - "internalSubset": { - "begin": "(\\[)", - "captures": { - "1": { - "name": "punctuation.definition.constant.xml" - } - }, - "end": "(\\])", - "name": "meta.internalsubset.xml", - "patterns": [ - { - "include": "#EntityDecl" - }, - { - "include": "#parameterEntity" - }, - { - "include": "#comments" - } - ] - }, - "parameterEntity": { - "captures": { - "1": { - "name": "punctuation.definition.constant.xml" - }, - "3": { - "name": "punctuation.definition.constant.xml" - } - }, - "match": "(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)", - "name": "constant.character.parameter-entity.xml" - }, - "singlequotedString": { - "begin": "'", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.xml" - } - }, - "end": "'", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.xml" - } - }, - "name": "string.quoted.single.xml", - "patterns": [ - { - "include": "#entity" - }, - { - "include": "#bare-ampersand" - } - ] - }, - "tagStuff": { - "patterns": [ - { - "captures": { - "1": { - "name": "entity.other.attribute-name.namespace.xml" - }, - "2": { - "name": "entity.other.attribute-name.xml" - }, - "3": { - "name": "punctuation.separator.namespace.xml" - }, - "4": { - "name": "entity.other.attribute-name.localname.xml" - } - }, - "match": "(?:^|\\s+)(?:([-\\w.]+)((:)))?([-\\w.:]+)\\s*=" - }, - { - "include": "#doublequotedString" - }, - { - "include": "#singlequotedString" - } - ] - }, - "comments": { - "begin": "<[!%]--", - "captures": { - "0": { - "name": "punctuation.definition.comment.xml" - } - }, - "end": "--%?>", - "name": "comment.block.xml" - } - } -} diff --git a/tsfmt.json b/tsfmt.json deleted file mode 100644 index ad905f3..0000000 --- a/tsfmt.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "baseIndentSize": 0, - "newLineCharacter": "\n", - "indentSize": 4, - "tabSize": 4, - "indentStyle": 4, - "convertTabsToSpaces": true, - "insertSpaceAfterCommaDelimiter": true, - "insertSpaceAfterSemicolonInForStatements": true, - "insertSpaceBeforeAndAfterBinaryOperators": true, - "insertSpaceAfterKeywordsInControlFlowStatements": true, - "insertSpaceAfterFunctionKeywordForAnonymousFunctions": false, - "insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false, - "insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false, - "insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": false, - "placeOpenBraceOnNewLineForFunctions": false, - "placeOpenBraceOnNewLineForControlBlocks": false -}