Variable: auto-insert-alist

auto-insert-alist is a customizable variable defined in autoinsert.el.gz.

Value

Large value
((("\\.\\([Hh]\\|hh\\|hpp\\|hxx\\|h\\+\\+\\)\\'" . "C / C++ header")
  (replace-regexp-in-string "[^A-Z0-9]" "_"
			    (string-replace "+" "P"
					    (upcase
					     (file-name-nondirectory buffer-file-name))))
  "#ifndef " str n "#define " str "\n\n" _ "\n\n#endif")
 (("\\.\\([Cc]\\|cc\\|cpp\\|cxx\\|c\\+\\+\\)\\'" . "C / C++ program")
  nil "#include \""
  (let
      ((stem
	(file-name-sans-extension buffer-file-name))
       ret)
    (dolist
	(ext
	 '("H" "h" "hh" "hpp" "hxx" "h++")
	 ret)
      (when
	  (file-exists-p
	   (concat stem "." ext))
	(setq ret
	      (file-name-nondirectory
	       (concat stem "." ext))))))
  & 34 | -10)
 (("[Mm]akefile\\'" . "Makefile")
  . "makefile.inc")
 (html-mode lambda nil
	    (sgml-tag "html"))
 (plain-tex-mode . "tex-insert.tex")
 (bibtex-mode . "tex-insert.tex")
 (latex-mode "options, RET: " "\\documentclass[" str & 93 | -1 123
	     (read-string "class: ")
	     "}\n"
	     ("package, %s: " "\\usepackage["
	      (read-string "options, RET: ")
	      & 93 | -1 123 str "}\n")
	     _ "\n\\begin{document}\n" _ "\n\\end{document}")
 (("/bin/.*[^/]\\'" . "Shell-Script mode magic number")
  lambda nil
  (if
      (eq major-mode
	  (default-value 'major-mode))
      (sh-mode)))
 (ada-mode . ada-header)
 (("\\.[1-9]\\'" . "Man page skeleton")
  "Short description: " ".\\\" Copyright (C), "
  (format-time-string "%Y")
  "  "
  (getenv "ORGANIZATION")
  |
  (progn user-full-name)
  "\n.\\\" You may distribute this file under the terms of the GNU Free\n.\\\" Documentation License.\n.TH "
  (file-name-base
   (buffer-file-name))
  " "
  (file-name-extension
   (buffer-file-name))
  " "
  (format-time-string "%Y-%m-%d ")
  "\n.SH NAME\n"
  (file-name-base
   (buffer-file-name))
  " \\- " str "\n.SH SYNOPSIS\n.B "
  (file-name-base
   (buffer-file-name))
  "\n" _ "\n.SH DESCRIPTION\n.SH OPTIONS\n.SH FILES\n.SH \"SEE ALSO\"\n.SH BUGS\n.SH AUTHOR\n"
  (user-full-name)
  '(if
       (search-backward "&"
			(line-beginning-position)
			t)
       (replace-match
	(capitalize
	 (user-login-name))
	t t))
  '(end-of-line 1)
  " <"
  (progn user-mail-address)
  ">\n")
 (".dir-locals.el" nil ";;; Directory Local Variables\n" ";;; For more information see (info \"(emacs) Directory Variables\")\n\n" "(("
  '(setq v1
	 (let
	     (modes)
	   (mapatoms
	    (lambda
	      (mode)
	      (let
		  ((name
		    (symbol-name mode)))
		(when
		    (string-match "-mode$" name)
		  (push name modes)))))
	   (sort modes 'string<)))
  (completing-read "Local variables for mode: " v1 nil t)
  " . (("
  (let
      ((all-variables
	(apropos-internal ".*"
			  (lambda
			    (symbol)
			    (and
			     (boundp symbol)
			     (get symbol 'variable-documentation))))))
    (completing-read "Variable to set: " all-variables))
  " . "
  (completing-read "Value to set it to: " nil)
  "))))\n")
 (("\\.el\\'" . "Emacs Lisp header")
  "Short description: " ";;; "
  (file-name-nondirectory
   (buffer-file-name))
  " --- " str
  (make-string
   (max 2
	(- 80
	   (current-column)
	   27))
   32)
  "-*- lexical-binding: t; -*-"
  '(setq lexical-binding t)
  "\n\n;; Copyright (C) "
  (format-time-string "%Y")
  "  "
  (getenv "ORGANIZATION")
  |
  (progn user-full-name)
  "\n\n;; Author: "
  (user-full-name)
  '(if
       (search-backward "&"
			(line-beginning-position)
			t)
       (replace-match
	(capitalize
	 (user-login-name))
	t t))
  '(end-of-line 1)
  " <"
  (progn user-mail-address)
  ">\n;; Keywords: "
  '(require 'finder)
  '(setq v1
	 (mapcar
	  (lambda
	    (x)
	    (list
	     (symbol-name
	      (car x))))
	  finder-known-keywords)
	 v2
	 (mapconcat
	  (lambda
	    (x)
	    (format "%12s:  %s"
		    (car x)
		    (cdr x)))
	  finder-known-keywords "\n"))
  ((let
       ((minibuffer-help-form v2))
     (completing-read "Keyword, C-h: " v1 nil t))
   str ", ")
  & -2 "\n\n;; This program is free software; you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; This program is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; " _ "\n\n;;; Code:\n\n\n\n(provide '"
  (file-name-base
   (buffer-file-name))
  ")\n;;; "
  (file-name-nondirectory
   (buffer-file-name))
  " ends here\n")
 (("\\.texi\\(nfo\\)?\\'" . "Texinfo file skeleton")
  "Title: " "\\input texinfo   @c -*-texinfo-*-\n@c %**start of header\n@setfilename "
  (file-name-base
   (buffer-file-name))
  ".info\n" "@settitle " str "\n@c %**end of header\n@copying\n"
  (setq short-description
	(read-string "Short description: "))
  ".\n\n" "Copyright @copyright{} "
  (format-time-string "%Y")
  "  "
  (getenv "ORGANIZATION")
  |
  (progn user-full-name)
  "\n\n@quotation\nPermission is granted to copy, distribute and/or modify this document\nunder the terms of the GNU Free Documentation License, Version 1.3\nor any later version published by the Free Software Foundation;\nwith no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.\nA copy of the license is included in the section entitled ``GNU\nFree Documentation License''.\n\nA copy of the license is also available from the Free Software\nFoundation Web site at @url{https://www.gnu.org/licenses/fdl.html}.\n\n@end quotation\n\nThe document was typeset with\n@uref{https://www.gnu.org/software/texinfo/, GNU Texinfo}.\n\n@end copying\n\n@titlepage\n@title " str "\n@subtitle " short-description "\n@author "
  (getenv "ORGANIZATION")
  |
  (progn user-full-name)
  " <"
  (progn user-mail-address)
  ">\n@page\n@vskip 0pt plus 1filll\n@insertcopying\n@end titlepage\n\n@c Output the table of the contents at the beginning.\n@contents\n\n@ifnottex\n@node Top\n@top " str "\n\n@insertcopying\n@end ifnottex\n\n@c Generate the nodes for this menu with `C-c C-u C-m'.\n@menu\n@end menu\n\n@c Update all node entries with `C-c C-u C-n'.\n@c Insert new nodes with `C-c C-c n'.\n@node Chapter One\n@chapter Chapter One\n\n" _ "\n\n@node Copying This Manual\n@appendix Copying This Manual\n\n@menu\n* GNU Free Documentation License::  License for copying this manual.\n@end menu\n\n@c Get fdl.texi from https://www.gnu.org/licenses/fdl.html\n@include fdl.texi\n\n@node Index\n@unnumbered Index\n\n@printindex cp\n\n@bye\n"))

Documentation

A list specifying text to insert by default into a new file.

Elements look like (CONDITION . ACTION) or ((CONDITION . DESCRIPTION) . ACTION). CONDITION may be a regexp that must match the new file's name, or it may be a symbol that must match the major mode for this element to apply. Only the first matching element is effective. Optional DESCRIPTION is a string for filling auto-insert-prompt. ACTION may be a skeleton to insert (see skeleton-insert), an absolute file-name or one relative to auto-insert-directory or a function to call. ACTION may also be a vector containing several successive single actions as described above, e.g. ["header.insert" date-and-author-update].

This variable was added, or its default value changed, in Emacs 27.1.

Source Code

;; Defined in /usr/src/emacs/lisp/autoinsert.el.gz
(defcustom auto-insert-alist
  '((("\\.\\([Hh]\\|hh\\|hpp\\|hxx\\|h\\+\\+\\)\\'" . "C / C++ header")
     (replace-regexp-in-string
      "[^A-Z0-9]" "_"
      (string-replace
       "+" "P"
       (upcase (file-name-nondirectory buffer-file-name))))
     "#ifndef " str \n
     "#define " str "\n\n"
     _ "\n\n#endif")

    (("\\.\\([Cc]\\|cc\\|cpp\\|cxx\\|c\\+\\+\\)\\'" . "C / C++ program")
     nil
     "#include \""
     (let ((stem (file-name-sans-extension buffer-file-name))
           ret)
       (dolist (ext '("H" "h" "hh" "hpp" "hxx" "h++") ret)
         (when (file-exists-p (concat stem "." ext))
           (setq ret (file-name-nondirectory (concat stem "." ext))))))
     & ?\" | -10)

    (("[Mm]akefile\\'" . "Makefile") . "makefile.inc")

    (html-mode . (lambda () (sgml-tag "html")))

    (plain-tex-mode . "tex-insert.tex")
    (bibtex-mode . "tex-insert.tex")
    (latex-mode
     ;; should try to offer completing read for these
     "options, RET: "
     "\\documentclass[" str & ?\] | -1
     ?{ (read-string "class: ") "}\n"
     ("package, %s: "
      "\\usepackage[" (read-string "options, RET: ") & ?\] | -1 ?{ str "}\n")
     _ "\n\\begin{document}\n" _
     "\n\\end{document}")

    (("/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), " (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-base (buffer-file-name))
     " " (file-name-extension (buffer-file-name))
     " " (format-time-string "%Y-%m-%d ")
     "\n.SH NAME\n"
     (file-name-base (buffer-file-name))
     " \\- " str
     "\n.SH SYNOPSIS
.B " (file-name-base (buffer-file-name))
     "\n"
     _
     "
.SH DESCRIPTION
.SH OPTIONS
.SH FILES
.SH \"SEE ALSO\"
.SH BUGS
.SH AUTHOR
" (user-full-name)
     '(if (search-backward "&" (line-beginning-position) t)
	  (replace-match (capitalize (user-login-name)) t t))
     '(end-of-line 1) " <" (progn user-mail-address) ">\n")

    (".dir-locals.el"
     nil
     ";;; Directory Local Variables\n"
     ";;; For more information see (info \"(emacs) Directory Variables\")\n\n"
     "(("
     '(setq v1 (let (modes)
                 (mapatoms (lambda (mode)
                             (let ((name (symbol-name mode)))
                               (when (string-match "-mode$" name)
                                 (push name modes)))))
                 (sort modes 'string<)))
     (completing-read "Local variables for mode: " v1 nil t)
     " . (("
     (let ((all-variables
            (apropos-internal ".*"
                              (lambda (symbol)
                                (and (boundp symbol)
				     (get symbol 'variable-documentation))))))
       (completing-read "Variable to set: " all-variables))
     " . "
     (completing-read "Value to set it to: " nil)
     "))))\n")

    (("\\.el\\'" . "Emacs Lisp header")
     "Short description: "
     ";;; " (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) " (format-time-string "%Y") "  "
 (getenv "ORGANIZATION") | (progn user-full-name) "

;; Author: " (user-full-name)
'(if (search-backward "&" (line-beginning-position) t)
     (replace-match (capitalize (user-login-name)) t t))
'(end-of-line 1) " <" (progn user-mail-address) ">
;; Keywords: "
 '(require 'finder)
 ;;'(setq v1 (apply 'vector (mapcar 'car finder-known-keywords)))
 '(setq v1 (mapcar (lambda (x) (list (symbol-name (car x))))
		   finder-known-keywords)
	v2 (mapconcat (lambda (x) (format "%12s:  %s" (car x) (cdr x)))
	   finder-known-keywords
	   "\n"))
 ((let ((minibuffer-help-form v2))
    (completing-read "Keyword, C-h: " v1 nil t))
    str ", ") & -2 "

\;; 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 of the License, or
\;; (at your option) any later version.

\;; 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 this program.  If not, see <https://www.gnu.org/licenses/>.

\;;; Commentary:

\;; " _ "

\;;; Code:



\(provide '"
       (file-name-base (buffer-file-name))
       ")
\;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n")
    (("\\.texi\\(nfo\\)?\\'" . "Texinfo file skeleton")
     "Title: "
     "\\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename "
     (file-name-base (buffer-file-name)) ".info\n"
      "@settitle " str "
@c %**end of header
@copying\n"
      (setq short-description (read-string "Short description: "))
      ".\n\n"
      "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.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{https://www.gnu.org/licenses/fdl.html}.

@end quotation

The document was typeset with
@uref{https://www.gnu.org/software/texinfo/, GNU Texinfo}.

@end copying

@titlepage
@title " str "
@subtitle " short-description "
@author " (getenv "ORGANIZATION") | (progn user-full-name)
     " <" (progn user-mail-address) ">
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage

@c Output the table of the contents at the beginning.
@contents

@ifnottex
@node Top
@top " str "

@insertcopying
@end ifnottex

@c Generate the nodes for this menu with `C-c C-u C-m'.
@menu
@end menu

@c Update all node entries with `C-c C-u C-n'.
@c Insert new nodes with `C-c C-c n'.
@node Chapter One
@chapter Chapter One

" _ "

@node Copying This Manual
@appendix Copying This Manual

@menu
* GNU Free Documentation License::  License for copying this manual.
@end menu

@c Get fdl.texi from https://www.gnu.org/licenses/fdl.html
@include fdl.texi

@node Index
@unnumbered Index

@printindex cp

@bye
"))
  "A list specifying text to insert by default into a new file.
Elements look like (CONDITION . ACTION) or ((CONDITION . DESCRIPTION) . ACTION).
CONDITION may be a regexp that must match the new file's name, or it may be
a symbol that must match the major mode for this element to apply.
Only the first matching element is effective.
Optional DESCRIPTION is a string for filling `auto-insert-prompt'.
ACTION may be a skeleton to insert (see `skeleton-insert'), an absolute
file-name or one relative to `auto-insert-directory' or a function to call.
ACTION may also be a vector containing several successive single actions as
described above, e.g. [\"header.insert\" date-and-author-update]."
  :type '(alist :key-type
                (choice (regexp :tag "Regexp matching file name")
                        (symbol :tag "Major mode")
                        (cons :tag "Condition and description"
                              (choice :tag "Condition"
                               (regexp :tag "Regexp matching file name")
                               (symbol :tag "Major mode"))
                              (string :tag "Description")))
                ;; There's no custom equivalent of "repeat" for vectors.
                :value-type (choice file function
                                    (sexp :tag "Skeleton or vector")))
  :version "27.1")