emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r101986: shr.el (shr-insert): Don't i


From: Katsumi Yamaoka
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r101986: shr.el (shr-insert): Don't insert space behind a wide character categorized as kinsoku-bol, or between characters both categorized as nospace.
Date: Mon, 18 Oct 2010 05:21:26 +0000
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 101986
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Mon 2010-10-18 05:21:26 +0000
message:
  shr.el (shr-insert): Don't insert space behind a wide character categorized 
as kinsoku-bol, or between characters both categorized as nospace.
modified:
  lisp/gnus/ChangeLog
  lisp/gnus/shr.el
=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2010-10-17 00:04:06 +0000
+++ b/lisp/gnus/ChangeLog       2010-10-18 05:21:26 +0000
@@ -1,3 +1,9 @@
+2010-10-18  Katsumi Yamaoka  <address@hidden>
+
+       * shr.el (shr-insert): Don't insert space behind a wide character
+       categorized as kinsoku-bol, or between characters both categorized as
+       nospace.
+
 2010-10-16  Andrew Cohen  <address@hidden>
 
        * gnus-sum.el (gnus-summary-refer-thread): Bug fix. Add the thread

=== modified file 'lisp/gnus/shr.el'
--- a/lisp/gnus/shr.el  2010-10-17 00:04:06 +0000
+++ b/lisp/gnus/shr.el  2010-10-18 05:21:26 +0000
@@ -203,47 +203,48 @@
    ((eq shr-folding-mode 'none)
     (insert text))
    (t
-    (let ((first t)
-         column)
-      (when (and (string-match "\\`[ \t\n]" text)
-                (not (bolp))
-                (not (eq (char-after (1- (point))) ? )))
-       (insert " "))
-      (dolist (elem (split-string text))
-       (when (and (bolp)
-                  (> shr-indentation 0))
-         (shr-indent))
-       ;; The shr-start is a special variable that is used to pass
-       ;; upwards the first point in the buffer where the text really
-       ;; starts.
-       (unless shr-start
-         (setq shr-start (point)))
-       ;; No space is needed before or after a breakable character or
-       ;; at the beginning of a line.
+    (when (and (string-match "\\`[ \t\n]" text)
+              (not (bolp))
+              (not (eq (char-after (1- (point))) ? )))
+      (insert " "))
+    (dolist (elem (split-string text))
+      (when (and (bolp)
+                (> shr-indentation 0))
+       (shr-indent))
+      ;; The shr-start is a special variable that is used to pass
+      ;; upwards the first point in the buffer where the text really
+      ;; starts.
+      (unless shr-start
+       (setq shr-start (point)))
+      ;; No space is needed behind a wide character categorized as
+      ;; kinsoku-bol, or between characters both categorized as nospace.
+      (let (prev)
        (when (and (eq (preceding-char) ? )
                   (or (= (line-beginning-position) (1- (point)))
-                      (aref fill-find-break-point-function-table
-                            (char-after (- (point) 2)))
-                      (aref fill-find-break-point-function-table
-                            (aref elem 0))))
-         (delete-char -1))
-       (insert elem)
-       (while (> (current-column) shr-width)
-         (unless (prog1
-                     (shr-find-fill-point)
-                   (when (eq (preceding-char) ? )
-                     (delete-char -1))
-                   (insert "\n"))
-           (put-text-property (1- (point)) (point) 'shr-break t)
-           ;; No space is needed at the beginning of a line.
-           (if (eq (following-char) ? )
-               (delete-char 1)))
-         (when (> shr-indentation 0)
-           (shr-indent))
-         (end-of-line))
-       (insert " "))
-      (unless (string-match "[ \t\n]\\'" text)
-       (delete-char -1))))))
+                      (and (aref fill-find-break-point-function-table
+                                 (setq prev (char-after (- (point) 2))))
+                           (aref (char-category-set prev) ?>))
+                      (and (aref fill-nospace-between-words-table prev)
+                           (aref fill-nospace-between-words-table
+                                 (aref elem 0)))))
+         (delete-char -1)))
+      (insert elem)
+      (while (> (current-column) shr-width)
+       (unless (prog1
+                   (shr-find-fill-point)
+                 (when (eq (preceding-char) ? )
+                   (delete-char -1))
+                 (insert "\n"))
+         (put-text-property (1- (point)) (point) 'shr-break t)
+         ;; No space is needed at the beginning of a line.
+         (if (eq (following-char) ? )
+             (delete-char 1)))
+       (when (> shr-indentation 0)
+         (shr-indent))
+       (end-of-line))
+      (insert " "))
+    (unless (string-match "[ \t\n]\\'" text)
+      (delete-char -1)))))
 
 (eval-and-compile (autoload 'kinsoku-longer "kinsoku"))
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]