bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#24086: 25.1.50; ibuffer-do-view-1 fails to visit in new frame


From: Tino Calancha
Subject: bug#24086: 25.1.50; ibuffer-do-view-1 fails to visit in new frame
Date: Wed, 14 Sep 2016 00:59:27 +0900 (JST)
User-agent: Alpine 2.20 (DEB 67 2015-01-07)



On Thu, 28 Jul 2016, Tino Calancha wrote:



On Wed, 27 Jul 2016, Eli Zaretskii wrote:

From: Tino Calancha <address@hidden>
Date: Wed, 27 Jul 2016 20:32:40 +0900 (JST)

When the argument TYPE is 'other-frame, it should visit
the buffer in a new frame.

Not unconditionally, though.  There are clearly some conditions in the
code under which the above should not happen.
Exactly. I wrote that sentence thinking on 'ibuffer-do-view-other-frame'; i realize the bug while calling this command.

Does the change have to be this complicated?  AFAICT, the error is
just in the wrong logic of combining the conditions.  Right?
Well, maybe someone more skillful could come with
something fancier :-)

The orig version of 'ibuffer-do-view-1', once 'unless' condition
evaluates nil, pops to the first marked buffer in the selected window
(regardless of the value of TYPE).  Then, the rest of marked buffers
are visited in a new frame if TYPE equals to 'other-frame.

That's  wrong: if TYPE equals 'other-frame, all marked buffers
should be visited in a new frame.
Otherwise, if you have just one marked buffer, and you call
'ibuffer-do-view-other-frame' (bound to H), Emacs visit this buffer
in the same frame.

From previous patch, I have renamed the local var 'confirm' to 'abort';
i have dropped an empty line and fixed the indentation.
If there are no further objections i will push this patch to master in
a few days.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
From 314762928c53abc439c7bc0616bd024a829a8319 Mon Sep 17 00:00:00 2001
From: Tino Calancha <address@hidden>
Date: Wed, 14 Sep 2016 00:53:02 +0900
Subject: [PATCH] Ibuffer: View buffer in other frame

* lisp/ibuffer.el (ibuffer-do-view-1):
Use another frame when TYPE equals 'other-frame (Bug#24086).
---
 lisp/ibuffer.el | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 8e24629..a180512 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -1143,17 +1143,21 @@ ibuffer-do-view-horizontally
   (ibuffer-do-view-1 (if other-frame 'other-frame 'horizontally)))

 (defun ibuffer-do-view-1 (type)
-  (let ((marked-bufs (ibuffer-get-marked-buffers)))
+  (let ((marked-bufs (ibuffer-get-marked-buffers))
+        abort)
     (when (null marked-bufs)
       (setq marked-bufs (list (ibuffer-current-buffer t))))
-    (unless (and (eq type 'other-frame)
-                (not ibuffer-expert)
-                (> (length marked-bufs) 3)
- (not (y-or-n-p (format "Really create a new frame for %s buffers? "
-                                       (length marked-bufs)))))
-      (set-buffer-modified-p nil)
-      (delete-other-windows)
-      (switch-to-buffer (pop marked-bufs))
+    (when (and (eq type 'other-frame)
+               (not ibuffer-expert)
+               (> (length marked-bufs) 3))
+      (setq abort
+ (not (y-or-n-p (format "Really create a new frame for %s buffers? "
+                                   (length marked-bufs))))))
+    (unless abort
+      (unless (eq type 'other-frame)
+        (set-buffer-modified-p nil)
+        (delete-other-windows)
+        (switch-to-buffer (pop marked-bufs)))
       (let ((height (/ (1- (if (eq type 'horizontally) (frame-width)
                             (frame-height)))
                       (1+ (length marked-bufs)))))
--
2.9.3

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
In GNU Emacs 25.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.21.5)
 of 2016-09-13
Repository revision: 3988ceaa1cfa2022443906750cbb30127a1e161f






reply via email to

[Prev in Thread] Current Thread [Next in Thread]