6. Dirty Tricks
6.1 Inserting a header automatically
Emacs allows you to hook some actions to any event (opening of a file, saving, running a new mode, etc).
The autoinsert library uses this feature: when you open a new file under Emacs, this library inserts, according to the type of the file, a standard header.
In our case, this standard header could well be the part declaring the document type (LinuxDoc), the title, the author, and the date.
I will describe here two ways to insert such a header. You could insert a template file containing the information to insert, or you could run an elisp routine.
by inserting a file
You must first tell Emacs to run the auto-insert
when
opening a file, then to read the autoinsert library which
declares the auto-insert-alist
list which we need to change. This
list defines the header to insert for each file type. By default, the
file to insert must be in the ~/insert/
directory, but it is
possible to redefine the auto-insert-directory
variable
if you want to put it somewhere else.
Add the following lines to your .emacs
file to insert the
~/emacs/sgml-insert.sgml
file each time you open a new SGML
file:
(add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (setq auto-insert-directory "~/emacs/") (setq auto-insert-alist (append '((sgml-mode . "sgml-insert.sgml")) auto-insert-alist))
You can then write in the ~/emacs/sgml-insert.sgml
file
your customised header, then re-run Emacs and open some
foobar.sgml
file. Emacs should ask you to confirm the automatic
insertion, and if you answer yes, insert your header.
by running a routine
This works like before, but instead of setting the
auto-insert-alist
to a file to insert, you need to set it to a
function to execute. This is how to proceed, taking for granted you want
to write this function in a file named ~/emacs/sgml-header.el
.
(there's no need to burden your .emacs
file with such a
function, as it may turn out to be quite long):
(add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (add-to-list 'load-path "~/emacs") (load-library "sgml-header") (setq auto-insert-alist (append '(((sgml-mode . "SGML Mode") . insert-sgml-header)) auto-insert-alist))
You will find in
appendix an
example of insert-sgml-header
function.
Next Previous Contents