Метод для предоставления активного кода VSCode 'when Clause Contexts'

Я ищу способ раскрыть VSCode active 'when Clause Contexts', например 'explorerResourceIsFolder'. Чтобы вы лучше понимали мой вариант использования, вот некоторая предыстория проекта, для которого разрабатывается расширение VSCode. Мое расширение будет способствовать программированию и управлению VSCode с помощью голоса.

Caster - это набор инструментов для голосового программирования на основе Dragonfly. Dragonfly - это фреймворк для распознавания речи. Это пакет Python, который предлагает объектную модель высокого уровня и позволяет пользователям легко писать сценарии, макросы и программы, использующие распознавание речи. Цель этих проектов - дать возможность тем, кто ограничивает взаимодействие с клавиатурой или мышью, программировать, а разработчикам - повысить производительность.

Некоторые текущие нерешенные ограничения в Castor и Dragonfly взаимодействуют путем имитации нажатия клавиш. Это всего лишь несколько вопросов.

  • Надежность работы IDE при различных конфигурациях системы и версиях IDE. Это вводит такие переменные, как задержка выполнения команд.
  • Кастор совершенно ничего не знает о среде IDE.
  • Dragon NaturallySpeaking имеет верхний предел сложности грамматик. После достижения лимита возникнет ошибка BadGrammar.
  • Ограниченные комбинации клавиш и не все функции можно вызывать с помощью сочетаний клавиш.

Некоторые примеры через редактор Adom

  1. найти в буфере ": R (Key (" cf "), rdescript =" Atom: Find in Buffer ") В контексте" Найти в буфере "полезны лишь несколько соответствующих команд, но команды Castor являются глобальными, что снижает точность распознавания речи команд и увеличивает сложность грамматики.С интеграцией Caster IDE можно было бы использовать ограниченные наборы команд, указанные для контекстов или фокусов IDE.
  2. "разбить на строки": R (Key ("cs-p") + Text ("Split Into Lines") + Pause (atom_palette_wait) + Key ("enter"), rdescript = "Atom: Split Into lines"), Not все функции IDE могут быть вызваны с помощью ярлыков или легко воссозданы с помощью castor. Моя попытка обойти это в Adom заключалась в использовании палитры команд. Хотя это расширило мою способность запускать команды, оно привело к задержке. Чтобы поститься, будет запущена неправильная команда. Слишком медленное снижение производительности. Задержка индексирования, зависящая от загрузки системы, технических характеристик системы, количества активных плагинов и количества символов в команде. Мы пытались смягчить это, используя Pause (atom_palette_wait), но переменные задержки были слишком сложными. То же самое можно сказать и о Studio Code.

Интеграция Castor framework IDE

  • Castor будет содержать функции IDE для передачи в плагины / расширения IDE для выполнения. Например, «Найти»: найти R (SendFunction («actions.find»), rdescript = «VisualStudioCode: Find»)

  • Castor будет прислушиваться к контекстам или фокусам, объявленным от IDE.

  • Castor будет хранить команды и функции на основе контекста IDE или фокуса. Затем активируйте только соответствующие команды, содержащие ярлыки или функции IDE на основе фокуса, объявленного из IDE.

    Платформа плагинов / расширений IDE

  • Прослушивание и выполнение определенных функций IDE из Caster

  • Сообщите Кастеру текущие контексты или фокус.

  • В качестве долгосрочной цели расширить функциональные возможности IDE (например, в Visual Studio Code добавление чисел в список IntelliSense). Пользователь произнесет номер, и соответствующая строка будет выбрана и выполнена.


Расширение Studio Code Extension будет состоять из трех частей.

  1. Веб-сокет, на котором запущены сервер и клиент, который обеспечивает двунаправленную связь с Castor.
  2. Функция, которая выполняет 'Command_id', например, editor.debug.action.toggleBreakpoint 'Выполняется - почти завершена
  3. Метод для открытия редакторам «Контексты предложения when», например, «explorerResourceIsFolder» - поиск метода - пока не повезло через API - поиск исходного кода для понимания реализации.

Любые предложения приветствуются. Если вы считаете, что стоит открыть билет на github в репозитории VSCode, дайте мне знать.


person TheMast    schedule 12.04.2017    source источник


Ответы (1)


Существует закрытый API для получения контекста when в действии. Вы можете использовать getValue (key: string). Это доступно в работе над этой проблемой:

Перенести setContext из команды в соответствующий API Microsoft / vscode # 10471

и исходник можно посмотреть здесь:

contextKeyService.ts

с помощью getValue (key: string)

По состоянию на май 2017 года эта работа все еще продолжается. Спасибо. Добрый день.

person Yemi Bedu    schedule 18.05.2017