-;;; titdic-cnv.el --- convert cxterm dictionary (TIT format) to Quail package
+;;; titdic-cnv.el --- convert cxterm dictionary (TIT format) to Quail package -*- coding:iso-2022-7bit; -*-
-;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
-;; Licensed to the Free Software Foundation.
+;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004,
+;; 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;; 2005, 2006, 2007
+;; National Institute of Advanced Industrial Science and Technology (AIST)
+;; Registration Number H14PRO021
;; Keywords: Quail, TIT, cxterm
;; 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.
-;;; Comments:
+;;; Commentary:
;; Convert cxterm dictionary (of TIT format) to quail-package.
;;
;; dictionary. The extra docstring in this alist is to add more
;; information.
;; The command describe-input-method shows the automatically generated
-;; docstring, then an extra docstrings while replacing the form \<VAR>
+;; docstring, then an extra docstring while replacing the form \<VAR>
;; by the value of variable VAR. For instance, the form
;; \<quail-translation-docstring> is replaced by a description about
;; how to select a translation from a list of candidates.
("chinese-ccdospy" "\e$AKuF4\e(B"
"Pinyin base input method for Chinese charset GB2312 \(`chinese-gb2312').
-Pinyin is the standared roman transliteration method for Chinese.
+Pinyin is the standard Roman transliteration method for Chinese.
For the detail of Pinyin system, see the documentation of the input
method `chinese-py'.
difference is that you type a single key for these Pinyin spelling.
Pinyin: zh en eng ang ch an ao ai ong sh ing yu(\e$A(9\e(B)
keyseq: a f g h i j k l s u y v
-For expample:
+For example:
Chinese: \e$A0!\e(B \e$A9{\e(B \e$AVP\e(B \e$AND\e(B \e$A9b\e(B \e$ASq\e(B \e$AH+\e(B
Pinyin: a guo zhong wen guang yu quan
Keyseq: a1 guo4 as1 wf4 guh1 yu..6 qvj6
For double-width GB2312 characters correponding to ASCII, use the
input method `chinese-qj'.")
- ("chinese-ctlau" "\e$AAuTA\e(B")
-
- ("chinese-ctlaub" "\e$(0N,Gn\e(B")
-
("chinese-ecdict" "\e$(05CKH\e(B"
"In this input method, you enter a Chinese (Big5) charactere or word
by typing the corresponding English word. For example, if you type
first radical:
a b c d e f g h i j k l m n o p q r s t u v w x y z
- \e$APD\e(B \e$AZ"\e(B \e$AJ,\e(B \e$AX<\e(B \e$A;p\e(B \e$A?Z\e(B \e$A^P\e(B \e$Ac_\e(B \e$AZ%\e(B \e$A\3\e(B \e$AXi\e(B \e$AD>\e(B \e$Alj\e(B \e$Ab;\e(B \e$ATB\e(B \e$Afy\e(B \e$AJ/\e(B \e$AMu\e(B \e$A0K\e(B \e$AX/\e(B \e$AHU\e(B \e$AeA\e(B \e$Aak\e(B \e$AVq\e(B \e$AR;\e(B \e$AHK\e(B
+ \e$APD\e(B \e$AZ"\e(B \e$AJ,\e(B \e$AX<\e(B \e$A;p\e(B \e$A?Z\e(B \e$A^P\e(B \e$Ac_\e(B \e$AZ%\e(B \e$A\3\e(B \e$AXi\e(B \e$AD>\e(B \e$Alj\e(B \e$Ab;\e(B \e$ATB\e(B \e$Afy\e(B \e$AJ/\e(B \e$AMu\e(B \e$A0K\e(B \e$AX/\e(B \e$AHU\e(B \e$AeA\e(B \e$Aak\e(B \e$AVq\e(B \e$AR;\e(B \e$AHK\e(B
last radical:
a b c d e f g h i j k l m n o p q r s t u v w x y z
- \e$ASV\e(B \e$AI=\e(B \e$AMA\e(B \e$A56\e(B \e$AZb\e(B \e$A?Z\e(B \e$ARB\e(B \e$Aqb\e(B \e$A4s\e(B \e$A6!\e(B \e$A[L\e(B \e$Ala\e(B \e$AJ.\e(B \e$A4u\e(B \e$AXg\e(B \e$ACE\e(B \e$A=q\e(B \e$AX-\e(B \e$AE.\e(B \e$ARR\e(B \e$A`m\e(B \e$AP!\e(B \e$A3'\e(B \e$A3f\e(B \e$A_.\e(B \e$A27\e(B
+ \e$ASV\e(B \e$AI=\e(B \e$AMA\e(B \e$A56\e(B \e$AZb\e(B \e$A?Z\e(B \e$ARB\e(B \e$Aqb\e(B \e$A4s\e(B \e$A6!\e(B \e$A[L\e(B \e$Ala\e(B \e$AJ.\e(B \e$A4u\e(B \e$AXg\e(B \e$ACE\e(B \e$A=q\e(B \e$AX-\e(B \e$AE.\e(B \e$ARR\e(B \e$A`m\e(B \e$AP!\e(B \e$A3'\e(B \e$A3f\e(B \e$A_.\e(B \e$A27\e(B
\\<quail-translation-docstring>")
("chinese-tonepy" "\e$A5wF4\e(B"
"Pinyin base input method for Chinese charset GB2312 (`chinese-gb2312').
-Pinyin is the standared roman transliteration method for Chinese.
+Pinyin is the standard roman transliteration method for Chinese.
For the details of Pinyin system, see the documentation of the input
method `chinese-py'.
;; Return a value of the key in the current line.
(defsubst tit-read-key-value ()
- (if (looking-at "[^ \t\n]+")
+ (if (looking-at "[^ \t\r\n]+")
(car (read-from-string (concat "\"" (match-string 0) "\"")))))
;; Return an appropriate quail-package filename from FILENAME (TIT
dirname))
;; This value is nil if we are processing phrase dictionary.
-(defconst tit-dictionary t)
+(defvar tit-dictionary t)
(defvar tit-encode nil)
(defvar tit-default-encode "GB")
(princ ";; Quail package `")
(princ package)
- (princ "' generated by the command `titdic-convert'\n;;\tDate: ")
+ (princ "' -*- coding:iso-2022-7bit; ")
+ (princ "byte-compile-disable-print-circle:t; -*-\n")
+ (princ ";; Generated by the command `titdic-convert'\n;;\tDate: ")
(princ (current-time-string))
(princ "\n;;\tOriginal TIT dictionary file: ")
(princ (file-name-nondirectory filename))
(princ (buffer-substring pos (point)))
(princ "\n")
(forward-line 1)))
-
+
(princ "\n;;; End of the header of original TIT dictionary.\n\n")
(princ ";;; Code:\n\n(require 'quail)\n\n")
Optional argument DIRNAME if specified is the directory name under which
the generated Quail package is saved."
(interactive "FTIT dictionary file: ")
- (with-temp-file (tit-make-quail-package-file-name filename dirname)
- (set-buffer-file-coding-system 'iso-2022-7bit)
- (let ((standard-output (current-buffer)))
- (with-temp-buffer
- (let ((coding-system-for-read 'no-conversion))
- (insert-file-contents (expand-file-name filename)))
- (set-buffer-multibyte t)
-
- ;; Decode the buffer contents from the encoding specified by a
- ;; value of the key "ENCODE:".
- (if (not (search-forward "\nBEGIN" nil t))
- (error "TIT dictionary doesn't have body part"))
- (let ((limit (point))
- coding-system slot)
+ (let ((coding-system-for-write 'iso-2022-7bit-unix))
+ (with-temp-file (tit-make-quail-package-file-name filename dirname)
+ ;; Explicitly speficy eol format to `unix'.
+ (set-buffer-file-coding-system 'iso-2022-7bit-unix)
+ (let ((standard-output (current-buffer)))
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ ;; Here we must use `raw-text' instead of `no-conversion' to
+ ;; enable auto-decoding of eol format (CRLF->LF).
+ (let ((coding-system-for-read 'raw-text))
+ (insert-file-contents (expand-file-name filename)))
+
+ ;; Decode the buffer contents from the encoding specified by a
+ ;; value of the key "ENCODE:".
+ (if (not (search-forward "\nBEGIN" nil t))
+ (error "TIT dictionary doesn't have body part"))
+ (let ((limit (point))
+ coding-system slot)
+ (goto-char (point-min))
+ (if (re-search-forward "^ENCODE:[ \t]*" limit t)
+ (progn
+ (goto-char (match-end 0))
+ (setq tit-encode (tit-read-key-value)))
+ (setq tit-encode tit-default-encode))
+ (setq slot (assoc tit-encode tit-encode-list))
+ (if (not slot)
+ (error "Invalid ENCODE: value in TIT dictionary"))
+ (setq coding-system (nth 1 slot))
+ (message "Decoding with coding system %s..." coding-system)
+ (goto-char (point-min))
+ (decode-coding-region (point-min) (point-max) coding-system))
+
+ ;; Set point the starting position of the body part.
(goto-char (point-min))
- (if (re-search-forward "^ENCODE:[ \t]*" limit t)
- (progn
- (goto-char (match-end 0))
- (setq tit-encode (tit-read-key-value)))
- (setq tit-encode tit-default-encode))
- (setq slot (assoc tit-encode tit-encode-list))
- (if (not slot)
- (error "Invalid ENCODE: value in TIT dictionary"))
- (setq coding-system (nth 1 slot))
- (message "Decoding with coding system %s..." coding-system)
- (goto-char (point-min))
- (decode-coding-region (point-min) (point-max) coding-system))
-
- ;; Set point the starting position of the body part.
- (goto-char (point-min))
- (if (not (search-forward "\nBEGIN" nil t))
- (error "TIT dictionary can't be decoded correctly"))
+ (if (not (search-forward "\nBEGIN" nil t))
+ (error "TIT dictionary can't be decoded correctly"))
- ;; Process the header part.
- (forward-line 1)
- (narrow-to-region (point-min) (point))
- (tit-process-header filename)
- (widen)
+ ;; Process the header part in multibyte mode.
+ (with-current-buffer standard-output
+ (set-buffer-multibyte t))
+ (set-buffer-multibyte t)
+ (forward-line 1)
+ (narrow-to-region (point-min) (point))
+ (tit-process-header filename)
+ (widen)
- ;; Process the body part. For speed, we turn off multibyte facility.
- (with-current-buffer standard-output
- (set-buffer-multibyte nil))
- (set-buffer-multibyte nil)
- (tit-process-body)))))
+ ;; Process the body part. For speed, we turn off multibyte facility.
+ (with-current-buffer standard-output
+ (set-buffer-multibyte nil))
+ (set-buffer-multibyte nil)
+ (tit-process-body))))))
;;;###autoload
(defun batch-titdic-convert (&optional force)
;; Alist of input method names and the corresponding information.
;; Each element has this form:
;; (INPUT-METHOD-NAME ;; Name of the input method.
-;; INPUT-METHOD-TITLE ;; Title string of the input method
+;; INPUT-METHOD-TITLE ;; Title string of the input method
;; DICFILE ;; Name of the source dictionary file.
;; CODING ;; Coding system of the dictionary file.
;; QUAILFILE ;; Name of the Quail package file.
(defvar quail-misc-package-ext-info
'(("chinese-b5-tsangchi" "\e$(06A\e(BB"
- "cangjie-table.b5" big5 "tsang-b5.el"
+ "cangjie-table.b5" big5 "tsang-b5.el"
tsang-b5-converter
"\
;; # Copyright 2001 Christian Wittern <wittern@iis.sinica.edu.tw>
;; # this notice is preserved.")
("chinese-b5-quick" "\e$(0X|\e(BB"
- "cangjie-table.b5" big5 "quick-b5.el"
+ "cangjie-table.b5" big5 "quick-b5.el"
quick-b5-converter
"\
;; # Copyright 2001 Christian Wittern <wittern@iis.sinica.edu.tw>
;;
;;
;; Copyright (C) 1999, Rui He, herui@cs.duke.edu
-;;
-;;
+;;
+;;
;; CCE(Console Chinese Environment) 0.32
-;;
-;; CCE 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 1, or (at your option) any later version.
-;;
-;; CCE is distributed in the hope that it will be useful, but WITHOUT ANY
-;; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-;; details.
-;;
+;;
+;; CCE 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 1, or (at your option) any later version.
+;;
+;; CCE is distributed in the hope that it will be useful, but WITHOUT ANY
+;; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+;; details.
+;;
;; You should have received a copy of the GNU General Public License along with
-;; CCE; see the file COPYING. If not, write to the Free Software Foundation,
-;; 675 Mass Ave, Cambridge, MA 02139, USA.")
+;; CCE; see the file COPYING. If not, write to the Free Software Foundation,
+;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.")
("chinese-ziranma" "\e$AWTH;\e(B"
"ziranma.cin" cn-gb-2312 "ZIRANMA.el"
;;
;;
;; Copyright (C) 1999, Rui He, herui@cs.duke.edu
-;;
-;;
+;;
+;;
;; CCE(Console Chinese Environment) 0.32
-;;
-;; CCE 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 1, or (at your option) any later version.
-;;
-;; CCE is distributed in the hope that it will be useful, but WITHOUT ANY
-;; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-;; details.
-;;
+;;
+;; CCE 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 1, or (at your option) any later version.
+;;
+;; CCE is distributed in the hope that it will be useful, but WITHOUT ANY
+;; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+;; details.
+;;
;; You should have received a copy of the GNU General Public License along with
-;; CCE; see the file COPYING. If not, write to the Free Software Foundation,
-;; 675 Mass Ave, Cambridge, MA 02139, USA.")
+;; CCE; see the file COPYING. If not, write to the Free Software Foundation,
+;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.")
+
+ ("chinese-ctlau" "\e$AAuTA\e(B"
+ "CTLau.html" cn-gb-2312 "CTLau.el"
+ ctlau-gb-converter
+ "\
+;; \"CTLau.html\" is available at:
+;;
+;; http://umunhum.stanford.edu/~lee/chicomp/CTLau.html
+;;
+;; It contains the following copyright notice:
+;;
+;; # Copyright (C) 1988-2001 Fung Fung Lee (lee@umunhum.stanford.edu)
+;; #
+;; # This program 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
+;; # of the License, or any later version.
+;; #
+;; # This program is distributed in the hope that it will be useful,
+;; # but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; # GNU General Public License for more details.
+;; #
+;; # You should have received a copy of the GNU General Public License
+;; # along with this program; if not, write to the Free Software Foundation,
+;; # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.")
+
+ ("chinese-ctlaub" "\e$(0N,Gn\e(B"
+ "CTLau-b5.html" big5 "CTLau-b5.el"
+ ctlau-b5-converter
+ "\
+;; \"CTLau-b5.html\" is available at:
+;;
+;; http://umunhum.stanford.edu/~lee/chicomp/CTLau-b5.html
+;;
+;; It contains the following copyright notice:
+;;
+;; # Copyright (C) 1988-2001 Fung Fung Lee (lee@umunhum.stanford.edu)
+;; #
+;; # This program 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
+;; # of the License, or any later version.
+;; #
+;; # This program is distributed in the hope that it will be useful,
+;; # but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; # GNU General Public License for more details.
+;; #
+;; # You should have received a copy of the GNU General Public License
+;; # along with this program; if not, write to the Free Software Foundation,
+;; # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.")
))
;; Generate a code of a Quail package in the current buffer from Tsang
[Q \e$(0'D\e(B] [W \e$(0(q\e(B] [E \e$(0'V\e(B] [R \e$(0&H\e(B] [T \e$(0'>\e(B] [Y \e$(0&4\e(B] [U \e$(0&U\e(B] [I \e$(0'B\e(B] [O \e$(0&*\e(B] [P \e$(0'A\e(B]
[A \e$(0'K\e(B] [S \e$(0&T\e(B] [D \e$(0'N\e(B] [F \e$(0'W\e(B] [G \e$(0&I\e(B] [H \e$(0*M\e(B] [J \e$(0&3\e(B] [L \e$(0&d\e(B]
-
+
[Z ] [X \e$(0[E\e(B] [C \e$(01[\e(B] [V \e$(0&M\e(B] [B \e$(0'M\e(B] [N \e$(0&_\e(B] [M \e$(0&"\e(B]
\\\\<quail-translation-docstring>\"\n"
[Q \e$(GEC\e(B] [W \e$(GFp\e(B] [E \e$(GEU\e(B] [R \e$(GDG\e(B] [T \e$(GE=\e(B] [Y \e$(GD3\e(B] [U \e$(GDT\e(B] [I \e$(GEA\e(B] [O \e$(GD)\e(B] [P \e$(GE@\e(B]
[A \e$(GEJ\e(B] [S \e$(GDS\e(B] [D \e$(GEM\e(B] [F \e$(GEV\e(B] [G \e$(GDH\e(B] [H \e$(GHL\e(B] [J \e$(GD2\e(B] [L \e$(GDc\e(B]
-
- [Z ] [X \e$(GyE\e(B] [C \e$(GOZ\e(B] [V \e$(GDL\e(B] [B \e$(GEL\e(B] [N \e$(GD^\e(B] [M \e$(GD!\e(B]
+
+ [Z ] [X \e$(GyE\e(B] [C \e$(GOZ\e(B] [V \e$(GDL\e(B] [B \e$(GEL\e(B] [N \e$(GD^\e(B] [M \e$(GD!\e(B]
\\\\<quail-translation-docstring>\"\n"
fulltitle fulltitle)))
(insert "(quail-define-rules\n")
(save-excursion
(set-buffer dicbuf)
+ ;; Handle double CR line ends, which result when checking out of
+ ;; CVS on MS-Windows.
+ (goto-char (point-min))
+ (while (re-search-forward "\r\r$" nil t)
+ (replace-match ""))
(goto-char (point-min))
(search-forward "A440")
(beginning-of-line)
Pinyin base input method for Chinese charset GB2312 (`chinese-gb2312').
-Pinyin is the standared roman transliteration method for Chinese.
+Pinyin is the standard roman transliteration method for Chinese.
Pinyin uses a sequence of Latin alphabetic characters for each Chinese
character. The sequence is made by the combination of the initials
\(the beginning sounds) and finals (the ending sounds).
(let ((pos (point)))
(insert-buffer-substring dicbuf)
(goto-char pos)
+ (re-search-forward "^[a-z]")
+ (beginning-of-line)
+ (delete-region pos (point))
(while (not (eobp))
(insert "(\"")
(skip-chars-forward "a-z")
(insert (format "(%S %S)\n" (car elt) (cdr elt))))
(insert ")\n")))
+;; Generate the code for a Quail package in the current buffer from a
+;; CTLau or CTLau-b5 dictionary in the buffer DICBUF. The input
+;; method name of the Quail package is NAME, and the title string is
+;; TITLE. DESCRIPTION is the string shown by describe-input-method.
+
+(defun ctlau-converter (dicbuf name title description)
+ (goto-char (point-max))
+ (insert (format "%S\n" description))
+ (insert " '((\"\C-?\" . quail-delete-last-char)
+ (\".\" . quail-next-translation)
+ (\">\" . quail-next-translation)
+ (\",\" . quail-prev-translation)
+ (\"<\" . quail-prev-translation))
+ nil nil nil nil)\n\n")
+ (insert "(quail-define-rules\n")
+ (let (dicbuf-start dicbuf-end key-start key (pos (point)))
+ ;; Find the dictionary, which starts below a horizontal rule and
+ ;; ends at the second to last line in the HTML file.
+ (save-excursion
+ (set-buffer dicbuf)
+ (goto-char (point-min))
+ (search-forward "#\n#<hr>\n")
+ (setq dicbuf-start (point))
+ (goto-char (point-max))
+ (forward-line -1)
+ (setq dicbuf-end (point)))
+ (insert-buffer-substring dicbuf dicbuf-start dicbuf-end)
+ ;; CTLau-b5.html contains characters (0xa1 0xbc) which show up as
+ ;; hollow boxes when the original characters in CTLau.html from
+ ;; which the file is converted have no Big5 equivalent. Go
+ ;; through and delete them.
+ (goto-char pos)
+ (while (search-forward "\e$(0!{\e(B" nil t)
+ (delete-char -1))
+ ;; Uppercase keys in dictionary need to be downcased. Backslashes
+ ;; at the beginning of keys need to be turned into double
+ ;; backslashes.
+ (goto-char pos)
+ (while (not (eobp))
+ (insert "(\"")
+ (if (char-equal (following-char) ?\\)
+ (insert "\\"))
+ (setq key-start (point))
+ (skip-chars-forward "\\\\A-Z")
+ (downcase-region key-start (point))
+ (insert "\" \"")
+ (delete-char 1)
+ (end-of-line)
+ (insert "\")")
+ (forward-line 1)))
+ (insert ")\n"))
+
+(defun ctlau-gb-converter (dicbuf name title)
+ (ctlau-converter dicbuf name title
+"\e$A::WVJdHk!KAuN}OiJ=TARt!K\e(B
+
+ \e$AAuN}OiJ=TASoW"Rt7=08\e(B
+ Sidney Lau's Cantonese transcription scheme as described in his book
+ \"Elementary Cantonese\", The Government Printer, Hong Kong, 1972.
+ This file was prepared by Fung Fung Lee (\e$A@n7c7e\e(B).
+ Originally converted from CTCPS3.tit
+ Last modified: June 2, 1993.
+
+ Some infrequent GB characters are accessed by typing \\, followed by
+ the Cantonese romanization of the respective radical (\e$A2?JW\e(B)."))
+
+(defun ctlau-b5-converter (dicbuf name title)
+ (ctlau-converter dicbuf name title
+"\e$(0KH)tTT&,!(N,Tg>A*#Gn5x!(\e(B
+
+ \e$(0N,Tg>A*#GnM$0D5x'J7{\e(B
+ Sidney Lau's Cantonese transcription scheme as described in his book
+ \"Elementary Cantonese\", The Government Printer, Hong Kong, 1972.
+ This file was prepared by Fung Fung Lee (\e$(0,XFS76\e(B).
+ Originally converted from CTCPS3.tit
+ Last modified: June 2, 1993.
+
+ Some infrequent characters are accessed by typing \\, followed by
+ the Cantonese romanization of the respective radical (\e$(0?f5}\e(B)."))
+
(defun miscdic-convert (filename &optional dirname)
- "Convert a dictionary file FILENAME into a Quail package.
+ "Convert a dictionary file FILENAME into a Quail package.
Optional argument DIRNAME if specified is the directory name under which
the generated Quail package is saved."
(interactive "FInput method dictionary file: ")
name title dicfile coding quailfile converter copyright
dicbuf)
(while tail
- (when (or (string-match (nth 2 (car tail)) filename)
- ;; MS-DOS filesystem truncates file names to 8+3
- ;; limits, so "cangjie-table.cns" becomes
- ;; "cangjie-.cns", and the above string-match fails.
- ;; Give DOS users a chance...
- (and (fboundp 'msdos-long-file-names)
- (not (msdos-long-file-names))
- (string-match (dos-truncate-to-8+3 (nth 2 (car tail)))
- filename)))
- (setq slot (car tail)
- name (car slot)
+ (setq slot (car tail)
+ dicfile (nth 2 slot)
+ quailfile (nth 4 slot))
+ (when (and (or (string-match dicfile filename)
+ ;; MS-DOS filesystem truncates file names to 8+3
+ ;; limits, so "cangjie-table.cns" becomes
+ ;; "cangjie-.cns", and the above string-match
+ ;; fails. Give DOS users a chance...
+ (and (fboundp 'msdos-long-file-names)
+ (not (msdos-long-file-names))
+ (string-match (dos-8+3-filename dicfile) filename)))
+ (if (file-newer-than-file-p
+ filename (expand-file-name quailfile dirname))
+ t
+ (message "%s is up to date" quailfile)
+ nil))
+ (setq name (car slot)
title (nth 1 slot)
- dicfile (nth 2 slot)
coding (nth 3 slot)
- quailfile (nth 4 slot)
converter (nth 5 slot)
copyright (nth 6 slot))
(message "Converting %s to %s..." dicfile quailfile)
(with-temp-file (expand-file-name quailfile dirname)
- (set-buffer-file-coding-system 'iso-2022-7bit)
- (insert ";; Quail package `" name "' -*- coding:iso-2022-7bit; -*-\n")
+ ;; Explicitly speficy eol format to `unix'.
+ (set-buffer-file-coding-system 'iso-2022-7bit-unix)
+ (insert ";; Quail package `" name "' -*- coding:iso-2022-7bit; ")
+ (insert "byte-compile-disable-print-circle:t; -*-\n");
(insert ";; Generated by the command `miscdic-convert'\n")
(insert ";; Date: " (current-time-string) "\n")
(insert ";; Source dictionary file: " dicfile "\n")
(if (string= (car command-line-args-left) "-dir")
(progn
(setq command-line-args-left (cdr command-line-args-left))
- (setq dir (car command-line-args-left))))
+ (setq dir (car command-line-args-left))
+ (setq command-line-args-left (cdr command-line-args-left))))
(setq filename (car command-line-args-left)
command-line-args-left (cdr command-line-args-left))
(if (file-directory-p filename)
(miscdic-convert filename dir))))
(kill-emacs 0))
-;;; titdic-cnv.el ends here
-
;; Local Variables:
;; coding: iso-2022-7bit
;; End:
+
+;;; arch-tag: 8ad478b2-a985-4da2-b47f-d8ee5d7c24a3
+;;; titdic-cnv.el ends here