大半年前使用lsp-mode
感觉不是很稳定,今天试用了下,似乎成熟了很多,但还没有下定决心全面转向LSP。
大家有多少人在使用lsp-mode
呢,有什么感受没有?对lsp-ui
怎么看?
如果真的成熟稳定了,我会将Centaur Emacs 彻底转向LSP配置。
大家各抒己见吧,意见多多益善,谢谢啦!
大半年前使用lsp-mode
感觉不是很稳定,今天试用了下,似乎成熟了很多,但还没有下定决心全面转向LSP。
大家有多少人在使用lsp-mode
呢,有什么感受没有?对lsp-ui
怎么看?
如果真的成熟稳定了,我会将Centaur Emacs 彻底转向LSP配置。
大家各抒己见吧,意见多多益善,谢谢啦!
lsp-mode啓動的language server異常退出時,lsp--workspaces
裏記錄不會清除。關閉和該workspace關聯的所有buffers再重新打開依然不會啓動新language server實例。
(defvar lsp--workspaces (make-hash-table :test #'equal)
"Table of known workspaces, indexed by the project root directory.")
(setq lsp--workspaces (make-hash-table :test #'equal)
能復原,不需要重啓Emacs。
不支持tramp。有個lsp-define-tcp-client
,不知道有沒有人用。
有熱情和上游LSP制定者討論的話可以看:
textDocument/documentSymbol
的新DocumentSymbol[]
返回值
https://github.com/Microsoft/language-server-protocol/issues/327
反正我是覺得他們好用的話就用,不好用的話需要方便自己時就加ccls extension…等到document symbol hierarchyhttps://github.com/Microsoft/vscode-languageserver-node/pull/346成熟
能修lsp-ui bug的話強烈歡迎,我可以merge的(但我的Emacs水平很菜XD)
lsp-mode有個gitter https://gitter.im/emacs-lsp/lsp-mode但不太活躍。 如果用C/C++/ObjC的話,可以考慮鄙人的https://gitter.im/ccls-project/ccls(今天支持system include path推導了,macro replacement-list裏的索引也很棒了。依賴Clang C++很多libs,編譯鏈接很可能比cquery慢)
下面一些私貨(如果你開發C/C++的話,可能會有幫助,即使你是cquery用戶(
ccls有一些cquery不支持的xref拓展。
可以看這幾個檔案:
;; References w/ Role::Dynamic bit (macro expansions)
(defun ccls/references-macro ()
x
和,l
作爲前綴鍵) https://github.com/MaskRay/Config/blob/master/home/.config/doom/%2Bbindings.el
以我偶尔使用的体验来看,稳定度还欠佳。当由于某些内部/外部的原因 server 进程终止以后,lsp-mode 再也无法重启动一个新的 server 进程,只有重启 Emacs 一条路。
谢谢您的分享。看起来可以包装一个clean-lsp
或者restart-lsp
之类的function,来解决language server异常退出的情况。
@twlz0ne 你可以试试这个方案,重启Emacs太麻烦。
另外,不知道 GitHub - joaotavora/eglot: A client for Language Server Protocol servers 用起来会不会好些,目前看功能还不是很多,好处是out of box。
今天发现一个内部函数,应该可以解决server异常退出的情况。参考lsp-restart-workspace
。根据文档,会shutdown相关进程然后restart。
Centaur Emacs 准备好彻底转向LSP了吗?期待…
cnetaur-emacs已经默认启用lsp了。请先安装相应的langserver。
谢谢,赶紧去试试。
intel的cpu好像发展的不快了 arm发展的很快
没人讨论 也就成熟了
更新了README,FAQ里有怎么安装LSP的描述。目前使用起来还是不错的。
好像没有支持 lsp-php呀
目前个人没有使用php,确实没有支持。不过很容易加进去。
lsp-mode 好像不支持临时 buffer ?
已经支持了,但我没测试。你可以更新试试
是的,必须保存到文件,否则langserver找不到
尝试了一下,貌似没有原来的ac-php好用。
但是还是谢谢了!
你指自动补全功能?lsp-php应该更强大些,你看看参数需不需要调整。另外,结合lsp-ui,lsp-flycheck, lsp-imenu, xref等,很接近IDE功能了。提醒下,必须在Emacs26上才能发挥优势。
自动补全是有的,但是候选词非常少。 有可能是设置或者参数的问题。我再继续研究一下
lsp-php (其实应该说 PHP Language Server, 作为前端 lsp-php 是很无辜的) 的问题是,它没有把 vendor 纳入解析范围,所以能补全的东西少:
自己写的代码它能补全,一旦引用了 vendor 就瞎了。
APPEND 2018-09-08 11.36.15
搜罗了一下目前各种 PHP ls 的进展:
# | Language | Maintainer | Repository | Features | Memo |
---|---|---|---|---|---|
1 | JS + PHP + Python | SonarSource | GitHub - SonarSource/sonarlint-core: Core library to run SonarLint analysis | * |
|
2 | PHP | Felix Becker | GitHub - felixfbecker/php-language-server: PHP Implementation of the VS Code Language Server Protocol 🆚↔🖥 | ****** |
也就是 lsp-php 默认的后端,可惜自宫了(不分析 vendor) |
3 | PHP | Hvy Industries | GitHub - HvyIndustries/crane: PHP Intellisense/code-completion for VS Code | *** |
|
4 | PHP | Tyson Andre | GitHub - phan/phan: Phan is a static analyzer for PHP. Phan prefers to avoid false-positives and attempts to prove incorrectness rather than correctness. | ***** |
看起来很有希望(功能相对完备,又不排除 vendor): Editor-Support |
5 | PHP | Bmewburn | https://github.com/bmewburn/intelephense | ** |
@tobato 可以试试这个 phan,我很久不写 PHP 了。
感谢seagle0128! 我使用的是debian9,emacs版本是25,今天编译安装了26.1,用的是你的最新配置,很好用。 有个问题想请教一下。我自己有一些使用习惯的配置,是直接在你原有的配置上面修改,还是另外弄成一个文件好呢?如果是自己弄成一个文件,那么要怎样做才能够覆盖你的原有的配置?