Добавление условий в «когда» из расширения VS-code?

#visual-studio-code #vscode-extensions

#visual-studio-code #vscode-extensions

Вопрос:

Редактор кода, которым я пользуюсь последние 20 лет (codewright), позволяет установить «режим выбора». Когда это установлено, все движения курсора клавиатуры расширяют выделение. В VS Code вы можете расширить выбор, удерживая нажатой клавишу shift (например, Shift со стрелкой вниз), но я ищу способ сделать это без клавиши shift.

Я написал расширение, которое в основном выполняет это, но мне пришлось бы проделать гораздо меньше работы, если бы я мог создать новое условие для предложения «когда» в keybindings.json . Например, я хотел бы изменить

 { "key": "shift down",    "command": "cursorDownSelect",
                          "when": "editorTextFocus" },
  

к чему-то вроде

 { "key": "down",    "command": "cursorDownSelect",
                    "when": "editorTextFocus || extensionSelectionMode" },
{ "key": "down",    "command": "cursorDown",
                    "when": "editorTextFocus" },
  

Есть ли способ добавить такое условие из расширения?

Ответ №1:

Попробуйте использовать setContext команду в вашем расширении:

 vscode.commands.executeCommand('setContext', 'extensionSelectionMode', true)
  

Смотрите VSCode vim для примера этого в действии

Мы отслеживаем лучший API для настройки контекстов здесь:https://github.com/Microsoft/vscode/issues/10471

Комментарии:

1. При использовании языкового сервера этот вызов лучше размещать внутри сервера или клиента? Или это не имеет значения?