【发布时间】:2021-03-21 17:10:55
【问题描述】:
我正在使用lsp for Python。我想知道一个对象的功能,如果没有定义,lsp 可以使用flycheck 或jedi 给出错误/警告或下划线吗?我知道这很有挑战性,我只是想知道这是否可能。
示例python代码:
class World():
def hello():
print("hello")
obj = World()
obj.hello()()
obj.foo() # <=== hoping to see: No definitions found for: foo and underline foo()
~~~~~~~~~
由于foo()不是World下的对象;我希望lsp 给我一条警告消息,让我知道该函数在对象定义下不存在。
可在此处查看示例配置:https://github.com/rksm/emacs-rust-config
注释掉
9..35和48行并添加以下(use-package python :ensure nil)保存和安装包。然后打开一个python文件,M-x lsp启动lsp,
【问题讨论】:
-
Python 真的不容易静态分析。如果 linter 可以在最简单的情况下执行此操作,我会感到非常惊讶。
-
老实说,我不确定 linter 能否做到这一点,我对此感到好奇。当我尝试将光标放在不存在的模块上并尝试跳入它时,flycheck 返回该模块不存在,但动态我什么也没说
-
@amalloy 但也许是绝地 (github.com/davidhalter/jedi)
标签: python emacs jedi flycheck