lsp-mode 目前似乎成熟了?

已经支持了,但我没测试。你可以更新试试

是的,必须保存到文件,否则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 了。

2 个赞

感谢seagle0128! 我使用的是debian9,emacs版本是25,今天编译安装了26.1,用的是你的最新配置,很好用。 有个问题想请教一下。我自己有一些使用习惯的配置,是直接在你原有的配置上面修改,还是另外弄成一个文件好呢?如果是自己弄成一个文件,那么要怎样做才能够覆盖你的原有的配置?

很高兴你喜欢centaur emacs。 我的建议是你可以把个人配置加到custom.el和custom-post.el。variable和faces配置可以加到custom.el,其他需要覆盖或者添加的配置加到custom-post.el。README里有说明。

如果还不能满足需求,可以fork出来自己修改。个人觉得没有必要。

1 个赞

太感谢了。我试试。这样我以后就只要保存custom.el了。 以前是抄袭你的配置,随着软件的升级换代,更换修改起来也挺麻烦的。这次干脆偏译了26.1.50,直接使用你的配置。感谢你的付出!

如果只是说补全的话,确实已经可以留,但是那卡吨,真的受不了,你可以感觉下vscode补全和emacs的lsp-python补全,卡的受不了,但是确实可以用了

不客气,enjoy!

@seagle0128

用的系统是debian9,自已编译的emacs-26.1,使用你的最新配置。发现两个小问题,反馈如下:

  1. 我用的是fcitx输入法,在emacs中如果打字速度快一点,就上屏字母,打不出汉字。速度慢点没问题。后来发现只有在python中才会这样,在go中无此现象.

2.使用M-/无法给选定的代码块加注释。

3.也许是我自己的问题。您有空时看看。

  1. fcitx输入法的问题应该和配置没有关系吧。我没有遇到该问题,也不能百分之百确定。论坛有大佬开发了 pyim,你可以试试看。
  2. 增加删除注释快捷键是M-;.

我发现一个问题,如果把系统python版本从2.7改为python3,就没有这个问题。但更改系统python黙认版本会出现别的问题。因此请教一下,最简单的在emacs中选择python版本的设置该如何做。

搞一个2.7的 virtualenv ,给 emacs 专用(结合 pyvenv 包)。

请教大大,使用lsp-mode需要注意哪些东西呢?

在lsp-go中很好用。但在python中就不行,我也安装了该安装的东西了。禁用了centaur-lsp后,在python就不再出现速度一快就打不出来汉字的问题了,会不会是lsp-python的问题呢。

你可以参考centaur emacs的init-lsp.el文件,我暂时没遇到你说的问题。其实底层用的都是jedi,差别不大。

好吧。谢谢耐心回复。

别客气。我回头再看看这个问题,如果你能提供更多的线索最好了。

俩都卡么?还是vscode不卡呢?我一直用的jedi补全python,最近考虑要不要迁移到lsp