From a259991d9b09d64a1824637a34704dfb6f125b6a Mon Sep 17 00:00:00 2001 From: Joel Daniel Rico Date: Fri, 28 Jun 2024 05:30:13 -0700 Subject: [PATCH] Add landing/faq walkthroughs and commands for quick access --- editors/code/package.json | 83 +++++++++++++++++++++++++++++++++++- editors/code/src/commands.ts | 12 ++++++ editors/code/src/main.ts | 2 + 3 files changed, 96 insertions(+), 1 deletion(-) diff --git a/editors/code/package.json b/editors/code/package.json index 0da5b920a72d..0980e6f722c1 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -305,6 +305,16 @@ "command": "rust-analyzer.toggleLSPLogs", "title": "Toggle LSP Logs", "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.openWalkthrough", + "title": "Open Walkthrough", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.openFAQ", + "title": "Open FAQ", + "category": "rust-analyzer" } ], "keybindings": [ @@ -3132,6 +3142,14 @@ { "command": "rust-analyzer.toggleLSPLogs", "when": "inRustProject" + }, + { + "command": "rust-analyzer.openWalkthrough", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.openFAQ", + "when": "inRustProject" } ], "editor/context": [ @@ -3161,6 +3179,69 @@ "fileMatch": "rust-project.json", "url": "https://json.schemastore.org/rust-project.json" } - ] + ], + "walkthroughs": [ + { + "id": "landing", + "title": "Learn about rust-analyzer", + "description": "A brief introduction to get started with rust-analyzer. Learn about key features and resources to help you get the most out of the extension.", + "steps": [ + { + "id": "docs", + "title": "Visit the docs!", + "description": "Confused about configurations? Want to learn more about rust-analyzer? Visit the [User Manual](https://rust-analyzer.github.io/manual.html)!", + "media": { "image": "./icon.png", "altText": "rust-analyzer logo" }, + "completionEvents": ["onLink:https://rust-analyzer.github.io/manual.html"] + }, + { + "id": "faq", + "title": "FAQ", + "description": "Have questions about rust-analyzer? Check out the [FAQ Walkthrough](command:rust-analyzer.openFAQ)!", + "media": { "image": "icon.png", "altText": "rust-analyzer logo" } + + }, + { + "id": "changelog", + "title": "Changelog", + "description": "Stay up-to-date with the latest changes in rust-analyzer. Check out the changelog [here](https://rust-analyzer.github.io/thisweek)!", + "media": { "image": "icon.png", "altText": "rust-analyzer logo" }, + "completionEvents": ["onLink:https://rust-analyzer.github.io/thisweek"] + }, + { + "id": "revisit", + "title": "Want to revisit a walkthrough?", + "description": "Use the ``Welcome: Open Walkthrough`` command to revisit any walkthrough!", + "media": { "image": "icon.png", "altText": "rust-analyzer logo" } + } + ] + }, + { + "id": "faq", + "title": "FAQ", + "description": "Here are some frequently asked questions about rust-analyzer.", + "steps": [ + { + "id": "faq1", + "title": "What is rust-analyzer?", + "description": "rust-analyzer is a language server for Rust. It provides features like code completion, find references, and more.", + "media": { "image": "icon.png", "altText": "rust-analyzer logo" } + }, + { + "id": "faq2", + "title": "Why are all of these type hints showing up in my code?", + "description": "By default, rust-analyzer displays __inlay hints__ to help you understand your code better. You can disable them in your settings.json file with ``\"editor.inlayHints.enabled\": \"off\"``", + "media": { "image": "icon.png", "altText": "rust-analyzer logo" } + }, + { + "id": "faq3", + "title": "Where can I find more information about rust-analyzer?", + "description": "You can find more information about rust-analyzer in the [User Manual](https://rust-analyzer.github.io/manual.html).", + "media": { "image": "icon.png", "altText": "rust-analyzer logo" }, + "completionEvents": ["onLink:https://rust-analyzer.github.io/manual.html"] + } + ] + } + ] + } } diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts index f0f9fab1c643..2c608fbfab5b 100644 --- a/editors/code/src/commands.ts +++ b/editors/code/src/commands.ts @@ -1502,3 +1502,15 @@ export function toggleLSPLogs(ctx: Ctx): Cmd { } }; } + +export function openWalkthrough(_: Ctx): Cmd { + return async () => { + await vscode.commands.executeCommand("workbench.action.openWalkthrough", "rust-lang.rust-analyzer#landing", false); + }; +} + +export function openFAQ(_: Ctx): Cmd { + return async () => { + await vscode.commands.executeCommand("workbench.action.openWalkthrough", "rust-lang.rust-analyzer#faq", true); + }; +} \ No newline at end of file diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index ff67bb7bd597..c96f2ae869e0 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -178,6 +178,8 @@ function createCommands(): Record { viewMemoryLayout: { enabled: commands.viewMemoryLayout }, toggleCheckOnSave: { enabled: commands.toggleCheckOnSave }, toggleLSPLogs: { enabled: commands.toggleLSPLogs }, + openWalkthrough: { enabled: commands.openWalkthrough }, + openFAQ: { enabled: commands.openFAQ }, // Internal commands which are invoked by the server. applyActionGroup: { enabled: commands.applyActionGroup }, applySnippetWorkspaceEdit: { enabled: commands.applySnippetWorkspaceEditCommand },