new extension API for completion items
Created by: sqs
The new sourcegraph.languages.registerCompletionItemProvider
API lets extensions register providers to suggest completions for a cursor position in an editor.
This is supported in code discussions comment input fields, GitHub issue edit/create fields, and on an experimental /snippets
page on the web app.
It is feature-flagged off by default. See demo at https://sourcegraph.slack.com/archives/C89KCDK5J/p1554982303009400?thread_ts=1554799854.001300&cid=C89KCDK5J.
TODOs:
-
Factor out styling
Test plan
Also applies to #3316.
- Install one or more of these extensions: https://github.com/sourcegraph/sourcegraph-hubspot https://github.com/sourcegraph/sourcegraph-jira (you need to
yarn run serve
them, they aren't published yet) - Use the following creds in your user settings to auth both of those extensions: https://sourcegraph.slack.com/files/U02FSM7DN/FHJJWGWNN/user_settings_for_trying_completion_link_preview (Sourcegraph internal link only)
- Run a dev server and a dev bext build
- In the dev bext build options menu, enable both of the new experimental feature flags
Now test one or both extensions on both GitHub and Sourcegraph:
-
To test on GitHub, go to any Markdown input box (like on an issue).
- The first time you try to use any of these extensions, you should get a UI error message about the need to grant the bext access to the HubSpot/Jira API domains. Follow the on-screen instructions.
-
To test on Sourcegraph, go to http://localhost:3080/snippets?languageId=markdown.
- You also need to run a cors-anywhere proxy right now to hit those APIs.
git clone https://github.com/Rob--W/cors-anywhere && cd cors-anywhere && PORT=9018 node server.js
and keep that running.
- You also need to run a cors-anywhere proxy right now to hit those APIs.
-
To test the HubSpot extension, try typing
$
(wait for it to load all customers from HubSpot; takes up to 10-15 seconds, but is then cached) and then a customer name. Hit enter to complete the URL. When you view the Markdown, you'll see a link preview with the customer name and stats. -
To test the Jira extension, try typing
DEMO-
and then either an issue number or part of an issue summary. Hit enter to complete the URL. When you view the Markdown, you'll see a link preview with the issue summary.
Note that this PR is not about those extensions per se. If you see issues on those extensions, file them on their own repositories (they are fairly WIP still).