diff --git a/Readme.md b/Readme.md index 9cee78b..a8651cc 100644 --- a/Readme.md +++ b/Readme.md @@ -78,7 +78,6 @@ this extension. - `typescript.implementationsCodeLens.enable`:Enable codeLens for implementations, default: `true` - `typescript.referencesCodeLens.enable`:Enable codeLens for references, default: `true` - `typescript.preferences.importModuleSpecifier` default: `"non-relative"` -- `typescript.preferences.noSemicolons` default: `false` - `typescript.preferences.quoteStyle` default: `"single"` - `typescript.suggestionActions.enabled`:Enable/disable suggestion diagnostics for TypeScript files in the editor. Requires using TypeScript 2.8 or newer in the workspace., default: `true` - `typescript.validate.enable`:Enable/disable TypeScript validation., default: `true` @@ -108,7 +107,6 @@ this extension. - `javascript.implementationsCodeLens.enable` default: `true` - `javascript.referencesCodeLens.enable` default: `true` - `javascript.preferences.importModuleSpecifier` default: `"non-relative"` -- `javascript.preferences.noSemicolons` default: `false` - `javascript.preferences.quoteStyle` default: `"single"` - `javascript.validate.enable`:Enable/disable JavaScript validation., default: `true` - `javascript.suggestionActions.enabled`:Enable/disable suggestion diagnostics for JavaScript files in the editor. Requires using TypeScript 2.8 or newer in the workspace., default: `true` diff --git a/package.json b/package.json index 6e5dcb7..9aeffdb 100644 --- a/package.json +++ b/package.json @@ -230,10 +230,6 @@ "auto" ] }, - "typescript.preferences.noSemicolons": { - "type": "boolean", - "default": false - }, "typescript.preferences.quoteStyle": { "type": "string", "default": "single", @@ -356,10 +352,6 @@ "relative" ] }, - "javascript.preferences.noSemicolons": { - "type": "boolean", - "default": false - }, "javascript.preferences.quoteStyle": { "type": "string", "default": "single", @@ -480,19 +472,19 @@ "@chemzqm/tsconfig": "^0.0.3", "@chemzqm/tslint-config": "^1.0.18", "@types/fast-diff": "^1.2.0", - "@types/node": "^12.7.2", + "@types/node": "^12.7.4", "coc.nvim": "^0.0.73", "fast-diff": "^1.2.0", "rimraf": "^3.0.0", "semver": "^6.3.0", "ts-loader": "^6.0.4", - "tslint": "^5.18.0", + "tslint": "^5.19.0", "vscode-languageserver-protocol": "^3.15.0-next.5", - "webpack": "^4.39.2", - "webpack-cli": "^3.3.6", + "webpack": "^4.39.3", + "webpack-cli": "^3.3.8", "which": "^1.3.1" }, "dependencies": { - "typescript": "3.5.3" + "typescript": "3.6.2" } } diff --git a/src/server/features/completionItemProvider.ts b/src/server/features/completionItemProvider.ts index f4cda06..67bdfcf 100644 --- a/src/server/features/completionItemProvider.ts +++ b/src/server/features/completionItemProvider.ts @@ -52,7 +52,6 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP public static readonly triggerCharacters = ['.', '"', '\'', '/', '@'] private completeOption: SuggestOptions - private noSemicolons = false constructor( private readonly client: ITypeScriptServiceClient, @@ -70,7 +69,6 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP private setCompleteOption(languageId: string): void { this.completeOption = this.fileConfigurationManager.getCompleteOptions(languageId) - this.noSemicolons = this.fileConfigurationManager.removeSemicolons(languageId) } /** @@ -291,12 +289,6 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP ] } } - if (additionalTextEdits.length && this.noSemicolons) { - // remove comma - additionalTextEdits.forEach(o => { - o.newText = o.newText.replace(/;(?=(\n|$))/g, '') - }) - } return { command, additionalTextEdits: additionalTextEdits.length diff --git a/src/server/features/fileConfigurationManager.ts b/src/server/features/fileConfigurationManager.ts index f8e24ba..f0cb7ee 100644 --- a/src/server/features/fileConfigurationManager.ts +++ b/src/server/features/fileConfigurationManager.ts @@ -134,12 +134,6 @@ export default class FileConfigurationManager { } } - public removeSemicolons(languageId: string): boolean { - const lang = this.isTypeScriptDocument(languageId) ? 'typescript' : 'javascript' - const config = workspace.getConfiguration(`${lang}.preferences`) - return config.get<boolean>('noSemicolons', false) - } - public getPreferences(language: string): Proto.UserPreferences { if (!this.client.apiVersion.gte(API.v290)) { return {} diff --git a/src/server/features/formatting.ts b/src/server/features/formatting.ts index 6d46ce1..a30b719 100644 --- a/src/server/features/formatting.ts +++ b/src/server/features/formatting.ts @@ -7,7 +7,6 @@ import { DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider } f import { CancellationToken, FormattingOptions, Position, Range, TextDocument, TextEdit } from 'vscode-languageserver-protocol' import * as Proto from '../protocol' import { ITypeScriptServiceClient } from '../typescriptService' -import { removeSemicolon } from '../utils/semicolon' import * as typeConverters from '../utils/typeConverters' import FileConfigurationManager from './fileConfigurationManager' @@ -36,9 +35,6 @@ export default class TypeScriptFormattingProvider const response = await this.client.execute('format', args, token) if (response.type == 'response' && response.body) { let edits = response.body.map(typeConverters.TextEdit.fromCodeEdit) - if (this.formattingOptionsManager.removeSemicolons(document.languageId)) { - return removeSemicolon(document, edits) - } return edits } } catch { diff --git a/src/server/organizeImports.ts b/src/server/organizeImports.ts index ff6aa89..1d6d953 100644 --- a/src/server/organizeImports.ts +++ b/src/server/organizeImports.ts @@ -42,19 +42,6 @@ export class OrganizeImportsCommand implements Command { ) let desc = standardLanguageDescriptions.find(o => o.modeIds.indexOf(document.languageId) !== -1) if (!desc) return null - const config = workspace.getConfiguration(`${desc.id}.preferences`) - let noSemicolons = config.get<boolean>('noSemicolons', false) - - if (noSemicolons) { - let { changes } = edit - if (changes) { - for (let c of Object.keys(changes)) { - for (let textEdit of changes[c]) { - textEdit.newText = textEdit.newText.replace(/;(?=(\n|$))/g, '') - } - } - } - } return edit } diff --git a/src/server/utils/semicolon.ts b/src/server/utils/semicolon.ts deleted file mode 100644 index c124eb8..0000000 --- a/src/server/utils/semicolon.ts +++ /dev/null @@ -1,52 +0,0 @@ -import fastDiff from 'fast-diff' -import { TextDocument, TextEdit } from 'vscode-languageserver-protocol' - -interface Change { - start: number - end: number - newText: string -} - -export function removeSemicolon(document: TextDocument, edits: TextEdit[]): TextEdit[] { - let orig = document.getText() - let content = TextDocument.applyEdits(document, edits) - let result = content.split('\n').map(s => s.replace(/;$/, '')).join('\n') - if (result == content) return edits - let change = getChange(orig, result) - return [{ - range: { - start: document.positionAt(change.start), - end: document.positionAt(change.end) - }, - newText: change.newText - }] -} - -function getChange(oldStr: string, newStr: string): Change { - let result = fastDiff(oldStr, newStr, 1) - let curr = 0 - let start = -1 - let end = -1 - let newText = '' - let remain = '' - for (let item of result) { - let [t, str] = item - // equal - if (t == 0) { - curr = curr + str.length - if (start != -1) remain = remain + str - } else { - if (start == -1) start = curr - if (t == 1) { - newText = newText + remain + str - end = curr - } else { - newText = newText + remain - end = curr + str.length - } - remain = '' - if (t == -1) curr = curr + str.length - } - } - return { start, end, newText } -} diff --git a/yarn.lock b/yarn.lock index c8c74a9..6c5931a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,10 +45,10 @@ dependencies: fast-diff "*" -"@types/node@^12.7.2": - version "12.7.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.2.tgz#c4e63af5e8823ce9cc3f0b34f7b998c2171f0c44" - integrity sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg== +"@types/node@^12.7.4": + version "12.7.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.4.tgz#64db61e0359eb5a8d99b55e05c729f130a678b04" + integrity sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ== "@webassemblyjs/ast@1.8.5": version "1.8.5" @@ -3087,10 +3087,10 @@ tslint-react@^3.2.0: dependencies: tsutils "^2.13.1" -tslint@^5.18.0: - version "5.18.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.18.0.tgz#f61a6ddcf372344ac5e41708095bbf043a147ac6" - integrity sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== +tslint@^5.19.0: + version "5.19.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.19.0.tgz#a2cbd4a7699386da823f6b499b8394d6c47bb968" + integrity sha512-1LwwtBxfRJZnUvoS9c0uj8XQtAnyhWr9KlNvDIdB+oXyT+VpsOAaEhEgKi1HrZ8rq0ki/AAnbGSv4KM6/AfVZw== dependencies: "@babel/code-frame" "^7.0.0" builtin-modules "^1.1.1" @@ -3128,10 +3128,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" - integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== +typescript@3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.2.tgz#105b0f1934119dde543ac8eb71af3a91009efe54" + integrity sha512-lmQ4L+J6mnu3xweP8+rOrUwzmN+MRAj7TgtJtDaXE5PMyX2kCrklhg3rvOsOIfNeAWMQWO2F1GPc1kMD2vLAfw== union-value@^1.0.0: version "1.0.1" @@ -3279,10 +3279,10 @@ watchpack@^1.6.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -webpack-cli@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.6.tgz#2c8c399a2642133f8d736a359007a052e060032c" - integrity sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A== +webpack-cli@^3.3.8: + version "3.3.8" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.8.tgz#caeaebcc26f685db1736e5decd3f01aac30123ec" + integrity sha512-RANYSXwikSWINjHMd/mtesblNSpjpDLoYTBtP99n1RhXqVI/wxN40Auqy42I7y4xrbmRBoA5Zy5E0JSBD5XRhw== dependencies: chalk "2.4.2" cross-spawn "6.0.5" @@ -3304,10 +3304,10 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.39.2: - version "4.39.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.39.2.tgz#c9aa5c1776d7c309d1b3911764f0288c8c2816aa" - integrity sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA== +webpack@^4.39.3: + version "4.39.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.39.3.tgz#a02179d1032156b713b6ec2da7e0df9d037def50" + integrity sha512-BXSI9M211JyCVc3JxHWDpze85CvjC842EvpRsVTc/d15YJGlox7GIDd38kJgWrb3ZluyvIjgenbLDMBQPDcxYQ== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5"