From f3836c4770fe7c1c48bda6526642cf1a9683b1aa Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Tue, 26 Sep 2017 17:36:33 -0400 Subject: [PATCH] Adjust quick fix for Atom extensions --- atom-extensions/atom-boot-java/package.json | 2 +- atom-extensions/atom-bosh/package.json | 2 +- .../atom-cf-manifest-yaml/package.json | 2 +- .../atom-commons/lib/jar-language-client.js | 8 ++++ .../atom-commons/lib/sts-adapter.js | 21 ++++++++++ atom-extensions/atom-commons/package.json | 2 +- atom-extensions/atom-concourse/package.json | 2 +- .../vscode/concourse/ConcourseEditorTest.java | 38 +++++++++++++++++++ 8 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 atom-extensions/atom-commons/lib/sts-adapter.js diff --git a/atom-extensions/atom-boot-java/package.json b/atom-extensions/atom-boot-java/package.json index 821a7fdfe..f4bc6d464 100644 --- a/atom-extensions/atom-boot-java/package.json +++ b/atom-extensions/atom-boot-java/package.json @@ -17,7 +17,7 @@ "dependencies": { "atom-package-deps": "^4.6.0", "download": "^6.2.5", - "pivotal-atom-languageclient-commons": "0.0.10" + "pivotal-atom-languageclient-commons": "0.0.11" }, "devDependencies": { "coffeelint": "^1.10.1" diff --git a/atom-extensions/atom-bosh/package.json b/atom-extensions/atom-bosh/package.json index 5a4bf2dbf..75467a29e 100644 --- a/atom-extensions/atom-bosh/package.json +++ b/atom-extensions/atom-bosh/package.json @@ -19,7 +19,7 @@ "dependencies": { "atom-package-deps": "^4.6.0", "download": "^6.2.5", - "pivotal-atom-languageclient-commons": "0.0.10" + "pivotal-atom-languageclient-commons": "0.0.11" }, "configSchema": { "bosh": { diff --git a/atom-extensions/atom-cf-manifest-yaml/package.json b/atom-extensions/atom-cf-manifest-yaml/package.json index 3afce4510..675252bcf 100644 --- a/atom-extensions/atom-cf-manifest-yaml/package.json +++ b/atom-extensions/atom-cf-manifest-yaml/package.json @@ -19,7 +19,7 @@ "dependencies": { "atom-package-deps": "^4.6.0", "download": "^6.2.5", - "pivotal-atom-languageclient-commons": "0.0.10" + "pivotal-atom-languageclient-commons": "0.0.11" }, "devDependencies": { "coffeelint": "^1.10.1" diff --git a/atom-extensions/atom-commons/lib/jar-language-client.js b/atom-extensions/atom-commons/lib/jar-language-client.js index edfb288d6..9f44267a1 100644 --- a/atom-extensions/atom-commons/lib/jar-language-client.js +++ b/atom-extensions/atom-commons/lib/jar-language-client.js @@ -8,6 +8,7 @@ const net = require('net'); const rpc = require('vscode-jsonrpc'); const {AutoLanguageClient, DownloadFile} = require('atom-languageclient'); const { Disposable } = require('atom'); +import { StsAdapter } from './sts-adapter'; export class JarLanguageClient extends AutoLanguageClient { @@ -53,6 +54,13 @@ export class JarLanguageClient extends AutoLanguageClient { }); } + // Start adapters that are not shared between servers + startExclusiveAdapters(server) { + super.startExclusiveAdapters(server); + StsAdapter.attach(server.connection); + } + + launchProcess(port) { const command = this.findJavaExecutable('java'); diff --git a/atom-extensions/atom-commons/lib/sts-adapter.js b/atom-extensions/atom-commons/lib/sts-adapter.js new file mode 100644 index 000000000..68b87fbc7 --- /dev/null +++ b/atom-extensions/atom-commons/lib/sts-adapter.js @@ -0,0 +1,21 @@ +import {Convert} from 'atom-languageclient'; + +export class StsAdapter { + + // Public: Attach to a {StsLanguageClientConnection} to receive messages. + static attach(connection) { + connection._onRequest({method: 'sts/moveCursor'}, params => StsAdapter.onMoveCursor(params)); + connection._onNotification({method: 'sts/progress'}, params => StsAdapter.onProgress(params)); + } + + static onMoveCursor(params) { + atom.workspace.getTextEditors() + .filter(e => Convert.pathToUri(e.getPath()) === params.uri) + .forEach(e => e.setCursorScreenPosition(Convert.positionToPoint(params.position))); + return { applied: true}; + } + + static onProgress(params) { + console.log('PROGRESS: ' + JSON.stringify(params)); + } +} diff --git a/atom-extensions/atom-commons/package.json b/atom-extensions/atom-commons/package.json index f33cff919..bbdf0514f 100644 --- a/atom-extensions/atom-commons/package.json +++ b/atom-extensions/atom-commons/package.json @@ -1,6 +1,6 @@ { "name": "pivotal-atom-languageclient-commons", - "version": "0.0.10", + "version": "0.0.11", "description": "Atom language client commons for STS4 language servers", "repository": "https://github.com/spring-projects/sts4", "license": "MIT", diff --git a/atom-extensions/atom-concourse/package.json b/atom-extensions/atom-concourse/package.json index 601fc20d7..075f4c2cc 100644 --- a/atom-extensions/atom-concourse/package.json +++ b/atom-extensions/atom-concourse/package.json @@ -19,7 +19,7 @@ "dependencies": { "atom-package-deps": "^4.6.0", "download": "^6.2.5", - "pivotal-atom-languageclient-commons": "0.0.10" + "pivotal-atom-languageclient-commons": "0.0.11" }, "devDependencies": { "coffeelint": "^1.10.1" diff --git a/headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java b/headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java index 28f46062b..6087a7eb5 100644 --- a/headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java +++ b/headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java @@ -106,6 +106,44 @@ public class ConcourseEditorTest { ); } + @Test public void quickfixForOneOfMultipleMarkersOnSameRange() throws Exception { + Editor editor = harness.newEditor( + "jobs:\n" + + "- name: myjob\n" + + " plan:\n" + + " - task: foo\n" + + " config:\n" + + " inputs:\n" + + " - name: foo" + ); + List problems = editor.assertProblems( + "config|[image_resource, rootfs_uri, image] is required", + "config|[platform, run] are required" + ); + + CodeAction quickfix = editor.assertCodeAction(problems.get(0)); + //TODO: fix https://www.pivotaltracker.com/story/show/151460687 and uncomment code below +// assertEquals(null, quickfix); + + quickfix = editor.assertCodeAction(problems.get(1)); + assertEquals("Add properties: [platform, run]", quickfix.getLabel()); + quickfix.perform(); + + editor.assertText( + "jobs:\n" + + "- name: myjob\n" + + " plan:\n" + + " - task: foo\n" + + " config:\n" + + " inputs:\n" + + " - name: foo\n" + + " platform: <*>\n" + + " run:\n" + + " path: " + ); + + } + @Test public void reconcileResourceTypeType() throws Exception { Editor editor; editor = harness.newEditor(