From 829e8c6212dde54e250d0003614cf4303f994c3e Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Thu, 27 Jul 2023 19:18:12 +0800 Subject: [PATCH] Revert "Smart semicolon autocorrect (#3159)" This reverts commit 3ad9b168dfc6db92907df2710fd1f5d61bfe49a1. --- CHANGELOG.md | 1 - README.md | 1 - package.json | 26 -------- package.nls.json | 4 +- src/commands.ts | 11 ---- src/extension.ts | 3 +- src/settings.ts | 9 +-- src/smartSemicolonDetection.ts | 76 ---------------------- src/standardLanguageClient.ts | 6 -- test/standard-mode-suite/extension.test.ts | 9 --- 10 files changed, 4 insertions(+), 142 deletions(-) delete mode 100644 src/smartSemicolonDetection.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 2da99b1ea..ccba549b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,6 @@ ## 1.21.0 (July 27th, 2023) * performance - Check completion proposal is compatible or not. See [JLS#2733](https://github.com/eclipse/eclipse.jdt.ls/pull/2733). - * enhancement - Add support for smart semicolon insertion. See [#703](https://github.com/redhat-developer/vscode-java/issues/703). * enhancement - Add code actions for Join/Split variable. See [JLS#2732](https://github.com/eclipse/eclipse.jdt.ls/pull/2732). * enhancement - Support outline view for decompiled source. See [JLS#2742](https://github.com/eclipse/eclipse.jdt.ls/pull/2742). * enhancement - Reload the cached classfile sources when their source attachment is updated. See [#3207](https://github.com/redhat-developer/vscode-java/pull/3207). diff --git a/README.md b/README.md index a069f0343..d5490c54b 100644 --- a/README.md +++ b/README.md @@ -240,7 +240,6 @@ New in 1.21.0 - `ask`: Ask to reload the sources of the open class files - `auto`: Automatically reload the sources of the open class files - `manual`: Manually reload the sources of the open class files -* `java.edit.smartSemicolonDetection.enabled`: Defines the `smart semicolon` detection. Defaults to `false`. Semantic Highlighting =============== diff --git a/package.json b/package.json index 62edf78fc..fd9f0828b 100644 --- a/package.json +++ b/package.json @@ -1140,12 +1140,6 @@ "markdownDescription": "Specifies whether to recheck all open Java files for diagnostics when editing a Java file.", "scope": "window" }, - "java.edit.smartSemicolonDetection.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "Defines the `smart semicolon` detection. Defaults to `false`.", - "scope": "window" - }, "java.editor.reloadChangedSources": { "type": "string", "enum": [ @@ -1308,16 +1302,6 @@ "command": "java.server.restart", "title": "%java.server.restart%", "category": "Java" - }, - { - "command": "java.edit.smartSemicolonDetection.command", - "title": "%java.edit.smartSemicolonDetection%", - "category": "Java" - }, - { - "command": "java.edit.smartSemicolonDetectionUndo", - "title": "%java.edit.smartSemicolonDetectionUndo%", - "category": "Java" } ], "keybindings": [ @@ -1335,16 +1319,6 @@ "key": "ctrl+shift+v", "mac": "cmd+shift+v", "when": "javaLSReady && editorLangId == java" - }, - { - "command": "java.edit.smartSemicolonDetection.command", - "key": ";", - "when": "editorFocus && javaLSReady && editorLangId == java" - }, - { - "command": "java.edit.smartSemicolonDetectionUndo", - "key": "backspace", - "when": "editorFocus && javaLSReady && editorLangId == java" } ], "menus": { diff --git a/package.nls.json b/package.nls.json index 38b94f77a..0d8099ad7 100644 --- a/package.nls.json +++ b/package.nls.json @@ -24,7 +24,5 @@ "java.action.changeBaseType": "Base on this Type", "java.project.createModuleInfo.command": "Create module-info.java", "java.clean.sharedIndexes": "Clean Shared Indexes", - "java.server.restart": "Restart Java Language Server", - "java.edit.smartSemicolonDetection": "Java Smart Semicolon Detection", - "java.edit.smartSemicolonDetectionUndo": "Java Smart Semicolon Detection Undo" + "java.server.restart": "Restart Java Language Server" } diff --git a/src/commands.ts b/src/commands.ts index 2f185f9f1..51d4cbdf9 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -335,15 +335,4 @@ export namespace Commands { */ export const GET_DECOMPILED_SOURCE = "java.decompile"; - /** - * Smart semicolon detection. - */ - export const SMARTSEMICOLON_DETECTION = "java.edit.smartSemicolonDetection"; - export const SMARTSEMICOLON_DETECTION_CMD = "java.edit.smartSemicolonDetection.command"; - - /** - * Smart semicolon detection backspace. - */ - export const SMARTSEMICOLON_DETECTION_UNDO = "java.edit.smartSemicolonDetectionUndo"; - } diff --git a/src/extension.ts b/src/extension.ts index e7da495d0..1cdf1458c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -5,7 +5,7 @@ import * as fs from 'fs'; import * as fse from 'fs-extra'; import * as os from 'os'; import * as path from 'path'; -import { CodeActionContext, commands, ConfigurationTarget, Diagnostic, env, EventEmitter, ExtensionContext, extensions, IndentAction, InputBoxOptions, languages, RelativePattern, TextDocument, UIKind, Uri, ViewColumn, window, workspace, WorkspaceConfiguration, ProgressLocation, Position, Selection, Range } from 'vscode'; +import { CodeActionContext, commands, ConfigurationTarget, Diagnostic, env, EventEmitter, ExtensionContext, extensions, IndentAction, InputBoxOptions, languages, RelativePattern, TextDocument, UIKind, Uri, ViewColumn, window, workspace, WorkspaceConfiguration, ProgressLocation } from 'vscode'; import { CancellationToken, CodeActionParams, CodeActionRequest, Command, DidChangeConfigurationNotification, ExecuteCommandParams, ExecuteCommandRequest, LanguageClientOptions, RevealOutputChannelOn } from 'vscode-languageclient'; import { LanguageClient } from 'vscode-languageclient/node'; import { apiManager } from './apiManager'; @@ -268,6 +268,7 @@ export function activate(context: ExtensionContext): Promise { // the promise is resolved // no need to pass `resolve` into any code past this point, // since `resolve` is a no-op from now on + const serverOptions = prepareExecutable(requirements, syntaxServerWorkspacePath, getJavaConfig(requirements.java_home), context, true); if (requireSyntaxServer) { if (process.env['SYNTAXLS_CLIENT_PORT']) { diff --git a/src/settings.ts b/src/settings.ts index 2959dbc18..56f1089cf 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -2,12 +2,10 @@ import * as fs from 'fs'; import * as path from 'path'; -import { commands, ConfigurationTarget, env, ExtensionContext, Position, Range, Selection, SnippetString, TextDocument, Uri, window, workspace, WorkspaceConfiguration, WorkspaceFolder } from 'vscode'; +import { commands, ConfigurationTarget, env, ExtensionContext, Position, Range, SnippetString, TextDocument, Uri, window, workspace, WorkspaceConfiguration, WorkspaceFolder } from 'vscode'; import { Commands } from './commands'; import { cleanupLombokCache } from './lombokSupport'; import { ensureExists, getJavaConfiguration } from './utils'; -import { apiManager } from './apiManager'; -import { setSmartSemiColonDetectionState } from './smartSemicolonDetection'; const DEFAULT_HIDDEN_FILES: string[] = ['**/.classpath', '**/.project', '**/.settings', '**/.factorypath']; const IS_WORKSPACE_JDK_ALLOWED = "java.ls.isJdkAllowed"; @@ -331,9 +329,6 @@ export function handleTextBlockClosing(document: TextDocument, changes: readonly return; } if (lastChange.text !== '"""";') { - if (lastChange.text !== ';') { - setSmartSemiColonDetectionState(null, null); - } return; } const selection = activeTextEditor.selection.active; @@ -354,5 +349,3 @@ export function handleTextBlockClosing(document: TextDocument, changes: readonly } } } - - diff --git a/src/smartSemicolonDetection.ts b/src/smartSemicolonDetection.ts deleted file mode 100644 index cecf2600e..000000000 --- a/src/smartSemicolonDetection.ts +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -import { commands, ExtensionContext, Position, Range, Selection, window } from 'vscode'; -import { Commands } from './commands'; -import { getJavaConfiguration } from './utils'; - -let oldPosition: Position = null; -let newPosition: Position = null; - -export function registerSmartSemicolonDetection(context: ExtensionContext) { - context.subscriptions.push(commands.registerCommand(Commands.SMARTSEMICOLON_DETECTION_CMD, async () => { - if (!didSmartSemicolonInsertion() && enabled() && window.activeTextEditor!.document.fileName.endsWith(".java")) { - const params: SmartDetectionParams = { - uri: window.activeTextEditor.document.uri.toString(), - position: window.activeTextEditor!.selection.active, - }; - const response: SmartDetectionParams = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.SMARTSEMICOLON_DETECTION, JSON.stringify(params)); - if (response !== null) { - window.activeTextEditor!.edit(editBuilder => { - oldPosition = window.activeTextEditor!.selection.active; - editBuilder.insert(response.position, ";"); - window.activeTextEditor.selections = [new Selection(response.position, response.position)]; - newPosition = window.activeTextEditor!.selection.active; - }); - return; - } - } - window.activeTextEditor!.edit(editBuilder => { - editBuilder.insert(window.activeTextEditor!.selection.active, ";"); - }); - newPosition = null; - oldPosition = null; - })); - context.subscriptions.push(commands.registerCommand(Commands.SMARTSEMICOLON_DETECTION_UNDO, async () => { - if (didSmartSemicolonInsertion() && enabled()) { - window.activeTextEditor!.edit(editBuilder => { - editBuilder.insert(oldPosition, ";"); - const delRange = new Range(newPosition, new Position(newPosition.line, newPosition.character + 1)); - editBuilder.delete(delRange); - window.activeTextEditor.selections = [new Selection(oldPosition, oldPosition)]; - oldPosition = null; - newPosition = null; - }); - return; - } - window.activeTextEditor!.edit(() => { - commands.executeCommand("deleteLeft"); - }); - oldPosition = null; - newPosition = null; - })); -} - -interface SmartDetectionParams { - uri: String; - position: Position; -} - -function didSmartSemicolonInsertion() { - const smartSemicolonInsertion = window.activeTextEditor.selections.length === 1 && enabled() && oldPosition !== null && newPosition !== null; - if (smartSemicolonInsertion) { - const active = window.activeTextEditor!.selection.active; - const prev = new Position(active.line, active.character === 0 ? 0 : active.character - 1); - return newPosition.isEqual(prev); - } - return smartSemicolonInsertion; -} - -function enabled() { - return getJavaConfiguration().get("edit.smartSemicolonDetection.enabled"); -} - -export function setSmartSemiColonDetectionState(oldPos: Position, newPos: Position) { - oldPosition = oldPos; - newPos = newPos; -} \ No newline at end of file diff --git a/src/standardLanguageClient.ts b/src/standardLanguageClient.ts index a4506166b..99ea44a1f 100644 --- a/src/standardLanguageClient.ts +++ b/src/standardLanguageClient.ts @@ -40,7 +40,6 @@ import { getAllJavaProjects, getJavaConfig, getJavaConfiguration } from "./utils import { Telemetry } from "./telemetry"; import { TelemetryEvent } from "@redhat-developer/vscode-redhat-telemetry/lib"; import { registerDocumentValidationListener } from './diagnostic'; -import { registerSmartSemicolonDetection } from './smartSemicolonDetection'; const extensionName = 'Language Support for Java'; const GRADLE_CHECKSUM = "gradle/checksum/prompt"; @@ -138,11 +137,6 @@ export class StandardLanguageClient { // clients may not have properly configured documentPaste logger.error(error); } - try { - registerSmartSemicolonDetection(context); - } catch (error) { - logger.error(error); - } activationProgressNotification.hide(); if (!hasImported) { showImportFinishNotification(context); diff --git a/test/standard-mode-suite/extension.test.ts b/test/standard-mode-suite/extension.test.ts index 98506f547..284b97c04 100644 --- a/test/standard-mode-suite/extension.test.ts +++ b/test/standard-mode-suite/extension.test.ts @@ -42,7 +42,6 @@ suite('Java Language Extension - Standard', () => { return vscode.commands.getCommands(true).then((commands) => { const JAVA_COMMANDS = [ - Commands.ADD_TO_SOURCEPATH, Commands.ADD_TO_SOURCEPATH_CMD, Commands.APPLY_REFACTORING_COMMAND, Commands.APPLY_WORKSPACE_EDIT, @@ -54,7 +53,6 @@ suite('Java Language Extension - Standard', () => { Commands.CLIPBOARD_ONPASTE, Commands.COMPILE_WORKSPACE, Commands.CONFIGURATION_UPDATE, - Commands.CREATE_MODULE_INFO, Commands.CREATE_MODULE_INFO_COMMAND, Commands.EXECUTE_WORKSPACE_COMMAND, Commands.GENERATE_ACCESSORS_PROMPT, @@ -104,20 +102,13 @@ suite('Java Language Extension - Standard', () => { Commands.SHOW_SERVER_TASK_STATUS, Commands.SWITCH_SERVER_MODE, "java.edit.stringFormatting", - "java.completion.onDidSelect", - "java.decompile", - "java.protobuf.generateSources", Commands.SHOW_TYPE_HIERARCHY, Commands.SHOW_SUBTYPE_HIERARCHY, Commands.SHOW_SUPERTYPE_HIERARCHY, Commands.SHOW_CLASS_HIERARCHY, Commands.UPGRADE_GRADLE_WRAPPER, - Commands.UPGRADE_GRADLE_WRAPPER_CMD, Commands.UPDATE_SOURCE_ATTACHMENT, Commands.UPDATE_SOURCE_ATTACHMENT_CMD, - Commands.SMARTSEMICOLON_DETECTION_CMD, - Commands.SMARTSEMICOLON_DETECTION_UNDO, - Commands.RESOLVE_SOURCE_ATTACHMENT, ].sort(); const foundJavaCommands = commands.filter((value) => { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.');