这个是单独写在 user-config
的么, 我尝试了一下也没有效果, 好像是我少了 dom 的那部分文件似的, 因为别的提示都是正常的
我实在是不懂 spacemacs 应该写在哪里,没有效果和初始化代码没有执行是不同的,不应该在一个不确定的基础上去解决问题,那几行代码你都可以手动执行。
可以正常执行, 但是就是没效果。。
郁闷了, 晚上回去看看Mac上, 不过我的项目里确实没有 .tern-port
文件, 即使这样 emacs 里面的 tern-mode
还是正常的
没有 .tern-port 就是 tern 服务没有启动,这个是 emacs 之外的。前面也已经说了,无非就是要让 tern 服务跟 emacs 的 tern-mode 对接起来:
- 安装 tern
- 启动 tern 2.1 通过配置 Emacs 让它自动运行 2.2 或者,在 ternminal 手动运行
如果配置没效果,一定是当中某个环节出错了。
当前目录下没有 .tern-project 文件
刚想起来, 忽略了个东西, 手动设置 tern-use-port
的时候, 第一个参数填 port
, 第二个 server
填什么。。
我填的 localhost
手动去项目里启动才有
可以不填,默认是 127.0.0.1
手动启动 tern 之后有 .tern-port
文件了。
而且 emacs 里面的 tern-know-port
和 .tern-port
的一样, 但是还是没作用。。
真是醉了。。
就是一个小小的配置,为什么会讨论这么久。把下边代码保存到 /path/to/test-tern.el 然后按照 Usage 跑起来:
;;; Usage:
;;;
;;; mkdir /path/to/testdir/
;;; cd /path/to/testdir/
;;; /path/to/emacs -nw -Q -l /path/to/test-tern.el
;;;
(toggle-debug-on-error)
(setq package-user-dir (format "%s/elpa--test-tern/%s" user-emacs-directory emacs-version))
(setq package-archives
'(("gnu" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/"))) ;; For China mainland
;; '(("gnu" . "http://elpa.emacs-china.org/gnu/")
;; ("melpa" . "https://melpa.org/packages/")))
(package-initialize)
(defmacro try-install (pkg)
`(unless (package-installed-p ,pkg)
(package-refresh-contents)
(package-install ,pkg)))
(try-install 'tern)
(try-install 'company)
(try-install 'company-tern)
;; ------------------------------------------------------------------
(add-hook 'after-init-hook
'(lambda ()
(let ((value (find-file-noselect "test.js" nil nil nil)))
(if (listp value)
(mapcar 'switch-to-buffer (nreverse value))
(switch-to-buffer value)))
(company-mode 1)
(tern-mode 1)
(insert "// Press `M-x company-tern` to complete\n")
(insert "document.get")
))
(run-hooks 'after-init-hook)
;;; test-tern.el ends here
版本问题?我这边是:
$ npm view tern
{ name: 'tern',
description: 'A JavaScript code analyzer for deep, cross-editor language support',
'dist-tags': { latest: '0.21.0' },
...
一个版本。。。。。
$ npm view tern
{ name: 'tern',
description: 'A JavaScript code analyzer for deep, cross-editor language support',
'dist-tags': { latest: '0.21.0' },
好像真是这个问题,因为我有个 ~/.tern-config:
{
"libs": [
"browser",
"jquery"
],
"plugins": {
"node": {}
}
}
所以即使 ~/testdir/ 目录下没有任何配置,它也会起作用
还真是。。。
我在home目录创建了个 .tern-project
然后把你这段复制进去重启 emacs 就都好了.
话说你这个文件是弄什么生成的, 我的咋没自动生成呢~
@xiyang @twlz0ne thank you very much!
时间长了我也不记得有这个 ~/.tern-config 的存在了。我的配置文件里倒是写了一个 tern/create-project-file
函数,用来配置 eslint 等等针对当前项目的的选项。
厉害! it works.
这个问题还是挺坑的, 困扰了我很久。。