>From 2395d1a62e66206c04b7069d372fdb4f10787863 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Wed, 30 Jan 2019 12:31:49 -0800 Subject: [PATCH 1/2] Make pinyin to Chinese character mapping available to elisp * leim/Makefile.in: Build the file pinyin.el from pinyin.map. * lisp/international/titdic-cnv.el (pinyin-convert): New function that writes the library pinyin.el, containing a new constant `pinyin-character-map'. * .gitignore: Ignore the generated pinyin.el file. --- .gitignore | 1 + leim/Makefile.in | 6 +++++- lisp/international/titdic-cnv.el | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 53f41f0f3e..f3d5ccb0f8 100644 --- a/.gitignore +++ b/.gitignore @@ -199,6 +199,7 @@ lisp/international/charscript.el lisp/international/cp51932.el lisp/international/eucjp-ms.el lisp/international/uni-*.el +lisp/language/pinyin.el # Documentation. *.aux diff --git a/leim/Makefile.in b/leim/Makefile.in index c2fc8c41f2..4307d50087 100644 --- a/leim/Makefile.in +++ b/leim/Makefile.in @@ -84,7 +84,8 @@ MISC= ${leimdir}/quail/PY.el \ ${leimdir}/quail/ZIRANMA.el \ ${leimdir}/quail/CTLau.el \ - ${leimdir}/quail/CTLau-b5.el + ${leimdir}/quail/CTLau-b5.el \ + ${srcdir}/../lisp/language/pinyin.el ## All the generated .el files. TIT_MISC = ${TIT_GB} ${TIT_BIG5} ${MISC} @@ -142,6 +143,9 @@ ${leimdir}/ja-dic/ja-dic.el: $(AM_V_GEN)$(RUN_EMACS) -batch -l ja-dic-cnv \ -f batch-skkdic-convert -dir "$(leimdir)/ja-dic" "$<" +${srcdir}/../lisp/language/pinyin.el: ${srcdir}/MISC-DIC/pinyin.map + $(AM_V_GEN)${RUN_EMACS} -l titdic-cnv -f pinyin-convert $< $@ + .PHONY: bootstrap-clean distclean maintainer-clean extraclean diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el index 2ce2c527b9..d33e9ff229 100644 --- a/lisp/international/titdic-cnv.el +++ b/lisp/international/titdic-cnv.el @@ -1203,6 +1203,38 @@ batch-miscdic-convert (miscdic-convert filename dir)))) (kill-emacs 0)) +(defun pinyin-convert () + "Convert text file pinyin.map into an elisp library. +The library is named pinyin.el, and contains the constant +`pinyin-character-map'." + (let ((src-file (car command-line-args-left)) + (dst-file (cadr command-line-args-left)) + (coding-system-for-write 'utf-8-emacs)) + (with-temp-file dst-file + (insert ";; This file is automatically generated from pinyin.map,\ + by the\n;; function pinyin-convert.\n\n") + (insert "(defconst pinyin-character-map\n'(") + (let ((pos (point))) + (insert-file-contents src-file) + (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 "\" . \"") + (delete-char 1) + (end-of-line) + (while (= (preceding-char) ?\r) + (delete-char -1)) + (insert "\")") + (forward-line 1))) + (insert ")\n\"An alist holding correspondences between pinyin syllables\ + and\nChinese characters.\")\n\n") + (insert "(provide 'pinyin)\n")) + (kill-emacs 0))) + ;; Prevent "Local Variables" above confusing Emacs. -- 2.20.1