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

[debian-users:01492] Re: Wnn6の文字化け



前原です。

遅くなりましたが、レポートされていたバグが一応解決したので報告します。

From: maehara@xxxxxxxxxxxxxxxxxxxxx (Keita Maehara)
Subject: [debian-users:01214] Re: Wnn6の文字化け
Date: Thu, 24 Jul 1997 00:30:17 +0900

> From: Kentaro Toda <ktoda@xxxxxxxxxxxxxxxxxxxxxx>
> Subject: [debian-users:01199] Wnn6の文字化け
> Date: Wed, 23 Jul 1997 11:33:47 +0900
> 
> >  Wnn6とXemacs20-canna-wnnの組合わせで使っているのですが、デフォルトでは
> > M-kになっているカタカナ変換を使うと「ー」が「ゼ」に化けます。
> 
> 確かにそうなりますね。気が付きませんでした。
> 
> >  これは一体どこに問題があるんでしょうか? Xemacsのバグ? debianパッケージ
> > のミス? Wnn6のバグ?
> >  Wnn6を使えるクライアントがほかにないので、よくわからず困っています。
> 
> 今、大学で使っている IRIX6.2 上の XEmacs で試してみたら同じ症状が起きま
> した。Debian 固有の問題ではなさそうです。

原因はやはり XEmacs の egg.el にあったようです。先日リリースされた最新の
β版である 20.3-b17 から egg.el のみに変更が加えられています。これを使用
すれば正常に動作するはずです。

この変更を 20.2 にも反映させたパッケージは近いうちにアップロードするつも
りですが、以下にパッチ(20.2 と 20.3-b17 の egg.el の差分)を付けておきま
すので、今すぐに修正したい方は利用してみて下さい。

修正手順:

 1. xemacs20-supportel をインストールしておく。

    # dpkg -i xemacs20-supportel_20.2-0.1.deb

 2. /usr/lib/xemacs-20.2/lisp/egg/egg.el に添付パッチ(egg-fix.patch)を当
    てる。

    # cd /usr/lib/xemacs-20.2/lisp/egg
    # patch < egg-fix.patch
    # cp egg.elc egg.elc.orig (オプション)

 3. egg.el を byte-compile する。

    # xemacs -batch -f batch-byte-compile egg.el

これで OK のはずです。
***************
*** 862,869 ****
    (interactive "r")
      (goto-char start)
      (while (re-search-forward kanji-katakana end end)
!       (let ((ch (preceding-char)))
! 	(cond( (<= ch ?ン)
  	       (delete-char -1)
  	       (insert (make-char (find-charset 'japanese-jisx0208) 36 (char-octet ch 1))))))))
  
--- 862,872 ----
    (interactive "r")
      (goto-char start)
      (while (re-search-forward kanji-katakana end end)
!       (let ((ch (char-before (point))))
! 	(cond( (not (or (> ch ?ン)
! 			(eq ch ?ー)
! 			(eq ch ?゛)
! 			(eq ch ?゜)))
  	       (delete-char -1)
  	       (insert (make-char (find-charset 'japanese-jisx0208) 36 (char-octet ch 1))))))))
  
***************
*** 893,901 ****
    (interactive "r")
    (goto-char start)
    (while (re-search-forward kanji-hiragana end end)
!     (let ((ch (char-octet (preceding-char) 1)))
!       (delete-char -1)
!       (insert (make-char (find-charset 'japanese-jisx0208) 37 ch)))))
  
  (defun katakana-paragraph ()
    "katakana  paragraph at or after point."
--- 896,905 ----
    (interactive "r")
    (goto-char start)
    (while (re-search-forward kanji-hiragana end end)
!     (let ((ch (char-before (point))))
!       (cond ((not (memq ch '(?ー ?゛ ?゜)))
! 	     (delete-char -1)
! 	     (insert (make-char (find-charset 'japanese-jisx0208) 37 (char-octet ch 1))))))))
  
  (defun katakana-paragraph ()
    "katakana  paragraph at or after point."
***************
*** 924,941 ****
    (save-restriction
      (narrow-to-region start end)
      (goto-char (point-min))
!     (while (re-search-forward "\\cS\\|\\cA" (point-max) (point-max))
        (let* ((ch (preceding-char))
  	     (ch1 (char-octet ch 0))
  	     (ch2 (char-octet ch 1)))
! 	(cond ((= ?\241 ch1)
  	       (let ((val (cdr (assq ch2 *hankaku-alist*))))
  		 (if val (progn
  			   (delete-char -1)
  			   (insert val)))))
! 	      ((= ?\243 ch1)
  	       (delete-char -1)
! 	       (insert (- ch2 ?\200 ))))))))
  
  (defun hankaku-paragraph ()
    "hankaku  paragraph at or after point."
--- 928,948 ----
    (save-restriction
      (narrow-to-region start end)
      (goto-char (point-min))
!     (while (re-search-forward "\\cS\\|\\cA\\|\\cK" (point-max) (point-max))
        (let* ((ch (preceding-char))
  	     (ch1 (char-octet ch 0))
  	     (ch2 (char-octet ch 1)))
! 	(cond ((= ch1 33) ;Symbols
  	       (let ((val (cdr (assq ch2 *hankaku-alist*))))
  		 (if val (progn
  			   (delete-char -1)
  			   (insert val)))))
! ;	      ((= ch1 37) ;Katakana
! ;	       (delete-char -1)
! ;	       (insert (- ch2 ?\200 )))
! 	      ((= ch1 35) ;Alphas
  	       (delete-char -1)
! 	       (insert ch2)))))))
  
  (defun hankaku-paragraph ()
    "hankaku  paragraph at or after point."
***************
*** 2552,2561 ****
    (if egg:*fence-face*
        (progn
  	(if (extentp egg:*fence-extent*)
! 	    nil
! 	  (setq egg:*fence-extent* (make-extent 1 1 nil t))
! 	  (if egg:*fence-face* (set-extent-property egg:*fence-extent* 'face egg:*fence-face*)))
! 	(set-extent-endpoints egg:*fence-extent* egg:*region-start* egg:*region-end* ) )))
  
  (defun egg:fence-face-off ()
    (and egg:*fence-face*
--- 2559,2570 ----
    (if egg:*fence-face*
        (progn
  	(if (extentp egg:*fence-extent*)
! 	    (set-extent-endpoints egg:*fence-extent* egg:*region-start* egg:*region-end*)
! 	  (setq egg:*fence-extent* (make-extent egg:*region-start* egg:*region-end*))
! 	  (set-extent-property egg:*fence-extent* 'start-open nil)
! 	  (set-extent-property egg:*fence-extent* 'end-open nil)
! 	  (set-extent-property egg:*fence-extent* 'detachable nil))
! 	(set-extent-face egg:*fence-extent* egg:*fence-face*))))
  
  (defun egg:fence-face-off ()
    (and egg:*fence-face*
----
前原 恵太
maehara@xxxxxxxxxxxxxxxxxxxxx                   debian depends on gnu
maehara@xxxxxxxxxxxxxxxxxxxxx                   linux provides freedom
PGP fingerprint   =   82 37 2F 1E 06 ED C4 37  1E E2 C2 96 22 B8 B3 F1