diff options
| author | Vivek Dasmohapatra | 2011-07-04 15:23:04 +0200 |
|---|---|---|
| committer | Lars Magne Ingebrigtsen | 2011-07-04 15:23:04 +0200 |
| commit | c1e57b47608627bf9432e5e32efc7457b49a991c (patch) | |
| tree | c14327527bcadbf11a34241f0a112f41d8256f41 | |
| parent | 4d19331f6bcf4823fef5e2070abdb651ff8cbe19 (diff) | |
| download | emacs-c1e57b47608627bf9432e5e32efc7457b49a991c.tar.gz emacs-c1e57b47608627bf9432e5e32efc7457b49a991c.zip | |
* erc.el (erc-generate-new-buffer-name): Reuse old buffer names
when reconnecting.
Fixes: debbugs:5563
| -rw-r--r-- | lisp/erc/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/erc/erc.el | 41 |
2 files changed, 29 insertions, 17 deletions
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog index 3d9b0c8646f..1560f2a9049 100644 --- a/lisp/erc/ChangeLog +++ b/lisp/erc/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2011-07-04 Vivek Dasmohapatra <vivek@etla.org> | ||
| 2 | |||
| 3 | * erc.el (erc-generate-new-buffer-name): Reuse old buffer names | ||
| 4 | when reconnecting (bug#5563). | ||
| 5 | |||
| 1 | 2011-06-23 Lars Magne Ingebrigtsen <larsi@gnus.org> | 6 | 2011-06-23 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 7 | ||
| 3 | * erc.el (erc-ssl): Made into a synonym for erc-tls, which | 8 | * erc.el (erc-ssl): Made into a synonym for erc-tls, which |
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index e036c1d97f2..a4040b239c1 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el | |||
| @@ -1555,26 +1555,33 @@ symbol, it may have these values: | |||
| 1555 | (defun erc-generate-new-buffer-name (server port target &optional proc) | 1555 | (defun erc-generate-new-buffer-name (server port target &optional proc) |
| 1556 | "Create a new buffer name based on the arguments." | 1556 | "Create a new buffer name based on the arguments." |
| 1557 | (when (numberp port) (setq port (number-to-string port))) | 1557 | (when (numberp port) (setq port (number-to-string port))) |
| 1558 | (let* ((buf-name (or target | 1558 | (let ((buf-name (or target |
| 1559 | (or (let ((name (concat server ":" port))) | 1559 | (or (let ((name (concat server ":" port))) |
| 1560 | (when (> (length name) 1) | 1560 | (when (> (length name) 1) |
| 1561 | name)) | 1561 | name)) |
| 1562 | ; This fallback should in fact never happen | 1562 | ;; This fallback should in fact never happen |
| 1563 | "*erc-server-buffer*")))) | 1563 | "*erc-server-buffer*"))) |
| 1564 | buffer-name) | ||
| 1564 | ;; Reuse existing buffers, but not if the buffer is a connected server | 1565 | ;; Reuse existing buffers, but not if the buffer is a connected server |
| 1565 | ;; buffer and not if its associated with a different server than the | 1566 | ;; buffer and not if its associated with a different server than the |
| 1566 | ;; current ERC buffer. | 1567 | ;; current ERC buffer. |
| 1567 | (if (and erc-reuse-buffers | 1568 | ;; if buf-name is taken by a different connection (or by something !erc) |
| 1568 | (get-buffer buf-name) | 1569 | ;; then see if "buf-name/server" meets the same criteria |
| 1569 | (or target | 1570 | (dolist (candidate (list buf-name (concat buf-name "/" server))) |
| 1570 | (with-current-buffer (get-buffer buf-name) | 1571 | (if (and (not buffer-name) |
| 1571 | (and (erc-server-buffer-p) | 1572 | erc-reuse-buffers |
| 1572 | (not (erc-server-process-alive))))) | 1573 | (get-buffer candidate) |
| 1573 | (with-current-buffer (get-buffer buf-name) | 1574 | (or target |
| 1574 | (and (string= erc-session-server server) | 1575 | (with-current-buffer (get-buffer candidate) |
| 1575 | (erc-port-equal erc-session-port port)))) | 1576 | (and (erc-server-buffer-p) |
| 1576 | buf-name | 1577 | (not (erc-server-process-alive))))) |
| 1577 | (generate-new-buffer-name buf-name)))) | 1578 | (with-current-buffer (get-buffer candidate) |
| 1579 | (and (string= erc-session-server server) | ||
| 1580 | (erc-port-equal erc-session-port port)))) | ||
| 1581 | (setq buffer-name candidate))) | ||
| 1582 | ;; if buffer-name is unset, neither candidate worked out for us, | ||
| 1583 | ;; fallback to the old <N> uniquification method: | ||
| 1584 | (or buffer-name (generate-new-buffer-name buf-name)) )) | ||
| 1578 | 1585 | ||
| 1579 | (defun erc-get-buffer-create (server port target &optional proc) | 1586 | (defun erc-get-buffer-create (server port target &optional proc) |
| 1580 | "Create a new buffer based on the arguments." | 1587 | "Create a new buffer based on the arguments." |