]> git.eshelyaron.com Git - emacs.git/commitdiff
New function erc-switch-to-buffer-other-window
authorAmin Bandali <bandali@gnu.org>
Tue, 14 Apr 2020 03:21:34 +0000 (23:21 -0400)
committerAmin Bandali <bandali@gnu.org>
Tue, 14 Apr 2020 03:35:34 +0000 (23:35 -0400)
* lisp/erc/erc.el (erc-switch-to-buffer): Factor out the buffer choice
implementation from here ...
(erc--switch-to-buffer): ... to here.
(erc-switch-to-buffer-other-window): New function, like
`erc-switch-to-buffer', but uses `switch-to-buffer-other-window'
instead, to open the buffer in another window.

etc/NEWS
lisp/erc/erc.el

index f4edfaf9bec702b57d2b8cdee4939c69694323ef..f3ef798a4263ef10a4d9bc37ca4bc4a49ad590ae 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1647,6 +1647,11 @@ adjacent to an apostrophe, like "nick's".
 *** Set 'erc-button-url-regexp' to 'browse-url-button-regexp'
 which better handles surrounding pair of parentheses.
 
+---
+*** New function 'erc-switch-to-buffer-other-window'
+which is like 'erc-switch-to-buffer', but opens the buffer in another
+window.
+
 ** EUDC
 
 ---
index 5c63382d86fd02106df3a72ceb3a64c2b655a035..cc5226bf6ed634d699601f0ffb01ca3b2c98e35b 100644 (file)
@@ -1762,29 +1762,38 @@ nil."
        res)))
 
 (define-obsolete-function-alias 'erc-iswitchb 'erc-switch-to-buffer "25.1")
+(defun erc--switch-to-buffer (&optional arg)
+  (read-buffer "Switch to ERC buffer: "
+              (when (boundp 'erc-modified-channels-alist)
+                (buffer-name (caar (last erc-modified-channels-alist))))
+              t
+              ;; Only allow ERC buffers in the same session.
+              (let ((proc (unless arg erc-server-process)))
+                (lambda (bufname)
+                  (let ((buf (if (consp bufname)
+                                 (cdr bufname) (get-buffer bufname))))
+                    (when buf
+                      (erc--buffer-p buf (lambda () t) proc)
+                      (with-current-buffer buf
+                        (and (derived-mode-p 'erc-mode)
+                             (or (null proc)
+                                 (eq proc erc-server-process))))))))))
 (defun erc-switch-to-buffer (&optional arg)
-  "Prompt for a ERC buffer to switch to.
-When invoked with prefix argument, use all erc buffers.  Without prefix
-ARG, allow only buffers related to same session server.
+  "Prompt for an ERC buffer to switch to.
+When invoked with prefix argument, use all ERC buffers.  Without
+prefix ARG, allow only buffers related to same session server.
 If `erc-track-mode' is in enabled, put the last element of
 `erc-modified-channels-alist' in front of the buffer list."
   (interactive "P")
-  (switch-to-buffer
-   (read-buffer "Switch to ERC buffer: "
-               (when (boundp 'erc-modified-channels-alist)
-                 (buffer-name (caar (last erc-modified-channels-alist))))
-               t
-               ;; Only allow ERC buffers in the same session.
-               (let ((proc (unless arg erc-server-process)))
-                 (lambda (bufname)
-                   (let ((buf (if (consp bufname)
-                                  (cdr bufname) (get-buffer bufname))))
-                     (when buf
-                       (erc--buffer-p buf (lambda () t) proc)
-                       (with-current-buffer buf
-                         (and (derived-mode-p 'erc-mode)
-                              (or (null proc)
-                                  (eq proc erc-server-process)))))))))))
+  (switch-to-buffer (erc--switch-to-buffer arg)))
+(defun erc-switch-to-buffer-other-window (&optional arg)
+  "Prompt for an ERC buffer to switch to in another window.
+When invoked with prefix argument, use all ERC buffers.  Without
+prefix ARG, allow only buffers related to same session server.
+If `erc-track-mode' is in enabled, put the last element of
+`erc-modified-channels-alist' in front of the buffer list."
+  (interactive "P")
+  (switch-to-buffer-other-window (erc--switch-to-buffer arg)))
 
 (defun erc-channel-list (proc)
   "Return a list of channel buffers.