]> code.delx.au - gnu-emacs/blobdiff - lisp/progmodes/autoconf.el
* progmodes/python.el: Enhancements to navigation commands.
[gnu-emacs] / lisp / progmodes / autoconf.el
index 734ae8c4e4455ea655f3b94ff393540cbdead9d7..3225fef2dfa6dc8d9843f90d7a0a16a806b7de29 100644 (file)
@@ -1,7 +1,6 @@
-;;; autoconf.el --- mode for editing Autoconf configure.in files
+;;; autoconf.el --- mode for editing Autoconf configure.ac files
 
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2012  Free Software Foundation, Inc.
 
 ;; Author: Dave Love <fx@gnu.org>
 ;; Keywords: languages
 ;;; Commentary:
 
 ;; Provides fairly minimal font-lock, imenu and indentation support
-;; for editing configure.in files.  Only Autoconf syntax is processed.
+;; for editing configure.ac files.  Only Autoconf syntax is processed.
 ;; There is no attempt to deal with shell text -- probably that will
 ;; always lose.
 
-;; This is specialized for configure.in files.  It doesn't inherit the
+;; This is specialized for configure.ac files.  It doesn't inherit the
 ;; general M4 stuff from M4 mode.
 
 ;; There is also an autoconf-mode.el in existence.  That appears to be
-;; for editing the Autoconf M4 source, rather than configure.in files.
+;; for editing the Autoconf M4 source, rather than configure.ac files.
 
 ;;; Code:
 
@@ -43,9 +42,6 @@
 (defvar autoconf-mode-hook nil
   "Hook run by `autoconf-mode'.")
 
-(defconst autoconf-font-lock-syntactic-keywords
-  '(("\\<dnl\\>" 0 '(11))))
-
 (defconst autoconf-definition-regexp
   "AC_\\(SUBST\\|DEFINE\\(_UNQUOTED\\)?\\)(\\[*\\(\\sw+\\)\\]*")
 
@@ -53,7 +49,7 @@
   `(("\\_<A[CHMS]_\\sw+" . font-lock-keyword-face)
     (,autoconf-definition-regexp
      3 font-lock-function-name-face)
-    ;; Are any other M4 keywords really appropriate for configure.in,
+    ;; Are any other M4 keywords really appropriate for configure.ac,
     ;; given that we do `dnl'?
     ("changequote" . font-lock-keyword-face)))
 
@@ -81,21 +77,16 @@ searching backwards at another AC_... command."
          (match-string-no-properties 3)))))
 
 ;;;###autoload
-(defun autoconf-mode ()
-  "Major mode for editing Autoconf configure.in files."
-  (interactive)
-  (kill-all-local-variables)
-  (use-local-map autoconf-mode-map)
-  (setq major-mode 'autoconf-mode)
-  (setq mode-name "Autoconf")
-  (set-syntax-table autoconf-mode-syntax-table)
+(define-derived-mode autoconf-mode prog-mode "Autoconf"
+  "Major mode for editing Autoconf configure.ac files."
   (set (make-local-variable 'parens-require-spaces) nil) ; for M4 arg lists
   (set (make-local-variable 'defun-prompt-regexp)
        "^[ \t]*A[CM]_\\(\\sw\\|\\s_\\)+")
   (set (make-local-variable 'comment-start) "dnl ")
-  (set (make-local-variable 'comment-start-skip) "\\(?:\\<dnl\\|#\\) +")
-  (set (make-local-variable 'font-lock-syntactic-keywords)
-       autoconf-font-lock-syntactic-keywords)
+  (set (make-local-variable 'comment-start-skip)
+       "\\(?:\\(\\W\\|\\`\\)dnl\\|#\\) +")
+  (set (make-local-variable 'syntax-propertize-function)
+       (syntax-propertize-rules ("\\<dnl\\>" (0 "<"))))
   (set (make-local-variable 'font-lock-defaults)
        `(autoconf-font-lock-keywords nil nil (("_" . "w"))))
   (set (make-local-variable 'imenu-generic-expression)
@@ -103,11 +94,9 @@ searching backwards at another AC_... command."
   (set (make-local-variable 'imenu-syntax-alist) '(("_" . "w")))
   (set (make-local-variable 'indent-line-function) #'indent-relative)
   (set (make-local-variable 'add-log-current-defun-function)
-       #'autoconf-current-defun-function)
-  (run-mode-hooks 'autoconf-mode-hook))
+       #'autoconf-current-defun-function))
 
 (provide 'autoconf-mode)
 (provide 'autoconf)
 
-;; arch-tag: 4f44778f-2ab3-49a1-a103-f0acb9df2de4
 ;;; autoconf.el ends here