Mercurial > hg > xemacs-beta
view lisp/mule/korean.el @ 4549:68d1ca56cffa
First part of interactive checks that coding systems encode regions.
2008-01-21 Aidan Kehoe <kehoea@parhasard.net>
* coding.el (decode-coding-string):
(encode-coding-string): Accept GNU's NOCOPY argument for
these. Todo; write compiler macros to use it.
(query-coding-warning-face): New face, to show unencodable
characters.
(default-query-coding-region-safe-charset-skip-chars-map):
New variable, a cache used by #'default-query-coding-region.
(default-query-coding-region): Default implementation of
#'query-coding-region, using the safe-charsets and safe-chars
coding systemproperties.
(query-coding-region): New function; can a given coding system
encode a given region?
(query-coding-string): New function; can a given coding system
encode a given string?
(unencodable-char-position): Function API taken from GNU; return
the first unencodable position given a string and coding system.
(encode-coding-char): Function API taken from GNU; return CHAR
encoded using CODING-SYSTEM, or nil if CODING-SYSTEM would trash
CHAR.
((unless (featurep 'mule)): Override the default
query-coding-region implementation on non-Mule.
* mule/mule-coding.el (make-8-bit-generate-helper): Eliminate a
duplicate comment.
(make-8-bit-choose-category): Simplify implementation.
(8-bit-fixed-query-coding-region): Implementation of
#'query-coding-region for coding systems created with
#'make-8-bit-coding-system.
(make-8-bit-coding-system): Initialise the #'query-coding-region
implementation for these character sets.
(make-8-bit-coding-system): Ditto for the compiler macro version
of this function.
* unicode.el (unicode-query-coding-skip-chars-arg): New variable,
used by unicode-query-coding-region, initialised in
mule/general-late.el.
(unicode-query-coding-region): New function, the
#'query-coding-region implementation for Unicode coding systems.
Initialise the query-coding-function property for the Unicode
coding systems to #'unicode-query-coding-region.
* mule/mule-charset.el (charset-skip-chars-string): New
function. Return a #'skip-chars-forward argument that skips all
characters in CHARSET.
(map-charset-chars): Function synced from GNU, modified to work
with XEmacs. Map FUNC across the int value charset ranges of
CHARSET.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Mon, 21 Jan 2008 22:51:21 +0100 |
parents | aa28d959af41 |
children | 1d74a1d115ee |
line wrap: on
line source
;;; korean.el --- Support for Korean -*- coding: iso-2022-7bit; -*- ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. ;; Licensed to the Free Software Foundation. ;; Copyright (C) 1997 MORIOKA Tomohiko ;; Keywords: multilingual, Korean ;; This file is part of XEmacs. ;; XEmacs 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, or (at your option) ;; any later version. ;; XEmacs 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 XEmacs; see the file COPYING. If not, write to the Free ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. ;;; Commentary: ;; For Korean, the character set KSC5601 is supported. ;;; Code: ; (make-charset 'korean-ksc5601 ; "KSC5601 Korean Hangul and Hanja: ISO-IR-149" ; '(dimension ; 2 ; registry "KSC5601.1989" ; chars 94 ; columns 2 ; direction l2r ; final ?C ; graphic 0 ; short-name "KSC5601" ; long-name "KSC5601 (Korean): ISO-IR-149" ; )) ;; Syntax of Korean characters. (loop for row from 33 to 34 do (modify-syntax-entry `[korean-ksc5601 ,row] ".")) (loop for row from 38 to 41 do (modify-syntax-entry `[korean-ksc5601 ,row] ".")) ;; Setting for coding-system and quail were moved to ;; language/korean.el. (make-coding-system 'iso-2022-int-1 'iso2022 "ISO-2022-INT-1 (Korean)" '(charset-g0 ascii charset-g1 korean-ksc5601 short t seven t lock-shift t mnemonic "INT-1")) ;; EGG specific setup (define-egg-environment 'korean "Korean settings for egg" (lambda () (with-boundp '(its:*standard-modes* its:*current-map* wnn-server-type egg-default-startup-file) (with-fboundp 'its:get-mode-map (when (not (featurep 'egg-kor)) (load "its-hangul") (setq its:*standard-modes* (cons (its:get-mode-map "hangul") its:*standard-modes*)) (provide 'egg-kor)) (setq wnn-server-type 'kserver) (setq egg-default-startup-file "eggrc-wnn") (setq-default its:*current-map* (its:get-mode-map "hangul")))))) ;; (make-coding-system ;; 'korean-iso-8bit 2 ?K ;; "ISO 2022 based EUC encoding for Korean KSC5601 (MIME:EUC-KR)" ;; '(ascii korean-ksc5601 nil nil ;; nil ascii-eol ascii-cntl) ;; '((safe-charsets ascii korean-ksc5601) ;; (mime-charset . euc-kr))) (make-coding-system 'euc-kr 'iso2022 "Korean EUC" '(charset-g0 ascii charset-g1 korean-ksc5601 mnemonic "ko/EUC" documentation "Korean EUC (Extended Unix Code), the standard Korean encoding on Unix. This follows the same overall EUC principles (see the description under Japanese EUC), but specifies different character sets: G0: ASCII G1: Korean-KSC5601" eol-type nil)) ;;(define-coding-system-alias 'euc-kr 'euc-korea) (define-coding-system-alias 'korean-euc 'euc-kr) ;; (make-coding-system ;; 'iso-2022-kr 2 ?k ;; "ISO 2022 based 7-bit encoding for Korean KSC5601 (MIME:ISO-2022-KR)." ;; '(ascii (nil korean-ksc5601) nil nil ;; nil ascii-eol ascii-cntl seven locking-shift nil nil nil nil nil ;; designation-bol) ;; '((safe-charsets ascii korean-ksc5601) ;; (mime-charset . iso-2022-kr))) (make-coding-system 'iso-2022-kr 'iso2022 "ISO-2022-KR (Korean mail)" '(charset-g0 ascii charset-g1 korean-ksc5601 force-g1-on-output t seven t lock-shift t mnemonic "Ko/7bit" documentation "Coding-System used for communication with mail in Korea." eol-type lf)) ;; (define-coding-system-alias 'korean-iso-7bit-lock 'iso-2022-kr) (set-language-info-alist "Korean" '((setup-function . setup-korean-environment-internal) (exit-function . exit-korean-environment) (tutorial . "TUTORIAL.ko") (charset korean-ksc5601) (coding-system euc-kr iso-2022-kr) (coding-priority euc-kr iso-2022-kr) (locale "ko_KR.eucKR" "ko_KR.EUC" "ko_KR.euc" "ko_KR" "ko") (native-coding-system euc-kr) (input-method . "korean-hangul") (features korea-util) (sample-text . "Hangul ($(CGQ1[(B) $(C>H3gGO<<?d(B, $(C>H3gGO=J4O1n(B") (documentation . "\ The following key bindings are available while using Korean input methods: Shift-SPC: toggle-korean-input-mthod Control-F9: quail-hangul-switch-symbol-ksc F9: quail-hangul-switch-hanja") )) ;;; korean.el ends here