Emacs-Can';不要让Flymake使用JSHint

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与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-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键退出)