我在试着让JSHint和Flymake合作。
/opt/bin中确实安装了jshint,并且可以正常工作。/opt/bin在Emacs的exec-path中。
我关注了the directions on the EmacsWiki,并在我的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文件时,我的模型线显示为:
[(Javascript Flymake* AC)]这很奇怪,因为当我在C++或Python中使用Flymake时,*通常不会出现。根据Flymake文档,Flymake*的意思是"Flymake当前正在运行“。然而,Flymake没有显示任何错误。
我检查了*Messages*缓冲区,但它只列出了几行Fontifying foo.js... (regexps...................)。没有错误。
还有其他建议吗?
发布于 2011-10-12 17:42:37
尝试使用M-:执行(setq flymake-log-level 3),这将导致flymake将调试信息打印到*Messages*中。
Here's how I use flymake with jslint,它对我来说工作得很好--这些代码可能会给您一个线索,告诉您哪里出了问题。
您还可以考虑js2-mode,它提供了一些语言感知的类似于lint的警告,而无需运行外部进程。
发布于 2013-03-19 15:52:46
jshint-mode对我不起作用(我使用的是Linux Mint14 'Nadia') --当运行curl与运行jshint脚本的Node.js实例对话时,"flymake's configuration“出现错误。这很令人费解,而且我不熟悉ELisp来处理.el文件。
我通过直接转到github上的Emacs解决了这个问题,它现在支持flymake project内置(它需要作为npm -g install jshint安装,这反过来需要你安装npm和node.js,如果你还没有安装的话)。这就让事情变得正常了。
还有一个警告:在我的Linux机器上,node是一个已经存在于/usr/sbin中的可执行文件,我必须在/usr/local/bin中创建一个名为node的符号链接来覆盖前者。这是必要的,因为Linux Mint的Node.js二进制文件(可能是Ubuntu,我还没有检查过)被命名为nodejs,这将导致许多使用二进制名node编写的脚本失败。您可以通过输入node来测试:如果它是预先存在的二进制文件,它通常会默默返回到提示符,但如果它是Node.js,它会提示您输入一个> (您可以按Ctrl-D退出)
https://stackoverflow.com/questions/7731559
复制相似问题