2012-05-20 9 views
12

¿Es posible hacer que flymake-mode tenga en cuenta la sintaxis (u otros) errores en los archivos de racket como lo hace, por ejemplo, para erlang o python? Estoy usando geiser-mode para raqueta, si es importante.Raqueta flymake-mode para emacs

Respuesta

9

Probablemente sea muy fácil, ya que Racket escupe mensajes de advertencia en una línea estándar: formato de columna.

Ni siquiera necesita invocar el compilador, basta con ejecutar el código a través del racket the-file. Pero como nota parcial, una línea de comando aún mejor para usar es racket -qf the-file. La cuestión de ejecutar el código como arriba es que realmente ... lo ejecutará. Más específicamente, carga la definición del módulo y luego lo invoca. Con -f solo cargará la definición pero no la invocará y, por lo tanto, el tiempo de ejecución no se ejecutará. Tenga en cuenta que esto supone que el archivo es uno que tiene solo un módulo, que es lo que obtiene para todos los archivos que comienzan con #lang.

Actualización: Lo probé, y de hecho fue fácil de configurar. He publicado este código en 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)