Earlier today I sent out this:

>>>>> "Michael" == Michael D Carney <[EMAIL PROTECTED]> writes:

    Michael> When I invoke bbdb vial

    Michael>    M-x bbdb

    Michael> I'd like the matching records to come up on a separate screen, rather
    Michael> than splitting the current screen into 2 windows.

    Michael> Has anyone written some advice for bbdb that implements this sort of
    Michael> functionality?

    Michael> Thanks for any info.


    Michael>         Mike


Well, I did some hacking on another unrelated package that used advice
to do something similar for vm and I came up with the following. It
seems to behave the way I want. To use it, save it to bbdb-screen.el
and byte compile it. Then in your .emacs add
        (require 'bbdb-screen)

to your bbdb-load-hook.

>From then on, whenever a bbdb record (or list of records) is
displayed, it will be in its own screen. This includes typing a ':' in
VM or GNUS.

Note that this is for XEmacs only.

Let me know what you think.

8<---------------8<---------------8<---------------8<---------------
;;
;; Author: Michael D. Carney 
;; Module: bbdb-screen.el
;; Created: Jan 19, 1995
;; Description:
;;

(require 'advice)

(defvar bbdb-screen-parameter-alist nil
 "*Alist of screen parameters used for creating the BBDB screen.")

(defvar bbdb-screen nil)

(defun bbdb-resolve (var arg)
 (if (or (and (symbolp var) (fboundp var))
         (and (listp var) (eq (car var) 'lambda)))
     (funcall var arg)
   var))

(defun bbdb-select-screen ()
 "Create and/or select and raise the VM screen for the VM folder FOLDER.
Default is the primary inbox."
 (interactive)
 (let* ((fname (expand-file-name bbdb-file))
        (new-screen (not (screen-live-p bbdb-screen))))
   (if new-screen
       (setq bbdb-screen (make-screen
                           (append (bbdb-resolve bbdb-screen-parameter-alist
                                                 (file-name-nondirectory fname))
                                   (list (cons 'name "BBDB"))))))
     (select-screen bbdb-screen)
     (make-screen-visible bbdb-screen)
     (switch-to-buffer "*BBDB*")
     (raise-screen bbdb-screen)
     ))

(defadvice bbdb-display-records-1 (before
                                   screen-bbdb-activate
                                   first
                                   activate)
  "BBDB is started inside its own screen (bbdb-screen)."
  (bbdb-select-screen))

(defun bbdb-iconify ()
  "Saves the current folder and iconifies the current frame."
  (interactive)
  ;(vm-save-and-expunge-folder)
  (bbdb-save-db)
  (and (screen-live-p (selected-screen))
       (iconify-screen (selected-screen))))

(define-key bbdb-mode-map "q" 'bbdb-iconify)

(setq bbdb-screen-parameter-alist '((width . 83)
                                    (height . 50)
                                    (left . 239)
                                    (top . 38)))



(provide 'bbdb-screen)
;; end bbdb-xtras.el
8<---------------8<---------------8<---------------8<---------------


        Mike

Reply via email to