#python #plugins #command #sublimetext3
#python #Плагины #команда #sublimetext3
Вопрос:
Это не запрос переназначения клавиатуры. Моя текущая дилемма заключается в невозможности редактировать goto_definition
команду (привязанную к F12
по умолчанию). Если бы я мог найти для нее файл .py, это было бы (надеюсь) проще простого.
Больший объем моего проекта требует, чтобы я изменил функциональность goto_definition
, чтобы она была более похожа на эквивалентную функцию в CodeWright. Я работаю в ST3, и возврат к ST2 не является вариантом.
Позвольте мне более четко рассказать о моих препятствиях:
-
Найдите файл .py, который содержит информацию, которая
goto_definition
используется при его запуске. -
Измените природу этой команды, чтобы она была немного более гибкой:
-
По сути, существует несколько методов,
EditElementHandleR
,MSBsplineCurveCR
GetElementDescrP
GetModelRef
,,,,,,,,,,, и несколько других схожего характера. -
К некоторым из них добавлены «теги», и если имя метода должно содержать тег, это будет один из следующих четырех:
CR
,CP
,R
иP
. -
Существуют также методы с этими именами, без тегов.
-
Поведение CodeWright при переходе программиста к определению заключается в указании на эквивалентное имя метода без тегов, даже если курсор в данный момент находился на имени метода с тегами.
-
Sublime не может найти исходный метод, если я нажимаю
F12
(напомним:goto_definition
), пока курсор находится в «помеченном» имени метода.
-
Вот идеальная ситуация: мой курсор находится в методе с именем EditElem|entHandleR
( |
обозначает курсор), и я нажимаю F12
. Затем Sublime приводит меня к EditElementHandle
определению.
Ответ №1:
К сожалению, goto_definition
не реализован на Python, это часть скомпилированного исполняемого файла Sublime (в основном написанного на C ), поэтому он не может быть изменен пользователем. Однако доступно несколько плагинов code intelligence, включая SublimeCodeIntel
и Anaconda
, которые могут быть более приспособлены к вашим потребностям. Анализ кода — это не волшебство, он просто использует (в вашем случае нечеткий) поиск, чтобы сопоставить то, что находится под курсором, с тем, что находится в индексе языковой библиотеки. Все, что вам нужно было бы сделать, это немного изменить логику поиска, чтобы проверить возможное присутствие одного из ваших «тегов», и просто игнорировать его. Возможно, вы даже сможете написать оболочку для goto_definition
, которая сделает это за вас, и не утруждать себя изучением большой кодовой базы. API Sublime должен помочь, как и пристальный взгляд на исходный код sublime.py
и sublime_plugin.py
, поскольку существуют некоторые недокументированные функции.
Комментарии:
1. «К сожалению, goto_definition не реализовано в Python» — это неправда — это в
Packages/Default/symbol.py
2. @KeithHall теперь, почему я не мог найти это, когда искал 2 1/2 года назад? Я думаю, я перепишу свой ответ. Спасибо за предупреждение!