Mercurial > emacs
annotate lisp/autoinsert.el @ 67086:7ae3d744378e
(Custom-reset-standard): Make it handle Custom group
buffers correctly. (It used to throw an error in such buffers.)
Make it ask for confirmation in group buffers and other Custom
buffers containing more than one customization item.
author | Luc Teirlinck <teirllm@auburn.edu> |
---|---|
date | Tue, 22 Nov 2005 23:28:28 +0000 |
parents | 41bb365f41c4 |
children | 3bd95f4f2941 2d92f5c9d6ae |
rev | line source |
---|---|
662
8a533acedb77
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
180
diff
changeset
|
1 ;;; autoinsert.el --- automatic mode-dependent insertion of text into new files |
14169 | 2 |
64762
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64091
diff
changeset
|
3 ;; Copyright (C) 1985, 1986, 1987, 1994, 1995, 1998, 2000, 2002, 2003, |
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64091
diff
changeset
|
4 ;; 2004, 2005 Free Software Foundation, Inc. |
845 | 5 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
6 ;; Author: Charlie Martin <crm@cs.duke.edu> |
23869 | 7 ;; Adapted-By: Daniel Pfeiffer <occitan@esperanto.org> |
22250
a77d473867b8
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
21287
diff
changeset
|
8 ;; Keywords: convenience |
17976 | 9 ;; Maintainer: FSF |
180 | 10 |
11 ;; This file is part of GNU Emacs. | |
12 | |
13 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
14 ;; it under the terms of the GNU General Public License as published by | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
15 ;; the Free Software Foundation; either version 2, or (at your option) |
180 | 16 ;; any later version. |
17 | |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 | |
23 ;; You should have received a copy of the GNU General Public License | |
14169 | 24 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
64090 | 25 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
26 ;; Boston, MA 02110-1301, USA. | |
180 | 27 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
28 ;;; Commentary: |
180 | 29 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
30 ;; The following defines an association list for text to be |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
31 ;; automatically inserted when a new file is created, and a function |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
32 ;; which automatically inserts these files; the idea is to insert |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
33 ;; default text much as the mode is automatically set using |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
34 ;; auto-mode-alist. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
35 ;; |
26661 | 36 ;; To use: |
60876
e6350e6a85be
find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58242
diff
changeset
|
37 ;; (add-hook 'find-file-hook 'auto-insert) |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
38 ;; setq auto-insert-directory to an appropriate slash-terminated value |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
39 ;; |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
40 ;; You can also customize the variable `auto-insert-mode' to load the |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
41 ;; package. Alternatively, add the following to your .emacs file: |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
42 ;; (auto-insert-mode 1) |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
43 ;; |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
44 ;; Author: Charlie Martin |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
45 ;; Department of Computer Science and |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
46 ;; National Biomedical Simulation Resource |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
47 ;; Box 3709 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
48 ;; Duke University Medical Center |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
49 ;; Durham, NC 27710 |
26661 | 50 ;; (crm@cs.duke.edu,mcnc!duke!crm) |
180 | 51 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
52 ;;; Code: |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
53 |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
54 (defgroup auto-insert nil |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
55 "Automatic mode-dependent insertion of text into new files." |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
56 :prefix "auto-insert-" |
22250
a77d473867b8
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
21287
diff
changeset
|
57 :group 'files |
a77d473867b8
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
21287
diff
changeset
|
58 :group 'convenience) |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
59 |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
60 |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
61 (defcustom auto-insert 'not-modified |
26661 | 62 "*Controls automatic insertion into newly found empty files. |
63 Possible values: | |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
64 nil do nothing |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
65 t insert if possible |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
66 other insert if possible, but mark as unmodified. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
67 Insertion is possible when something appropriate is found in |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
68 `auto-insert-alist'. When the insertion is marked as unmodified, you can |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
69 save it with \\[write-file] RET. |
31878 | 70 This variable is used when the function `auto-insert' is called, e.g. |
60876
e6350e6a85be
find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58242
diff
changeset
|
71 when you do (add-hook 'find-file-hook 'auto-insert). |
26661 | 72 With \\[auto-insert], this is always treated as if it were t." |
21287
f61d91aef100
(auto-insert, auto-insert-query): :tag choices.
Dave Love <fx@gnu.org>
parents:
20809
diff
changeset
|
73 :type '(choice (const :tag "Insert if possible" t) |
f61d91aef100
(auto-insert, auto-insert-query): :tag choices.
Dave Love <fx@gnu.org>
parents:
20809
diff
changeset
|
74 (const :tag "Do nothing" nil) |
26661 | 75 (other :tag "insert if possible, mark as unmodified." |
21287
f61d91aef100
(auto-insert, auto-insert-query): :tag choices.
Dave Love <fx@gnu.org>
parents:
20809
diff
changeset
|
76 not-modified)) |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
77 :group 'auto-insert) |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
78 |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
79 (defcustom auto-insert-query 'function |
26661 | 80 "*Non-nil means ask user before auto-inserting. |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
81 When this is `function', only ask when called non-interactively." |
22567
b20af24c6cdd
(auto-insert, auto-insert-query): Use `other'
Andreas Schwab <schwab@suse.de>
parents:
22250
diff
changeset
|
82 :type '(choice (const :tag "Don't ask" nil) |
b20af24c6cdd
(auto-insert, auto-insert-query): Use `other'
Andreas Schwab <schwab@suse.de>
parents:
22250
diff
changeset
|
83 (const :tag "Ask if called non-interactively" function) |
b20af24c6cdd
(auto-insert, auto-insert-query): Use `other'
Andreas Schwab <schwab@suse.de>
parents:
22250
diff
changeset
|
84 (other :tag "Ask" t)) |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
85 :group 'auto-insert) |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
86 |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
87 (defcustom auto-insert-prompt "Perform %s auto-insertion? " |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
88 "*Prompt to use when querying whether to auto-insert. |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
89 If this contains a %s, that will be replaced by the matching rule." |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
90 :type 'string |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
91 :group 'auto-insert) |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
92 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
93 |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
94 (defcustom auto-insert-alist |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
95 '((("\\.\\([Hh]\\|hh\\|hpp\\)\\'" . "C / C++ header") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
96 (upcase (concat (file-name-nondirectory |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
97 (substring buffer-file-name 0 (match-beginning 0))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
98 "_" |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
99 (substring buffer-file-name (1+ (match-beginning 0))))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
100 "#ifndef " str \n |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
101 "#define " str "\n\n" |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
102 _ "\n\n#endif") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
103 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
104 (("\\.\\([Cc]\\|cc\\|cpp\\)\\'" . "C / C++ program") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
105 nil |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
106 "#include \"" |
42161
18516f8e5cff
(auto-insert-alist): Redo finding C and C++ headers.
Richard M. Stallman <rms@gnu.org>
parents:
34380
diff
changeset
|
107 (let ((stem (file-name-sans-extension buffer-file-name))) |
18516f8e5cff
(auto-insert-alist): Redo finding C and C++ headers.
Richard M. Stallman <rms@gnu.org>
parents:
34380
diff
changeset
|
108 (cond ((file-exists-p (concat stem ".h")) |
18516f8e5cff
(auto-insert-alist): Redo finding C and C++ headers.
Richard M. Stallman <rms@gnu.org>
parents:
34380
diff
changeset
|
109 (file-name-nondirectory (concat stem ".h"))) |
18516f8e5cff
(auto-insert-alist): Redo finding C and C++ headers.
Richard M. Stallman <rms@gnu.org>
parents:
34380
diff
changeset
|
110 ((file-exists-p (concat stem ".hh")) |
18516f8e5cff
(auto-insert-alist): Redo finding C and C++ headers.
Richard M. Stallman <rms@gnu.org>
parents:
34380
diff
changeset
|
111 (file-name-nondirectory (concat stem ".hh"))))) |
18516f8e5cff
(auto-insert-alist): Redo finding C and C++ headers.
Richard M. Stallman <rms@gnu.org>
parents:
34380
diff
changeset
|
112 & ?\" | -10) |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
113 |
42161
18516f8e5cff
(auto-insert-alist): Redo finding C and C++ headers.
Richard M. Stallman <rms@gnu.org>
parents:
34380
diff
changeset
|
114 (("[Mm]akefile\\'" . "Makefile") . "makefile.inc") |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
115 |
14153
3e949d37e46f
(auto-insert-alist): For html-mode, use `sgml-tag'.
Richard M. Stallman <rms@gnu.org>
parents:
12502
diff
changeset
|
116 (html-mode . (lambda () (sgml-tag "html"))) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49024
diff
changeset
|
117 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
118 (plain-tex-mode . "tex-insert.tex") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
119 (bibtex-mode . "tex-insert.tex") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
120 (latex-mode |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
121 ;; should try to offer completing read for these |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
122 "options, RET: " |
33252
ffb346e61cf2
(auto-insert-alist) <latex-mode>: Use
Dave Love <fx@gnu.org>
parents:
33184
diff
changeset
|
123 "\\documentclass[" str & ?\] | -1 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
124 ?{ (read-string "class: ") "}\n" |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
125 ("package, %s: " |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
126 "\\usepackage[" (read-string "options, RET: ") & ?\] | -1 ?{ str "}\n") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
127 _ "\n\\begin{document}\n" _ |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
128 "\n\\end{document}") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
129 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
130 (("/bin/.*[^/]\\'" . "Shell-Script mode magic number") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
131 lambda () |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
132 (if (eq major-mode default-major-mode) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
133 (sh-mode))) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49024
diff
changeset
|
134 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
135 (ada-mode . ada-header) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
136 |
49024
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
137 (("\\.[1-9]\\'" . "Man page skeleton") |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
138 "Short description: " |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
139 ".\\\" Copyright (C), " (substring (current-time-string) -4) " " |
55040
4728f7603f2a
(auto-insert-alist): Insert the user's name in
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
140 (getenv "ORGANIZATION") | (progn user-full-name) |
49024
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
141 " |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
142 .\\\" You may distribute this file under the terms of the GNU Free |
63623
39385d905a25
(auto-insert-alist): Fix spellings.
Juanma Barranquero <lekktu@gmail.com>
parents:
60876
diff
changeset
|
143 .\\\" Documentation License. |
49024
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
144 .TH " (file-name-sans-extension (file-name-nondirectory (buffer-file-name))) |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
145 " " (file-name-extension (buffer-file-name)) |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
146 " " (format-time-string "%Y-%m-%d ") |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
147 "\n.SH NAME\n" |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
148 (file-name-sans-extension (file-name-nondirectory (buffer-file-name))) |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
149 " \\- " str |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
150 "\n.SH SYNOPSIS |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
151 .B " (file-name-sans-extension (file-name-nondirectory (buffer-file-name))) |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
152 "\n" |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
153 _ |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
154 " |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
155 .SH DESCRIPTION |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
156 .SH OPTIONS |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
157 .SH FILES |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
158 .SH \"SEE ALSO\" |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
159 .SH BUGS |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
160 .SH AUTHOR |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
161 " (user-full-name) |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
162 '(if (search-backward "&" (line-beginning-position) t) |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
163 (replace-match (capitalize (user-login-name)) t t)) |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
164 '(end-of-line 1) " <" (progn user-mail-address) ">\n") |
417bead90660
(auto-insert-alist): Add man page skeleton.
Dave Love <fx@gnu.org>
parents:
45025
diff
changeset
|
165 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
166 (("\\.el\\'" . "Emacs Lisp header") |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
167 "Short description: " |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
168 ";;; " (file-name-nondirectory (buffer-file-name)) " --- " str " |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
169 |
34380
45cb6948fefa
(auto-insert-alist): Add missing final \n.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33794
diff
changeset
|
170 ;; Copyright (C) " (substring (current-time-string) -4) " " |
58242
239eb406bf92
(auto-insert-alist): Insert the user's name in copyright notice,
John Paul Wallington <jpw@pobox.com>
parents:
55040
diff
changeset
|
171 (getenv "ORGANIZATION") | (progn user-full-name) " |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
172 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
173 ;; Author: " (user-full-name) |
31878 | 174 '(if (search-backward "&" (line-beginning-position) t) |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
175 (replace-match (capitalize (user-login-name)) t t)) |
23782
ffae9b995e65
(auto-insert-alist): Use user-mail-address.
Richard M. Stallman <rms@gnu.org>
parents:
23708
diff
changeset
|
176 '(end-of-line 1) " <" (progn user-mail-address) "> |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
177 ;; Keywords: " |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
178 '(require 'finder) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
179 ;;'(setq v1 (apply 'vector (mapcar 'car finder-known-keywords))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
180 '(setq v1 (mapcar (lambda (x) (list (symbol-name (car x)))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
181 finder-known-keywords) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
182 v2 (mapconcat (lambda (x) (format "%10.0s: %s" (car x) (cdr x))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
183 finder-known-keywords |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
184 "\n")) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
185 ((let ((minibuffer-help-form v2)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
186 (completing-read "Keyword, C-h: " v1 nil t)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
187 str ", ") & -2 " |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
188 |
23708
b91d56a036ef
(auto-insert-alist): Don't assume *.el is part of GNU Emacs.
Karl Heuer <kwzh@gnu.org>
parents:
22567
diff
changeset
|
189 ;; This file is free software; you can redistribute it and/or modify |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
190 ;; it under the terms of the GNU General Public License as published by |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
191 ;; the Free Software Foundation; either version 2, or (at your option) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
192 ;; any later version. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
193 |
23708
b91d56a036ef
(auto-insert-alist): Don't assume *.el is part of GNU Emacs.
Karl Heuer <kwzh@gnu.org>
parents:
22567
diff
changeset
|
194 ;; This file is distributed in the hope that it will be useful, |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
195 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
196 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
197 ;; GNU General Public License for more details. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
198 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
199 ;; You should have received a copy of the GNU General Public License |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
200 ;; along with GNU Emacs; see the file COPYING. If not, write to |
64091 | 201 ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
202 ;; Boston, MA 02110-1301, USA. | |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
203 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
204 ;;; Commentary: |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
205 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
206 ;; " _ " |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
207 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
208 ;;; Code: |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
209 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
210 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
211 |
33794
f35b09043a64
(auto-insert-alist): Add `provide' to elisp skeleton.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33252
diff
changeset
|
212 \(provide '" |
f35b09043a64
(auto-insert-alist): Add `provide' to elisp skeleton.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33252
diff
changeset
|
213 (file-name-sans-extension (file-name-nondirectory (buffer-file-name))) |
f35b09043a64
(auto-insert-alist): Add `provide' to elisp skeleton.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33252
diff
changeset
|
214 ") |
34380
45cb6948fefa
(auto-insert-alist): Add missing final \n.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33794
diff
changeset
|
215 ;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n")) |
180 | 216 "A list specifying text to insert by default into a new file. |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
217 Elements look like (CONDITION . ACTION) or ((CONDITION . DESCRIPTION) . ACTION). |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
218 CONDITION maybe a regexp that must match the new file's name, or it may be |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
219 a symbol that must match the major mode for this element to apply. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
220 Only the first matching element is effective. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
221 Optional DESCRIPTION is a string for filling `auto-insert-prompt'. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
222 ACTION may be a skeleton to insert (see `skeleton-insert'), an absolute |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
223 file-name or one relative to `auto-insert-directory' or a function to call. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
224 ACTION may also be a vector containing several successive single actions as |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
225 described above, e.g. [\"header.insert\" date-and-author-update]." |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
226 :type 'sexp |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
227 :group 'auto-insert) |
180 | 228 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
229 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
230 ;; Establish a default value for auto-insert-directory |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
231 (defcustom auto-insert-directory "~/insert/" |
44978
9b2201ff0db7
(auto-insert-directory): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
42161
diff
changeset
|
232 "*Directory from which auto-inserted files are taken. |
45025
b38fc6fb7a1a
(auto-insert-directory): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
44984
diff
changeset
|
233 The value must be an absolute directory name; |
b38fc6fb7a1a
(auto-insert-directory): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
44984
diff
changeset
|
234 thus, on a GNU or Unix system, it must end in a slash." |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
235 :type 'directory |
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
236 :group 'auto-insert) |
180 | 237 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
238 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
239 ;;;###autoload |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
240 (defun auto-insert () |
31878 | 241 "Insert default contents into new files if variable `auto-insert' is non-nil. |
180 | 242 Matches the visited file name against the elements of `auto-insert-alist'." |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
243 (interactive) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
244 (and (not buffer-read-only) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
245 (or (eq this-command 'auto-insert) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
246 (and auto-insert |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
247 (bobp) (eobp))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
248 (let ((alist auto-insert-alist) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
249 case-fold-search cond desc action) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
250 (goto-char 1) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
251 ;; find first matching alist entry |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
252 (while alist |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
253 (if (atom (setq cond (car (car alist)))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
254 (setq desc cond) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
255 (setq desc (cdr cond) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
256 cond (car cond))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
257 (if (if (symbolp cond) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
258 (eq cond major-mode) |
31878 | 259 (and buffer-file-name |
260 (string-match cond buffer-file-name))) | |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
261 (setq action (cdr (car alist)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
262 alist nil) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
263 (setq alist (cdr alist)))) |
180 | 264 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
265 ;; Now, if we found something, do it |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
266 (and action |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
267 (if (stringp action) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
268 (file-readable-p (concat auto-insert-directory action)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
269 t) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
270 (if auto-insert-query |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
271 (or (if (eq auto-insert-query 'function) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
272 (eq this-command 'auto-insert)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
273 (y-or-n-p (format auto-insert-prompt desc))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
274 t) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
275 (mapcar |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
276 (lambda (action) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
277 (if (stringp action) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
278 (if (file-readable-p |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
279 (setq action (concat auto-insert-directory action))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
280 (insert-file-contents action)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
281 (save-window-excursion |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
282 ;; make buffer visible before skeleton or function |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
283 ;; which might ask the user for something |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
284 (switch-to-buffer (current-buffer)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
285 (if (and (consp action) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
286 (not (eq (car action) 'lambda))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
287 (skeleton-insert action) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
288 (funcall action))))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
289 (if (vectorp action) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
290 action |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
291 (vector action)))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
292 (and (buffer-modified-p) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
293 (not (eq this-command 'auto-insert)) |
26661 | 294 (set-buffer-modified-p (eq auto-insert t))))) |
295 ;; Return nil so that it could be used in | |
296 ;; `find-file-not-found-hooks', though that's probably inadvisable. | |
297 nil) | |
180 | 298 |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
299 |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
300 ;;;###autoload |
21287
f61d91aef100
(auto-insert, auto-insert-query): :tag choices.
Dave Love <fx@gnu.org>
parents:
20809
diff
changeset
|
301 (defun define-auto-insert (condition action &optional after) |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
302 "Associate CONDITION with (additional) ACTION in `auto-insert-alist'. |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
303 Optional AFTER means to insert action after all existing actions for CONDITION, |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
304 or if CONDITION had no actions, after all other CONDITIONs." |
21287
f61d91aef100
(auto-insert, auto-insert-query): :tag choices.
Dave Love <fx@gnu.org>
parents:
20809
diff
changeset
|
305 (let ((elt (assoc condition auto-insert-alist))) |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
306 (if elt |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
307 (setcdr elt |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
308 (if (vectorp (cdr elt)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
309 (vconcat (if after (cdr elt)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
310 (if (vectorp action) action (vector action)) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
311 (if after () (cdr elt))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
312 (if after |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
313 (vector (cdr elt) action) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
314 (vector action (cdr elt))))) |
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
315 (if after |
21287
f61d91aef100
(auto-insert, auto-insert-query): :tag choices.
Dave Love <fx@gnu.org>
parents:
20809
diff
changeset
|
316 (nconc auto-insert-alist (list (cons condition action))) |
f61d91aef100
(auto-insert, auto-insert-query): :tag choices.
Dave Love <fx@gnu.org>
parents:
20809
diff
changeset
|
317 (setq auto-insert-alist (cons (cons condition action) |
12502
8bb3424bf745
extended to use skeletons or call functions
Karl Heuer <kwzh@gnu.org>
parents:
8764
diff
changeset
|
318 auto-insert-alist)))))) |
662
8a533acedb77
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
180
diff
changeset
|
319 |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
320 ;;;###autoload |
32025
e67c88d8e5c4
(auto-insert-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31878
diff
changeset
|
321 (define-minor-mode auto-insert-mode |
26661 | 322 "Toggle Auto-insert mode. |
323 With prefix ARG, turn Auto-insert mode on if and only if ARG is positive. | |
324 Returns the new status of Auto-insert mode (non-nil means on). | |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
325 |
26661 | 326 When Auto-insert mode is enabled, when new files are created you can |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
327 insert a template for the file depending on the mode of the buffer." |
33184
8e6b63f3317d
(auto-insert-mode): Drop unneeded positional args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32025
diff
changeset
|
328 :global t :group 'auto-insert |
32025
e67c88d8e5c4
(auto-insert-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31878
diff
changeset
|
329 (if auto-insert-mode |
60876
e6350e6a85be
find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58242
diff
changeset
|
330 (add-hook 'find-file-hook 'auto-insert) |
e6350e6a85be
find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58242
diff
changeset
|
331 (remove-hook 'find-file-hook 'auto-insert))) |
20809
c582e15d8cfc
(auto-insert-mode): New function.
Stephen Eglen <stephen@gnu.org>
parents:
18383
diff
changeset
|
332 |
18383 | 333 (provide 'autoinsert) |
334 | |
60876
e6350e6a85be
find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58242
diff
changeset
|
335 ;; arch-tag: 5b6630ac-c735-43cf-b097-b78c622af909 |
662
8a533acedb77
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
180
diff
changeset
|
336 ;;; autoinsert.el ends here |