unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Tomi Ollila <tomi.ollila@iki.fi>
To: Sean Whitton <spwhitton@spwhitton.name>, notmuch@notmuchmail.org
Subject: Re: [PATCH v2] emacs: Use pop-to-buffer-same-window rather than switch-to-buffer
Date: Sat, 22 Aug 2020 12:04:52 +0300	[thread overview]
Message-ID: <m2tuwv3vbf.fsf@guru.guru-group.fi> (raw)
In-Reply-To: <20200811165913.4459-1-spwhitton@spwhitton.name>

On Tue, Aug 11 2020, Sean Whitton wrote:

> This means that notmuch commands obey display-buffer-alist so the user
> can customize how buffers show up.
>
> It also permits the use of C-x 4 4, C-x 5 5 and C-x t t, available in
> Emacs 28.  For example, one can use C-x 4 4 M-x notmuch-jump-search RET
> to open a saved search in another window rather than the current window.
> Or in notmuch-search mode, C-x 5 5 RET to view the message at point in
> a new frame.
>
> notmuch-tree has custom buffer display logic, so bind
> display-buffer-overriding-action to make pop-to-buffer-same-window
> behave exactly as switch-to-buffer while that function is running.
> ---
> Changes since v1: rebased onto latest master.

I've been having this in my emacs setup (one-notmuch.elc =D) couple
of days, and haven't seen anything strange.

Just now I tested a bit more, tried show and tree modes, with 
M-x debug-on-entry pop-to-buffer-same-window active and see some
call paths (interestingly (or not so), starting this mail composition
pop-to-buffer-same-window was not in call path -- but probably 
switch-to-buffer would be neither and there is no change in status quo)

So LGTM.

Tomi

>
>  emacs/notmuch-draft.el |  3 ++-
>  emacs/notmuch-hello.el |  2 +-
>  emacs/notmuch-show.el  |  8 ++++----
>  emacs/notmuch-tree.el  | 13 +++++++++----
>  emacs/notmuch.el       |  4 ++--
>  5 files changed, 18 insertions(+), 12 deletions(-)
>
> diff --git a/emacs/notmuch-draft.el b/emacs/notmuch-draft.el
> index 759e6c9e..283830ad 100644
> --- a/emacs/notmuch-draft.el
> +++ b/emacs/notmuch-draft.el
> @@ -232,7 +232,8 @@ applied to newly inserted messages)."
>  	 (draft (equal tags (notmuch-update-tags tags notmuch-draft-tags))))
>      (when (or draft
>  	      (yes-or-no-p "Message does not appear to be a draft: edit as new? "))
> -      (switch-to-buffer (get-buffer-create (concat "*notmuch-draft-" id "*")))
> +      (pop-to-buffer-same-window
> +       (get-buffer-create (concat "*notmuch-draft-" id "*")))
>        (setq buffer-read-only nil)
>        (erase-buffer)
>        (let ((coding-system-for-read 'no-conversion))
> diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
> index c127bba9..bb60a890 100644
> --- a/emacs/notmuch-hello.el
> +++ b/emacs/notmuch-hello.el
> @@ -973,7 +973,7 @@ following:
>    (let ((notmuch-hello-auto-refresh nil))
>      (if no-display
>  	(set-buffer "*notmuch-hello*")
> -      (switch-to-buffer "*notmuch-hello*")))
> +      (pop-to-buffer-same-window "*notmuch-hello*")))
>    ;; Install auto-refresh hook
>    (when notmuch-hello-auto-refresh
>      (add-hook 'window-configuration-change-hook
> diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
> index b0f2d28b..98d9c935 100644
> --- a/emacs/notmuch-show.el
> +++ b/emacs/notmuch-show.el
> @@ -1241,7 +1241,7 @@ matched."
>  		    (eval (car (get 'mm-inline-override-types 'standard-value))))
>  	     (cons "application/*" mm-inline-override-types)
>  	   mm-inline-override-types)))
> -    (switch-to-buffer (get-buffer-create buffer-name))
> +    (pop-to-buffer-same-window (get-buffer-create buffer-name))
>      ;; No need to track undo information for this buffer.
>      (setq buffer-undo-list t)
>      (notmuch-show-mode)
> @@ -1998,7 +1998,7 @@ to show, nil otherwise."
>    (let* ((id (notmuch-show-get-message-id))
>  	 (buf (get-buffer-create (concat "*notmuch-raw-" id "*")))
>  	 (inhibit-read-only t))
> -    (switch-to-buffer buf)
> +    (pop-to-buffer-same-window buf)
>      (erase-buffer)
>      (let ((coding-system-for-read 'no-conversion))
>        (call-process notmuch-command nil t nil "show" "--format=raw" id))
> @@ -2057,7 +2057,7 @@ message."
>  	  (set-buffer-modified-p nil)
>  	  (setq buffer-read-only t)
>  	  (unless (zerop exit-code)
> -	    (switch-to-buffer-other-window buf)
> +	    (pop-to-buffer buf)
>  	    (message (format "Command '%s' exited abnormally with code %d"
>  			     shell-command exit-code))))))))
>  
> @@ -2465,7 +2465,7 @@ If the part is displayed in an external application then close
>  the new buffer."
>    (let ((buf (get-buffer-create (generate-new-buffer-name
>  				 (concat " *notmuch-internal-part*")))))
> -    (switch-to-buffer buf)
> +    (pop-to-buffer-same-window buf)
>      (if (eq (mm-display-part handle) 'external)
>  	(kill-buffer buf)
>        (goto-char (point-min))
> diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el
> index fbba4bb3..f36a6e72 100644
> --- a/emacs/notmuch-tree.el
> +++ b/emacs/notmuch-tree.el
> @@ -543,9 +543,14 @@ NOT change the database."
>        (setq notmuch-tree-message-window
>  	    (split-window-vertically (/ (window-height) 4)))
>        (with-selected-window notmuch-tree-message-window
> -	;; Since we are only displaying one message do not indent.
> -	(let ((notmuch-show-indent-messages-width 0)
> -	      (notmuch-show-only-matching-messages t))
> +	(let (;; Since we are only displaying one message do not indent.
> +	      (notmuch-show-indent-messages-width 0)
> +	      (notmuch-show-only-matching-messages t)
> +	      ;; Ensure that `pop-to-buffer-same-window' uses the
> +	      ;; window we want it to use.
> +	      (display-buffer-overriding-action
> +		 '((display-buffer-same-window)
> +		   (inhibit-same-window . nil))))
>  	  (setq buffer (notmuch-show id))))
>        ;; We need the `let' as notmuch-tree-message-window is buffer local.
>        (let ((window notmuch-tree-message-window))
> @@ -1076,7 +1081,7 @@ The arguments are:
>  						(if unthreaded "unthreaded-" "tree-")
>  						query "*")))))
>  	(inhibit-read-only t))
> -    (switch-to-buffer buffer))
> +    (pop-to-buffer-same-window buffer))
>    ;; Don't track undo information for this buffer
>    (set 'buffer-undo-list t)
>    (notmuch-tree-worker query query-context target open-target unthreaded)
> diff --git a/emacs/notmuch.el b/emacs/notmuch.el
> index babddbb6..4e2ea9eb 100644
> --- a/emacs/notmuch.el
> +++ b/emacs/notmuch.el
> @@ -994,7 +994,7 @@ the configured default sort order."
>  	 (buffer (get-buffer-create (notmuch-search-buffer-title query))))
>      (if no-display
>  	(set-buffer buffer)
> -      (switch-to-buffer buffer))
> +      (pop-to-buffer-same-window buffer))
>      ;; avoid wiping out third party buffer-local variables in the case
>      ;; where we're just refreshing or changing the sort order of an
>      ;; existing search results buffer
> @@ -1134,7 +1134,7 @@ notmuch buffers exist, run `notmuch'."
>  	;; If the first one we found is any other than the starting
>  	;; buffer, switch to it.
>  	(unless (eq first start)
> -	  (switch-to-buffer first))
> +	  (pop-to-buffer-same-window first))
>        (notmuch))))
>  
>  ;;;; Imenu Support
> -- 
> 2.27.0

  parent reply	other threads:[~2020-08-22  9:05 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-11 16:59 [PATCH v2] emacs: Use pop-to-buffer-same-window rather than switch-to-buffer Sean Whitton
2020-08-15 11:02 ` David Bremner
2020-08-22  9:04 ` Tomi Ollila [this message]
2020-08-22 14:38   ` Sean Whitton
2020-08-22 12:52 ` David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2tuwv3vbf.fsf@guru.guru-group.fi \
    --to=tomi.ollila@iki.fi \
    --cc=notmuch@notmuchmail.org \
    --cc=spwhitton@spwhitton.name \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).