New function erc-switch-to-buffer-other-window
* 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.
This commit is contained in:
parent
f84aed5fd2
commit
38f7538d8f
2 changed files with 33 additions and 19 deletions
5
etc/NEWS
5
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
|
||||
|
||||
---
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue