* lisp/net/rcirc.el (rcirc-split-message): New function.
(rcirc-send-message): Use it. Fixes: debbugs:12051
This commit is contained in:
parent
170aedb97e
commit
4432d2e25b
2 changed files with 29 additions and 15 deletions
|
@ -1,3 +1,8 @@
|
|||
2012-08-13 Leo Liu <sdl.web@gmail.com>
|
||||
|
||||
* net/rcirc.el (rcirc-split-message): New function.
|
||||
(rcirc-send-message): Use it. (Bug#12051)
|
||||
|
||||
2012-08-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp/copyright.el (copyright-update-directory): Logic fix.
|
||||
|
|
|
@ -794,26 +794,35 @@ With no argument or nil as argument, use the current buffer."
|
|||
(defvar rcirc-max-message-length 420
|
||||
"Messages longer than this value will be split.")
|
||||
|
||||
(defun rcirc-split-message (message)
|
||||
"Split MESSAGE into chunks within `rcirc-max-message-length'."
|
||||
(with-temp-buffer
|
||||
(insert message)
|
||||
(goto-char (point-min))
|
||||
(let (result)
|
||||
(while (not (eobp))
|
||||
(goto-char (or (byte-to-position rcirc-max-message-length)
|
||||
(point-max)))
|
||||
;; max message length is 512 including CRLF
|
||||
(while (and (not (bobp))
|
||||
(> (length
|
||||
(encode-coding-region (point-min) (point)
|
||||
rcirc-encode-coding-system t))
|
||||
rcirc-max-message-length))
|
||||
(forward-char -1))
|
||||
(push (delete-and-extract-region (point-min) (point)) result))
|
||||
(nreverse result))))
|
||||
|
||||
(defun rcirc-send-message (process target message &optional noticep silent)
|
||||
"Send TARGET associated with PROCESS a privmsg with text MESSAGE.
|
||||
If NOTICEP is non-nil, send a notice instead of privmsg.
|
||||
If SILENT is non-nil, do not print the message in any irc buffer."
|
||||
;; max message length is 512 including CRLF
|
||||
(let* ((response (if noticep "NOTICE" "PRIVMSG"))
|
||||
(oversize (> (length message) rcirc-max-message-length))
|
||||
(text (if oversize
|
||||
(substring message 0 rcirc-max-message-length)
|
||||
message))
|
||||
(text (if (string= text "")
|
||||
" "
|
||||
text))
|
||||
(more (if oversize
|
||||
(substring message rcirc-max-message-length))))
|
||||
(let ((response (if noticep "NOTICE" "PRIVMSG")))
|
||||
(rcirc-get-buffer-create process target)
|
||||
(rcirc-send-string process (concat response " " target " :" text))
|
||||
(unless silent
|
||||
(rcirc-print process (rcirc-nick process) response target text))
|
||||
(when more (rcirc-send-message process target more noticep))))
|
||||
(dolist (msg (rcirc-split-message message))
|
||||
(rcirc-send-string process (concat response " " target " :" msg))
|
||||
(unless silent
|
||||
(rcirc-print process (rcirc-nick process) response target msg)))))
|
||||
|
||||
(defvar rcirc-input-ring nil)
|
||||
(defvar rcirc-input-ring-index 0)
|
||||
|
|
Loading…
Add table
Reference in a new issue