Merge branch 'erlware'
[erlware-mode.git] / erlang-flymake.el
bloba78b32d0004da5fe3647c6b8bfd24b8a33fc6e16
1 ;; erlang-flymake.el --- Flymake support.
3 ;; Author: Mats Cronqvist
4 ;; Version: 0.1
5 ;; Keywords: erlang, flymake
6 ;; Created: 2009-05-14
8 ;; based on snippets stolen from
9 ;; http://www.emacswiki.org/emacs/FlyMake
10 ;; and
11 ;; http://www.emacswiki.org/emacs/FlymakeErlang
13 ;; to enable, put something like this in your erlang-mode-hook
14 ;; (flymake-mode)
15 ;; (local-set-key (kbd "M-'") 'erlang-flymake-next-error)
17 (if (locate-library "flymake")
18 (progn
19 (require 'flymake)
20 (defun flymake-tmp-filename(filename prefix)
21 (let*
22 ((tmp-dir (concat (getenv "HOME") "/.erlang-flymake"))
23 (tmp-name (file-name-nondirectory filename))
24 (tmp-file (concat tmp-dir "/" tmp-name)))
25 (flymake-log 3 "made temp-file: %s" tmp-file)
26 tmp-file))
27 (defun erlang-flymake-init ()
28 "Set up the command used to parse our buffer"
29 (let* ((erlang-dir (file-name-directory (locate-library "erlang")))
30 (temp-file (flymake-init-create-temp-buffer-copy
31 'flymake-tmp-filename)))
32 (list (concat erlang-dir "flymaker.sh")
33 (list temp-file default-directory))))
34 (defun flymake-siblicide()
35 "Kill all next-error capable buffers."
36 (condition-case nil
37 (progn (kill-buffer (next-error-find-buffer))
38 (flymake-siblicide))
39 (error nil)))
40 (defun erlang-flymake-next-error ()
41 "Goto next error, if any. Display error in mini-buffer."
42 (interactive)
43 (flymake-siblicide)
44 (let ((err-buf nil))
45 (condition-case err
46 (setq err-buf (next-error-find-buffer))
47 (error))
48 (if err-buf
49 (next-error)
50 (progn
51 (flymake-goto-next-error)
52 (let ((err (get-char-property (point) 'help-echo)))
53 (when err
54 (message err)))))))
55 ;; add our init file to flymake's alist of filename regexps
56 (add-to-list
57 'flymake-allowed-file-name-masks
58 '(".+\\.erl$" erlang-flymake-init))))