Smart signature selection based on message content.
This code is designed for use when editing email and news articles. It lets you create signatures that automatically adapt to what you're writing based on words contained in the body of the text.
smartsig allows you to do this by letting you define signatures with
associated keywords. The definition is done using
(smartsig-add ID SIGNATURE &rest KEYWORDS)
ID is a unique
ID for the signature, make it something short and
SIGNATURE is a pointer to the signature file that you want
used when this signature becomes applicable.
KEYWORDS is an open ended
list of keywords that will help trigger the selection of this signature.
Because there are a number of mail/news editing modes out there some parts of smartsig need to be configured before it will work. The configuration items are:
smartsig-start-of-body-function: This variable should be set to point to a function that will return the
pointof the start of the body of the article (IOW the first bit of text after any headers).
smartsig-end-of-body-function: This variable should be set to point to a function that will return the
pointof the end of the body of the article (IOW the
pointbefore the signature).
smartsig-set-signature: This variable should be set to point to a function that will set the signature. The function should take a single parameter that is the name of the signature file.
smartsig-abbrev-table: This variable should be set to a symbol that is the name of the abbrev table you intend to use.
Please note that smartsig needs abbrev to work. Once you've configured
smartsig to work with your environment you'll still need to turn on
abbrev-mode for your mail/news editing mode before anything will happen.
The latest smartsig.el is always available from:
Drop smartsig.el somewhere into your
load-path. Try your site-lisp directory for example (you might also want to byte-compile the file).
Because smartsig needs to be used with your editing mode of choice you need to create a hook for that mode. The hook would look something like:
(add-hook 'some-mail-editing-mode-hook (lambda () (require 'smartsig) (setq smartsig-set-signature #'function-for-setting-signature) (setq smartsig-abbrev-table 'some-mail-editing-mode-abbrev-table) (smartsig-clear) (smartsig-add "emacs" "~/.sigs/emacs" "emacs" "xemacs" "elisp" "gnu") (smartsig-add "mutt" "~/.sigs/mutt" "mutt" "mail" "email" "elkins") (abbrev-mode 1)))
some-mail-editing-mode-hook is the hook for the editing mode you
some-mail-editing-mode-abbrev-table is the abbrev table you use
in that editing mode.