diff options
| author | Stefan Monnier | 2011-05-11 23:25:58 -0300 |
|---|---|---|
| committer | Stefan Monnier | 2011-05-11 23:25:58 -0300 |
| commit | 488086f4dd22b95c37cf23bd4d1d9cc190aaf6b8 (patch) | |
| tree | 00dc155dc1d3a3d538f46070947885ebe20ea11d /lisp | |
| parent | 9820ccdf510351c2850218be8fd6402c5ada9805 (diff) | |
| download | emacs-488086f4dd22b95c37cf23bd4d1d9cc190aaf6b8.tar.gz emacs-488086f4dd22b95c37cf23bd4d1d9cc190aaf6b8.zip | |
* lisp/net/rcirc.el: Add support for SSL/TLS connections.
(rcirc-server-alist): New field `encryption'.
(rcirc): Check `encryption' settings.
(rcirc-connect): New arg `encryption'. Use open-network-stream.
Merge make-local-variable into `set'.
(rcirc--connection-open-p): New function.
(rcirc-send-string, rcirc-clean-up-buffer): Use it to handle case where
the process is not a network process (e.g. running gnutls-cli).
(set-rcirc-decode-coding-system, set-rcirc-encode-coding-system):
Make rcirc-(en|de)code-coding-system local here.
(rcirc-mode): Merge make-local-variable into `set'.
(rcirc-parent-buffer): Make permanent buffer-local.
(rcirc-multiline-minor-mode): Don't do it here.
(rcirc-switch-to-server-buffer): Don't switch to a random buffer if
there's no server buffer.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 38 | ||||
| -rw-r--r-- | lisp/net/rcirc.el | 160 |
2 files changed, 108 insertions, 90 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b0ed7bf12bd..40e9b00cd33 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,21 @@ | |||
| 1 | 2011-05-12 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * net/rcirc.el: Add support for SSL/TLS connections. | ||
| 4 | (rcirc-server-alist): New field `encryption'. | ||
| 5 | (rcirc): Check `encryption' settings. | ||
| 6 | (rcirc-connect): New arg `encryption'. Use open-network-stream. | ||
| 7 | Merge make-local-variable into `set'. | ||
| 8 | (rcirc--connection-open-p): New function. | ||
| 9 | (rcirc-send-string, rcirc-clean-up-buffer): Use it to handle case where | ||
| 10 | the process is not a network process (e.g. running gnutls-cli). | ||
| 11 | (set-rcirc-decode-coding-system, set-rcirc-encode-coding-system): | ||
| 12 | Make rcirc-(en|de)code-coding-system local here. | ||
| 13 | (rcirc-mode): Merge make-local-variable into `set'. | ||
| 14 | (rcirc-parent-buffer): Make permanent buffer-local. | ||
| 15 | (rcirc-multiline-minor-mode): Don't do it here. | ||
| 16 | (rcirc-switch-to-server-buffer): Don't switch to a random buffer if | ||
| 17 | there's no server buffer. | ||
| 18 | |||
| 1 | 2011-05-11 Glenn Morris <rgm@gnu.org> | 19 | 2011-05-11 Glenn Morris <rgm@gnu.org> |
| 2 | 20 | ||
| 3 | * newcomment.el (comment-kill): Prefix "unused" local. | 21 | * newcomment.el (comment-kill): Prefix "unused" local. |
| @@ -9,8 +27,8 @@ | |||
| 9 | 27 | ||
| 10 | 2011-05-10 Leo Liu <sdl.web@gmail.com> | 28 | 2011-05-10 Leo Liu <sdl.web@gmail.com> |
| 11 | 29 | ||
| 12 | * bookmark.el (bookmark-bmenu-mode-map): Bind | 30 | * bookmark.el (bookmark-bmenu-mode-map): |
| 13 | bookmark-bmenu-search to `/'. | 31 | Bind bookmark-bmenu-search to `/'. |
| 14 | 32 | ||
| 15 | * mail/footnote.el: Convert to utf-8 encoding. | 33 | * mail/footnote.el: Convert to utf-8 encoding. |
| 16 | (footnote-unicode-string, footnote-unicode-regexp): New variable. | 34 | (footnote-unicode-string, footnote-unicode-regexp): New variable. |
| @@ -38,8 +56,8 @@ | |||
| 38 | 56 | ||
| 39 | 2011-05-09 Chong Yidong <cyd@stupidchicken.com> | 57 | 2011-05-09 Chong Yidong <cyd@stupidchicken.com> |
| 40 | 58 | ||
| 41 | * progmodes/compile.el (compilation-start): Run | 59 | * progmodes/compile.el (compilation-start): |
| 42 | compilation-filter-hook for the async case too. | 60 | Run compilation-filter-hook for the async case too. |
| 43 | (compilation-filter-hook): Doc fix. | 61 | (compilation-filter-hook): Doc fix. |
| 44 | 62 | ||
| 45 | 2011-05-09 Deniz Dogan <deniz@dogan.se> | 63 | 2011-05-09 Deniz Dogan <deniz@dogan.se> |
| @@ -56,8 +74,8 @@ | |||
| 56 | 74 | ||
| 57 | 2011-05-09 Chong Yidong <cyd@stupidchicken.com> | 75 | 2011-05-09 Chong Yidong <cyd@stupidchicken.com> |
| 58 | 76 | ||
| 59 | * progmodes/compile.el (compilation-error-regexp-alist-alist): Fix | 77 | * progmodes/compile.el (compilation-error-regexp-alist-alist): |
| 60 | the ant regexp to handle end-line and end-column info from jikes. | 78 | Fix the ant regexp to handle end-line and end-column info from jikes. |
| 61 | Re-introduce maven regexp. Give the ruby-Test::Unit regexp a | 79 | Re-introduce maven regexp. Give the ruby-Test::Unit regexp a |
| 62 | higher priority to avoid clobbering by gnu. | 80 | higher priority to avoid clobbering by gnu. |
| 63 | 81 | ||
| @@ -68,16 +86,16 @@ | |||
| 68 | 86 | ||
| 69 | 2011-05-08 Ralph Schleicher <rs@ralph-schleicher.de> | 87 | 2011-05-08 Ralph Schleicher <rs@ralph-schleicher.de> |
| 70 | 88 | ||
| 71 | * progmodes/perl-mode.el (perl-imenu-generic-expression): Only | 89 | * progmodes/perl-mode.el (perl-imenu-generic-expression): |
| 72 | match variables declared via `my' or `our' (Bug#8261). | 90 | Only match variables declared via `my' or `our' (Bug#8261). |
| 73 | 91 | ||
| 74 | * net/browse-url.el (browse-url-of-dired-file): Allow browsing of | 92 | * net/browse-url.el (browse-url-of-dired-file): Allow browsing of |
| 75 | special file names `.' and `..' (Bug#8259). | 93 | special file names `.' and `..' (Bug#8259). |
| 76 | 94 | ||
| 77 | 2011-05-08 Chong Yidong <cyd@stupidchicken.com> | 95 | 2011-05-08 Chong Yidong <cyd@stupidchicken.com> |
| 78 | 96 | ||
| 79 | * progmodes/grep.el (grep-mode-font-lock-keywords): Remove | 97 | * progmodes/grep.el (grep-mode-font-lock-keywords): |
| 80 | buffer-changing entries. | 98 | Remove buffer-changing entries. |
| 81 | (grep-filter): New function. | 99 | (grep-filter): New function. |
| 82 | (grep-mode): Add it to compilation-filter-hook. | 100 | (grep-mode): Add it to compilation-filter-hook. |
| 83 | 101 | ||
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 148c9b7b297..206ebc8997c 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el | |||
| @@ -55,7 +55,10 @@ | |||
| 55 | :group 'applications) | 55 | :group 'applications) |
| 56 | 56 | ||
| 57 | (defcustom rcirc-server-alist | 57 | (defcustom rcirc-server-alist |
| 58 | '(("irc.freenode.net" :channels ("#rcirc"))) | 58 | '(("irc.freenode.net" :channels ("#rcirc") |
| 59 | ;; Don't use the TLS port by default, in case gnutls is not available. | ||
| 60 | ;; :port 7000 :encryption tls | ||
| 61 | )) | ||
| 59 | "An alist of IRC connections to establish when running `rcirc'. | 62 | "An alist of IRC connections to establish when running `rcirc'. |
| 60 | Each element looks like (SERVER-NAME PARAMETERS). | 63 | Each element looks like (SERVER-NAME PARAMETERS). |
| 61 | 64 | ||
| @@ -95,14 +98,22 @@ used. | |||
| 95 | 98 | ||
| 96 | VALUE must be a list of strings describing which channels to join | 99 | VALUE must be a list of strings describing which channels to join |
| 97 | when connecting to this server. If absent, no channels will be | 100 | when connecting to this server. If absent, no channels will be |
| 98 | connected to automatically." | 101 | connected to automatically. |
| 102 | |||
| 103 | `:encryption' | ||
| 104 | |||
| 105 | VALUE must be `plain' (the default) for unencrypted connections, or `tls' | ||
| 106 | for connections using SSL/TLS." | ||
| 99 | :type '(alist :key-type string | 107 | :type '(alist :key-type string |
| 100 | :value-type (plist :options ((:nick string) | 108 | :value-type (plist :options |
| 101 | (:port integer) | 109 | ((:nick string) |
| 102 | (:user-name string) | 110 | (:port integer) |
| 103 | (:password string) | 111 | (:user-name string) |
| 104 | (:full-name string) | 112 | (:password string) |
| 105 | (:channels (repeat string))))) | 113 | (:full-name string) |
| 114 | (:channels (repeat string)) | ||
| 115 | (:encryption (choice (const tls) | ||
| 116 | (const plain)))))) | ||
| 106 | :group 'rcirc) | 117 | :group 'rcirc) |
| 107 | 118 | ||
| 108 | (defcustom rcirc-default-port 6667 | 119 | (defcustom rcirc-default-port 6667 |
| @@ -441,10 +452,14 @@ If ARG is non-nil, instead prompt for connection parameters." | |||
| 441 | (plist-get server-plist | 452 | (plist-get server-plist |
| 442 | :channels) | 453 | :channels) |
| 443 | " ")) | 454 | " ")) |
| 444 | "[, ]+" t))) | 455 | "[, ]+" t)) |
| 456 | (encryption | ||
| 457 | (intern (completing-read "Encryption (default plain): " | ||
| 458 | '("plain" "tls") | ||
| 459 | nil t nil nil "plain")))) | ||
| 445 | (rcirc-connect server port nick user-name | 460 | (rcirc-connect server port nick user-name |
| 446 | rcirc-default-full-name | 461 | rcirc-default-full-name |
| 447 | channels password)) | 462 | channels password encryption)) |
| 448 | ;; connect to servers in `rcirc-server-alist' | 463 | ;; connect to servers in `rcirc-server-alist' |
| 449 | (let (connected-servers) | 464 | (let (connected-servers) |
| 450 | (dolist (c rcirc-server-alist) | 465 | (dolist (c rcirc-server-alist) |
| @@ -456,7 +471,8 @@ If ARG is non-nil, instead prompt for connection parameters." | |||
| 456 | (full-name (or (plist-get (cdr c) :full-name) | 471 | (full-name (or (plist-get (cdr c) :full-name) |
| 457 | rcirc-default-full-name)) | 472 | rcirc-default-full-name)) |
| 458 | (channels (plist-get (cdr c) :channels)) | 473 | (channels (plist-get (cdr c) :channels)) |
| 459 | (password (plist-get (cdr c) :password))) | 474 | (password (plist-get (cdr c) :password)) |
| 475 | (encryption (plist-get (cdr c) :encryption))) | ||
| 460 | (when server | 476 | (when server |
| 461 | (let (connected) | 477 | (let (connected) |
| 462 | (dolist (p (rcirc-process-list)) | 478 | (dolist (p (rcirc-process-list)) |
| @@ -465,7 +481,7 @@ If ARG is non-nil, instead prompt for connection parameters." | |||
| 465 | (if (not connected) | 481 | (if (not connected) |
| 466 | (condition-case e | 482 | (condition-case e |
| 467 | (rcirc-connect server port nick user-name | 483 | (rcirc-connect server port nick user-name |
| 468 | full-name channels password) | 484 | full-name channels password encryption) |
| 469 | (quit (message "Quit connecting to %s" server))) | 485 | (quit (message "Quit connecting to %s" server))) |
| 470 | (with-current-buffer (process-buffer connected) | 486 | (with-current-buffer (process-buffer connected) |
| 471 | (setq connected-servers | 487 | (setq connected-servers |
| @@ -498,7 +514,7 @@ If ARG is non-nil, instead prompt for connection parameters." | |||
| 498 | 514 | ||
| 499 | ;;;###autoload | 515 | ;;;###autoload |
| 500 | (defun rcirc-connect (server &optional port nick user-name | 516 | (defun rcirc-connect (server &optional port nick user-name |
| 501 | full-name startup-channels password) | 517 | full-name startup-channels password encryption) |
| 502 | (save-excursion | 518 | (save-excursion |
| 503 | (message "Connecting to %s..." server) | 519 | (message "Connecting to %s..." server) |
| 504 | (let* ((inhibit-eol-conversion) | 520 | (let* ((inhibit-eol-conversion) |
| @@ -511,7 +527,9 @@ If ARG is non-nil, instead prompt for connection parameters." | |||
| 511 | (user-name (or user-name rcirc-default-user-name)) | 527 | (user-name (or user-name rcirc-default-user-name)) |
| 512 | (full-name (or full-name rcirc-default-full-name)) | 528 | (full-name (or full-name rcirc-default-full-name)) |
| 513 | (startup-channels startup-channels) | 529 | (startup-channels startup-channels) |
| 514 | (process (make-network-process :name server :host server :service port-number))) | 530 | (process (open-network-stream |
| 531 | server nil server port-number | ||
| 532 | :type (or encryption 'plain)))) | ||
| 515 | ;; set up process | 533 | ;; set up process |
| 516 | (set-process-coding-system process 'raw-text 'raw-text) | 534 | (set-process-coding-system process 'raw-text 'raw-text) |
| 517 | (switch-to-buffer (rcirc-generate-new-buffer-name process nil)) | 535 | (switch-to-buffer (rcirc-generate-new-buffer-name process nil)) |
| @@ -519,32 +537,23 @@ If ARG is non-nil, instead prompt for connection parameters." | |||
| 519 | (rcirc-mode process nil) | 537 | (rcirc-mode process nil) |
| 520 | (set-process-sentinel process 'rcirc-sentinel) | 538 | (set-process-sentinel process 'rcirc-sentinel) |
| 521 | (set-process-filter process 'rcirc-filter) | 539 | (set-process-filter process 'rcirc-filter) |
| 522 | (make-local-variable 'rcirc-process) | 540 | |
| 523 | (setq rcirc-process process) | 541 | (set (make-local-variable 'rcirc-process) process) |
| 524 | (make-local-variable 'rcirc-server) | 542 | (set (make-local-variable 'rcirc-server) server) |
| 525 | (setq rcirc-server server) | 543 | (set (make-local-variable 'rcirc-server-name) server) ; Update when we get 001 response. |
| 526 | (make-local-variable 'rcirc-server-name) | 544 | (set (make-local-variable 'rcirc-buffer-alist) nil) |
| 527 | (setq rcirc-server-name server) ; update when we get 001 response | 545 | (set (make-local-variable 'rcirc-nick-table) |
| 528 | (make-local-variable 'rcirc-buffer-alist) | 546 | (make-hash-table :test 'equal)) |
| 529 | (setq rcirc-buffer-alist nil) | 547 | (set (make-local-variable 'rcirc-nick) nick) |
| 530 | (make-local-variable 'rcirc-nick-table) | 548 | (set (make-local-variable 'rcirc-process-output) nil) |
| 531 | (setq rcirc-nick-table (make-hash-table :test 'equal)) | 549 | (set (make-local-variable 'rcirc-startup-channels) startup-channels) |
| 532 | (make-local-variable 'rcirc-nick) | 550 | (set (make-local-variable 'rcirc-last-server-message-time) |
| 533 | (setq rcirc-nick nick) | 551 | (current-time)) |
| 534 | (make-local-variable 'rcirc-process-output) | 552 | |
| 535 | (setq rcirc-process-output nil) | 553 | (set (make-local-variable 'rcirc-timeout-timer) nil) |
| 536 | (make-local-variable 'rcirc-startup-channels) | 554 | (set (make-local-variable 'rcirc-user-disconnect) nil) |
| 537 | (setq rcirc-startup-channels startup-channels) | 555 | (set (make-local-variable 'rcirc-user-authenticated) nil) |
| 538 | (make-local-variable 'rcirc-last-server-message-time) | 556 | (set (make-local-variable 'rcirc-connecting) t) |
| 539 | (setq rcirc-last-server-message-time (current-time)) | ||
| 540 | (make-local-variable 'rcirc-timeout-timer) | ||
| 541 | (setq rcirc-timeout-timer nil) | ||
| 542 | (make-local-variable 'rcirc-user-disconnect) | ||
| 543 | (setq rcirc-user-disconnect nil) | ||
| 544 | (make-local-variable 'rcirc-user-authenticated) | ||
| 545 | (setq rcirc-user-authenticated nil) | ||
| 546 | (make-local-variable 'rcirc-connecting) | ||
| 547 | (setq rcirc-connecting t) | ||
| 548 | 557 | ||
| 549 | (add-hook 'auto-save-hook 'rcirc-log-write) | 558 | (add-hook 'auto-save-hook 'rcirc-log-write) |
| 550 | 559 | ||
| @@ -722,11 +731,14 @@ Function is called with PROCESS, COMMAND, SENDER, ARGS and LINE.") | |||
| 722 | (mapconcat 'identity (cdr args) " ") | 731 | (mapconcat 'identity (cdr args) " ") |
| 723 | (not (member response rcirc-responses-no-activity)))) | 732 | (not (member response rcirc-responses-no-activity)))) |
| 724 | 733 | ||
| 734 | (defun rcirc--connection-open-p (process) | ||
| 735 | (memq (process-status process) '(run open))) | ||
| 736 | |||
| 725 | (defun rcirc-send-string (process string) | 737 | (defun rcirc-send-string (process string) |
| 726 | "Send PROCESS a STRING plus a newline." | 738 | "Send PROCESS a STRING plus a newline." |
| 727 | (let ((string (concat (encode-coding-string string rcirc-encode-coding-system) | 739 | (let ((string (concat (encode-coding-string string rcirc-encode-coding-system) |
| 728 | "\n"))) | 740 | "\n"))) |
| 729 | (unless (eq (process-status process) 'open) | 741 | (unless (rcirc--connection-open-p process) |
| 730 | (error "Network connection to %s is not open" | 742 | (error "Network connection to %s is not open" |
| 731 | (process-name process))) | 743 | (process-name process))) |
| 732 | (rcirc-debug process string) | 744 | (rcirc-debug process string) |
| @@ -878,12 +890,12 @@ IRC command completion is performed only if '/' is the first input char." | |||
| 878 | (defun set-rcirc-decode-coding-system (coding-system) | 890 | (defun set-rcirc-decode-coding-system (coding-system) |
| 879 | "Set the decode coding system used in this channel." | 891 | "Set the decode coding system used in this channel." |
| 880 | (interactive "zCoding system for incoming messages: ") | 892 | (interactive "zCoding system for incoming messages: ") |
| 881 | (setq rcirc-decode-coding-system coding-system)) | 893 | (set (make-local-variable 'rcirc-decode-coding-system) coding-system)) |
| 882 | 894 | ||
| 883 | (defun set-rcirc-encode-coding-system (coding-system) | 895 | (defun set-rcirc-encode-coding-system (coding-system) |
| 884 | "Set the encode coding system used in this channel." | 896 | "Set the encode coding system used in this channel." |
| 885 | (interactive "zCoding system for outgoing messages: ") | 897 | (interactive "zCoding system for outgoing messages: ") |
| 886 | (setq rcirc-encode-coding-system coding-system)) | 898 | (set (make-local-variable 'rcirc-encode-coding-system) coding-system)) |
| 887 | 899 | ||
| 888 | (defvar rcirc-mode-map | 900 | (defvar rcirc-mode-map |
| 889 | (let ((map (make-sparse-keymap))) | 901 | (let ((map (make-sparse-keymap))) |
| @@ -948,27 +960,18 @@ This number is independent of the number of lines in the buffer.") | |||
| 948 | (setq major-mode 'rcirc-mode) | 960 | (setq major-mode 'rcirc-mode) |
| 949 | (setq mode-line-process nil) | 961 | (setq mode-line-process nil) |
| 950 | 962 | ||
| 951 | (make-local-variable 'rcirc-input-ring) | 963 | (set (make-local-variable 'rcirc-input-ring) |
| 952 | (setq rcirc-input-ring (make-ring rcirc-input-ring-size)) | 964 | (make-ring rcirc-input-ring-size)) |
| 953 | (make-local-variable 'rcirc-server-buffer) | 965 | (set (make-local-variable 'rcirc-server-buffer) (process-buffer process)) |
| 954 | (setq rcirc-server-buffer (process-buffer process)) | 966 | (set (make-local-variable 'rcirc-target) target) |
| 955 | (make-local-variable 'rcirc-target) | 967 | (set (make-local-variable 'rcirc-topic) nil) |
| 956 | (setq rcirc-target target) | 968 | (set (make-local-variable 'rcirc-last-post-time) (current-time)) |
| 957 | (make-local-variable 'rcirc-topic) | 969 | (set (make-local-variable 'fill-paragraph-function) 'rcirc-fill-paragraph) |
| 958 | (setq rcirc-topic nil) | 970 | (set (make-local-variable 'rcirc-recent-quit-alist) nil) |
| 959 | (make-local-variable 'rcirc-last-post-time) | 971 | (set (make-local-variable 'rcirc-current-line) 0) |
| 960 | (setq rcirc-last-post-time (current-time)) | 972 | |
| 961 | (make-local-variable 'fill-paragraph-function) | 973 | (set (make-local-variable 'rcirc-short-buffer-name) nil) |
| 962 | (setq fill-paragraph-function 'rcirc-fill-paragraph) | 974 | (set (make-local-variable 'rcirc-urls) t) |
| 963 | (make-local-variable 'rcirc-recent-quit-alist) | ||
| 964 | (setq rcirc-recent-quit-alist nil) | ||
| 965 | (make-local-variable 'rcirc-current-line) | ||
| 966 | (setq rcirc-current-line 0) | ||
| 967 | |||
| 968 | (make-local-variable 'rcirc-short-buffer-name) | ||
| 969 | (setq rcirc-short-buffer-name nil) | ||
| 970 | (make-local-variable 'rcirc-urls) | ||
| 971 | (setq use-hard-newlines t) | ||
| 972 | 975 | ||
| 973 | ;; setup for omitting responses | 976 | ;; setup for omitting responses |
| 974 | (setq buffer-invisibility-spec '()) | 977 | (setq buffer-invisibility-spec '()) |
| @@ -978,28 +981,23 @@ This number is independent of the number of lines in the buffer.") | |||
| 978 | ?. 'font-lock-keyword-face))) | 981 | ?. 'font-lock-keyword-face))) |
| 979 | (make-vector 3 glyph))) | 982 | (make-vector 3 glyph))) |
| 980 | 983 | ||
| 981 | (make-local-variable 'rcirc-decode-coding-system) | ||
| 982 | (make-local-variable 'rcirc-encode-coding-system) | ||
| 983 | (dolist (i rcirc-coding-system-alist) | 984 | (dolist (i rcirc-coding-system-alist) |
| 984 | (let ((chan (if (consp (car i)) (caar i) (car i))) | 985 | (let ((chan (if (consp (car i)) (caar i) (car i))) |
| 985 | (serv (if (consp (car i)) (cdar i) ""))) | 986 | (serv (if (consp (car i)) (cdar i) ""))) |
| 986 | (when (and (string-match chan (or target "")) | 987 | (when (and (string-match chan (or target "")) |
| 987 | (string-match serv (rcirc-server-name process))) | 988 | (string-match serv (rcirc-server-name process))) |
| 988 | (setq rcirc-decode-coding-system (if (consp (cdr i)) (cadr i) (cdr i)) | 989 | (set (make-local-variable 'rcirc-decode-coding-system) |
| 989 | rcirc-encode-coding-system (if (consp (cdr i)) (cddr i) (cdr i)))))) | 990 | (if (consp (cdr i)) (cadr i) (cdr i))) |
| 991 | (set (make-local-variable 'rcirc-encode-coding-system) | ||
| 992 | (if (consp (cdr i)) (cddr i) (cdr i)))))) | ||
| 990 | 993 | ||
| 991 | ;; setup the prompt and markers | 994 | ;; setup the prompt and markers |
| 992 | (make-local-variable 'rcirc-prompt-start-marker) | 995 | (set (make-local-variable 'rcirc-prompt-start-marker) (point-max-marker)) |
| 993 | (setq rcirc-prompt-start-marker (make-marker)) | 996 | (set (make-local-variable 'rcirc-prompt-end-marker) (point-max-marker)) |
| 994 | (set-marker rcirc-prompt-start-marker (point-max)) | ||
| 995 | (make-local-variable 'rcirc-prompt-end-marker) | ||
| 996 | (setq rcirc-prompt-end-marker (make-marker)) | ||
| 997 | (set-marker rcirc-prompt-end-marker (point-max)) | ||
| 998 | (rcirc-update-prompt) | 997 | (rcirc-update-prompt) |
| 999 | (goto-char rcirc-prompt-end-marker) | 998 | (goto-char rcirc-prompt-end-marker) |
| 1000 | (make-local-variable 'overlay-arrow-position) | 999 | |
| 1001 | (setq overlay-arrow-position (make-marker)) | 1000 | (set (make-local-variable 'overlay-arrow-position) (make-marker)) |
| 1002 | (set-marker overlay-arrow-position nil) | ||
| 1003 | 1001 | ||
| 1004 | ;; if the user changes the major mode or kills the buffer, there is | 1002 | ;; if the user changes the major mode or kills the buffer, there is |
| 1005 | ;; cleanup work to do | 1003 | ;; cleanup work to do |
| @@ -1095,7 +1093,7 @@ Logfiles are kept in `rcirc-log-directory'." | |||
| 1095 | (let ((buffer (current-buffer))) | 1093 | (let ((buffer (current-buffer))) |
| 1096 | (rcirc-clear-activity buffer) | 1094 | (rcirc-clear-activity buffer) |
| 1097 | (when (and (rcirc-buffer-process) | 1095 | (when (and (rcirc-buffer-process) |
| 1098 | (eq (process-status (rcirc-buffer-process)) 'open)) | 1096 | (rcirc--connection-open-p (rcirc-buffer-process))) |
| 1099 | (with-rcirc-server-buffer | 1097 | (with-rcirc-server-buffer |
| 1100 | (setq rcirc-buffer-alist | 1098 | (setq rcirc-buffer-alist |
| 1101 | (rassq-delete-all buffer rcirc-buffer-alist))) | 1099 | (rassq-delete-all buffer rcirc-buffer-alist))) |
| @@ -1222,6 +1220,8 @@ Create the buffer if it doesn't exist." | |||
| 1222 | (concat command " :" args))))))) | 1220 | (concat command " :" args))))))) |
| 1223 | 1221 | ||
| 1224 | (defvar rcirc-parent-buffer nil) | 1222 | (defvar rcirc-parent-buffer nil) |
| 1223 | (make-variable-buffer-local 'rcirc-parent-buffer) | ||
| 1224 | (put 'rcirc-parent-buffer 'permanent-local t) | ||
| 1225 | (defvar rcirc-window-configuration nil) | 1225 | (defvar rcirc-window-configuration nil) |
| 1226 | (defun rcirc-edit-multiline () | 1226 | (defun rcirc-edit-multiline () |
| 1227 | "Move current edit to a dedicated buffer." | 1227 | "Move current edit to a dedicated buffer." |
| @@ -1257,8 +1257,6 @@ Create the buffer if it doesn't exist." | |||
| 1257 | :keymap rcirc-multiline-minor-mode-map | 1257 | :keymap rcirc-multiline-minor-mode-map |
| 1258 | :global nil | 1258 | :global nil |
| 1259 | :group 'rcirc | 1259 | :group 'rcirc |
| 1260 | (make-local-variable 'rcirc-parent-buffer) | ||
| 1261 | (put 'rcirc-parent-buffer 'permanent-local t) | ||
| 1262 | (setq fill-column rcirc-max-message-length)) | 1260 | (setq fill-column rcirc-max-message-length)) |
| 1263 | 1261 | ||
| 1264 | (defun rcirc-multiline-minor-submit () | 1262 | (defun rcirc-multiline-minor-submit () |
| @@ -1842,6 +1840,8 @@ Uninteresting lines are those whose responses are listed in | |||
| 1842 | (defun rcirc-switch-to-server-buffer () | 1840 | (defun rcirc-switch-to-server-buffer () |
| 1843 | "Switch to the server buffer associated with current channel buffer." | 1841 | "Switch to the server buffer associated with current channel buffer." |
| 1844 | (interactive) | 1842 | (interactive) |
| 1843 | (unless (buffer-live-p rcirc-server-buffer) | ||
| 1844 | (error "No such buffer")) | ||
| 1845 | (switch-to-buffer rcirc-server-buffer)) | 1845 | (switch-to-buffer rcirc-server-buffer)) |
| 1846 | 1846 | ||
| 1847 | (defun rcirc-jump-to-first-unread-line () | 1847 | (defun rcirc-jump-to-first-unread-line () |