From b1af5bf402cb9453726ed14d0b9db4f133e8a201 Mon Sep 17 00:00:00 2001 From: Chris Wendt Date: Sun, 21 Apr 2019 13:31:05 -0700 Subject: [PATCH 1/5] Add button to submit feedback --- template/package.json | 19 +++++++++++++++++++ template/src/extension.ts | 3 +++ 2 files changed, 22 insertions(+) diff --git a/template/package.json b/template/package.json index 6a66adee1..0898b4c68 100644 --- a/template/package.json +++ b/template/package.json @@ -30,9 +30,28 @@ "label": "References: Search mode", "description": "Results come from text search and heuristics. (Language server mode is not available for $LANG.)/(To use a language server for precise results, ...)" } + }, + { + "id": "feedback", + "command": "feedback", + "title": "Submit basic code intel feedback", + "command": "open", + "commandArguments": [ + "https://docs.google.com/forms/d/e/1FAIpQLSfmn4M3nVj6R5m8UuAor_4ft8IMhieND_Uu8AlerhGO7X9C9w/viewform" + ], + "actionItem": { + "description": "Submit basic code intel feedback", + "iconURL": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMy41LTljLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXptLTcgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjVTOS4zMyA4IDguNSA4IDcgOC42NyA3IDkuNSA3LjY3IDExIDguNSAxMXptMy41IDYuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXoiLz48L3N2Zz4=" + } } ], "menus": { + "editor/title": [ + { + "action": "feedback", + "when": "showFeedback" + } + ], "panel/toolbar": [ { "action": "impreciseResults", diff --git a/template/src/extension.ts b/template/src/extension.ts index 5e8427feb..27f7f3a97 100644 --- a/template/src/extension.ts +++ b/template/src/extension.ts @@ -30,6 +30,9 @@ function activateWithArgs( const h = new Handler({ ...args, sourcegraph }) sourcegraph.internal.updateContext({ isImprecise: true }) + if (sourcegraph.configuration.get().get('basicCodeIntel.showFeedback')) { + sourcegraph.internal.updateContext({ showFeedback: true }) + } ctx.subscriptions.add( sourcegraph.languages.registerHoverProvider( From 17d98f8de925952585ee5f2932af7b48f0d7bb0e Mon Sep 17 00:00:00 2001 From: Chris Wendt Date: Sun, 21 Apr 2019 13:44:45 -0700 Subject: [PATCH 2/5] Bump version --- package/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/package.json b/package/package.json index 32c8f288c..da42a01db 100644 --- a/package/package.json +++ b/package/package.json @@ -1,6 +1,6 @@ { "name": "@sourcegraph/basic-code-intel", - "version": "6.0.15", + "version": "6.0.16", "description": "Common library for providing basic code intelligence in Sourcegraph extensions", "repository": { "type": "git", From 3d63c91c012d7feddf4df63cf4399687db37c781 Mon Sep 17 00:00:00 2001 From: Chris Wendt Date: Sun, 21 Apr 2019 13:47:05 -0700 Subject: [PATCH 3/5] Fix package.json --- template/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/template/package.json b/template/package.json index 0898b4c68..6f71a84d9 100644 --- a/template/package.json +++ b/template/package.json @@ -35,7 +35,6 @@ "id": "feedback", "command": "feedback", "title": "Submit basic code intel feedback", - "command": "open", "commandArguments": [ "https://docs.google.com/forms/d/e/1FAIpQLSfmn4M3nVj6R5m8UuAor_4ft8IMhieND_Uu8AlerhGO7X9C9w/viewform" ], From a3637b1f30569c636f59af66ab757d48282c6585 Mon Sep 17 00:00:00 2001 From: Chris Wendt Date: Mon, 22 Apr 2019 16:05:27 -0700 Subject: [PATCH 4/5] Auto-fill parts of the form --- template/package.json | 8 ++++---- template/src/extension.ts | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/template/package.json b/template/package.json index 6f71a84d9..e1e14c759 100644 --- a/template/package.json +++ b/template/package.json @@ -33,13 +33,13 @@ }, { "id": "feedback", - "command": "feedback", - "title": "Submit basic code intel feedback", + "command": "open", + "title": "Submit code intel feedback", "commandArguments": [ - "https://docs.google.com/forms/d/e/1FAIpQLSfmn4M3nVj6R5m8UuAor_4ft8IMhieND_Uu8AlerhGO7X9C9w/viewform" + "${get(context, `codeIntel.feedbackLink`)}" ], "actionItem": { - "description": "Submit basic code intel feedback", + "description": "Submit code intel feedback", "iconURL": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMy41LTljLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXptLTcgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjVTOS4zMyA4IDguNSA4IDcgOC42NyA3IDkuNSA3LjY3IDExIDguNSAxMXptMy41IDYuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXoiLz48L3N2Zz4=" } } diff --git a/template/src/extension.ts b/template/src/extension.ts index 27f7f3a97..3519223c4 100644 --- a/template/src/extension.ts +++ b/template/src/extension.ts @@ -2,6 +2,7 @@ import { Handler, HandlerArgs } from '../../package/lib' import * as sourcegraph from 'sourcegraph' import { languageSpecs } from '../../languages' import { documentSelector } from '../../package/lib/handler' +import { concat, of } from 'rxjs' const DUMMY_CTX = { subscriptions: { add: (_unsubscribable: any) => void 0 } } @@ -30,8 +31,23 @@ function activateWithArgs( const h = new Handler({ ...args, sourcegraph }) sourcegraph.internal.updateContext({ isImprecise: true }) + if (sourcegraph.configuration.get().get('basicCodeIntel.showFeedback')) { - sourcegraph.internal.updateContext({ showFeedback: true }) + concat( + // Update the context once upon page load... + of(undefined), + // ...and whenever a document is opened. + sourcegraph.workspace.onDidOpenTextDocument + ).subscribe(document => { + sourcegraph.internal.updateContext({ + showFeedback: true, + 'codeIntel.feedbackLink': feedbackLink({ + currentFile: document && document.uri, + language: args.languageID, + kind: 'Default', + }).href, + }) + }) } ctx.subscriptions.add( @@ -59,3 +75,23 @@ function activateWithArgs( ) ) } + +function feedbackLink({ + currentFile, + language, + kind, +}: { + currentFile?: string + language: string + kind: 'Default' | 'Precise' +}): URL { + const url = new URL( + 'https://docs.google.com/forms/d/e/1FAIpQLSfmn4M3nVj6R5m8UuAor_4ft8IMhieND_Uu8AlerhGO7X9C9w/viewform?usp=pp_url' + ) + if (currentFile) { + url.searchParams.append('entry.1135698969', currentFile) + } + url.searchParams.append('entry.55312909', language) + url.searchParams.append('entry.1824476739', kind) + return url +} From 7e89d85fa801a68bf553d5bb7e31e55f60d75a79 Mon Sep 17 00:00:00 2001 From: Chris Wendt Date: Mon, 22 Apr 2019 16:56:11 -0700 Subject: [PATCH 5/5] Reorganize --- package/src/handler.ts | 50 +++++++++++++++++++++++++++++++++++++++ package/src/index.ts | 2 +- template/src/extension.ts | 45 ++++++----------------------------- 3 files changed, 58 insertions(+), 39 deletions(-) diff --git a/package/src/handler.ts b/package/src/handler.ts index 4d3935b52..0307bc600 100644 --- a/package/src/handler.ts +++ b/package/src/handler.ts @@ -1,3 +1,4 @@ +import { concat, Subscription, from } from 'rxjs' import { API, Result, parseUri } from './api' import { takeWhile, dropWhile, sortBy, flatten, omit } from 'lodash' import { @@ -456,6 +457,55 @@ export function findDocstring({ return docLines && unmungeLines(docLines).join('\n') } +export function registerFeedbackButton({ + languageID, + sourcegraph, + isPrecise, +}: { + languageID: string + isPrecise: boolean + sourcegraph: typeof import('sourcegraph') +}): Subscription { + if (sourcegraph.configuration.get().get('codeIntel.showFeedback')) { + return concat( + // Update the context once upon page load... + from(sourcegraph.workspace.textDocuments), + // ...and whenever a document is opened. + sourcegraph.workspace.onDidOpenTextDocument + ).subscribe(document => { + sourcegraph.internal.updateContext({ + showFeedback: true, + 'codeIntel.feedbackLink': feedbackLink({ + currentFile: document && document.uri, + language: languageID, + kind: isPrecise ? 'Precise' : 'Default', + }).href, + }) + }) + } + return Subscription.EMPTY +} + +function feedbackLink({ + currentFile, + language, + kind, +}: { + currentFile?: string + language: string + kind: 'Default' | 'Precise' +}): URL { + const url = new URL( + 'https://docs.google.com/forms/d/e/1FAIpQLSfmn4M3nVj6R5m8UuAor_4ft8IMhieND_Uu8AlerhGO7X9C9w/viewform?usp=pp_url' + ) + if (currentFile) { + url.searchParams.append('entry.1135698969', currentFile) + } + url.searchParams.append('entry.55312909', language) + url.searchParams.append('entry.1824476739', kind) + return url +} + /** * @see package.json contributes.configuration section for the configuration schema. */ diff --git a/package/src/index.ts b/package/src/index.ts index 1ae6113b7..f43c64259 100644 --- a/package/src/index.ts +++ b/package/src/index.ts @@ -1,7 +1,7 @@ import * as sourcegraph from 'sourcegraph' import { Handler, HandlerArgs, documentSelector } from './handler' -export { Handler, HandlerArgs } from './handler' +export { Handler, HandlerArgs, registerFeedbackButton } from './handler' // No-op for Sourcegraph versions prior to 3.0-preview const DUMMY_CTX = { subscriptions: { add: (_unsubscribable: any) => void 0 } } diff --git a/template/src/extension.ts b/template/src/extension.ts index 3519223c4..3d35381e7 100644 --- a/template/src/extension.ts +++ b/template/src/extension.ts @@ -1,8 +1,7 @@ -import { Handler, HandlerArgs } from '../../package/lib' +import { Handler, HandlerArgs, registerFeedbackButton } from '../../package/lib' import * as sourcegraph from 'sourcegraph' import { languageSpecs } from '../../languages' import { documentSelector } from '../../package/lib/handler' -import { concat, of } from 'rxjs' const DUMMY_CTX = { subscriptions: { add: (_unsubscribable: any) => void 0 } } @@ -32,23 +31,13 @@ function activateWithArgs( sourcegraph.internal.updateContext({ isImprecise: true }) - if (sourcegraph.configuration.get().get('basicCodeIntel.showFeedback')) { - concat( - // Update the context once upon page load... - of(undefined), - // ...and whenever a document is opened. - sourcegraph.workspace.onDidOpenTextDocument - ).subscribe(document => { - sourcegraph.internal.updateContext({ - showFeedback: true, - 'codeIntel.feedbackLink': feedbackLink({ - currentFile: document && document.uri, - language: args.languageID, - kind: 'Default', - }).href, - }) + ctx.subscriptions.add( + registerFeedbackButton({ + languageID: args.languageID, + sourcegraph, + isPrecise: false, }) - } + ) ctx.subscriptions.add( sourcegraph.languages.registerHoverProvider( @@ -75,23 +64,3 @@ function activateWithArgs( ) ) } - -function feedbackLink({ - currentFile, - language, - kind, -}: { - currentFile?: string - language: string - kind: 'Default' | 'Precise' -}): URL { - const url = new URL( - 'https://docs.google.com/forms/d/e/1FAIpQLSfmn4M3nVj6R5m8UuAor_4ft8IMhieND_Uu8AlerhGO7X9C9w/viewform?usp=pp_url' - ) - if (currentFile) { - url.searchParams.append('entry.1135698969', currentFile) - } - url.searchParams.append('entry.55312909', language) - url.searchParams.append('entry.1824476739', kind) - return url -}