Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Racket flymake-mode for emacs

Is it possible to make flymake-mode be aware of syntax (or other) errors in racket files like it done for example for erlang or python? I'm using geiser-mode for racket, if it is matters.

like image 943
gordon-quad Avatar asked May 20 '12 18:05

gordon-quad


1 Answers

It's probably very easy, since Racket spits out warning messages in a standard line:column format.

You don't even need to invoke the compiler -- it's enough to just run the code via racket the-file. But as a semi-side-note, an even better command-line to use is racket -qf the-file. The thing about running the code as above is that it will actually ... run it. More specifically, it loads the module definition and then invokes it. Using -f it will just load the definition but not invoke it and therefore the runtime is not executed. Note that this assumes that the file is one that has just a module, which is what you get for all files that start with a #lang.

Update: I tried it, and indeed it was easy to set things up. I've posted this code on 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)
like image 57
Eli Barzilay Avatar answered Oct 15 '22 20:10

Eli Barzilay