;;; titdic-cnv.el --- convert cxterm dictionary (TIT format) to Quail package -*- coding:iso-2022-7bit; -*-
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2013 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
\\<quail-translation-docstring>
-For double-width GB2312 characters correponding to ASCII, use the
+For double-width GB2312 characters corresponding to ASCII, use the
input method `chinese-qj'.")
("chinese-ecdict" "\e$(05CKH\e(B"
-"In this input method, you enter a Chinese (Big5) charactere or word
+"In this input method, you enter a Chinese (Big5) character or word
by typing the corresponding English word. For example, if you type
\"computer\", \"\e$(0IZH+\e(B\" is input.
In this input method, you enter a Chinese character by first typing
keys corresponding to Zhuyin symbols (see the above table) followed by
-SPC, 1, 2, 3, or 4 specifing a tone (SPC:\e$(0?v(N\e(B, 1:\e$(0M=Vy\e(B, 2:\e$(0Dm(N\e(B, 3: \e$(0&9Vy\e(B,
+SPC, 1, 2, 3, or 4 specifying a tone (SPC:\e$(0?v(N\e(B, 1:\e$(0M=Vy\e(B, 2:\e$(0Dm(N\e(B, 3: \e$(0&9Vy\e(B,
4:\e$(0(+Vy\e(B).
\\<quail-translation-docstring>")
("chinese-punct-b5" "\e$(0O:\e(BB"
- "Input method for Chinese punctuations and symbols of Big5
+ "Input method for Chinese punctuation and symbols of Big5
\(`chinese-big5-1' and `chinese-big5-2').")
("chinese-punct" "\e$A1j\e(BG"
- "Input method for Chinese punctuations and symbols of GB2312
+ "Input method for Chinese punctuation and symbols of GB2312
\(`chinese-gb2312').")
("chinese-py-b5" "\e$(03<\e(BB"
a Pinyin, the next \"3\" specifies tone, and the last \"3\" selects
the third character from the candidate list.
-For double-width GB2312 characters correponding to ASCII, use the
+For double-width GB2312 characters corresponding to ASCII, use the
input method `chinese-qj'.")
("chinese-zozy" "\e$(0I\0D\e(B"
In this input method, you enter a Chinese character by first typing
keys corresponding to Zhuyin symbols (see the above table) followed by
-SPC, 6, 3, 4, or 7 specifing a tone (SPC:\e$(0?v(N\e(B, 6:\e$(0Dm(N\e(B, 3:\e$(0&9Vy\e(B, 4:\e$(0(+Vy\e(B,
+SPC, 6, 3, 4, or 7 specifying a tone (SPC:\e$(0?v(N\e(B, 6:\e$(0Dm(N\e(B, 3:\e$(0&9Vy\e(B, 4:\e$(0(+Vy\e(B,
7:\e$(0M=Vy\e(B).
\\<quail-translation-docstring>")))
(princ ";; Quail package `")
(princ package)
- (princ (format "' -*- coding:%s; " coding-system-for-write))
- (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 (format "' -*- coding:%s -*-\n" coding-system-for-write))
+ (princ ";; Generated by the command `titdic-convert'\n")
+ (princ ";;\tOriginal TIT dictionary file: ")
(princ (file-name-nondirectory filename))
(princ "\n\n;;; Comment:\n\n")
(princ ";; Byte-compile this file again after any modification.\n\n")
(cond ((looking-at "COMMENT")
(let ((pos (match-end 0)))
(end-of-line)
- (setq tit-comments (cons (buffer-substring pos (point))
- tit-comments))))))
+ (setq tit-comments
+ (cons (buffer-substring-no-properties pos (point))
+ tit-comments))))))
((= ch ?M) ; MULTICHOICE, MOVERIGHT, MOVELEFT
(cond ((looking-at "MULTICHOICE:[ \t]*")
(goto-char (match-end 0))
(cond ((looking-at "PROMPT:[ \t]*")
(goto-char (match-end 0))
(setq tit-prompt (tit-read-key-value))
- ;; Some TIT dictionaies that are encoded by
+ ;; Some TIT dictionaries that are encoded by
;; euc-china contains invalid character at the tail.
(let* ((last (aref tit-prompt (1- (length tit-prompt))))
(split (split-char last)))
tit-keyprompt)))))))
(end-of-line)
(princ ";; ")
- (princ (buffer-substring pos (point)))
+ (princ (buffer-substring-no-properties pos (point)))
(princ "\n")
(forward-line 1)))
(forward-line 1)
(setq pos (point))
(skip-chars-forward "^ \t\n")
- (setq key (buffer-substring pos (point)))
+ (setq key (buffer-substring-no-properties pos (point)))
(skip-chars-forward " \t")
(setq ch (following-char))
(if (or (= ch ?#) (= ch ?\n))
(setq translations
(if translations
(concat translations
- (buffer-substring pos (point)))
- (buffer-substring pos (point)))))
+ (buffer-substring-no-properties pos (point)))
+ (buffer-substring-no-properties pos (point)))))
(while (not (eolp))
(setq pos (point))
(skip-chars-forward "^ \t\n")
- (setq translations (cons (buffer-substring pos (point))
+ (setq translations (cons (buffer-substring-no-properties
+ pos (point))
translations))
(skip-chars-forward " \t")
(setq ch (following-char))
;; 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,
-;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.")
+;; CCE. If not, see <http://www.gnu.org/licenses/>.")
("chinese-ziranma" "\e$AWTH;\e(B"
"ziranma.cin" cn-gb-2312 "ZIRANMA.el"
;; 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,
-;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.")
+;; CCE. If not, see <http://www.gnu.org/licenses/>.")
("chinese-ctlau" "\e$AAuTA\e(B"
"CTLau.html" cn-gb-2312 "CTLau.el"
;; # 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.")
+;; # along with this program. If not, see <http://www.gnu.org/licenses/>.")
("chinese-ctlaub" "\e$(0N,Gn\e(B"
"CTLau-b5.html" big5 "CTLau-b5.el"
;; # 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.")
+;; # along with this program. If not, see <http://www.gnu.org/licenses/>.")
))
;; Generate a code of a Quail package in the current buffer from Tsang
;; dictionary in the buffer DICBUF. The input method name of the
;; Quail package is NAME, and the title string is TITLE.
-;; TSANG-P is non-nil, genereate \e$(06AQo\e(B input method. Otherwise
+;; TSANG-P is non-nil, generate \e$(06AQo\e(B input method. Otherwise
;; generate \e$(0X|/y\e(B (simple version of \e$(06AQo\e(B). If BIG5-P is non-nil, the
;; input method is for inputting Big5 characters. Otherwise the input
;; method is for inputting CNS characters.
(\",\" . quail-prev-translation-block))
nil nil)\n\n")
(insert "(quail-define-rules\n")
- (save-excursion
- (set-buffer dicbuf)
+ (with-current-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)
(let ((table (make-hash-table :test 'equal))
(forward-char 5)
(let ((trans (char-to-string (following-char)))
key slot)
- (re-search-forward "[A-Z]+$" nil t)
+ (re-search-forward "\\([A-Z]+\\)\r*$" nil t)
(setq key (downcase
(if (or tsang-p
- (<= (- (match-end 0) (match-beginning 0)) 1))
- (match-string 0)
- (string (char-after (match-beginning 0))
- (char-after (1- (match-end 0)))))))
+ (<= (- (match-end 1) (match-beginning 1)) 1))
+ (match-string 1)
+ (string (char-after (match-beginning 1))
+ (char-after (1- (match-end 1)))))))
(setq val (gethash key table))
(if val (setq trans (concat val trans)))
(puthash key trans table)
(setq dic (sort dic (function (lambda (x y) (string< (car x ) (car y))))))
(dolist (elt dic)
(insert (format "(%S\t%S)\n" (car elt) (cdr elt))))
- (let ((punctuations '((";" "\e$(0!'!2!"!#!.!/\e(B" "\e$(G!'!2!"!#!.!/\e(B")
- (":" "\e$(0!(!+!3!%!$!&!0!1\e(B" "\e$(G!(!+!3!%!$!&!0!1\e(B")
- ("'" "\e$(0!e!d\e(B" "\e$(G!e!d\e(B")
- ("\"" "\e$(0!g!f!h!i!q\e(B" "\e$(G!g!f!h!i!q\e(B")
- ("\\" "\e$(0"`"b#M\e(B" "\e$(G"`"b#M\e(B")
- ("|" "\e$(0!6!8!:"^\e(B" "\e$(G!6!8!:"^\e(B")
- ("/" "\e$(0"_"a#L\e(B" "\e$(G"_"a#L\e(B")
- ("?" "\e$(0!)!4\e(B" "\e$(G!)!4\e(B")
- ("<" "\e$(0!R"6"A!T"H\e(B" "\e$(G!R"6"A!T"H\e(B")
- (">" "\e$(0!S"7"B!U\e(B" "\e$(G!S"7"B!U\e(B")
- ("[" "\e$(0!F!J!b!H!L!V!Z!X!\\e(B" "\e$(G!F!J!b!H!L!V!Z!X!\\e(B")
- ("]" "\e$(0!G!K!c!I!M!W![!Y!]\e(B" "\e$(G!G!K!c!I!M!W![!Y!]\e(B")
- ("{" "\e$(0!B!`!D\e(B " "\e$(G!B!`!D\e(B ")
- ("}" "\e$(0!C!a!E\e(B" "\e$(G!C!a!E\e(B")
- ("`" "\e$(0!j!k\e(B" "\e$(G!j!k\e(B")
- ("~" "\e$(0"D"+",!<!=\e(B" "\e$(G"D"+",!<!=\e(B")
- ("!" "\e$(0!*!5\e(B" "\e$(G!*!5\e(B")
- ("@" "\e$(0"i"n\e(B" "\e$(G"i"n\e(B")
- ("#" "\e$(0!l"-\e(B" "\e$(G!l"-\e(B")
- ("$" "\e$(0"c"l\e(B" "\e$(G"c"l\e(B")
- ("%" "\e$(0"h"m\e(B" "\e$(G"h"m\e(B")
- ("&" "\e$(0!m".\e(B" "\e$(G!m".\e(B")
- ("*" "\e$(0!n"/!o!w!x\e(B" "\e$(G!n"/!o!w!x\e(B")
- ("(" "\e$(0!>!^!@\e(B" "\e$(G!>!^!@\e(B")
- (")" "\e$(0!?!_!A\e(B" "\e$(G!?!_!A\e(B")
- ("-" "\e$(0!7!9"#"$"1"@\e(B" "\e$(G!7!9"#"$"1"@\e(B")
- ("_" "\e$(0"%"&\e(B" "\e$(G"%"&\e(B")
- ("=" "\e$(0"8"C\e(B" "\e$(G"8"C\e(B")
- ("+" "\e$(0"0"?\e(B" "\e$(G"0"?\e(B"))))
- (dolist (elt punctuations)
+ (let ((punctuation '((";" "\e$(0!'!2!"!#!.!/\e(B" "\e$(G!'!2!"!#!.!/\e(B")
+ (":" "\e$(0!(!+!3!%!$!&!0!1\e(B" "\e$(G!(!+!3!%!$!&!0!1\e(B")
+ ("'" "\e$(0!e!d\e(B" "\e$(G!e!d\e(B")
+ ("\"" "\e$(0!g!f!h!i!q\e(B" "\e$(G!g!f!h!i!q\e(B")
+ ("\\" "\e$(0"`"b#M\e(B" "\e$(G"`"b#M\e(B")
+ ("|" "\e$(0!6!8!:"^\e(B" "\e$(G!6!8!:"^\e(B")
+ ("/" "\e$(0"_"a#L\e(B" "\e$(G"_"a#L\e(B")
+ ("?" "\e$(0!)!4\e(B" "\e$(G!)!4\e(B")
+ ("<" "\e$(0!R"6"A!T"H\e(B" "\e$(G!R"6"A!T"H\e(B")
+ (">" "\e$(0!S"7"B!U\e(B" "\e$(G!S"7"B!U\e(B")
+ ("[" "\e$(0!F!J!b!H!L!V!Z!X!\\e(B" "\e$(G!F!J!b!H!L!V!Z!X!\\e(B")
+ ("]" "\e$(0!G!K!c!I!M!W![!Y!]\e(B" "\e$(G!G!K!c!I!M!W![!Y!]\e(B")
+ ("{" "\e$(0!B!`!D\e(B " "\e$(G!B!`!D\e(B ")
+ ("}" "\e$(0!C!a!E\e(B" "\e$(G!C!a!E\e(B")
+ ("`" "\e$(0!j!k\e(B" "\e$(G!j!k\e(B")
+ ("~" "\e$(0"D"+",!<!=\e(B" "\e$(G"D"+",!<!=\e(B")
+ ("!" "\e$(0!*!5\e(B" "\e$(G!*!5\e(B")
+ ("@" "\e$(0"i"n\e(B" "\e$(G"i"n\e(B")
+ ("#" "\e$(0!l"-\e(B" "\e$(G!l"-\e(B")
+ ("$" "\e$(0"c"l\e(B" "\e$(G"c"l\e(B")
+ ("%" "\e$(0"h"m\e(B" "\e$(G"h"m\e(B")
+ ("&" "\e$(0!m".\e(B" "\e$(G!m".\e(B")
+ ("*" "\e$(0!n"/!o!w!x\e(B" "\e$(G!n"/!o!w!x\e(B")
+ ("(" "\e$(0!>!^!@\e(B" "\e$(G!>!^!@\e(B")
+ (")" "\e$(0!?!_!A\e(B" "\e$(G!?!_!A\e(B")
+ ("-" "\e$(0!7!9"#"$"1"@\e(B" "\e$(G!7!9"#"$"1"@\e(B")
+ ("_" "\e$(0"%"&\e(B" "\e$(G"%"&\e(B")
+ ("=" "\e$(0"8"C\e(B" "\e$(G"8"C\e(B")
+ ("+" "\e$(0"0"?\e(B" "\e$(G"0"?\e(B"))))
+ (dolist (elt punctuation)
(insert (format "(%S %S)\n" (concat "z" (car elt))
(if big5-p (nth 1 elt) (nth 2 elt))))))
(insert ")\n")))
nil nil nil nil)\n\n")
(insert "(quail-define-rules\n")
(let ((pos (point)))
- (insert-buffer-substring dicbuf)
+ (insert-buffer-substring-no-properties dicbuf)
(goto-char pos)
(re-search-forward "^[a-z]")
(beginning-of-line)
(insert "\" \"")
(delete-char 1)
(end-of-line)
+ (while (= (preceding-char) ?\r)
+ (delete-char -1))
(insert "\")")
(forward-line 1)))
(insert ")\n"))
(defun ziranma-converter (dicbuf name title)
(let (dic)
- (save-excursion
- (set-buffer dicbuf)
+ (with-current-buffer dicbuf
(goto-char (point-min))
- (search-forward "%keyname end\n")
+ (search-forward "\n%keyname end")
+ (forward-line 1)
(let ((table (make-hash-table :test 'equal))
elt pos key trans val)
(while (not (eobp))
(setq pos (point))
(skip-chars-forward "^ \t")
- (setq key (buffer-substring pos (point)))
+ (setq key (buffer-substring-no-properties pos (point)))
(skip-chars-forward " \t")
- (setq trans (vector (buffer-substring (point) (line-end-position))))
+ (setq pos (point))
+ (skip-chars-forward "^\r\n")
+ (setq trans (vector (buffer-substring-no-properties pos (point))))
(setq val (gethash key table))
(if val (setq trans (vconcat val trans)))
(puthash key trans table)
of the first three letters and the last letter. For instance,
\"bjdt\" inputs \e$A11>)5gJSL(\e(B.
-To input symbols and punctuations, type `/' followed by one of `a' to
+To input symbols and punctuation, type `/' followed by one of `a' to
`z', then select one of the candidates."))
(insert " '((\"\C-?\" . quail-delete-last-char)
(\".\" . quail-next-translation)
(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)
+ (with-current-buffer dicbuf
(goto-char (point-min))
- (search-forward "#\n#<hr>\n")
+ (re-search-forward "^#<hr>")
+ (forward-line 1)
(setq dicbuf-start (point))
(goto-char (point-max))
- (forward-line -1)
+ (re-search-backward "^<hr>")
(setq dicbuf-end (point)))
- (insert-buffer-substring dicbuf dicbuf-start dicbuf-end)
+ (insert-buffer-substring-no-properties 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
(insert "\" \"")
(delete-char 1)
(end-of-line)
+ (while (= (preceding-char) ?\r)
+ (delete-char -1))
(insert "\")")
(forward-line 1)))
(insert ")\n"))
(setq coding-system-for-write
(coding-system-change-eol-conversion coding 'unix))
(with-temp-file (expand-file-name quailfile dirname)
- (insert (format ";; Quail package `%s' -*- coding:%s; " name coding))
- (insert "byte-compile-disable-print-circle:t; -*-\n")
+ (insert (format ";; Quail package `%s' -*- coding:%s -*-\n"
+ name coding))
(insert ";; Generated by the command `miscdic-convert'\n")
- (insert ";; Date: " (current-time-string) "\n")
(insert ";; Source dictionary file: " dicfile "\n")
(insert ";; Copyright notice of the source file\n")
(insert ";;------------------------------------------------------\n")
(if (eq coding 'iso-2022-cn-ext) "Chinese-CNS"
"Chinese-GB"))
"\" \"" title "\" t\n")
- (let* ((coding-system-for-read coding)
+ (let* ((coding-system-for-read
+ (coding-system-change-eol-conversion coding 'unix))
(dicbuf (find-file-noselect filename)))
(funcall converter dicbuf name title)
(kill-buffer dicbuf)))
(setq tail (cdr tail)))))
(defun batch-miscdic-convert ()
- "Run `miscdic-convert' on the files remaing on the command line.
+ "Run `miscdic-convert' on the files remaining on the command line.
Use this from the command line, with `-batch';
it won't work in an interactive Emacs.
If there's an argument \"-dir\", the next argument specifies a directory
(miscdic-convert filename dir))))
(kill-emacs 0))
-;; Local Variables:
-;; coding: iso-2022-7bit
-;; End:
-
-;; arch-tag: 8ad478b2-a985-4da2-b47f-d8ee5d7c24a3
;;; titdic-cnv.el ends here