这两天,我改了改习惯,把 Python 的代码加上 type hint 之后,我发现了一个问题,自动补全的时候,不会被识别为函数了,当然 eldoc 也用不了了…无论是 anaconda,还是用 lsp 都这样…
如图
不知道是个例,还是原来就这样?(突然后悔完全把原来的配置删掉)
这两天,我改了改习惯,把 Python 的代码加上 type hint 之后,我发现了一个问题,自动补全的时候,不会被识别为函数了,当然 eldoc 也用不了了…无论是 anaconda,还是用 lsp 都这样…
如图
不知道是个例,还是原来就这样?(突然后悔完全把原来的配置删掉)
正常,type hint本来lsp-python就还没有支持的吧。javascript也是,es6 arrow function现在好像还是显示成property。
我见到原始的 python language server (使用 jedi )是支持的,原来是 lsp-mode 的问题吗?好好奇是哪部分导致的。
但是,anaconda 和 elpy 也不支持呢…
唉,doc 倒是无所谓,imenu 和 补全不见了太伤了。。。
要是谁能推荐一个支持 type hint 的就好了!
version control没有的嘛?
关键字用花体字,好像是个不错的主意,是主题自带的还是自己加的?另外这个花体字体名字是?
诶!可以分享一下嘛?我自己用 elpy 测试了一下,还是不行(我现在怀疑是什么地方出问题了!
这是我的 elpy 的
(use-package elpy
:straight t
:init (setq elpy-rpc-backend "jedi"
elpy-rpc-python-command "python3")
(elpy-enable)
:hook ((python-mode . elpy-mode)
(elpy-mode . (lambda () (setq elpy-modules (delq 'elpy-module-flymake elpy-modules))))))
早期的混乱不堪,这次为了督促自己,彻底删掉了(
关键字那个是自己加的,
'(custom-comment ((t (:background "#3d4551" :foreground "#cbe3e7" :slant italic))))
'(font-lock-keyword-face ((t (:foreground "#ff8080" :slant italic))))
字体是 operator mono,经 nerd font patch 过。
我的 python 配置基本上就是把 spacemacs 的 python layer 里面的 anaconda mode 替换成了 elpy。基本上还是一个 giant mess …
最精简的大概就是这样吧( company 用的 spacemacs 的 global 设置,没有 python 的改动):
(use-package python
:defer t
:mode (("\\.py\\'" . python-mode))
:init
(progn
(setq-default python-indent-offset 4)))
(use-package jedi
:after python)
(use-package elpy
:after (python jedi)
:config
(progn
(elpy-enable)
(setq elpy-rpc-backend "jedi")))
有没有可能和 jedi 有关系?
jedi 啊。我也是在想。因为我这里每个都不行,而,大家补全都是用 Jedi…不过也有可能是 python 版本的问题,我已经用着 3.7 了。我去试试看
对了,乃 Jedi 版本是什么?
λ pip show jedi
Name: jedi
Version: 0.12.1
Summary: An autocompletion tool for Python that can be used for text editors.
Home-page: https://github.com/davidhalter/jedi
Author: David Halter
Author-email: [email protected]
License: MIT
Location: /usr/local/lib/python3.7/site-packages
Requires: parso
Required-by: python-language-server, ptpython, ipython
和你的基本一样
Name: jedi
Version: 0.12.1
Summary: An autocompletion tool for Python that can be used for text editors.
Home-page: https://github.com/davidhalter/jedi
Author: David Halter
Author-email: [email protected]
License: MIT
Location: ~/anaconda3/lib/python3.7/site-packages
Requires: parso
Required-by: ipython
神奇!我单独弄个只有 elpy 的环境试试看…
还是不行🙅…如果可以的话,可以用一用看您的完整的设置吗?(
感谢!我去试试看
operator mono不是免费的,还特别贵。。有什么别的花体mono字体不?
如果 imenu 识别不出来,就要看看你把 imenu-generic-expression
变量改成什么样了,跟其他都无关。
在我这边无论 imenu 还是 lsp-mode 都正常:
没准是你的 imenu 设置错误,导致了一些列问题。
现在 imenu 倒是正常的,就是 company 出不来… (可以试试看乃的配置嘛?
我的 company 没有特别针对 python 做任何设置。你应该检视自己的配置,把不必要的配置去掉(二分法)试试,而不是看别人的。