Mercurial > emacs
comparison lisp/erc/erc-backend.el @ 111159:89ed069d5e26
* lisp/erc/erc-backend.el (erc-process-sentinel): Check that buffer is alive
before setting it as current buffer.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Sat, 23 Oct 2010 12:35:22 -0700 |
parents | 69a56b685af8 |
children | 5b8d952e783f |
comparison
equal
deleted
inserted
replaced
111158:b3c93f0bd2ff | 111159:89ed069d5e26 |
---|---|
650 ;; unexpected disconnect | 650 ;; unexpected disconnect |
651 (erc-process-sentinel-2 event buffer)))) | 651 (erc-process-sentinel-2 event buffer)))) |
652 | 652 |
653 (defun erc-process-sentinel (cproc event) | 653 (defun erc-process-sentinel (cproc event) |
654 "Sentinel function for ERC process." | 654 "Sentinel function for ERC process." |
655 (with-current-buffer (process-buffer cproc) | 655 (let ((buf (process-buffer cproc))) |
656 (erc-log (format | 656 (when (buffer-live-p buf) |
657 "SENTINEL: proc: %S status: %S event: %S (quitting: %S)" | 657 (with-current-buffer buf |
658 cproc (process-status cproc) event erc-server-quitting)) | 658 (erc-log (format |
659 (if (string-match "^open" event) | 659 "SENTINEL: proc: %S status: %S event: %S (quitting: %S)" |
660 ;; newly opened connection (no wait) | 660 cproc (process-status cproc) event erc-server-quitting)) |
661 (erc-login) | 661 (if (string-match "^open" event) |
662 ;; assume event is 'failed | 662 ;; newly opened connection (no wait) |
663 (let ((buf (process-buffer cproc))) | 663 (erc-login) |
664 (erc-with-all-buffers-of-server cproc nil | 664 ;; assume event is 'failed |
665 (setq erc-server-connected nil)) | 665 (erc-with-all-buffers-of-server cproc nil |
666 (when erc-server-ping-handler | 666 (setq erc-server-connected nil)) |
667 (progn (erc-cancel-timer erc-server-ping-handler) | 667 (when erc-server-ping-handler |
668 (setq erc-server-ping-handler nil))) | 668 (progn (erc-cancel-timer erc-server-ping-handler) |
669 (run-hook-with-args 'erc-disconnected-hook | 669 (setq erc-server-ping-handler nil))) |
670 (erc-current-nick) (system-name) "") | 670 (run-hook-with-args 'erc-disconnected-hook |
671 ;; Remove the prompt | 671 (erc-current-nick) (system-name) "") |
672 (goto-char (or (marker-position erc-input-marker) (point-max))) | 672 ;; Remove the prompt |
673 (forward-line 0) | 673 (goto-char (or (marker-position erc-input-marker) (point-max))) |
674 (erc-remove-text-properties-region (point) (point-max)) | 674 (forward-line 0) |
675 (delete-region (point) (point-max)) | 675 (erc-remove-text-properties-region (point) (point-max)) |
676 ;; Decide what to do with the buffer | 676 (delete-region (point) (point-max)) |
677 ;; Restart if disconnected | 677 ;; Decide what to do with the buffer |
678 (erc-process-sentinel-1 event buf))))) | 678 ;; Restart if disconnected |
679 (erc-process-sentinel-1 event buf)))))) | |
679 | 680 |
680 ;;;; Sending messages | 681 ;;;; Sending messages |
681 | 682 |
682 (defun erc-coding-system-for-target (target) | 683 (defun erc-coding-system-for-target (target) |
683 "Return the coding system or cons cell appropriate for TARGET. | 684 "Return the coding system or cons cell appropriate for TARGET. |