* riece-yank.el (riece-command-yank): Take a 1st argument to send
[riece] / lisp / riece-yank.el
index fdb5b34..862891c 100644 (file)
@@ -57,8 +57,31 @@ before/after the first/last non-blank line."
   (define-key riece-command-mode-map "\C-cy" 'undefined)
   (setq riece-yank-enabled nil))
 
-(defun riece-command-yank (prefix)
-  (interactive "sPrefix: ")
+(defun riece-yank-strip-space (string)
+  (with-temp-buffer
+    (insert string)
+    (untabify (point-min) (point-max))
+    ;; Delete blank lines before the first non-blank line.
+    (goto-char (point-min))
+    (while (looking-at " *$")
+      (delete-region (point) (progn (forward-line) (point))))
+    ;; Delete blank lines after the last non-blank line.
+    (goto-char (point-max))
+    (while (progn (beginning-of-line) (looking-at " *$"))
+      (delete-region (point) (progn (end-of-line 0) (point))))
+    ;; Delete common spaces in front of lines.
+    (setq space-width (point-max))
+    (while (looking-at " +")
+      (setq space-width (min space-width (length (match-string 0))))
+      (forward-line))
+    (goto-char (point-min))
+    (while (not (eobp))
+      (delete-char space-width)
+      (forward-line))
+    (buffer-string)))
+
+(defun riece-command-yank (arg prefix)
+  (interactive "P\nsPrefix: ")
   (when (or (not prefix)
            (string= prefix ""))
     (setq prefix " "))
@@ -67,32 +90,12 @@ before/after the first/last non-blank line."
     (unless kill
       (error "Nothing to send in kill-ring"))
     (if riece-yank-strip-space
-       (with-temp-buffer
-         (insert kill)
-         (untabify (point-min) (point-max))
-         ;; Delete blank lines before the first non-blank line.
-         (goto-char (point-min))
-         (while (looking-at " *$")
-           (delete-region (point) (progn (forward-line) (point))))
-         ;; Delete blank lines after the last non-blank line.
-         (goto-char (point-max))
-         (while (progn (beginning-of-line) (looking-at " *$"))
-           (delete-region (point) (progn (end-of-line 0) (point))))
-         ;; Delete common spaces in front of lines.
-         (setq space-width (point-max))
-         (while (looking-at " +")
-           (setq space-width (min space-width (length (match-string 0))))
-           (forward-line))
-         (goto-char (point-min))
-         (while (not (eobp))
-           (delete-char space-width)
-           (forward-line))
-         (setq kill (buffer-string))))
+       (setq kill (riece-yank-strip-space kill)))
     (setq msg (split-string kill "\n"))
     (when (y-or-n-p (format "Send \"%s\"\n? " kill))
       (mapcar
        (lambda (x) 
-        (riece-command-send-message (concat prefix x) nil)
+        (riece-command-send-message (concat prefix x) arg)
         ;; Without next line, you will be kicked out from ircd.
         ;; It may means "Don't send much data at once."
         (sit-for riece-yank-tick))