]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't use charset property
authorKenichi Handa <handa@m17n.org>
Mon, 23 Oct 2006 01:56:24 +0000 (01:56 +0000)
committerKenichi Handa <handa@m17n.org>
Mon, 23 Oct 2006 01:56:24 +0000 (01:56 +0000)
`fill-find-break-point-function'.
(fill-find-break-point-function-table): New variable.
(fill-find-break-point): Lookup
fill-find-break-point-function-table.

lisp/textmodes/fill.el

index 514350119fef4543ce65d9d138e5ac3eb21bb87f..4558331b29f2e961f660c0493b545d52270bc6ef 100644 (file)
@@ -368,15 +368,18 @@ and `fill-nobreak-invisible'."
              (looking-at paragraph-start))))
      (run-hook-with-args-until-success 'fill-nobreak-predicate)))))
 
-;; Put `fill-find-break-point-function' property to charsets which
-;; require special functions to find line breaking point.
-(dolist (pair '((katakana-jisx0201 . kinsoku)
-               (chinese-gb2312 . kinsoku)
-               (japanese-jisx0208 . kinsoku)
-               (japanese-jisx0212 . kinsoku)
-               (chinese-big5-1 . kinsoku)
-               (chinese-big5-2 . kinsoku)))
-  (put-charset-property (car pair) 'fill-find-break-point-function (cdr pair)))
+(defvar fill-find-break-point-function-table
+  (let ((table (make-char-table nil)))
+    ;; Register `kinsoku' for scripts HAN, KANA, BOPOMPFO, and CJK-MISS.
+    (map-char-table #'(lambda (key val)
+                       (if (memq val '(han kana bopomofo cjk-misc))
+                           (set-char-table-range table key 'kinsoku)))
+                   char-script-table)
+    ;; Register `kinsoku" also for full width characters.
+    (set-char-table-range table '(#xFF01 . #xFF61) 'kinsoku)
+    (set-char-table-range table '(#xFFE0 . #xFFE6) 'kinsoku)
+    table)
+  "Char-table of special functions to find line breaking point.")
 
 (defun fill-find-break-point (limit)
   "Move point to a proper line breaking position of the current line.
@@ -387,15 +390,9 @@ after or before a non-ASCII character.  If the charset of the
 character has the property `fill-find-break-point-function', this
 function calls the property value as a function with one arg LINEBEG.
 If the charset has no such property, do nothing."
-  (let* ((ch (following-char))
-        (charset (char-charset ch))
-        func)
-    (if (eq charset 'ascii)
-       (setq ch (preceding-char)
-             charset (char-charset ch)))
-    (if (charsetp charset)
-       (setq func
-             (get-charset-property charset 'fill-find-break-point-function)))
+  (let ((func (or
+              (aref fill-find-break-point-function-table (following-char))
+              (aref fill-find-break-point-function-table (preceding-char)))))
     (if (and func (fboundp func))
        (funcall func limit))))