Mercurial > emacs
view lisp/language/japanese.el @ 105813:df4934f25eef
* textmodes/two-column.el (2C-split):
* textmodes/texnfo-upd.el (texinfo-multi-file-included-list):
* textmodes/tex-mode.el (tex-set-buffer-directory):
* textmodes/spell.el (spell-region, spell-string):
* textmodes/reftex.el (reftex-erase-buffer):
(reftex-get-file-buffer-force, reftex-kill-temporary-buffers):
* textmodes/reftex-toc.el (reftex-toc-promote-action):
* textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct)
(reftex-select-item):
* textmodes/reftex-ref.el (reftex-label-info-update)
(reftex-offer-label-menu):
* textmodes/reftex-index.el (reftex-index-change-entry)
(reftex-index-phrases-info):
* textmodes/reftex-global.el (reftex-create-tags-file)
(reftex-save-all-document-buffers, reftex-ensure-write-access):
* textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite)
(reftex-view-crossref-from-bibtex):
* textmodes/reftex-cite.el (reftex-bibtex-selection-callback)
(reftex-extract-bib-entries-from-thebibliography)
(reftex-all-used-citation-keys, reftex-create-bibtex-file):
* textmodes/refbib.el (r2b-capitalize-title):
(r2b-convert-buffer, r2b-help):
* textmodes/page-ext.el (pages-directory)
(pages-directory-goto-with-mouse):
* textmodes/bibtex.el (bibtex-validate-globally):
* textmodes/bib-mode.el (bib-capitalize-title):
* textmodes/artist.el (artist-clear-buffer, artist-system):
* progmodes/xscheme.el (global-set-scheme-interaction-buffer):
(local-set-scheme-interaction-buffer, xscheme-process-filter)
(verify-xscheme-buffer, xscheme-enter-interaction-mode)
(xscheme-enter-debugger-mode, xscheme-debugger-mode-p)
(xscheme-send-control-g-interrupt, xscheme-start-process)
(xscheme-process-sentinel, xscheme-cd):
* progmodes/verilog-mode.el (verilog-read-always-signals)
(verilog-set-define, verilog-getopt-file)
(verilog-module-inside-filename-p):
* progmodes/sh-script.el:
* progmodes/python.el (python-pdbtrack-get-source-buffer)
(python-pdbtrack-grub-for-buffer, python-execute-file):
* progmodes/octave-inf.el (inferior-octave):
* progmodes/idlwave.el (idlwave-scan-user-lib-files)
(idlwave-shell-compile-helper-routines, idlwave-set-local)
(idlwave-display-completion-list-xemacs, idlwave-list-abbrevs)
(idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows)
(idlwave-completion-fontify-classes, idlwave-display-calling-sequence):
* progmodes/idlw-shell.el (idlwave-shell-examine-display-clear)
(idlwave-shell-filter, idlwave-shell-examine-highlight)
(idlwave-shell-sentinel, idlwave-shell-filter-directory)
(idlwave-shell-display-line, idlwave-shell-set-bp-in-module)
(idlwave-shell-examine-display, idlwave-shell-run-region)
(idlwave-shell-filter-bp, idlwave-shell-save-and-action)
(idlwave-shell-sources-filter, idlwave-shell-goto-next-error):
* progmodes/idlw-help.el (idlwave-help-get-special-help)
(idlwave-help-get-help-buffer):
* progmodes/gud.el (gud-basic-call, gud-find-class)
(gud-tooltip-activate-mouse-motions-if-enabled):
* progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe):
* progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as)
(ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file)
(ebrowse-tags-next-file):
* progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps)
(ebnf-eps-production-list, ebnf-begin-file, ebnf-log)
(ebnf-eps-finish-and-write):
* progmodes/cpp.el (cpp-edit-save):
* progmodes/cperl-mode.el (cperl-pod-to-manpage):
* progmodes/cc-defs.el (c-emacs-features):
* progmodes/antlr-mode.el (antlr-invalidate-context-cache)
(antlr-directory-dependencies):
* progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name)
(ada-run-application, ada-find-in-src-path, ada-goto-parent)
(ada-find-any-references, ada-make-filename-from-adaname)
(ada-make-body-gnatstub):
* obsolete/rnews.el (news-list-news-groups):
* obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file):
* obsolete/iso-acc.el (iso-acc-minibuf-setup):
* net/rcirc.el (rcirc-debug):
* net/newst-treeview.el (newsticker--treeview-list-add-item)
(newsticker--treeview-list-clear, newsticker-treeview-browse-url)
(newsticker--treeview-list-update-faces, newsticker-treeview-save)
(newsticker--treeview-item-show-text, newsticker--treeview-item-show)
(newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init)
(newsticker-treeview-show-item, newsticker--treeview-unfold-node)
(newsticker--treeview-list-clear-highlight)
(newsticker--treeview-list-update-highlight)
(newsticker--treeview-list-highlight-start)
(newsticker--treeview-tree-update-highlight)
(newsticker--treeview-get-selected-item)
(newsticker-treeview-mark-list-items-old)
(newsticker--treeview-set-current-node):
* net/newst-plainview.el (newsticker--buffer-set-uptodate):
* net/newst-backend.el (newsticker--get-news-by-funcall)
(newsticker--get-news-by-wget, newsticker--image-get)
(newsticker--image-sentinel):
* net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field):
* net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session):
(eudc-ph-close-session):
* net/eudc.el (eudc-save-options):
* language/thai-word.el (thai-update-word-table):
* language/japan-util.el (japanese-string-conversion):
* international/titdic-cnv.el (tsang-quick-converter)
(ziranma-converter, ctlau-converter):
* international/mule-cmds.el (describe-language-environment):
* international/ja-dic-cnv.el (skkdic-convert-okuri-ari)
(skkdic-convert-postfix, skkdic-convert-prefix):
(skkdic-convert-okuri-nasi, skkdic-convert):
* emacs-lisp/re-builder.el (reb-update-overlays):
* emacs-lisp/pp.el (pp-to-string, pp-display-expression):
* emacs-lisp/gulp.el (gulp-send-requests):
* emacs-lisp/find-gc.el (trace-call-tree):
* emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class)
(eieio-describe-generic):
* emacs-lisp/eieio-base.el (eieio-persistent-read):
* emacs-lisp/edebug.el (edebug-outside-excursion):
* emacs-lisp/debug.el (debugger-make-xrefs):
* emacs-lisp/cust-print.el (custom-prin1-to-string):
* emacs-lisp/chart.el (chart-new-buffer):
* emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log):
Use with-current-buffer.
* textmodes/artist.el (artist-system): Don't call
copy-sequence on a fresh string.
* progmodes/idlw-shell.el (easymenu setup): Use dolist.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 31 Oct 2009 02:38:34 +0000 |
parents | 56d7bae253ef |
children | 1d1d5d9bd884 |
line wrap: on
line source
;;; japanese.el --- support for Japanese -*- coding: iso-2022-7bit; no-byte-compile: t -*- ;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 ;; Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 ;; Copyright (C) 2003 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H13PRO009 ;; Keywords: multilingual, Japanese ;; 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 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;;; Commentary: ;; For Japanese, character sets JISX0201, JISX0208, JISX0212 are ;; supported. ;;; Code: ;;; Load translation tables for CP932. (load "international/cp51932") (load "international/eucjp-ms") (define-coding-system 'iso-2022-jp "ISO 2022 based 7bit encoding for Japanese (MIME:ISO-2022-JP)." :coding-type 'iso-2022 :mnemonic ?J :designation [(ascii japanese-jisx0208-1978 japanese-jisx0208 latin-jisx0201) nil nil nil] :flags '(short ascii-at-eol ascii-at-cntl 7-bit designation) :charset-list '(ascii japanese-jisx0208 japanese-jisx0208-1978 latin-jisx0201) :mime-charset 'iso-2022-jp :suitable-for-keyboard t) (define-coding-system-alias 'junet 'iso-2022-jp) (define-coding-system 'iso-2022-jp-2 "ISO 2022 based 7bit encoding for CJK, Latin-1, Greek (MIME:ISO-2022-JP-2)." :coding-type 'iso-2022 :mnemonic ?J :designation [(ascii japanese-jisx0208-1978 japanese-jisx0208 latin-jisx0201 japanese-jisx0212 chinese-gb2312 korean-ksc5601) nil (nil latin-iso8859-1 greek-iso8859-7) nil] :flags '(short ascii-at-eol ascii-at-cntl 7-bit designation single-shift init-at-bol) :charset-list '(ascii japanese-jisx0208 japanese-jisx0212 latin-jisx0201 japanese-jisx0208-1978 chinese-gb2312 korean-ksc5601 latin-iso8859-1 greek-iso8859-7) :mime-charset 'iso-2022-jp-2 :suitable-for-keyboard t) (let ((map ; JIS vs CP932 '((#x301C . #xFF5E) ; WAVE DASH FULLWIDTH TILDE (#x2014 . #x2015) ; EM DASH HORIZONTAL BAR (#x2016 . #x2225) ; DOUBLE VERTICAL LINE PARALLEL TO (#x2212 . #xFF0D) ; MINUS SIGN FULLWIDTH HYPHEN-MINUS (#x00A2 . #xFFE0) ; CENT SIGN FULLWIDTH CENT SIGN (#x00A3 . #xFFE1) ; POUND SIGN FULLWIDTH POUND SIGN (#x00AC . #xFFE2) ; NOT SIGN FULLWIDTH NOT SIGN (#x00A6 . #xFFE4) ; BROKEN LINE FULLWIDTH BROKEN LINE ))) (define-translation-table 'japanese-ucs-jis-to-cp932-map map) (mapc #'(lambda (x) (let ((tmp (car x))) (setcar x (cdr x)) (setcdr x tmp))) map) (define-translation-table 'japanese-ucs-cp932-to-jis-map map)) ;; U+2014 (EM DASH) vs U+2015 (HORIZONTAL BAR) (define-translation-table 'japanese-ucs-glibc-to-jis-map '((#x2015 . #x2014))) (define-translation-table 'japanese-ucs-jis-to-glibc-map '((#x2014 . #x2015))) (define-coding-system 'japanese-shift-jis "Shift-JIS 8-bit encoding for Japanese (MIME:SHIFT_JIS)" :coding-type 'shift-jis :mnemonic ?S :charset-list '(ascii katakana-jisx0201 japanese-jisx0208) :mime-charset 'shift_jis) (define-coding-system-alias 'shift_jis 'japanese-shift-jis) (define-coding-system-alias 'sjis 'japanese-shift-jis) (define-coding-system 'japanese-cp932 "CP932 (Microsoft shift-jis)" :coding-type 'charset :mnemonic ?S :charset-list '(ascii katakana-sjis cp932-2-byte)) (define-coding-system-alias 'cp932 'japanese-cp932) (define-coding-system 'japanese-iso-7bit-1978-irv "ISO 2022 based 7-bit encoding for Japanese JISX0208-1978 and JISX0201-Roman." :coding-type 'iso-2022 :mnemonic ?j :designation [(latin-jisx0201 japanese-jisx0208-1978 japanese-jisx0208 japanese-jisx0212 katakana-jisx0201) nil nil nil] :flags '(short ascii-at-eol ascii-at-cntl 7-bit designation use-roman use-oldjis) :charset-list '(ascii latin-jisx0201 japanese-jisx0208-1978 japanese-jisx0208 japanese-jisx0212)) (define-coding-system-alias 'iso-2022-jp-1978-irv 'japanese-iso-7bit-1978-irv) (define-coding-system-alias 'old-jis 'japanese-iso-7bit-1978-irv) (define-coding-system 'japanese-iso-8bit "ISO 2022 based EUC encoding for Japanese (MIME:EUC-JP)." :coding-type 'iso-2022 :mnemonic ?E :designation [ascii japanese-jisx0208 katakana-jisx0201 japanese-jisx0212] :flags '(short ascii-at-eol ascii-at-cntl single-shift) :charset-list '(ascii latin-jisx0201 japanese-jisx0208 katakana-jisx0201 japanese-jisx0212 japanese-jisx0208-1978) :mime-charset 'euc-jp) (define-coding-system-alias 'euc-japan-1990 'japanese-iso-8bit) (define-coding-system-alias 'euc-japan 'japanese-iso-8bit) (define-coding-system-alias 'euc-jp 'japanese-iso-8bit) (define-coding-system 'eucjp-ms "eucJP-ms (like EUC-JP but with CP932 extension). eucJP-ms is defined in <http://www.opengroup.or.jp/jvc/cde/appendix.html>." :coding-type 'iso-2022 :mnemonic ?E :designation [ascii japanese-jisx0208 katakana-jisx0201 japanese-jisx0212] :flags '(short ascii-at-eol ascii-at-cntl single-shift) :charset-list '(ascii latin-jisx0201 japanese-jisx0208 katakana-jisx0201 japanese-jisx0212) :decode-translation-table 'eucjp-ms-decode :encode-translation-table 'eucjp-ms-encode) (define-coding-system 'iso-2022-jp-2004 "ISO 2022 based 7bit encoding for JIS X 0213:2004 (MIME:ISO-2022-JP-2004)." :coding-type 'iso-2022 :mnemonic ?J :designation [(ascii japanese-jisx0208 japanese-jisx0213.2004-1 japanese-jisx0213-1 japanese-jisx0213-2) nil nil nil] :flags '(short ascii-at-eol ascii-at-cntl 7-bit designation) ;; init-at-bol) :charset-list '(ascii japanese-jisx0208 japanese-jisx0213.2004-1 japanese-jisx0213-1 japanese-jisx0213-2) :mime-charset 'iso-2022-jp-2004 :suitable-for-keyboard t) (define-coding-system-alias 'iso-2022-jp-3 'iso-2022-jp-2004) (define-coding-system 'euc-jis-2004 "ISO 2022 based EUC encoding for JIS X 0213 (MIME:EUC-JIS-2004)." :coding-type 'iso-2022 :mnemonic ?E :designation [ascii japanese-jisx0213.2004-1 katakana-jisx0201 japanese-jisx0213-2] :flags '(short ascii-at-eol ascii-at-cntl single-shift) :charset-list '(ascii latin-jisx0201 japanese-jisx0213.2004-1 japanese-jisx0213-1 katakana-jisx0201 japanese-jisx0213-2) :mime-charset 'euc-jis-2004) (define-coding-system-alias 'euc-jisx0213 'euc-jis-2004) (define-coding-system 'japanese-shift-jis-2004 "Shift_JIS 8-bit encoding for Japanese (MIME:SHIFT_JIS-2004)" :coding-type 'shift-jis :mnemonic ?S :charset-list '(ascii katakana-jisx0201 japanese-jisx0213.2004-1 japanese-jisx0213-2)) (define-coding-system-alias 'shift_jis-2004 'japanese-shift-jis-2004) (set-language-info-alist "Japanese" '((setup-function . setup-japanese-environment-internal) (exit-function . use-default-char-width-table) (iso639-language . ja) (tutorial . "TUTORIAL.ja") (charset japanese-jisx0208 japanese-jisx0212 latin-jisx0201 katakana-jisx0201 japanese-jisx0213.2004-1 japanese-jisx0213-1 japanese-jisx0213-2 japanese-jisx0208-1978) (coding-system iso-2022-jp japanese-iso-8bit japanese-shift-jis japanese-iso-7bit-1978-irv iso-2022-jp-2004 japanese-shift-jis-2004 euc-jis-2004) (coding-priority iso-2022-jp japanese-iso-8bit japanese-shift-jis iso-2022-jp-2004 euc-jis-2004 japanese-shift-jis-2004 iso-2022-jp-2) (input-method . "japanese") (features japan-util) (sample-text . "Japanese ($BF|K\8l(B) $B$3$s$K$A$O(B, (I:]FAJ(B") (documentation . t))) (let ((map ;; JISX0213-1 vs Unicode '((#x2477 . [#x304B #x309A]) (#x2478 . [#x304D #x309A]) (#x2479 . [#x304F #x309A]) (#x247a . [#x3051 #x309A]) (#x247b . [#x3053 #x309A]) (#x2577 . [#x30AB #x309A]) (#x2578 . [#x30AD #x309A]) (#x2579 . [#x30AF #x309A]) (#x257a . [#x30B1 #x309A]) (#x257b . [#x30B3 #x309A]) (#x257c . [#x30BB #x309A]) (#x257d . [#x30C4 #x309A]) (#x257e . [#x30C8 #x309A]) (#x2678 . [#x31F7 #x309A]) (#x2b44 . [#x00E6 #x0300]) (#x2b48 . [#x0254 #x0300]) (#x2b49 . [#x0254 #x0301]) (#x2b4a . [#x028C #x0300]) (#x2b4b . [#x028C #x0301]) (#x2b4c . [#x0259 #x0300]) (#x2b4d . [#x0259 #x0301]) (#x2b4e . [#x025A #x0300]) (#x2b4f . [#x025A #x0301]) (#x2b65 . [#x02E9 #x02E5]) (#x2b66 . [#x02E5 #x02E9]))) table) (dolist (elt map) (setcar elt (decode-char 'japanese-jisx0213-1 (car elt)))) (setq table (make-translation-table-from-alist map)) (define-translation-table 'jisx0213-to-unicode table) (define-translation-table 'unicode-to-jisx0213 (char-table-extra-slot table 0))) (defun compose-gstring-for-variation-glyph (gstring) "Compose glyph-string GSTRING for graphic display. GSTRING must have two glyphs; the first is a glyph for a han character, and the second is a glyph for a variation selector." (let* ((font (lgstring-font gstring)) (han (lgstring-char gstring 0)) (vs (lgstring-char gstring 1)) (glyphs (font-variation-glyphs font han)) (g0 (lgstring-glyph gstring 0)) (g1 (lgstring-glyph gstring 1))) (catch 'tag (dolist (elt glyphs) (if (= (car elt) vs) (progn (lglyph-set-code g0 (cdr elt)) (lglyph-set-from-to g0 (lglyph-from g0) (lglyph-to g1)) (lgstring-set-glyph gstring 1 nil) (throw 'tag gstring))))))) (let ((elt '([".." 1 compose-gstring-for-variation-glyph]))) (set-char-table-range composition-function-table '(#xFE00 . #xFE0F) elt) (set-char-table-range composition-function-table '(#xE0100 . #xE01EF) elt)) (provide 'japanese) ;; arch-tag: 450f5537-9d53-4d5e-b731-4cf116d8cbc9 ;;; japanese.el ends here