Flymake Fortran G95

Bare minimum setup for using FlyMake with g95 Fortran:

;; minimal, non-make g95 setup
(defun flymake-g95-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 "/usr/local/bin/g95" (list "-c" local-file))))

(setq flymake-allowed-file-name-masks
      (cons '(".+\\.[fF]90$"
	      flymake-g95-init
	      flymake-simple-cleanup
	      flymake-get-real-file-name)
	    flymake-allowed-file-name-masks))

(push '("^In file \\(.+\\):\\([0-9]+\\)" 1 2) flymake-err-line-patterns)

;; Note: can't also pickup error description because flymake
;; parses errors one line at a time -- multi-line error output
;; would need to be handled with a helper script or a new elisp
;; function.

Should refactor toward FlymakeShell’s implementation.