12

是否可以让 flymake-mode 意识到球拍文件中的语法(或其他)错误,例如对 erlang 或 python 所做的那样?如果重要的话,我正在使用 geiser 模式进行球拍。

4

1 回答 1

9

这可能很容易,因为 Racket 以标准的 line:column 格式吐出警告消息。

您甚至不需要调用编译器——只需通过racket the-file. 但作为一个半边注,一个更好的命令行是racket -qf the-file. 运行上面的代码的事情是它实际上会......运行它。更具体地说,它加载模块定义,然后调用它。使用-f它只会加载定义但不会调用它,因此不会执行运行时。请注意,这假定该文件是一个只有一个模块的文件,这是所有以#lang.

更新:我试过了,确实很容易设置。我已经在邮件列表上发布了这段代码:

(defun flymake-racket-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 "racket" (list "-qf" local-file))))
(push '("\\.rkt\\'" flymake-racket-init)
      flymake-allowed-file-name-masks)
于 2012-05-21T13:22:56.570 回答