X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/68e7476278a3dc4bd13dab63cc23bc0e671e5525..6141b80242b3da876e576cd19b263ef3ca4586b7:/lisp/autoinsert.el diff --git a/lisp/autoinsert.el b/lisp/autoinsert.el index e7dc061168..5eb5170788 100644 --- a/lisp/autoinsert.el +++ b/lisp/autoinsert.el @@ -1,19 +1,19 @@ ;;; 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 ;; Adapted-By: Daniel Pfeiffer ;; 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 @@ -21,9 +21,7 @@ ;; 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 . ;;; Commentary: @@ -38,7 +36,7 @@ ;; 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 @@ -55,11 +53,12 @@ "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 @@ -77,7 +76,7 @@ With \\[auto-insert], this is always treated as if it were t." :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) @@ -85,7 +84,7 @@ When this is `function', only ask when called non-interactively." :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) @@ -94,9 +93,9 @@ If this contains a %s, that will be replaced by the matching rule." (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") @@ -127,28 +126,28 @@ If this contains a %s, that will be replaced by the matching rule." _ "\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" _ " @@ -165,9 +164,12 @@ If this contains a %s, that will be replaced by the matching rule." (("\\.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) @@ -186,20 +188,18 @@ If this contains a %s, that will be replaced by the matching rule." (completing-read "Keyword, C-h: " v1 nil t)) str ", ") & -2 " -\;; This file is free software; you can redistribute it and/or modify +\;; This program 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. -\;; This file is distributed in the hope that it will be useful, +\;; This program 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, Inc., 51 Franklin Street, Fifth Floor, -\;; Boston, MA 02110-1301, USA. +\;; along with this program. If not, see . \;;; Commentary: @@ -210,7 +210,7 @@ If this contains a %s, that will be replaced by the matching rule." \(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") @@ -218,22 +218,22 @@ If this contains a %s, that will be replaced by the matching rule." "\\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.1 or -any later version published by the Free Software Foundation; with no -Invariant Sections, and no Cover Texts. A copy of the license is -included in the section entitled ``GNU Free Documentation License.'' +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 +Free Documentation License''. A copy of the license is also available from the Free Software Foundation Web site at @url{http://www.gnu.org/licenses/fdl.html}. @@ -310,7 +310,7 @@ described above, e.g. [\"header.insert\" date-and-author-update]." ;; 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 @@ -345,19 +345,19 @@ Matches the visited file name against the elements of `auto-insert-alist'." ;; 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 @@ -395,14 +395,14 @@ or if CONDITION had no actions, after all other CONDITIONs." (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." @@ -413,5 +413,4 @@ 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