view lisp/mule/korean.el @ 4745:0c54de4c4b9d

Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly src/ChangeLog addition: 2009-11-15 Aidan Kehoe <kehoea@parhasard.net> * mule-ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION): Assert that we always have a symbol in this macro. (setup_ccl_program): Ensure we're not allocating unreachable memory in this function; all symbols must have been resolved in a given CCL program before this function is called. (find_ccl_program): New function, return a CCL program with all its symbols resolved if it is valid (possibly allocating memory), Qnil otherwise. (get_ccl_program): New function, exported to other files; call find_ccl_program, and error if it gives nil. (Fccl_program_p): Call find_ccl_program from this function instead of implementing the bulk of it here. (Fccl_execute): Call get_ccl_program instead of implementing the bulk of it here. (Fccl_execute_on_string): Ditto. * mule-ccl.h (Vfont_ccl_encoder_alist): Remove this declaration, it hasn't been used in years. (get_ccl_program): Declare this function. * mule-coding.c (ccl_putprop): Use get_ccl_program on any specified encode or decode CCL program property. (fixed_width_putprop): Ditto. * mule-charset.c (Fmake_charset): Use get_ccl_program on any specified ccl-program. (Fset_charset_ccl_program): Ditto.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 15 Nov 2009 16:53:14 +0000
parents 1d74a1d115ee
children 308d34e9f07d
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
   safe-charsets (ascii 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"
   safe-charsets (ascii korean-ksc5601)
   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
   safe-charsets (ascii korean-ksc5601)
   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