[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: message buffer



Hi Ron,

many thanks for this code. It did not work right away on emacs 23.1, I
needed the following change in zoom-message (just at the beginning of
the function):

    (let ((pop-up-windows nil)
          (p (selected-frame))
          (b (buffer-name))
          (f (make-frame)))
      (select-frame f)
      (pop-to-buffer b)

setting pop-up-windows to nil avoids the horizontal splitting of the
window in the new frame.

many thanks,
 Rodrigo

> Rodrigo Amestica wrote:
>> 
>> Hi,
>> 
>> in my configuration (I'm not sure this is always like this) the message buffer
>> is reported as a Mime-View. Is there any way to popup the current message in the
>> buffer to its own frame? I could not find the option within wl. Then I thought
>> that emacs should already provide a function to move a given buffer to its own
>> frame (e.g. C-x 52), however the message buffer is not listed as a buffer (C-x
>> C-b) and here I realized that I'm at lost.
>> 
>> Is there any way to pop up a copy of the message buffer to its own frame?

> Try this out:

>   ;; Message Zoom

>   ; Press z on the summary line or in a mime-view buffer to see the
>   ; message in its own frame

>   (defun unzoom-message ()
>     (interactive)
>     (really-local-set-key "q" 'mime-preview-quit)
>     (let ((return-to-summary zoom-return-to-summary))
>       (if (frame-live-p zoom-frame)
>           (progn
>             (focus-frame zoom-prev-frame)
>             (delete-frame zoom-frame)
>             (if return-to-summary
>                 (mime-preview-quit)))
>         (mime-preview-quit))))

>   (defun zoom-message (&optional return-to-summary)
>     (interactive)
>     (let ((b (buffer-name))
>           (p (selected-frame))
>           (f (make-frame)))
>       (focus-frame f)
>       (switch-to-buffer b)

>       (make-local-variable 'zoom-frame)
>       (setq zoom-frame f)

>       (make-local-variable 'zoom-prev-frame)
>       (setq zoom-prev-frame p)

>       (make-local-variable 'zoom-return-to-summary)
>       (setq zoom-return-to-summary return-to-summary)

>       (really-local-set-key "q" 'unzoom-message)))

>   (add-hook 'mime-view-mode-hook
>             '(lambda ()
>                (local-set-key "z" 'zoom-message)))

>   (defun wl-summary-zoom-message ()
>     (interactive)
>     (if (not (wl-summary-message-number))
>         (message "No message to zoom")
>       (wl-summary-jump-to-current-message)
>       (zoom-message t)))

>   (define-key wl-summary-mode-map "z" 'wl-summary-zoom-message)

> This relies on really-local-set-key, an invention which does what I
> think local-set-key *should* do -- set a key binding in the current
> buffer only:

>   (defun use-really-local-map ()
>     (let* ((old-keymap (current-local-map))
>            (new-keymap (if old-keymap
>                            (copy-keymap old-keymap)
>                          (make-sparse-keymap))))
>       (use-local-map new-keymap)))

>   (defun really-local-set-key (key command)
>     (use-really-local-map)
>     (local-set-key key command))

>   (defun really-local-unset-key (key)
>     (use-really-local-map)
>     (local-unset-key key))

> --
> Ron Isaacson
> Morgan Stanley
> ron.isaacson@morganstanley.com / (212) 276-1349