view lisp/language/korea-util.el @ 109635:fc7a8c411aa3

Add declarations to header files. * src/keyboard.h (xmalloc_widget_value, digest_single_submenu): Remove declarations, menu.h has them. (QCbutton, QCtoggle, QCradio, QClabel, extra_keyboard_modifiers) (Vinput_method_function, Qinput_method_function) (Qevent_symbol_element_mask, last_event_timestamp): * src/dispextern.h (Voverflow_newline_into_fringe): * src/font.h (QCantialias, Qp, syms_of_ftfont, syms_of_xfns) (syms_of_ftxfont, syms_of_xftfont, syms_of_bdffont) (syms_of_w32font, syms_of_nsfont): * src/fontset.h (find_font_encoding, Qlatin): * src/frame.h (Qtooltip, Qrun_hook_with_args, Vmenu_bar_mode) (Vtool_bar_mode, set_frame_menubar): * src/ftfont.h (ftfont_font_format, ftfont_get_fc_charset): * src/xterm.h (Qx_gtk_map_stock): * src/keymap.h (meta_prefix_char): Add declarations. * src/lisp.h: Remove HAVE_SHM code, unused. (QCmap, QCrehash_size, QCrehash_threshold, QCsize, QCtest) (QCweakness, Qabove_handle, Qbackquote, Qbar, Qbelow_handle) (Qborder, Qbottom, Qbox, Qcircular_list, Qcomma, Qcomma_at) (Qcomma_dot, Qcursor, Qdefault, Qdown, Qend_scroll, Qeq, Qeql) (Qequal, Qfile_exists_p, Qfont_param, Qfringe, Qfunction) (Qfunction_documentation, Qhandle, Qhbar, Qheader_line, Qhollow) (Qidentity, Qleft_margin, Qmenu, Qmenu_bar_update_hook) (Qmode_line_inactive, Qmouse, Qoverriding_local_map) (Qoverriding_terminal_local_map, Qratio, Qregion, Qright_margin) (Qscroll_bar, Qtool_bar, Qtop, Qup, Qvertical_border, Qwhen) (Qwindow_scroll_functions, Vafter_load_alist) (Vauto_save_list_file_name, Vface_alternative_font_family_alist) (Vface_alternative_font_registry_alist, Vface_font_rescale_alist) (Vface_ignored_fonts, Vinhibit_redisplay, Vminibuffer_list) (Vprint_length, Vprint_level, Vscalable_fonts_allowed) (Vshell_file_name, Vsystem_name, Vwindow_scroll_functions) (Vwindow_system_version, Vx_no_window_manager, initial_argc) (initial_argv, last_nonmenu_event, load_in_progress) (noninteractive_need_newline, scroll_margin): Add declarations.
author Dan Nicolaescu <dann@ics.uci.edu>
date Thu, 05 Aug 2010 16:15:24 -0700
parents 1d1d5d9bd884
children 376148b31b5e
line wrap: on
line source

;;; korea-util.el --- utilities for Korean

;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
;;   Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
;;   2007, 2008, 2009, 2010
;;   National Institute of Advanced Industrial Science and Technology (AIST)
;;   Registration Number H14PRO021

;; Keywords: mule, multilingual, Korean

;; 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:

;;; Code:

;;;###autoload
(defvar default-korean-keyboard
   (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") ""))
      "3"
    ""))
  "*The kind of Korean keyboard for Korean input method.
\"\" for 2, \"3\" for 3.")

;; functions useful for Korean text input

(defun toggle-korean-input-method ()
  "Turn on or off a Korean text input method for the current buffer."
  (interactive)
  (if current-input-method
      (inactivate-input-method)
    (activate-input-method
     (concat "korean-hangul" default-korean-keyboard))))

(defun quail-hangul-switch-symbol-ksc (&rest ignore)
  "Swith to/from Korean symbol package."
  (interactive "i")
  (and current-input-method
       (if (string-equal current-input-method "korean-symbol")
	   (activate-input-method (concat "korean-hangul"
					  default-korean-keyboard))
	 (activate-input-method "korean-symbol"))))

(defun quail-hangul-switch-hanja (&rest ignore)
  "Swith to/from Korean hanja package."
  (interactive "i")
  (and current-input-method
       (if (string-match "korean-hanja" current-input-method)
	   (activate-input-method (concat "korean-hangul"
					  default-korean-keyboard))
	 (activate-input-method (concat "korean-hanja"
					default-korean-keyboard)))))

;; The following three commands are set in isearch-mode-map.

(defun isearch-toggle-korean-input-method ()
  (interactive)
  (let ((overriding-terminal-local-map nil))
    (toggle-korean-input-method))
  (setq isearch-input-method-function input-method-function
	isearch-input-method-local-p t)
  (setq input-method-function nil)
  (isearch-update))

(defun isearch-hangul-switch-symbol-ksc ()
  (interactive)
  (let ((overriding-terminal-local-map nil))
    (quail-hangul-switch-symbol-ksc))
  (setq isearch-input-method-function input-method-function
	isearch-input-method-local-p t)
  (setq input-method-function nil)
  (isearch-update))

(defun isearch-hangul-switch-hanja ()
  (interactive)
  (let ((overriding-terminal-local-map nil))
    (quail-hangul-switch-hanja))
  (setq isearch-input-method-function input-method-function
	isearch-input-method-local-p t)
  (setq input-method-function nil)
  (isearch-update))

;; Information for setting and exiting Korean environment.
(defvar korean-key-bindings
  `((global [?\S- ] toggle-korean-input-method nil)
    (global [Hangul] toggle-korean-input-method nil)
    (global [C-f9] quail-hangul-switch-symbol-ksc nil)
    (global [f9] hangul-to-hanja-conversion nil)
    (global [Hangul_Hanja] hangul-to-hanja-conversion nil)
    (,isearch-mode-map [?\S- ] isearch-toggle-korean-input-method nil)
    (,isearch-mode-map [Hangul] isearch-toggle-korean-input-method nil)
    (,isearch-mode-map [C-f9] isearch-hangul-switch-symbol-ksc nil)
    (,isearch-mode-map [f9] isearch-hangul-switch-hanja nil)))

;;;###autoload
(defun setup-korean-environment-internal ()
  (use-cjk-char-width-table 'ko_KR)
  (let ((key-bindings korean-key-bindings))
    (while key-bindings
      (let* ((this (car key-bindings))
	     (key (nth 1 this))
	     (new-def (nth 2 this))
	     old-def)
	(if (eq (car this) 'global)
	    (progn
	      (setq old-def (global-key-binding key))
	      (global-set-key key new-def))
	  (setq old-def (lookup-key (car this) key))
	  (define-key (car this) key new-def))
	(setcar (nthcdr 3 this) old-def))
      (setq key-bindings (cdr key-bindings)))))

(defun exit-korean-environment ()
  "Exit Korean language environment."
  (use-default-char-width-table)
  (let ((key-bindings korean-key-bindings))
    (while key-bindings
      (let* ((this (car key-bindings))
	     (key (nth 1 this))
	     (new-def (nth 2 this))
	     (old-def (nth 3 this)))
	(if (eq (car this) 'global)
	    (if (eq (global-key-binding key) new-def)
		(global-set-key key old-def))
	  (if (eq (lookup-key (car this) key) new-def)
	      (define-key (car this) key old-def))))
      (setq key-bindings (cdr key-bindings)))))

;;
(provide 'korea-util)

;; arch-tag: b17d0981-05da-4577-99f8-1db87fff8b44
;;; korea-util.el ends here