###1.问题 我准备配置sass的auto-complete,已经做了如下配置,却依然失败。 配置:
- (add-hook 'sass-mode-hook 'auto-complete-mode) ;; 启动auto-complete
- 在C-h v中找到ac-modes,把sass-mode添加到ac-modes列表中 以上两项配置都确定是ok的。 但是*.sass文件下 auto-complete依然不起效果,*.scss的倒是有。
2.我的尝试
经过近一步谷歌,我发现这个配置,它作了4件事情:
- 配置electric(不是很清楚这个东西是什么,应该是缩减,与自动补全无关,跳过)
- 配置ac-sources
- 配置ac-modes,把sass-mode加入ac-modes
- 启动rainbow-mode (与补全无关) 对比一下,我想应该是ac-sources没有配置,但是我把它的ac-sources 复制到spacemacsd的用户自定义配置,重启后报错:File mode specification error: (void-variable ac-sources) ;; ac-sources这个变量非法
###3.我的猜想、疑惑、问题:
- emacs的auto-complete 是不是没有天然支持sass?不然scss都不用配置ac-sources,为什么sass需要配置ac-sources?
- ac-sources这个变量是什么含义?C-h v里面没有说明这个变量的含义,官方也没具体说明
- 为什么我复制了那段配置ac-sources的配置之后,会报ac-sources 不存在?并且这时候C-h v里面也找不到ac-sources这个变量了
4.我的配置:
;; 在custom-set-variables中(spacemacs自动生成的):这里配置了ac-modes,添加了sass-mode
'(ac-modes
(quote
(sass-mode emacs-lisp-mode lisp-mode lisp-interaction-mode slime-repl-mode nim-mode c-mode cc-mode c++-mode objc-mode swift-mode go-mode java-mode malabar-mode clojure-mode clojurescript-mode scala-mode scheme-mode ocaml-mode tuareg-mode coq-mode haskell-mode agda-mode agda2-mode perl-mode cperl-mode python-mode ruby-mode lua-mode tcl-mode ecmascript-mode javascript-mode js-mode js-jsx-mode js2-mode js2-jsx-mode coffee-mode php-mode css-mode scss-mode less-css-mode elixir-mode makefile-mode sh-mode fortran-mode f90-mode ada-mode xml-mode sgml-mode web-mode ts-mode sclang-mode verilog-mode qml-mode apples-mode)))
;; 在dotspacemacs/user-config 中: 配置启动auto-complete-mode,配置ac-sources
(add-hook 'sass-mode-hook 'auto-complete-mode)
(defun configure-auto-complete-for-sass ()
(add-to-list 'ac-sources 'ac-source-css-property))
(add-hook 'sass-mode-hook 'configure-auto-complete-for-sass)