(setq gnus-posting-styles '(("^comp.*" (signature choose-quote)) ("-sig$" (signature choose-quote)) ("cam.misc" (signature choose-quote)))) (defvar *quotes* '() "pearls for sigs.") (defun setup-quotes (&optional file) "fill the list *quotes* from the file `file' where quotes are separated by blank lines. `file' currently defaults to \"~/.comp.sig\"" (interactive) (setf *quotes* ()) (let ((buffer (create-file-buffer (or file "~/.comp.sig")))) (unwind-protect (save-excursion (set-buffer buffer) (insert-file-contents (or file "~/.comp.sig")) (let ((oldpoint (point-min))) (while (search-forward "\n\n" nil t) (setq *quotes* (nconc *quotes* (list (buffer-substring oldpoint (1- (point)))))) (setq oldpoint (point))) (setq *quotes* (nconc *quotes* (list (buffer-substring (point) (point-max)))))))) (kill-buffer buffer))) (random t) (defun choose-quote () (nth (random (length *quotes*)) *quotes*)) (defun insert-quote () (interactive) (insert (choose-quote))) (defun insert-sig () (interactive) (save-excursion (goto-char (point-max)) (insert "-- \n") (insert-quote))) (defun replace-sig () (interactive) (save-excursion (goto-char (point-max)) (if (search-backward "-- \n" nil t) (delete-region (point) (point-max))) (insert-sig))) (setup-quotes)