# HG changeset patch # User Kenichi Handa # Date 1161568584 0 # Node ID 81b116fa69ab7458c1a375e016a296fb60b61b1c # Parent aef420141a419361dce3e5196ceabfdcf618cfbe Don't use charset property `fill-find-break-point-function'. (fill-find-break-point-function-table): New variable. (fill-find-break-point): Lookup fill-find-break-point-function-table. diff -r aef420141a41 -r 81b116fa69ab lisp/textmodes/fill.el --- a/lisp/textmodes/fill.el Tue Oct 17 12:34:25 2006 +0000 +++ b/lisp/textmodes/fill.el Mon Oct 23 01:56:24 2006 +0000 @@ -368,15 +368,18 @@ (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 @@ 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))))