Skip to main content

add-command

Create new VS Code commands with all required boilerplate

الانتقال إلى التثبيت

معلومات المصدر

المستودع
gitkraken/vscode-gitlens
آخر نشاط في المصدر
٩ سبتمبر ٢٠٢٦ في ٠١:٤١
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٩٬٩٢٨
التفرعات
١٬٨٠١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
add-command
description
Create new VS Code commands with all required boilerplate
# /add-command - Create New Command Scaffold a new VS Code command with all required boilerplate. ## Usage ``` /add-command [name] ``` ## Information Needed 1. **Command ID** — e.g., `myNewFeature` (becomes `gitlens.myNewFeature`) 2. **Label** — Display name in command palette 3. **Base class**: - `GlCommandBase` — No editor required (opening panels, showing pickers) - `ActiveEditorCommand` — Requires active editor - `ActiveEditorCachedCommand` — Like ActiveEditorCommand with "repeat last command" support 4. **Variants** (optional): `:views`, `:graph`, `:scm` suffixes for context menus ## Files to Create/Modify ### 1. Command File: `src/commands/{commandName}.ts` ```typescript import type { TextEditor, Uri } from 'vscode'; import type { Container } from '../container.js'; import { command } from '../system/-webview/command.js'; import { {BaseClass} } from './commandBase.js'; export interface {CommandName}CommandArgs { // Define args if needed } @command() export class {CommandName}Command extends {BaseClass} { constructor(private readonly container: Container) { super([ 'gitlens.{commandId}', // Add variants here ]); } async execute(editor?: TextEditor, uri?: Uri, args?: {CommandName}CommandArgs): Promise<void> { // TODO: Implement } } ``` ### 2. Import in `src/commands.ts` ```typescript import './commands/{commandName}.js'; ``` ### 3. Add to `contributions.json` Under `"commands"` key: ```json "gitlens.{commandId}": { "label": "{Label}", "category": "GitLens", "commandPalette": "gitlens:enabled" } ``` For `:views` variant: ```json "gitlens.{commandId}:views": { "label": "{Label}", "icon": "$(icon-name)", "menus": { "view/item/context": [{ "when": "viewItem =~ /gitlens:/ && gitlens:enabled", "group": "1_gitlens" }] } } ``` ### 4. Run Generation ```bash pnpm run generate:contributions && pnpm run generate:commandTypes ``` ## Common `when` Clauses - `gitlens:enabled` — Extension is enabled - `!gitlens:readonly` — Not in readonly mode - `!gitlens:untrusted` — Workspace is trusted - `gitlens:plus` — Pro features available - `viewItem =~ /gitlens:commit/` — On a commit node - `viewItem =~ /gitlens:branch/` — On a branch node ## Localization Every user-facing string in the new code (titles, notifications, quick pick items, placeholders, webview text, ARIA labels) must be a literal `l10n.t()` message — `{ l10n }` from `vscode` in host code, `* as l10n` from `@vscode/l10n` in webviews and packages. Run `pnpm run generate:l10n` afterward so the catalog check passes. Manifest text (command titles, view names) goes through `contributions.json` → `package.nls.json` as before. See `docs/localization.md`.
عرض على GitHub