annotate lisp/progmodes/autoconf.el @ 42307:922f0ef2951b

(balance-windows): Use new PRESERVE-BEFORE arg to enlarge-window. Use save-selected-window. Don't try to resize windows that end at the bottom "level". Retry changing the sizes until the windows get the desired sizes. Discount the minibuffer when computing total height available.
author Richard M. Stallman <rms@gnu.org>
date Tue, 25 Dec 2001 10:34:39 +0000
parents 4b57ae8d5508
children 5ba37a8fa075 d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 28028
diff changeset
1 ;;; autoconf.el --- mode for editing Autoconf configure.in files
28028
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
2
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
3 ;; Copyright (C) 2000 Free Software Foundation, Inc.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
4
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
5 ;; Author: Dave Love <fx@gnu.org>
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
6 ;; Keywords: languages
40538
4b57ae8d5508 (autoconf-mode): Fix comment-start-skip.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
7 ;; $Revision: 1.2 $
28028
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
8
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
10
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
14 ;; any later version.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
15
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
20
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
24 ;; Boston, MA 02111-1307, USA.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
25
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
27
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
28 ;; Provides fairly minimal font-lock, imenu and indentation support
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
29 ;; for editing configure.in files. Only Autoconf syntax is processed.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
30 ;; There is no attempt to deal with shell text -- probably that will
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
31 ;; always lose.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
32
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
33 ;; This is specialized for configure.in files. It doesn't inherit the
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
34 ;; general M4 stuff from M4 mode.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
35
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
36 ;; There is also an autoconf-mode.el in existence. That appears to be
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
37 ;; for editing the Autoconf M4 source, rather than configure.in files.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
38
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
39 ;;; Code:
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
40
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
41 (defvar autoconf-mode-map (make-sparse-keymap))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
42
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
43 (defvar autoconf-mode-hook nil
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
44 "Hook run by `autoconf-mode'.")
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
45
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
46 (defconst autoconf-font-lock-syntactic-keywords
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
47 '(("\\<dnl\\>" 0 '(11))))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
48
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
49 (defconst autoconf-definition-regexp
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
50 "AC_\\(SUBST\\|DEFINE\\(_UNQUOTED\\)?\\)(\\(\\sw+\\)")
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
51
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
52 (defvar autoconf-font-lock-keywords
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
53 `(("A[CM]_\\sw+" . font-lock-keyword-face)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
54 (,autoconf-definition-regexp
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
55 3 font-lock-function-name-face)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
56 ;; Are any other M4 keywords really appropriate for configure.in,
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
57 ;; given that we do `dnl'?
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
58 ("changequote" . font-lock-keyword-face)))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
59
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
60 (defvar autoconf-mode-syntax-table
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
61 (let ((table (make-syntax-table)))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
62 (modify-syntax-entry ?\" "." table)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
63 (modify-syntax-entry ?\n ">" table)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
64 (modify-syntax-entry ?# "<" table)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
65 table))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
66
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
67 (defvar autoconf-imenu-generic-expression
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
68 (list (list nil autoconf-definition-regexp 3)))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
69
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
70 ;; It's not clear how best to implement this.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
71 (defun autoconf-current-defun-function ()
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
72 "Function to use for `add-log-current-defun-function' in Autoconf mode.
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
73 This version looks back for an AC_DEFINE or AC_SUBST. It will stop
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
74 searching backwards at another AC_... command."
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
75 (save-excursion
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
76 (with-syntax-table autoconf-mode-syntax-table
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
77 (modify-syntax-entry ?_ "w")
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
78 (if (re-search-backward autoconf-definition-regexp
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
79 (save-excursion (beginning-of-defun) (point))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
80 t)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
81 (match-string-no-properties 3)))))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
82
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
83 ;;;###autoload
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
84 (defun autoconf-mode ()
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
85 "Major mode for editing Autoconf configure.in files."
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
86 (interactive)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
87 (kill-all-local-variables)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
88 (use-local-map autoconf-mode-map)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
89 (setq major-mode 'autoconf-mode)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
90 (setq mode-name "Autoconf")
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
91 (set-syntax-table autoconf-mode-syntax-table)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
92 (set (make-local-variable 'parens-require-spaces) nil) ; for M4 arg lists
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
93 (set (make-local-variable 'defun-prompt-regexp)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
94 "^[ \t]*A[CM]_\\(\\sw\\|\\s_\\)+")
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
95 (set (make-local-variable 'comment-start) "dnl ")
40538
4b57ae8d5508 (autoconf-mode): Fix comment-start-skip.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
96 (set (make-local-variable 'comment-start-skip) "\\(?:\\<dnl\\|#\\) +")
28028
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
97 (set (make-local-variable 'font-lock-syntactic-keywords)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
98 autoconf-font-lock-syntactic-keywords)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
99 (set (make-local-variable 'font-lock-defaults)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
100 `(autoconf-font-lock-keywords nil nil (("_" . "w"))))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
101 (set (make-local-variable 'imenu-generic-expression)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
102 autoconf-imenu-generic-expression)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
103 (set (make-local-variable 'imenu-syntax-alist) '(("_" . "w")))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
104 (set (make-local-variable 'indent-line-function) #'indent-relative)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
105 (set (make-local-variable 'add-log-current-defun-function)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
106 #'autoconf-current-defun-function)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
107 (run-hooks 'autoconf-mode-hook))
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
108
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
109 (provide 'autoconf-mode)
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
110
2999fcc88458 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
111 ;;; autoconf.el ends here