-;;; kinsoku.el --- `Kinsoku' processing functions.
+;;; kinsoku.el --- `Kinsoku' processing funcs -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1995 Free Software Foundation, Inc.
-;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
+;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+;; Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;; 2005, 2006, 2007, 2008
+;; National Institute of Advanced Industrial Science and Technology (AIST)
+;; Registration Number H14PRO021
-;; Keywords: kinsoku
+;; Keywords: mule, kinsoku
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; ASCII
"!)-_~}]:;',.?"
;; Latin JISX0201
- ;; Instead of putting Latin JISX0201 string directyly, we
+ ;; Instead of putting Latin JISX0201 string directly, we
;; generate the string as below to avoid character
;; unification problem.
(let* ((str1 "!)-_~}]:;',.?")
;; Chinese BIG5
"\e$(0!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2\e(B\
\e$(0!3!4!5!6!7!8!9!:!;!<!=!?!A!C!E!G!I!K\e(B\
-\e$(0!M!O!Q\e(B \e$(0!S!U!W!Y![!]!_!a!c!e!g!i!k!q\e(B\
+\e$(0!M!O!Q!S!U!W!Y![!]!_!a!c!e!g!i!k!q\e(B\
\e$(0"#"$"%"&"'"(")"*"+","2"3"4"j"k"l"x%7\e(B"))
(len (length kinsoku-bol))
(idx 0)
ch)
(while (< idx len)
- (setq ch (sref kinsoku-bol idx)
- idx (+ idx (char-bytes ch)))
+ (setq ch (aref kinsoku-bol idx)
+ idx (1+ idx))
(modify-category-entry ch ?>)))
;; Setting character category `<' for characters which should not be
\e$A!.!0#"#(!2!4!6!8!:!<!>!c!d!e#@!f!l\e(B"
;; Chinese GB2312
"\e$A(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(h\e(B\
-\e$(0!>!@!B!D!F!H!J!L!N!P!R!T!V!X!Z!\!^!`!b\e(B"
+\\e$(0!>!@!B!D!F!H!J!L!N!P!R!T!V!X!Z!\!^!`!b\e(B"
;; Chinese BIG5
"\e$(0!d!f!h!j!k!q!p"i"j"k"n"x$u$v$w$x$y$z${\e(B\
\e$(0$|$}$~%!%"%#%$%%%&%'%(%)%*%+%:\e(B"))
(idx 0)
ch)
(while (< idx len)
- (setq ch (sref kinsoku-eol idx)
- idx (+ idx (char-bytes ch)))
+ (setq ch (aref kinsoku-eol idx)
+ idx (1+ idx))
(modify-category-entry ch ?<)))
;; Try to resolve `kinsoku' restriction by making the current line longer.
(defun kinsoku-longer ()
- (let ((pos-and-column (save-excursion
- (forward-char 1)
- (while (aref (char-category-set (following-char)) ?>)
- (forward-char 1))
- (cons (point) (current-column)))))
+ (let ((pos-and-column
+ (save-excursion
+ (forward-char 1)
+ (while (and (not (eolp))
+ (or (aref (char-category-set (following-char)) ?>)
+ ;; protect non-kinsoku words
+ (not (or (eq (preceding-char) ? )
+ (aref (char-category-set (preceding-char))
+ ?|)))))
+ (forward-char 1))
+ (cons (point) (current-column)))))
(if (or (<= kinsoku-limit 0)
(< (cdr pos-and-column) (+ (current-fill-column) kinsoku-limit)))
(goto-char (car pos-and-column)))))
(defun kinsoku-shorter (linebeg)
(let ((pos (save-excursion
(forward-char -1)
- (while (and (< linebeg (point))
- (or (aref (char-category-set (preceding-char)) ?<)
- (aref (char-category-set (following-char)) ?>)))
+ (while (and
+ (< linebeg (point))
+ (or (aref (char-category-set (preceding-char)) ?<)
+ (aref (char-category-set (following-char)) ?>)
+ ;; protect non-kinsoku words
+ (not (or (eq (preceding-char) ? )
+ (aref (char-category-set (preceding-char))
+ ?|)))))
(forward-char -1))
(point))))
(if (< linebeg pos)
`Kinsoku' is a Japanese word which originally means ordering to stay
in one place, and is used for the text processing described above in
the context of text formatting."
- (if (or (and
- ;; The character after point can't be placed at beginning
- ;; of line.
- (aref (char-category-set (following-char)) ?>)
- ;; We at first try to dissolve this situation by making a
- ;; line longer. If it fails, then try making a line
- ;; shorter.
- (not (kinsoku-longer)))
- ;; The character before point can't be placed at end of line.
- (aref (char-category-set (preceding-char)) ?<))
- (kinsoku-shorter linebeg)))
-
-;; kinsoku.el ends here
+ (if enable-kinsoku
+ (if (or (and
+ ;; The character after point can't be placed at beginning
+ ;; of line.
+ (aref (char-category-set (following-char)) ?>)
+ ;; We at first try to dissolve this situation by making a
+ ;; line longer. If it fails, then try making a line
+ ;; shorter.
+ (not (kinsoku-longer)))
+ ;; The character before point can't be placed at end of line.
+ (aref (char-category-set (preceding-char)) ?<))
+ (kinsoku-shorter linebeg))))
+
+;; arch-tag: e6b036bc-9e5b-4e9f-a22c-4ed04e37777e
+;;; kinsoku.el ends here