;;; wisp-mode.el --- Major mode for editing wisp: Whitespace-to-Lisp
;; Copyright (C) 2013 Arne Babenhauserheide <arne_bab@web.de>
;; Author: Arne Babenhauserheide <arne_bab@web.de>
;; Version: 0.0
;; Keywords: languages, lisp
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License
;; as published by the Free Software Foundation; either version 3
;; of the License, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
(require 'scheme)
(define-derived-mode wisp-mode
emacs-lisp-mode "Wisp"
"Major mode for whitespace-to-lisp files.
\\{wisp-mode-map}"
; :group wisp
(set (make-local-variable 'indent-tabs-mode) nil)
(set (make-local-variable 'comment-start) "; ")
(set (make-local-variable 'font-lock-comment-start-skip) ";+ *")
(set (make-local-variable 'parse-sexp-ignore-comments) t)
(set (make-local-variable 'font-lock-defaults)
'((scheme-font-lock-keywords
scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
nil ; keywords only
nil ; case fold
(("_" . "-")) ; syntax alist
backward-paragraph)) ; syntax begin
(set (make-local-variable 'mode-require-final-newline) t))
(font-lock-add-keywords 'wisp-mode
'(("^ *\\(\\w+\\)\\| : *\\(\\w+\\)" . 'font-lock-function-call-face)
("^ *\\(\\w+\\)\\| : *\\(\\w+\\)" . 'font-lock-function-call-face)))
(provide 'wisp-mode)
;;; wisp-mode.el ends here