这个加了,也没用。暂时回去用原始的 company 了, pyls 没任何问题。company-posframe 是那个 posframe 一直在闪动。 company-box 会有报错。我一会录制一个屏幕。
(require 'lsp-python-ms)
(use-package lsp-python-ms
:defer t
:demand
; :ensure nil
; :hook (python-mode . lsp)
:config
(setq lsp-python-ms-dir
(expand-file-name "~/.local/lib/pls/output/bin/Release"))
(setq lsp-python-ms-executable
"~/.local/lib/pls/output/bin/Release/linux-x64/publish/Microsoft.Python.LanguageServer"))
(use-package pipenv
; :hook (python-mode . pipenv-mode)
:hook (python-mode . (lambda () (pipenv-mode) (pipenv-activate) (lsp)))
:init
(setq
pipenv-projectile-after-switch-function
#'pipenv-projectile-after-switch-extended))
环境是emacs27.0.5,doom emacs
这个找 vscode 里面的 languageserver 的方法,应该推广啊, 我感觉比自己去编译好多了。
在Mac下找不到。。只有一堆py和js文件。
同一个虚拟环境,奇怪的是,vscode直接安装python extension马上就能用了。Emacs如果用自己编译的,还得索引很久…一个多钟还没完成。
这段改成这样更合适
(use-package lsp-python-ms
:defer t
:hook (python-mode . (lambda ()
(require 'lsp-python-ms)
(lsp)))
:config
(setq lsp-python-ms-dir
(expand-file-name "~/.local/lib/pls/output/bin/Release"))
(setq lsp-python-ms-executable
"~/.local/lib/pls/output/bin/Release/linux-x64/publish/Microsoft.Python.LanguageServer"))
另外,如果直接用VSCode的插件,直接做一个symlink就行了,都不用单独设置。 参考我的配置:
理论上Win10上应该是没问题的,查查Emacs的其他设置,比如:
(setq company-lsp-cache-candidates 'auto)
(setq inhibit-compacting-font-caches t)
如果安装了vscode,这个方法就挺好。缺点是依赖有点多,除了VSC还要fd。
我突然想到,能否自动下载这个extension,像lsp-java做法一样,就更方便了。
我按照上面的配置,会报中央的错误:
Compiler-macro error for lsp–workspace-client: (wrong-number-of-arguments ((t) (_cl-whole-arg cl-x) “compiler-macro for inlining lsp--workspace-client'." (cl-block lsp--workspace-client--cmacro (cl--defsubst-expand (quote (cl-x)) (quote (cl-block lsp--workspace-client (or (lsp--workspace-p cl-x) (signal (quote wrong-type-argument) (list (quote lsp--workspace) cl-x))) (aref cl-x 5))) nil nil nil cl-x))) 1) Compiler-macro error for lsp--client-action-handlers: (wrong-number-of-arguments ((t) (_cl-whole-arg cl-x) "compiler-macro for inlining
lsp–client-action-handlers’.” (cl-block lsp–client-action-handlers–cmacro (cl–defsubst-expand (quote (cl-x)) (quote (cl-block lsp–client-action-handlers (or (lsp–client-p cl-x) (signal (quote wrong-type-argument) (list (quote lsp–client) cl-x))) (aref cl-x 11))) nil nil nil cl-x))) 1)
应该是你use-package的配置不一样。试试这个:
(use-package lsp-python-ms
:defer t
:hook (python-mode . (lambda ()
(require 'lsp-python-ms)
(lsp))))
我真的没辙了上午重启emacs还可以正常连接的,下午回来有链接不上了,显示没有服务,我的emacs 26.2的,这到底是什么机制啊
问题不是出自于lsp-python-ms,而是出自于lsp-mode,不晓得是不是因为我用了最新的lsp-mode导致的,我看这个版本是6月18号刚发布的
楼主,刚才又重新clone了你的centaur,新建一个py文件,lsp显示 .py not in project or it is blacklisted,怎么设置?
看见后面的评论让我打消了尝试的念头。。。
确实,系统版本,lsp版本都会影响性能,我还是用简单的anaconda,关注一下lsp的进展就行
我今天一天都被这东西废了感觉
可以参考这两个
不解为什么都在说不行,我用起来体验很好呀,并没有什么问题啊,上面也录了视频。可惜参考下lsp-python-ms的README,照着做不会有问题。
有没有办法选择性的执行 (pipenv-activate)
?毕竟不是所有的文件在虚拟环境中
(use-package lsp-python-ms
:defer t
:hook (python-mode . (lambda ()
(require 'lsp-python-ms)
(pipenv-activate)
(lsp)))
这么写太粗暴了。