Speedups; see ChangeLog for fine details.
authoryamaoka <yamaoka>
Thu, 13 May 1999 12:39:08 +0000 (12:39 +0000)
committeryamaoka <yamaoka>
Thu, 13 May 1999 12:39:08 +0000 (12:39 +0000)
21 files changed:
lisp/dgnushack.el
lisp/gnus-art.el
lisp/gnus-kill.el
lisp/gnus-mh.el
lisp/gnus-msg.el
lisp/gnus-picon.el
lisp/gnus-soup.el
lisp/gnus-spec.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/md5.el
lisp/message.el
lisp/nndb.el
lisp/nnheader.el
lisp/nnmail.el
lisp/nnsoup.el
lisp/nnspool.el
lisp/nntp.el
lisp/pop3-fma.el

index 8224ba1..5452fe0 100644 (file)
@@ -119,7 +119,7 @@ Modify to suit your needs."))
     (with-temp-buffer
       (let ((standard-output (current-buffer)))
        (Custom-make-dependencies "."))
-      (message (buffer-string)))
+      (message (buffer-substring (point-min) (point-max))))
     (require 'cus-load)
     (byte-compile-file "custom-load.el")
 
index b67fa90..ca0a9fa 100644 (file)
@@ -701,8 +701,9 @@ always hide."
            ;; select which header lines is to remain visible in the
            ;; article buffer.
            (goto-char (point-min))
-           (while (re-search-forward "^[^ \t]*:" nil t)
-             (beginning-of-line)
+           (while (memq (char-after) '(?\t ?\ ))
+             (forward-line 1))
+           (while (not (eobp))
              ;; Mark the rank of the header.
              (put-text-property
               (point) (1+ (point)) 'message-rank
@@ -711,7 +712,9 @@ always hide."
                            (not (looking-at ignored))))
                   (gnus-article-header-rank)
                 (+ 2 max)))
-             (forward-line 1))
+             (forward-line 1)
+             (while (memq (char-after) '(?\t ?\ ))
+               (forward-line 1)))
            (message-sort-headers-1)
            (when (setq beg (text-property-any
                             (point-min) (point-max) 'message-rank (+ 2 max)))
@@ -746,12 +749,11 @@ always hide."
              (while (re-search-forward "^[^:]+:[ \t]*\n[^ \t]" nil t)
                (forward-line -1)
                (gnus-article-hide-text-type
-                (progn (beginning-of-line) (point))
+                (point)
                 (progn
-                  (end-of-line)
-                  (if (re-search-forward "^[^ \t]" nil t)
-                      (match-beginning 0)
-                    (point-max)))
+                  (while (and (zerop (forward-line 1))
+                              (memq (char-after) '(?\t ?\ ))))
+                  (point))
                 'boring-headers)))
             ;; Hide boring Newsgroups header.
             ((eq elem 'newsgroups)
@@ -807,10 +809,9 @@ always hide."
       (gnus-article-hide-text-type
        (progn (beginning-of-line) (point))
        (progn
-        (end-of-line)
-        (if (re-search-forward "^[^ \t]" nil t)
-            (match-beginning 0)
-          (point-max)))
+        (while (and (zerop (forward-line 1))
+                    (memq (char-after) '(?\t ?\ ))))
+        (point))
        'boring-headers))))
 
 (defun article-treat-dumbquotes ()
@@ -877,7 +878,7 @@ characters to translate to."
            (adaptive-fill-mode t))
        (while (not (eobp))
          (and (>= (current-column) (min fill-column (window-width)))
-              (not (eq (char-before) ?:))
+              (not (eq (preceding-char) ?:))
               (fill-paragraph nil))
          (end-of-line 2))))))
 
@@ -2706,7 +2707,7 @@ groups."
   "Exit the article editing without updating."
   (interactive)
   ;; We remove all text props from the article buffer.
-  (let ((buf (format "%s" (buffer-string)))
+  (let ((buf (format "%s" (buffer-substring (point-min) (point-max))))
        (curbuf (current-buffer))
        (p (point))
        (window-start (window-start)))
@@ -2815,7 +2816,7 @@ after replacing with the original article."
       (setq font-lock-defaults nil)
       (font-lock-mode 0))
     ;; We remove all text props from the article buffer.
-    (setq buf (format "%s" (buffer-string)))
+    (setq buf (format "%s" (buffer-substring (point-min) (point-max))))
     (set-buffer (get-buffer-create gnus-original-article-buffer))
     (erase-buffer)
     (insert buf)
@@ -3028,9 +3029,11 @@ do the highlighting.  See the documentation for those functions."
            (when (and field-face
                       (not (memq (setq from (point)) fpoints)))
              (push from fpoints)
-             (if (re-search-forward "^[^ \t]" nil t)
-                 (forward-char -2)
-               (goto-char (point-max)))
+             (while (and (zerop (forward-line 1))
+                         (memq (char-after) '(?\t ?\ ))))
+             (unless (eobp)
+               ;; Go to the end of the previous line.
+               (end-of-line 0))
              (gnus-put-text-property from (point) 'face field-face))))))))
 
 (defun gnus-article-highlight-signature ()
@@ -3122,9 +3125,9 @@ specified by `gnus-button-alist'."
        (while (re-search-forward (car entry) nil t)
          ;; Each header matching the entry.
          (setq beg (match-beginning 0))
-         (setq end (or (and (re-search-forward "^[^ \t]" nil t)
-                            (match-beginning 0))
-                       (point-max)))
+         (while (and (zerop (forward-line 1))
+                     (memq (char-after) '(?\t ?\ ))))
+         (setq end (point))
          (goto-char beg)
          (while (re-search-forward (nth 1 entry) end t)
            ;; Each match within a header.
index abcc401..1860074 100644 (file)
@@ -282,7 +282,7 @@ If NEWSGROUP is nil, the global kill file is selected."
   (if (and gnus-current-kill-article
           (get-buffer gnus-summary-buffer))
       ;; Assume newsgroup is selected.
-      (gnus-kill-file-apply-string (buffer-string))
+      (gnus-kill-file-apply-string (buffer-substring (point-min) (point-max)))
     (ding) (gnus-message 2 "No newsgroup is selected.")))
 
 (defun gnus-kill-file-apply-string (string)
index fa01f5a..a82e4e2 100644 (file)
@@ -76,7 +76,7 @@ Optional argument FOLDER specifies folder name."
          (set-buffer errbuf)
          (if (zerop (buffer-size))
              (message "Article saved in folder: %s" folder)
-           (message "%s" (buffer-string)))
+           (message "%s" (buffer-substring (point-min) (point-max))))
          (kill-buffer errbuf))))
     (setq gnus-newsgroup-last-folder folder)))
 
index ac915ed..d1c2094 100644 (file)
@@ -426,7 +426,7 @@ header line with the old Message-ID."
          (gnus-remove-text-with-property 'gnus-next)
          (insert
           (prog1
-              (format "%s" (buffer-string))
+              (format "%s" (buffer-substring (point-min) (point-max)))
             (erase-buffer)))
          ;; Find the original headers.
          (set-buffer gnus-original-article-buffer)
index a3b5418..fba2811 100644 (file)
@@ -514,7 +514,9 @@ none, and whose CDR is the corresponding element of DOMAINS."
                                        nil 'quiet)
                          (prog1 (make-glyph (vector 'xbm :file fname))
                            (delete-file fname))))
-       (t (make-glyph (vector type :data (buffer-string))))))
+       (t (make-glyph
+           (vector type :data
+                   (buffer-substring (point-min) (point-max)))))))
 
 ;;; Parsing of piconsearch result page.
 
index 1fdd83f..3d97829 100644 (file)
@@ -380,12 +380,12 @@ though the two last may be nil if they are missing."
          (push (vector (gnus-soup-field)
                        (gnus-soup-field)
                        (gnus-soup-field)
-                       (and (eq (char-before) ?\t)
+                       (and (eq (preceding-char) ?\t)
                             (gnus-soup-field))
-                       (and (eq (char-before) ?\t)
+                       (and (eq (preceding-char) ?\t)
                             (string-to-int (gnus-soup-field))))
                areas)
-         (when (eq (char-before) ?\t)
+         (when (eq (preceding-char) ?\t)
            (beginning-of-line 2)))
        (kill-buffer (current-buffer))))
     areas))
@@ -403,7 +403,7 @@ file.  The vector contain three strings, [prefix name encoding]."
        (push (vector (gnus-soup-field) (gnus-soup-field)
                      (gnus-soup-field))
              replies)
-       (when (eq (char-before) ?\t)
+       (when (eq (preceding-char) ?\t)
          (beginning-of-line 2)))
       (kill-buffer (current-buffer)))
     replies))
index 2b06fa8..02acdda 100644 (file)
                  (push el flist)))
            (insert elem-type)
            (push (car elem) flist))))
-      (setq fstring (buffer-string)))
+      (setq fstring (buffer-substring (point-min) (point-max))))
 
     ;; Do some postprocessing to increase efficiency.
     (setq
index 6633132..ede3d4f 100644 (file)
@@ -1089,7 +1089,7 @@ See `gnus-simplify-buffer-fuzzy' for details."
        (setq subject (substring subject (match-end 0))))
       (insert subject)
       (inline (gnus-simplify-buffer-fuzzy))
-      (buffer-string))))
+      (buffer-substring (point-min) (point-max)))))
 
 (defsubst gnus-simplify-subject-fully (subject)
   "Simplify a subject string according to gnus-summary-gather-subject-limit."
@@ -7338,7 +7338,7 @@ groups."
            (save-excursion
              (save-restriction
                (message-narrow-to-head)
-               (let ((head (buffer-string))
+               (let ((head (buffer-substring (point-min) (point-max)))
                      header)
                  (nnheader-temp-write nil
                    (insert (format "211 %d Article retrieved.\n"
@@ -8159,15 +8159,14 @@ is non-nil or the Subject: of both articles are the same."
        (let (gnus-mark-article-hook)
          (gnus-summary-select-article t t nil current-article))
        (set-buffer gnus-original-article-buffer)
-       (let ((buf (format "%s" (buffer-string))))
+       (let ((buf (format "%s" (buffer-substring (point-min) (point-max)))))
          (nnheader-temp-write nil
            (insert buf)
            (goto-char (point-min))
            (if (re-search-forward "^References: " nil t)
                (progn
                  (re-search-forward "^[^ \t]" nil t)
-                 (forward-line -1)
-                 (end-of-line)
+                 (end-of-line 0) ;; Go to the end of the previous line.
                  (insert " " message-id))
              (insert "References: " message-id "\n"))
            (unless (gnus-request-replace-article
index 6c3400e..7017aca 100644 (file)
@@ -396,7 +396,7 @@ Cache the result as a text property stored in DATE."
     (goto-char (point-min))
     (while (search-forward "%" nil t)
       (insert "%"))
-    (buffer-string)))
+    (buffer-substring (point-min) (point-max))))
 
 ;; Make a hash table (default and minimum size is 256).
 ;; Optional argument HASHSIZE specifies the table size.
index 26245b3..2a2899a 100644 (file)
@@ -866,7 +866,8 @@ XEmacs compatibility workaround."
                      (gnus-xmas-call-region "icontopbm")
                      (gnus-xmas-call-region "ppmtoxpm")
                      (make-glyph
-                      (vector 'xpm :data (buffer-string))))))
+                      (vector 'xpm :data
+                              (buffer-substring (point-min) (point-max)))))))
                 (t
                  (make-glyph [nothing]))))
          (ext (make-extent (progn
index da69f43..32ff5bb 100644 (file)
@@ -794,7 +794,7 @@ used to 899, you would say something along these lines:
             (set-buffer (gnus-get-buffer-create " *gnus nntp*"))
             (buffer-disable-undo (current-buffer))
             (insert-file-contents gnus-nntpserver-file)
-            (let ((name (buffer-string)))
+            (let ((name (buffer-substring (point-min) (point-max))))
               (prog1
                   (if (string-match "^[ \t\n]*$" name)
                       nil
index 3fabf29..e68afe7 100644 (file)
@@ -391,7 +391,7 @@ hash of a portion of OBJECT."
              (if (<= (point-max) md5-maximum-internal-length)
                  (mapconcat
                   (function (lambda (node) (format "%02x" node)))
-                  (md5-encode (buffer-string))
+                  (md5-encode (buffer-substring (point-min) (point-max)))
                   "")
                (call-process-region (point-min) (point-max)
                                     (or shell-file-name "/bin/sh")
index 5f5f844..4c37aae 100644 (file)
@@ -1183,14 +1183,11 @@ Return the number of headers removed."
             ;; There might be a continuation header, so we have to search
             ;; until we find a new non-continuation line.
             (progn
-              (forward-line 1)
-              (if (re-search-forward "^[^ \t]" nil t)
-                  (goto-char (match-beginning 0))
-                (point-max)))))
-       (forward-line 1)
-       (if (re-search-forward "^[^ \t]" nil t)
-           (goto-char (match-beginning 0))
-         (point-max))))
+              (while (and (zerop (forward-line 1))
+                          (memq (char-after) '(?\t ?\ ))))
+              (point))))
+       (while (and (zerop (forward-line 1))
+                   (memq (char-after) '(?\t ?\ ))))))
     number))
 
 (defun message-narrow-to-headers ()
@@ -1237,11 +1234,9 @@ Return the number of headers removed."
 
 (defun message-next-header ()
   "Go to the beginning of the next header."
-  (beginning-of-line)
-  (or (eobp) (forward-char 1))
-  (not (if (re-search-forward "^[^ \t]" nil t)
-          (beginning-of-line)
-        (goto-char (point-max)))))
+  (while (and (zerop (forward-line 1))
+             (memq (char-after) '(?\t ?\ ))))
+  (not (eobp)))
 
 (defun message-sort-headers-1 ()
   "Sort the buffer as headers using `message-rank' text props."
@@ -2287,7 +2282,7 @@ This sub function is for exclusive use of `message-send-mail'."
              (message-remove-header message-ignored-mail-headers t))
            (goto-char (point-max))
            ;; require one newline at the end.
-           (or (eq (char-before) ?\n)
+           (or (bolp)
                (insert ?\n))
            (when (and news
                       (or (message-fetch-field "cc")
@@ -2317,7 +2312,7 @@ This sub function is for exclusive use of `message-send-mail'."
       (re-search-forward
        (concat "^" (regexp-quote mail-header-separator) "\n"))
       (replace-match "\n")
-      (backward-char 1)
+      (forward-char -1)
       (setq delimline (point-marker))
       (run-hooks 'message-send-mail-hook)
       ;; Insert an extra newline if we need it to work around
@@ -2444,7 +2439,7 @@ to find out how to use this."
     (re-search-forward
      (concat "^" (regexp-quote mail-header-separator) "\n"))
     (replace-match "\n")
-    (backward-char 1)
+    (forward-char -1)
     (run-hooks 'message-send-mail-hook)
     (if recipients
        (let ((result (smtp-via-smtp user-mail-address
@@ -2520,7 +2515,7 @@ This sub function is for exclusive use of `message-send-news'."
              (message-remove-header message-ignored-news-headers t))
            (goto-char (point-max))
            ;; require one newline at the end.
-           (or (eq (char-before) ?\n)
+           (or (bolp)
                (insert ?\n))
            (setq result (message-maybe-split-and-send-news method)))
        (kill-buffer tembuf))
@@ -2540,7 +2535,7 @@ This sub function is for exclusive use of `message-send-news'."
     (re-search-forward
      (concat "^" (regexp-quote mail-header-separator) "\n"))
     (replace-match "\n")
-    (backward-char 1)
+    (forward-char -11)
     (run-hooks 'message-send-news-hook)
     ;;(require (car method))
     ;;(funcall (intern (format "%s-open-server" (car method)))
@@ -3060,7 +3055,7 @@ This sub function is for exclusive use of `message-send-news'."
       (while (re-search-forward "[\t\n]+" nil t)
        (replace-match "" t t))
       (unless (zerop (buffer-size))
-       (buffer-string)))))
+       (buffer-substring (point-min) (point-max))))))
 
 (defun message-make-lines ()
   "Count the number of lines and return numeric string."
@@ -3178,7 +3173,7 @@ This sub function is for exclusive use of `message-send-news'."
            (replace-match "\\1(\\3)" t)
            (goto-char fullname-start)))
        (insert ")")))
-      (buffer-string))))
+      (buffer-substring (point-min) (point-max)))))
 
 (defun message-make-sender ()
   "Return the \"real\" user address.
@@ -3762,7 +3757,8 @@ OTHER-HEADERS is an alist of header/value pairs."
              (while (re-search-forward "[ \t]+" nil t)
                (replace-match " " t t))
              ;; Remove addresses that match `rmail-dont-reply-to-names'.
-             (insert (prog1 (rmail-dont-reply-to (buffer-string))
+             (insert (prog1 (rmail-dont-reply-to (buffer-substring
+                                                  (point-min) (point-max)))
                        (erase-buffer)))
              (goto-char (point-min))
              ;; Perhaps Mail-Copies-To: never removed the only address?
@@ -3772,7 +3768,8 @@ OTHER-HEADERS is an alist of header/value pairs."
                    (mapcar
                     (lambda (addr)
                       (cons (mail-strip-quoted-names addr) addr))
-                    (message-tokenize-header (buffer-string))))
+                    (message-tokenize-header (buffer-substring
+                                              (point-min) (point-max)))))
              (let ((s ccalist))
                (while s
                  (setq ccalist (delq (assoc (car (pop s)) s) ccalist)))))
@@ -4060,7 +4057,7 @@ header line with the old Message-ID."
     (while (re-search-backward "[ \t]+$" nil t)
       (replace-match ""))
 
-    (buffer-string)))
+    (buffer-substring (point-min) (point-max))))
     
 ;;; Forwarding messages.
 
index 007d8e5..fd26cb1 100644 (file)
@@ -287,7 +287,7 @@ Optional LAST is ignored."
       (nntp-send-buffer "^[23].*\n"))
     
     (set-buffer nntp-server-buffer)
-    (setq msg (buffer-string (point-min) (point-max)))
+    (setq msg (buffer-substring (point-min) (point-max)))
     (or (string-match "^\\([0-9]+\\)" msg)
        (error "nndb: %s" msg))
     (setq art (substring msg (match-beginning 1) (match-end 1)))
@@ -314,7 +314,7 @@ with the contents of the BUFFER."
 (deffoo nndb-status-message (&optional server)
   "Return server status as a string."
   (set-buffer nntp-server-buffer)
-  (buffer-string (point-min) (point-max)))
+  (buffer-substring (point-min) (point-max)))
 
 ;; Import stuff from nntp
 
index dafbfba..5372336 100644 (file)
@@ -530,7 +530,7 @@ If FILE is t, return the buffer contents as a string."
                ;; Return the buffer contents.
                ((eq ,temp-file t)
                 (set-buffer ,temp-buffer)
-                (buffer-string))
+                (buffer-substring (point-min) (point-max)))
                ;; Save a file.
                (t
                 (set-buffer ,temp-buffer)
index 0cfa50e..e9564e9 100644 (file)
@@ -677,8 +677,10 @@ parameter.  It should return nil, `warn' or `delete'."
                      (delete-region (point-min) (match-end 0)))
                    (unless (yes-or-no-p
                             (format "movemail: %s (%d return).  Continue? "
-                                    (buffer-string) result))
-                     (error "%s" (buffer-string)))
+                                    (buffer-substring
+                                     (point-min) (point-max))
+                                    result))
+                     (error "%s" (buffer-substring (point-min) (point-max))))
                    (setq tofile nil)))))))
        (nnheader-message 5 "Getting mail from %s...done" inbox)
        (and errors
@@ -1737,9 +1739,10 @@ If ARGS, PROMPT is used as an argument to `format'."
        ;; Narrow to the status.
        (narrow-to-region
         (point)
-        (if (re-search-forward "^[^ \t]" nil t)
-            (1- (point))
-          (point-max)))
+        (progn
+          (while (and (zerop (forward-line 1))
+                      (memq (char-after) '(?\t ?\ ))))
+          (point)))
        ;; Go through all elements and add them to the list.
        (goto-char (point-min))
        (while (re-search-forward "[^ \t=]+" nil t)
index 76160f9..bc12423 100644 (file)
@@ -687,7 +687,7 @@ backend for the messages.")
            (message-remove-header message-ignored-mail-headers t))
          (goto-char (point-max))
          ;; require one newline at the end.
-         (or (eq (char-before) ?\n)
+         (or (bolp)
              (insert ?\n))
          (let ((case-fold-search t))
            ;; Change header-delimiter to be what sendmail expects.
@@ -695,7 +695,7 @@ backend for the messages.")
            (re-search-forward
             (concat "^" (regexp-quote real-header-separator) "\n"))
            (replace-match "\n")
-           (backward-char 1)
+           (forward-char -1)
            (setq delimline (point-marker))
            ;; Insert an extra newline if we need it to work around
            ;; Sun's bug that swallows newlines.
index 1cca067..49ad66c 100644 (file)
@@ -346,7 +346,8 @@ there.")
       ;; Make status message by folding lines.
       (while (re-search-forward "[ \t\n]+" nil t)
        (replace-match " " t t))
-      (nnheader-report 'nnspool "%s" (buffer-string))
+      (nnheader-report 'nnspool "%s" (buffer-substring
+                                     (point-min) (point-max)))
       (nnheader-message 5 "nnspool: %s" nnspool-status-string)
       (ding)
       (run-hooks 'nnspool-rejected-article-hook))))
index 9f2be03..a123a33 100644 (file)
@@ -906,7 +906,7 @@ password contained in '~/.nntp-authinfo'."
 (defun nntp-read-server-type ()
   "Find out what the name of the server we have connected to is."
   ;; Wait for the status string to arrive.
-  (setq nntp-server-type (buffer-string))
+  (setq nntp-server-type (buffer-substring (point-min) (point-max)))
   (let ((alist nntp-server-action-alist)
        (case-fold-search t)
        entry)
@@ -956,7 +956,7 @@ password contained in '~/.nntp-authinfo'."
 
 (defun nntp-snarf-error-message ()
   "Save the error message in the current buffer."
-  (let ((message (buffer-string)))
+  (let ((message (buffer-substring (point-min) (point-max))))
     (while (string-match "[\r\n]+" message)
       (setq message (replace-match " " t t message)))
     (nnheader-report 'nntp message)
index d6ecf68..0b57d48 100644 (file)
@@ -248,7 +248,7 @@ If there is any problem , please set this variable to nil(default).
                                      pop3-fma-movemail-program)
                       nil movemail-output-buffer nil
                       pop3-fma-commandline-arguments)
-               (let ((string (buffer-string)))
+               (let ((string (buffer-substring (point-min) (point-max))))
                  (if (> (length string) 0)
                      (progn
                        (if (y-or-n-p