# HG changeset patch # User Alex Schroeder # Date 1136600887 0 # Node ID 7e0fcbf84eb8815ba76bd23fdb9e2dbeb6be8e19 # Parent 41a1f70eb5b9176a84a2deea0f8a2c63b7e10938 (rcirc-send-input): No longer check whether the process is open, since not all commands need an open process. (rcirc-send-string): Check whether the process is open before sending anything. diff -r 41a1f70eb5b9 -r 7e0fcbf84eb8 lisp/net/rcirc.el --- a/lisp/net/rcirc.el Fri Jan 06 19:41:35 2006 +0000 +++ b/lisp/net/rcirc.el Sat Jan 07 02:28:07 2006 +0000 @@ -434,6 +434,9 @@ (let ((string (concat (encode-coding-string string buffer-file-coding-system) "\n"))) + (unless (eq (process-status rcirc-process) 'open) + (error "Network connection to %s is not open" + (process-name rcirc-process))) (rcirc-debug process string) (process-send-string process string))) @@ -734,62 +737,59 @@ (defun rcirc-send-input () "Send input to target associated with the current buffer." (interactive) - (if (not (eq (process-status rcirc-process) 'open)) - (error "Network connection to %s is not open" - (process-name rcirc-process)) - (if (< (point) rcirc-prompt-end-marker) - ;; copy the line down to the input area - (progn - (forward-line 0) - (let ((start (if (eq (point) (point-min)) - (point) - (if (get-text-property (1- (point)) 'hard) - (point) - (previous-single-property-change (point) 'hard)))) - (end (next-single-property-change (1+ (point)) 'hard))) - (goto-char (point-max)) - (insert (replace-regexp-in-string - "\n\\s-+" " " - (buffer-substring-no-properties start end))))) - ;; process input - (goto-char (point-max)) - (let ((target (rcirc-buffer-target)) - (start rcirc-prompt-end-marker)) - (when (not (equal 0 (- (point) start))) - ;; delete a trailing newline - (when (eq (point) (point-at-bol)) - (delete-backward-char 1)) - (let ((input (buffer-substring-no-properties - rcirc-prompt-end-marker (point)))) - ;; process a /cmd - (if (string-match "^/\\([^ ]+\\) ?\\(.*\\)$" input) - (let* ((command (match-string 1 input)) - (fun (intern-soft (concat "rcirc-cmd-" command))) - (args (match-string 2 input))) - (newline) - (with-current-buffer (current-buffer) - (delete-region rcirc-prompt-end-marker (point)) - (if (string= command "me") - (rcirc-print rcirc-process (rcirc-nick rcirc-process) - "ACTION" (current-buffer) args) - (rcirc-print rcirc-process (rcirc-nick rcirc-process) - "COMMAND" (current-buffer) input)) - (set-marker rcirc-prompt-end-marker (point)) - (if (fboundp fun) - (funcall fun args rcirc-process target) - (rcirc-send-string rcirc-process - (concat command " " args))))) - ;; send message to server - (if (not rcirc-target) - (message "Not joined") - (delete-region rcirc-prompt-end-marker (point)) - (mapc (lambda (message) - (rcirc-send-message rcirc-process target message)) - (split-string input "\n")))) - ;; add to input-ring - (save-excursion - (ring-insert rcirc-input-ring input) - (setq rcirc-input-ring-index 0)))))))) + (if (< (point) rcirc-prompt-end-marker) + ;; copy the line down to the input area + (progn + (forward-line 0) + (let ((start (if (eq (point) (point-min)) + (point) + (if (get-text-property (1- (point)) 'hard) + (point) + (previous-single-property-change (point) 'hard)))) + (end (next-single-property-change (1+ (point)) 'hard))) + (goto-char (point-max)) + (insert (replace-regexp-in-string + "\n\\s-+" " " + (buffer-substring-no-properties start end))))) + ;; process input + (goto-char (point-max)) + (let ((target (rcirc-buffer-target)) + (start rcirc-prompt-end-marker)) + (when (not (equal 0 (- (point) start))) + ;; delete a trailing newline + (when (eq (point) (point-at-bol)) + (delete-backward-char 1)) + (let ((input (buffer-substring-no-properties + rcirc-prompt-end-marker (point)))) + ;; process a /cmd + (if (string-match "^/\\([^ ]+\\) ?\\(.*\\)$" input) + (let* ((command (match-string 1 input)) + (fun (intern-soft (concat "rcirc-cmd-" command))) + (args (match-string 2 input))) + (newline) + (with-current-buffer (current-buffer) + (delete-region rcirc-prompt-end-marker (point)) + (if (string= command "me") + (rcirc-print rcirc-process (rcirc-nick rcirc-process) + "ACTION" (current-buffer) args) + (rcirc-print rcirc-process (rcirc-nick rcirc-process) + "COMMAND" (current-buffer) input)) + (set-marker rcirc-prompt-end-marker (point)) + (if (fboundp fun) + (funcall fun args rcirc-process target) + (rcirc-send-string rcirc-process + (concat command " " args))))) + ;; send message to server + (if (not rcirc-target) + (message "Not joined") + (delete-region rcirc-prompt-end-marker (point)) + (mapc (lambda (message) + (rcirc-send-message rcirc-process target message)) + (split-string input "\n")))) + ;; add to input-ring + (save-excursion + (ring-insert rcirc-input-ring input) + (setq rcirc-input-ring-index 0))))))) (defvar rcirc-parent-buffer nil) (defvar rcirc-window-configuration nil)