已安装了 react
的 layer
,
js
代码的补全跟之前一样正常, 但是 React
的方法都没有补全. 如: componentDidMount()
这些方法都没有提示. 是跟配置 .tern-project
有关系么?
而且, 只要开启了 react-mode
, 智能提示就有点乱, 连符号都出智能提示, 比如按了逗号或者分好什么的都会弹出来:
这个 layer
唯一的好处就是缩进和高亮是正常的.
已安装了 react
的 layer
,
js
代码的补全跟之前一样正常, 但是 React
的方法都没有补全. 如: componentDidMount()
这些方法都没有提示. 是跟配置 .tern-project
有关系么?
而且, 只要开启了 react-mode
, 智能提示就有点乱, 连符号都出智能提示, 比如按了逗号或者分好什么的都会弹出来:
这个 layer
唯一的好处就是缩进和高亮是正常的.
按了逗号弹出来是prefix-length太短了:
tern一直没用,应该是当初在windows上碰上卡死了之类的,最近用mac发现web-mode下company-css巨卡,于是禁用了,什么库啊什么spec啊,不存在的,只要company-dabbrev就够了。
把web-mode-hook改下吧,用这个hook还是有问题,改成company-mode-hook就好了
不是啊,这个0还是1是spacemacs加在web-mode-hook里的,describe-variable web-mode-hook
可以看到有spacemacs的函数,那里面改了prefix-length
不是这个原因, 我的前缀就是设置的 2.
是这样的,我也看了html
这个layer
中关于company
的设置的源码,确实如你所说的一样,但是用
web-mode-hook
在我这里这个设置真的是时灵时不灵的,后来我想这个变量其实设置的还是company-mode
里的变量,只是设置的时间是加载web-mode
之后,我要统一设置company
的补全行为,我现在的配置是这样的:
在我自己的layer里:
funcs.el:
(defun czh/company-init ()
"set my own company-idle-delay and company-minimum-prefix-length"
(interactive)
(setq-local company-idle-delay czh/company-idle-delay)
(set (make-local-variable 'company-minimum-prefix-length)
czh/company-minimum-prefix-length))
config.el:
(defvar czh/company-minimum-prefix-length 1
"my own variable for company-minimum-prefix-length")
(defvar czh/company-idle-delay 0
"my own variable for company-idle-delay")
(add-hook 'company-mode-hook #'czh/company-init)
spacemacs这个配置在设置web-mode的时候重新设置了company的company-minimum-prefix-length这个变量
妥妥的解决了. 多谢啦兄弟.
直接setq-default
不行么?
不行的,在spacemacs
的master
分支里html layer
里这部分的设置是
(add-hook 'web-mode-hook 'spacemacs//company-web-minimum-prefix-length))
(defun spacemacs//company-web-minimum-prefix-length ()
"Set company minimum prefix length to 0 for the current buffer only."
(set (make-local-variable 'company-minimum-prefix-length) 0))
在develop
分支里的设置是
(spacemacs|add-company-backends
:backends (company-web-html company-css)
:modes web-mode
:variables
;; see https://github.com/osv/company-web/issues/4
company-minimum-prefix-length 0)
这里的spacemacs|add-company-backends
是spacemacs
在develop
分支定义的一个宏,在master
分支是没有的,为了兼容master
分支,就直接按照master
分支的方法修改了
spacemacs 官方合并了一个解决方案,后面应该不用自己配置了。