我想使用 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 中)自动生成的,不幸的是,弄清楚如何修改它远远超出了我的能力。