JavaScript模式下etags无法和其他补全一起使用

工作目录如上图,已设置tags-table-list指向当前目录下TAGS.输入f只有如上补全

而我用M-x调出company-etags如下:

image

**

有办法让company-etags加入到JavaScript模式下后端补全吗

** 系统:Ubuntu16.04 emacs版本:27.0.50 spacemacs版本:0.200.10

看看company-backends有没有etags。PS: orange现在提问起来和刚来的时候判若两人

貌似是有的,JavaScript模式下好像没有默认开启js-mode


现在是orangepro,嘻嘻

  • 哦那就不知道了。

  • js2-mode继承自js-mode,加了自己解析出的语法树等棒棒的特性。(emacs默认倾向使用正则进行静态分析,比较弱)

  • company-backends-js2-mode是一个default,新建一个js2-mode buffer会把它的值赋给buffer-local的company-backends。通常他俩一样,但是某些时候比如刚刚改过company-backends-js2-mode,当前buffer就会是老的值,之后打开的会是新的值。

也就是说,我打开js文件要手动打开js-mode或者js2-mode?

底下那个modeline会有major-mode的,或者describe-mode可以看到,spacemacs打开.js默认就是js2-mode。你这个问题我不知道是为啥。

image 你的也长这样?

查看下auto-mode-alist里面对js文件的打开mode定义,有可能抄了一些配置玩坏了

image

这里貌似没有针对打开js文件启用相应mode的定义

那就自己加一个。

可参考别人的配置。https://github.com/syl20bnr/spacemacs/blob/develop/layers/+lang/javascript/packages.el#L101

为什么不试试company-tern

那个不是已经包含在js2-mode的后端补全了吗

补充下,https://github.com/ananthakumaran/tide 据说补全效果比tern要好

感谢大佬,哈哈