Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
file 66 lines (48 sloc) 2.184 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
;;; flymake-lua.el --- Flymake for Lua

;; Copyright (C) 2009-2014 Sébastien Roccaserra

;; Author: Sébastien Roccaserra (format "<%s%s@%s.%s>" "s" "roccaserra" "yahoo" "com")
;; Created: 07 Dec 2009
;; Keywords: lua

;; This file is not part of GNU Emacs.

;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License.
;; You may obtain a copy of the License at

;; http://www.apache.org/licenses/LICENSE-2.0

;; Unless required by applicable law or agreed to in writing, software
;; distributed under the License is distributed on an "AS IS" BASIS,
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;; See the License for the specific language governing permissions and
;; limitations under the License.

;;; Commentary:

;; Usage:
;; (require 'flymake-lua)
;; (add-hook 'lua-mode-hook 'flymake-lua-load)
;;
;; Note: literally stolen from Steve Purcell's Flymake Ruby.
;; See http://github.com/purcell/flymake-ruby

;;; Code:

(require 'flymake)

(defgroup flymake-lua nil
  "Flymake Lua Customizations")

(defcustom flymake-luac-program "luac"
  "How to invoke luac. Other possible value: /usr/local/bin/luac."
  :type 'file
  :group 'flymake-lua)

(defun flymake-create-temp-in-system-tempdir (filename prefix)
  (make-temp-file (or prefix "flymake-lua")))

(defun flymake-lua-init ()
  (list flymake-luac-program
        (list "-p" (flymake-init-create-temp-buffer-copy
                    'flymake-create-temp-in-system-tempdir))))

(defvar flymake-lua-allowed-file-name-masks '(("\\.lua\\'" flymake-lua-init)))
(defvar flymake-lua-err-line-patterns '(("^.*luac[0-9.]*\\(.exe\\)?: *\\(.*\\):\\([0-9]+\\): \\(.*\\)$"
                                    2 3 nil 4)))

;;;###autoload
(defun flymake-lua-load ()
  (interactive)
  (when (and (not (null buffer-file-name)) (file-writable-p buffer-file-name))
    (set (make-local-variable 'flymake-allowed-file-name-masks) flymake-lua-allowed-file-name-masks)
    (set (make-local-variable 'flymake-err-line-patterns) flymake-lua-err-line-patterns)
    (flymake-mode t)))

(provide 'flymake-lua)
;;; flymake-lua.el ends here
Something went wrong with that request. Please try again.