summaryrefslogtreecommitdiff
path: root/lisp/autoinsert.el
diff options
context:
space:
mode:
authorJim Blandy <jimb@redhat.com>1991-01-30 22:51:05 +0000
committerJim Blandy <jimb@redhat.com>1991-01-30 22:51:05 +0000
commit2f091853e0b3ea8b8e7f6ef04dc2bb2e1a4e4d4d (patch)
tree56148fce52fd9e6b5b3b43962091442fb09029a0 /lisp/autoinsert.el
parentf71d4eb5a0b995d981ce44cfea7c9ab32aa8e3a6 (diff)
downloademacs-2f091853e0b3ea8b8e7f6ef04dc2bb2e1a4e4d4d.tar.gz
Initial revision
Diffstat (limited to 'lisp/autoinsert.el')
-rw-r--r--lisp/autoinsert.el92
1 files changed, 92 insertions, 0 deletions
diff --git a/lisp/autoinsert.el b/lisp/autoinsert.el
new file mode 100644
index 00000000000..61736c9f68b
--- /dev/null
+++ b/lisp/autoinsert.el
@@ -0,0 +1,92 @@
+;; Automatic mode-dependent insertion of text into new files.
+;; Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 1, or (at your option)
+;; any later version.
+
+;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; autoinsert.el
+
+;;; Abstract:
+;;;
+;;; The following defines an association list for files to be
+;;; automatically inserted when a new file is created, and a function
+;;; which automatically inserts these files; the idea is to insert
+;;; default files much as the mode is automatically set using
+;;; auto-mode-alist.
+;;;
+;;; The auto-insert-alist consists of dotted pairs of
+;;; ( REGEXP . FILENAME ) where REGEXP is a regular expression, and
+;;; FILENAME is the file name of a file which is to be inserted into
+;;; all new files matching the regular expression with which it is
+;;; paired.
+;;;
+;;; To use:
+;;; load autoinsert.el
+;;; setq auto-insert-directory to an appropriate value, which
+;;; must end in "/"
+;;;
+;;; Author: Charlie Martin
+;;; Department of Computer Science and
+;;; National Biomedical Simulation Resource
+;;; Box 3709
+;;; Duke University Medical Center
+;;; Durham, NC 27710
+;;; (crm@cs.duke.edu,mcnc!duke!crm)
+;;;
+;;; Date: Fri Jul 1 16:15:31 EDT 1988
+
+(defvar auto-insert-alist '(("\\.tex$" . "tex-insert.tex")
+ ("\\.c$" . "c-insert.c")
+ ("\\.h$" . "h-insert.c")
+ ("[Mm]akefile" . "makefile.inc")
+ ("\\.bib$" . "tex-insert.tex"))
+ "A list specifying text to insert by default into a new file.
+Elements look like (REGEXP . FILENAME); if the new file's name
+matches REGEXP, then the file FILENAME is inserted into the buffer.
+Only the first matching element is effective.")
+
+;;; Establish a default value for auto-insert-directory
+(defvar auto-insert-directory "~/insert/"
+ "*Directory from which auto-inserted files are taken.")
+
+(defun insert-auto-insert-files ()
+ "Insert default contents into a new file.
+Matches the visited file name against the elements of `auto-insert-alist'."
+ (let ((alist auto-insert-alist)
+ ;; remove backup suffixes from file name
+ (name (file-name-sans-versions buffer-file-name))
+ (insert-file nil))
+
+ ;; find first matching alist entry
+ (while (and (not insert-file) alist)
+ (if (string-match (car (car alist)) name)
+ (setq insert-file (cdr (car alist)))
+ (setq alist (cdr alist))))
+
+ ;; Now, if we found an appropriate insert file, insert it
+ (if insert-file
+ (let ((file (concat auto-insert-directory insert-file)))
+ (if (file-readable-p file)
+ (progn
+ (insert-file-contents file)
+ (set-buffer-modified-p nil))
+ (message "Auto-insert: file %s not found" file)
+ (sleep-for 1))))))
+
+;; Make this feature take effect when a nonexistent file is visited.
+(setq find-file-not-found-hooks
+ (cons 'insert-auto-insert-files
+ find-file-not-found-hooks))