Я хотел бы использовать команду helm-semantic-or-imenu для навигации по компонентам кода Python с аннотациями типа, но какой бы анализатор кода ни использовался для идентификации компонентов, похоже, он не распознает код Python с аннотациями типа. Функции с аннотацией возвращаемого типа вообще не распознаются, а функции с аннотированными аргументами показывают тип вместо имен аргументов в подписях
Основная проблема, с которой я столкнулся, заключается в том, что я неправильно понимаю компоненты, задействованные в этой работе (когда она действительно работает). Очевидно, может помочь как-то обновить анализатор кода, но в каком проекте я это найду? шлем? семантический? имя? или как кто-то упоминал где-то еще в отношении анализа кода python.el? Я мог бы действительно использовать некоторую помощь, чтобы начать решать эту проблему. Если анализатор кода находится в python.el, могу ли я попытаться изменить и заставить emacs использовать локальную версию, а не установленную?
РЕДАКТИРОВАТЬ: После создания первоначального сообщения я, наконец, сделал прорыв, пытаясь выяснить, откуда берутся компоненты. Я искал python*.el во всей файловой системе и обнаружил следующее:
./usr/share/emacs/26.2/lisp/cedet/semantic/wisent/python.elc ./usr/share/emacs/26.2/lisp/cedet/semantic/wisent/python-wy.elc
Я нашел источник для emacs 26.2 и обнаружил, что действительно кажется, что python-el отвечает за семантический анализ файлов python. Он также внутренне использует python-wy для распознавания большей части языковых компонентов. Но, к сожалению, именно здесь я наткнулся на кирпичную стену. Я надеялся, что смогу пропатчить функцию, которая распознает определение функции через re или что-то в этом роде, но семантика на самом деле решает проблему правильно. Таким образом, python-wy, похоже, автоматически генерируется из формального файла определения грамматики (в emacs git admin/grammars/python.wy), и выяснить, как изменить это, к сожалению, намного выше моих возможностей.
(semantic-active-p)
не равен нулю в вашем буфере python, тоhelm-semantic-or-imenu
предпочтет семантику, а не imenu - person Rorschach   schedule 16.06.2019(semantic-active-p)
в буфере Python выше возвращаетt
. Я пытался установитьnil
с помощью(setq semantic-active-p nil)
, но безуспешно. Как мне изменить его? Извиняюсь за мой плохой elisp foo, но я всегда был больше пользователем emacs, чем моддером. - person TLE   schedule 16.06.2019semantic-active-p
, я попытался вызватьimenu
напрямую, и это дало те же результаты поиска. - person TLE   schedule 16.06.2019imenu-create-index-function
- это ошибка ИМХО - person Rorschach   schedule 16.06.2019