David Megginson wrote: > Great. Let me know when you have time to port it from vim to an > editor.
:) There's already a nasal-mode.el, actually. It's attached; it's previously been hidden in the source tarball on the nasal project website. It mostly works. I did it by taking a chainsaw to awk-mode with a blindfold on, and trying to avoid changing the stuff that confused me. Elisp just isn't my thing. :) Andy
;; nasal-mode.el ;; ;; A major mode for writing Nasal code. ;; Copyright (C) 2003 Andrew Ross ;; ;; Based very closely on awk-mode.el as shipped with GNU Emacs 21.2 ;; Copyright (C) 1988,94,96,2000 Free Software Foundation, Inc. ;; ;; It should be sufficient to drop this into your Emacs site-lisp ;; directory (/usr/share/emacs/site-lisp on most linux distributions) ;; and add a line: ;; ;; (require 'nasal-mode) ;; ;; ...to your .emacs file. All files with a .nas extension should ;; then be associated with nasal mode automatically. I am *not* an ;; elisp hacker, though, so YMMV. ;; (defvar nasal-mode-syntax-table nil "Syntax table in use in Nasal-mode buffers.") (if nasal-mode-syntax-table () (setq nasal-mode-syntax-table (make-syntax-table)) ; Operator characters are "punctuation" (modify-syntax-entry ?! "." nasal-mode-syntax-table) (modify-syntax-entry ?* "." nasal-mode-syntax-table) (modify-syntax-entry ?+ "." nasal-mode-syntax-table) (modify-syntax-entry ?- "." nasal-mode-syntax-table) (modify-syntax-entry ?/ "." nasal-mode-syntax-table) (modify-syntax-entry ?~ "." nasal-mode-syntax-table) (modify-syntax-entry ?: "." nasal-mode-syntax-table) (modify-syntax-entry ?. "." nasal-mode-syntax-table) (modify-syntax-entry ?, "." nasal-mode-syntax-table) (modify-syntax-entry ?\; "." nasal-mode-syntax-table) (modify-syntax-entry ?= "." nasal-mode-syntax-table) (modify-syntax-entry ?< "." nasal-mode-syntax-table) (modify-syntax-entry ?> "." nasal-mode-syntax-table) ; Underscores are allowed as "symbol constituent" (modify-syntax-entry ?_ "_" nasal-mode-syntax-table) ; Backslash escapes; pound sign starts comments that newlines end. (modify-syntax-entry ?\\ "\\" nasal-mode-syntax-table) (modify-syntax-entry ?\# "<" nasal-mode-syntax-table) (modify-syntax-entry ?\n ">" nasal-mode-syntax-table) ; Square brackets act as parenthesis (modify-syntax-entry ?\[ "(]" nasal-mode-syntax-table) (modify-syntax-entry ?] ")" nasal-mode-syntax-table)) (defconst nasal-font-lock-keywords (eval-when-compile (list (cons (regexp-opt '("parents" "me" "arg") 'words) 'font-lock-variable-name-face) (regexp-opt '("and" "or" "nil" "if" "elsif" "else" "for" "foreach" "while" "return" "break" "continue" "func") 'words) (list (regexp-opt '("size" "keys" "append" "pop" "int" "streq" "substr" "contains" "typeof") 'words) 1 'font-lock-builtin-face) )) "Nasal-specific syntax to be hilighted.") (define-derived-mode nasal-mode c-mode "Nasal" "Major mode for editing Nasal code. This is a C mode variant customized for Nasal's syntax. It shares most of C mode's features. Turning on Nasal mode runs `nasal-mode-hook'." (set (make-local-variable 'paragraph-start) (concat "$\\|" page-delimiter)) (set (make-local-variable 'paragraph-separate) paragraph-start) (set (make-local-variable 'comment-start) "# ") (set (make-local-variable 'comment-end) "") (set (make-local-variable 'comment-start-skip) "#+ *") (setq font-lock-defaults '(nasal-font-lock-keywords nil nil ((?_ . "w"))))) (provide 'nasal-mode) ;; Set us up to load by default for .nas files (setq auto-mode-alist (append '(("\\.nas$" . nasal-mode)) auto-mode-alist))
_______________________________________________ Flightgear-devel mailing list [EMAIL PROTECTED] http://mail.flightgear.org/mailman/listinfo/flightgear-devel