diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/LiveHoverUtils.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/LiveHoverUtils.java index aa6aa6df3..74298bb0a 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/LiveHoverUtils.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/LiveHoverUtils.java @@ -208,7 +208,7 @@ public class LiveHoverUtils { codeLens.setData(sb.toString()); Command cmd = new Command(); cmd.setTitle(sb.toString()); - cmd.setCommand("org.springframework.showHoverAtPosition"); + cmd.setCommand("sts.showHoverAtPosition"); cmd.setArguments(ImmutableList.of(range.getStart())); codeLens.setCommand(cmd); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java index c32b075d4..ac1283ebd 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java @@ -244,7 +244,7 @@ public class RequestMappingHoverProvider implements HoverProvider { codeLens.setData(content); cmd.setTitle(content); - cmd.setCommand("springboot.open.url"); + cmd.setCommand("sts.open.url"); cmd.setArguments(ImmutableList.of(content)); } diff --git a/vscode-extensions/commons-vscode/src/commands.ts b/vscode-extensions/commons-vscode/src/commands.ts new file mode 100644 index 000000000..bf6109fe5 --- /dev/null +++ b/vscode-extensions/commons-vscode/src/commands.ts @@ -0,0 +1,38 @@ +'use strict'; + +import * as VSCode from 'vscode'; +import { Position } from 'vscode-languageclient'; + + + +export function registerCommands(context: VSCode.ExtensionContext) { + VSCode.commands.getCommands(true).then(commands => { + if (!commandExists(commands, "sts.open.url")) { + registerOpenUrl(context, "sts.open.url"); + } + + if (!commandExists(commands, "sts.showHoverAtPosition")) { + registerShowHoverAtPosition(context, "sts.showHoverAtPosition"); + } + }); + +} + +function registerOpenUrl(context: VSCode.ExtensionContext, commandId: string) { + context.subscriptions.push(VSCode.commands.registerCommand(commandId, (url) => { + VSCode.commands.executeCommand('vscode.open', VSCode.Uri.parse(url)) + })); +} + +function registerShowHoverAtPosition(context: VSCode.ExtensionContext, commandId: string) { + VSCode.commands.registerCommand(commandId, (position: Position) => { + const editor = VSCode.window.activeTextEditor; + const vsPosition = new VSCode.Position(position.line, position.character); + editor.selection = new VSCode.Selection(vsPosition, vsPosition); + VSCode.commands.executeCommand('editor.action.showHover'); + }); +} + +function commandExists(commands: string[], commandId: string) { + return commands.indexOf(commandId) >= 0; +} \ No newline at end of file diff --git a/vscode-extensions/commons-vscode/src/launch-util.ts b/vscode-extensions/commons-vscode/src/launch-util.ts index d90cb1761..880ca9b3b 100644 --- a/vscode-extensions/commons-vscode/src/launch-util.ts +++ b/vscode-extensions/commons-vscode/src/launch-util.ts @@ -6,6 +6,7 @@ import * as FS from 'fs'; import PortFinder = require('portfinder'); import * as Net from 'net'; import * as ChildProcess from 'child_process'; +import * as CommonsCommands from './commands'; import { TextDocumentIdentifier, RequestType, LanguageClient, LanguageClientOptions, SettingMonitor, ServerOptions, StreamInfo, Position } from 'vscode-languageclient'; import {TextDocument, OutputChannel, Disposable, window, Event, EventEmitter} from 'vscode'; import { Trace, NotificationType } from 'vscode-jsonrpc'; @@ -211,12 +212,7 @@ function setupLanguageClient(context: VSCode.ExtensionContext, createServer: Ser const codelensService = new HighlightCodeLensProvider(); let codeLensProviderSubscription: Disposable; - VSCode.commands.registerCommand('org.springframework.showHoverAtPosition', (position: Position) => { - const editor = VSCode.window.activeTextEditor; - const vsPosition = new VSCode.Position(position.line, position.character); - editor.selection = new VSCode.Selection(vsPosition, vsPosition); - VSCode.commands.executeCommand('editor.action.showHover'); - }); + CommonsCommands.registerCommands(context); context.subscriptions.push(disposable); context.subscriptions.push(progressService); diff --git a/vscode-extensions/vscode-spring-boot/lib/Main.ts b/vscode-extensions/vscode-spring-boot/lib/Main.ts index b4218ef17..4a8c0caae 100644 --- a/vscode-extensions/vscode-spring-boot/lib/Main.ts +++ b/vscode-extensions/vscode-spring-boot/lib/Main.ts @@ -16,7 +16,6 @@ const JAVA_LANGUAGE_ID = "java"; export function activate(context: VSCode.ExtensionContext): Thenable { // registerPipelineGenerator(context); - registerOpenUrl(context); let options : commons.ActivatorOptions = { DEBUG: false, CONNECT_TO_LS: false, @@ -84,10 +83,3 @@ function registerPipelineGenerator(context: VSCode.ExtensionContext) { } })); } - -function registerOpenUrl(context: VSCode.ExtensionContext) { - context.subscriptions.push(VSCode.commands.registerCommand('springboot.open.url', (url) => { - VSCode.commands.executeCommand('vscode.open', VSCode.Uri.parse(url)) - })); -} -