zephyr.el sample setup

Arup Mukherjee has created an extensive set of zephyr configurations which demonstrates many of the ways in which zephyr-mode can be custom-tailored. Many people use this sample-setup unaltered; others may find it useful as a guide. It's available in

    /usr/local/lib/xemacs/lisp/local-pkgs/sample-setups/zephyr-setup.el
or
    /afs/cs.cmu.edu/local/xemacs/common/omega/lisp/local-pkgs/sample-setups/zephyr-setup.el

Here's what Arup says about it:

Sample zephyr-setup.el

A version of zephyr mode that supports XEmacs is installed in the default lisp libraries. However, it may take you some hacking to get zephyr mode using all of the additional functionality available under XEmacs. The sample setup file loads zephyr mode, and defines three functions which will get you set up in no time. (It also provides a good starting point if you want to customize the behavior even more). The three functions are

zephyr-personal
Create a zgram screen that receives only zgrams addressed to you. Beeps, deiconifies, and raises itself whenever a zgram comes in.
zephyr-nonpersonal
Create a zgram screen that receives only zgrams that are not addressed to you (i.e. they're sent out to all people at SCS who're listening -- these are the discussions you've been missing out on if you've been using the default zwgc setup up to now). Doesn't beep, deiconify, or raise itself when zgrams come in.
zephyr-all
Creates a zgram screen that receives all zgrams out there. Doesn't deiconify itself ever. Beeps only when personal zgrams come in.

The reasoning behind this is that personal zgrams are the ones you may want to have brought to your attention immediately, while you probably want to read the other stuff on your own terms. Thus zephyr-personal and zephyr-nonpersonal provide a nice means of filtering the incoming zephyrgrams into two groups -- and you can keep the zephyr-nonpersonal screen iconified when you're busy... zephyr-all is for those who don't like having lots of X windows around, and but still want personal zgrams brough to their attention over nonpersonal ones.

Note that the zephyr-setup file uses resources specified in the sample Xdefaults file, and thus your new zephyr windows won't look too dazzling unless you've loaded this file.

You can get mode information on zephyr-mode by using M-x describe-mode in a zephyr window. Some handy bindings to know follow:

Ctrl-c Ctrl-s : Specify recipient
       Ctrl-j : Send off a zephyr message

Right mouse button pops up a menu of various zephyr functions.

A few other things you may want to do: To initialize your zephyr history (which you can cycle thru using M-p and M-n, and which is used for completion when you use C-c C-s to change recipients):

    (setq zephyr-initial-history '("sleepy" "happy" "grumpy" "dopey"))

The last person in this list becomes the person you're talking to by default, as long as you do this setq BEFORE a zephyr buffer is created. (Otherwise you'll get "nobody" as the default.)

To make zephyr aliases:

  (setq zephyr-aliases 
       '(("pals"  . ("dahmer" "lechter" "bates"))
         ("harry" . ("bovik"))))

To bind M-z to finger the person you're about to send a zgram to:

   (define-key zephyr-mode-map "\M-z" 'zephyr-zlocate-finger)

These are all commented in more detail in the zephyr-setup.el file itself.

The zephyr sample setup also loads the zephyr-url package by default. This cool package sets up your zephyr-mode to recognize URLs and filenames, and to convert them to hypertext links. If you click the middle mouse button on a link, the appropriate URL or file will be brought up for you to see. By default, URLs are retrieved using w3-mode (the emacs WWW browser). URLs can also be retrieved using a running Netscape or Mosaic process, if you prefer. To switch browsers, see "Hot URL Options" under the zephyr menu, or put one of these in your .emacs:

(hot-url-use-netscape)
(hot-url-use-mosaic)

Note: This zephyr setup works fine in gnu-emacs too (just doesn't use all the funky fonts and such). If you like it, you can put /usr/local/lib/xemacs/lisp/local-pkgs at the END of your gnu-emacs lisp load-path variable and load the files into your gnu-emacs, as follows:

    (if (and (boundp 'running-xemacs) running-xemacs)
	(progn (...
		...     ;; stuff that happens when you're in XEmacs
		...))
      (progn (          ;; this stuff happens in gnu-emacs
	      (setq load-path (append load-path 
				  '("/usr/local/lib/xemacs/lisp/local-pkgs")))
	      (load "sample-setups/zephyr-setup"))))
Darrell.Kindred@cs.cmu.edu