Emacs-Can';不要让Flymake使用JSHint
我正试图让JSHint与Flymake合作Emacs-Can';不要让Flymake使用JSHint,emacs,flymake,jshint,Emacs,Flymake,Jshint,我正试图让JSHint与Flymake合作 jshint确实安装在/opt/bin中,并且可以正常工作/opt/bin位于Emacs的执行路径中 我已经遵循并在我的init.el: (defun flymake-jshint-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local-fil
jshint
确实安装在/opt/bin
中,并且可以正常工作<代码>/opt/bin位于Emacs的执行路径中
我已经遵循并在我的init.el
:
(defun flymake-jshint-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "jshint" (list local-file))))
(setq flymake-err-line-patterns
(cons '("^ [[:digit:]]+ \\([[:digit:]]+\\),\\([[:digit:]]+\\): \\(.+\\)$"
nil 1 2 3)
flymake-err-line-patterns))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.js\\'" flymake-jshint-init))
打开JavaScript文件时,我的modeline显示为:
[(Javascript Flymake* AC)]
<>这是奇怪的,因为在使用C++或Python的Flymake时,通常不会出现<代码> */COD>。根据Flymake文档,Flymake*
表示“Flymake正在运行”。然而,Flymake没有显示任何错误
我已经检查了*消息*
缓冲区,但它只列出了几行Fontifying foo.js。。。(regexps…………)
。没有错误
其他建议?我找到了一个名为的项目,并尝试了一下。它创建了一个名为*jshint mode*
的缓冲区,显示了错误:jshint找不到强大的模块
我在Emacs中运行M-x setenv来设置
NODE\u PATH
,这样jshint
就可以找到强大的库。我还在/etc/profile
中设置节点路径
,尝试使用M-:
执行(setq flymake log level 3)
,这将导致flymake将调试信息打印到*消息*
,这对我来说很好——这段代码可能会给你一个关于你到底出了什么问题的线索
您也可以考虑<代码> JS2模式< /C>,它提供了一些语言感知的LINT警告,而不需要运行外部进程。
对我不起作用(我使用Linux MINT 14’纳迪娅’)——我在“FrimeSo配置”中获得错误。当它运行
curl
时,与运行jshint脚本的Node.js实例对话。这让人费解,我对ELisp不太熟悉,无法处理.el
文件
我通过直接转到github上的Emacs fork解决了这个问题,它现在内置了对jshint的支持(它需要安装为npm-g install jshint
,如果还没有安装,则需要安装npm
和node.js)。这使事情顺利进行
还有一个警告:在我的Linux机器上,node
是/usr/sbin
中已经存在的一个可执行文件,我必须在/usr/local/bin
中创建一个名为node
的符号链接来覆盖前者。这是必要的,因为LinuxMint的Node.js二进制文件(可能也是Ubuntu,我还没有检查)取名为nodejs
,这将导致许多使用Node
二进制文件名编写的脚本失败。您可以通过键入node
来测试这一点:如果它是预先存在的二进制文件,则通常会以静默方式返回提示,但如果它是node.js,则会以
提示您(您可以按住Ctrl-D键退出)