flymake: Example---Configuring a tool called directly
4.2.1 Example—Configuring a tool called directly
------------------------------------------------
In this example, we will add support for ‘perl’ as a syntax check tool.
‘perl’ supports the ‘-c’ option which does syntax checking.
First, we write the ‘init-function’:
(defun flymake-perl-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 "perl" (list "-wc " local-file))))
‘flymake-perl-init’ creates a temporary copy of the buffer contents
with the help of ‘flymake-init-create-temp-buffer-copy’, and builds an
appropriate command line.
Next, we add a new entry to the ‘flymake-allowed-file-name-masks’:
(setq flymake-allowed-file-name-masks
(cons '(".+\\.pl$"
flymake-perl-init
flymake-simple-cleanup
flymake-get-real-file-name)
flymake-allowed-file-name-masks))
Note that we use standard ‘cleanup-function’ and ‘getfname-function’.
Finally, we add an entry to ‘flymake-err-line-patterns’:
(setq flymake-err-line-patterns
(cons '("\\(.*\\) at \\([^ \n]+\\) line \\([0-9]+\\)[,.\n]"
2 3 nil 1)
flymake-err-line-patterns))