From 27d6c5a891036a40c1242f1f53cc794023f31283 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Wed, 15 Aug 2012 20:26:48 +0800 Subject: [PATCH] Fix for the buffer-local rcirc-encode-coding-system case in rcirc-split-message. --- lisp/ChangeLog | 5 +++++ lisp/net/rcirc.el | 33 +++++++++++++++++---------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5b2c16edaf..143c255136 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-08-15 Leo Liu + + * net/rcirc.el (rcirc-split-message): Fix for buffer-local + rcirc-encode-coding-system. + 2012-08-13 Leo Liu * net/rcirc.el (rcirc-split-message): New function. diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 0eb6c7ea51..0491e23ee2 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -796,22 +796,23 @@ With no argument or nil as argument, use the current buffer." (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)))) + ;; `rcirc-encode-coding-system' can have buffer-local value. + (let ((encoding rcirc-encode-coding-system)) + (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) encoding 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. -- 2.20.1