根据这个问题,为了让 Flymake 工作,您必须在 makefile 中添加一个特殊目标。我不想这样做。Flymake 是否有其他替代方案,不需要您弄乱makefile?
问问题
489 次
1 回答
5
不对。
您无需更改 makefile 即可运行 flymake。正如 jtahlborn 的评论所说,flymake 是一个框架,可以在缓冲区更改时运行某些东西。它可以是任何东西。你只需要告诉 flymake 要运行什么。
例如,有一个名为 csslint 的程序。它检查 CSS 文件并标记任何警告或非标准用法。CSS 的皮棉。当我编辑一个 css 文件(在 css 模式下)时,我希望 flymake 运行 CSSlint 并向我展示问题。我就是这样做的。
(defun cheeso-flymake-css-init ()
"the initialization fn for flymake for CSS"
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'cheeso-flymake-create-temp-intemp))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list (concat (getenv "windir") "\\system32\\cscript.exe")
(list "c:\\users\\cheeso\\bin\\csslint-wsh.js" "--format=compiler" local-file))))
(defun cheeso-css-flymake-install ()
"install flymake stuff for CSS files."
(add-to-list
'flymake-err-line-patterns
(list css-csslint-error-pattern 1 2 3 4))
(let* ((key "\\.css\\'")
(cssentry (assoc key flymake-allowed-file-name-masks)))
(if cssentry
(setcdr cssentry '(cheeso-flymake-css-init))
(add-to-list
'flymake-allowed-file-name-masks
(list key 'cheeso-flymake-css-init)))))
(eval-after-load "flymake"
'(progn
(cheeso-css-flymake-install)))
这在加载 flymake 时运行 fn。fn 在 flymake 的 CSS 文件关联列表中安装一个条目。该列表中的条目告诉 flymake 运行什么命令。
还有一点要告诉 flymake 如何解析 CSS lint 错误消息。但这是一般的想法。
于 2012-03-26T05:00:08.050 回答