2017-03-10 1 views
1

Vscode-Erweiterungen werden nur aktiviert, wenn bestimmte Kriterien erfüllt sind. (Basierend auf activationEvents).Vscode Extension: Ausblenden von Menübeiträgen, wenn die Nebenstelle nicht aktiv ist

In meiner Erweiterung möchte ich einen Menübeitrag hinzufügen. Problem ist, wenn die Erweiterung nicht aktiv ist, ein Klick auf den Button einen Fehler auslöst. Im Idealfall wäre es nur sichtbar, wenn die Erweiterung aktiv ist.

Wie kann ich das erreichen? Die when-clause scheint dafür zu begrenzt.

"activationEvents": [ 
    "workspaceContains:server" 
], 
"contributes": { 
    "commands": [ 
     { 
      "command": "extension.displayHelp", 
      "title": "RCE Help" 
     } 
    ],  
    "menus": { 
     "editor/title": [{ 
      "when": "resourceLangId != markdown", 
      "command": "extension.displayHelp", 
      "group": "navigation" 
     }] 
    }, 
} 

enter image description here


Edit:

onCommand in den activationEvents Werken Zugabe stellte sich heraus.

Obwohl Vscode angibt, dass der Befehl in der Fehlermeldung nicht gefunden wurde, hat er ihn tatsächlich gefunden und entschieden, ihn nicht auszulösen.

Allerdings würde ich immer noch lieber den Menübeitrag ausblenden, wenn die Erweiterung nicht aktiv ist.

+0

Ich habe die gleiche Frage, aber ich will nicht den onCommand zu activationEvents hinzuzufügen. Wenn meine Aktivierungsereignisse nicht übereinstimmen, schlagen die Befehle fehl (fehlende Konfigurationsinformationen). Es wäre schön, keine Beiträge von inaktiven Erweiterungen zu haben oder zumindest die Option zu haben. –

Antwort

0

Verwendung wie dieser Code

vscode.commands.executeCommand('setContext', 'yourCMD', true); 

"menus": { 
    "editor/context": [ 
     { 
     "when": "editorHasSelection&&yourCMD", 
     "command": "port.sendSelect", 
      "group": "navigation" 
     } 
    ] 
} 

mein Code hier https://github.com/hanfengcan/lemon

Verwandte Themen