;;; autoinsert.el --- automatic mode-dependent insertion of text into new files
-;; Copyright (C) 1985, 1986, 1987, 1994, 1995, 1998, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1994-1995, 1998, 2000-2014 Free Software
+;; Foundation, Inc.
;; Author: Charlie Martin <crm@cs.duke.edu>
;; Adapted-By: Daniel Pfeiffer <occitan@esperanto.org>
;; Keywords: convenience
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; 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 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, 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
;; 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, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; setq auto-insert-directory to an appropriate slash-terminated value
;;
;; You can also customize the variable `auto-insert-mode' to load the
-;; package. Alternatively, add the following to your .emacs file:
+;; package. Alternatively, add the following to your init file:
;; (auto-insert-mode 1)
;;
;; Author: Charlie Martin
"Automatic mode-dependent insertion of text into new files."
:prefix "auto-insert-"
:group 'files
- :group 'convenience)
+ :group 'convenience
+ :link '(custom-manual "(autotype) Autoinserting"))
(defcustom auto-insert 'not-modified
- "*Controls automatic insertion into newly found empty files.
+ "Controls automatic insertion into newly found empty files.
Possible values:
nil do nothing
t insert if possible
:group 'auto-insert)
(defcustom auto-insert-query 'function
- "*Non-nil means ask user before auto-inserting.
+ "Non-nil means ask user before auto-inserting.
When this is `function', only ask when called non-interactively."
:type '(choice (const :tag "Don't ask" nil)
(const :tag "Ask if called non-interactively" function)
:group 'auto-insert)
(defcustom auto-insert-prompt "Perform %s auto-insertion? "
- "*Prompt to use when querying whether to auto-insert.
+ "Prompt to use when querying whether to auto-insert.
If this contains a %s, that will be replaced by the matching rule."
:type 'string
:group 'auto-insert)
(defcustom auto-insert-alist
'((("\\.\\([Hh]\\|hh\\|hpp\\)\\'" . "C / C++ header")
(upcase (concat (file-name-nondirectory
- (substring buffer-file-name 0 (match-beginning 0)))
+ (file-name-sans-extension buffer-file-name))
"_"
- (substring buffer-file-name (1+ (match-beginning 0)))))
+ (file-name-extension buffer-file-name)))
"#ifndef " str \n
"#define " str "\n\n"
_ "\n\n#endif")
_ "\n\\begin{document}\n" _
"\n\\end{document}")
- (("/bin/.*[^/]\\'" . "Shell-Script mode magic number")
- lambda ()
- (if (eq major-mode default-major-mode)
- (sh-mode)))
+ (("/bin/.*[^/]\\'" . "Shell-Script mode magic number") .
+ (lambda ()
+ (if (eq major-mode (default-value 'major-mode))
+ (sh-mode))))
(ada-mode . ada-header)
(("\\.[1-9]\\'" . "Man page skeleton")
"Short description: "
- ".\\\" Copyright (C), " (substring (current-time-string) -4) " "
+ ".\\\" Copyright (C), " (format-time-string "%Y") " "
(getenv "ORGANIZATION") | (progn user-full-name)
"
.\\\" You may distribute this file under the terms of the GNU Free
.\\\" Documentation License.
-.TH " (file-name-sans-extension (file-name-nondirectory (buffer-file-name)))
+.TH " (file-name-base)
" " (file-name-extension (buffer-file-name))
" " (format-time-string "%Y-%m-%d ")
"\n.SH NAME\n"
- (file-name-sans-extension (file-name-nondirectory (buffer-file-name)))
+ (file-name-base)
" \\- " str
"\n.SH SYNOPSIS
-.B " (file-name-sans-extension (file-name-nondirectory (buffer-file-name)))
+.B " (file-name-base)
"\n"
_
"
(("\\.el\\'" . "Emacs Lisp header")
"Short description: "
- ";;; " (file-name-nondirectory (buffer-file-name)) " --- " str "
+ ";;; " (file-name-nondirectory (buffer-file-name)) " --- " str
+ (make-string (max 2 (- 80 (current-column) 27)) ?\s)
+ "-*- lexical-binding: t; -*-" '(setq lexical-binding t)
+ "
-;; Copyright (C) " (substring (current-time-string) -4) " "
+;; Copyright (C) " (format-time-string "%Y") " "
(getenv "ORGANIZATION") | (progn user-full-name) "
;; Author: " (user-full-name)
\(provide '"
- (file-name-sans-extension (file-name-nondirectory (buffer-file-name)))
+ (file-name-base)
")
\;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n")
(("\\.texi\\(nfo\\)?\\'" . "Texinfo file skeleton")
"\\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename "
- (file-name-sans-extension
- (file-name-nondirectory (buffer-file-name))) ".info\n"
+ (file-name-base) ".info\n"
"@settitle " str "
@c %**end of header
@copying\n"
(setq short-description (read-string "Short description: "))
".\n\n"
- "Copyright @copyright{} " (substring (current-time-string) -4) " "
+ "Copyright @copyright{} " (format-time-string "%Y") " "
(getenv "ORGANIZATION") | (progn user-full-name) "
@quotation
Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.2
+under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
-with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-Texts. A copy of the license is included in the section entitled ``GNU
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
A copy of the license is also available from the Free Software
;; Establish a default value for auto-insert-directory
(defcustom auto-insert-directory "~/insert/"
- "*Directory from which auto-inserted files are taken.
+ "Directory from which auto-inserted files are taken.
The value must be an absolute directory name;
thus, on a GNU or Unix system, it must end in a slash."
:type 'directory
;; Now, if we found something, do it
(and action
- (if (stringp action)
- (file-readable-p (concat auto-insert-directory action))
- t)
- (if auto-insert-query
- (or (if (eq auto-insert-query 'function)
- (eq this-command 'auto-insert))
- (y-or-n-p (format auto-insert-prompt desc)))
- t)
+ (or (not (stringp action))
+ (file-readable-p (expand-file-name
+ action auto-insert-directory)))
+ (or (not auto-insert-query)
+ (if (eq auto-insert-query 'function)
+ (eq this-command 'auto-insert))
+ (y-or-n-p (format auto-insert-prompt desc)))
(mapc
(lambda (action)
(if (stringp action)
(if (file-readable-p
- (setq action (concat auto-insert-directory action)))
+ (setq action (expand-file-name
+ action auto-insert-directory)))
(insert-file-contents action))
(save-window-excursion
;; make buffer visible before skeleton or function
(vector action (cdr elt)))))
(if after
(nconc auto-insert-alist (list (cons condition action)))
- (setq auto-insert-alist (cons (cons condition action)
- auto-insert-alist))))))
+ (push (cons condition action) auto-insert-alist)))))
;;;###autoload
(define-minor-mode auto-insert-mode
- "Toggle Auto-insert mode.
-With prefix ARG, turn Auto-insert mode on if and only if ARG is positive.
-Returns the new status of Auto-insert mode (non-nil means on).
+ "Toggle Auto-insert mode, a global minor mode.
+With a prefix argument ARG, enable Auto-insert mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
When Auto-insert mode is enabled, when new files are created you can
insert a template for the file depending on the mode of the buffer."
(provide 'autoinsert)
-;; arch-tag: 5b6630ac-c735-43cf-b097-b78c622af909
;;; autoinsert.el ends here