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")