2012-05-20 43 views
12

是否有可能让flymake模式知道球拍文件中的语法(或其他)错误,例如erlang或python?如果是问题,我使用geiser模式进行拍摄。emacs的球拍flymake模式

回答

9

这可能非常容易,因为Racket以标准行:列格式吐出警告消息。

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

更新:我试了一下,确实很容易设置。我已将此代码发布在the mailing list上:

(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)