Thursday, May 28, 2015

한글 & 중국어 입력 -- dot/init-multi.el

dot/init-multi.el

;;;; ----------------------------
;;;; key define
;; Input method and key binding configuration.
;; http://stackoverflow.com/questions/12032231/is-it-possible-to-alternate-two-input-methods-in-emacs
(setq alternative-input-methods
      '(
        ("korean-hangul"    . [?\C-\\])
        ("chinese-py-punct" . [?\C-|])

;       ("chinese-py-punct" . [?\M- ])
        ("korean-hangul"    . [?\M- ])    ;; m-spc   > hangul
        ("chinese-py-punct" . [?\S-\M- ]) ;; m-s-spc > chinese

;       ("russian-computer" . [?\C-\M-|])
;       ("german-postfix"   . [?\C-\\])
  ))

(setq default-input-method
      (caar alternative-input-methods))

(defun toggle-alternative-input-method (method &optional arg interactive)
  (if arg
      (toggle-input-method arg interactive)
    (let ((previous-input-method current-input-method))
      (when current-input-method
        (deactivate-input-method))
      (unless (and previous-input-method
                   (string= previous-input-method method))
        (activate-input-method method)))))

(defun reload-alternative-input-methods ()
  (dolist (config alternative-input-methods)
    (let ((method (car config)))
      (global-set-key (cdr config)
                      `(lambda (&optional arg interactive)
                         ,(concat "Behaves similar to `toggle-input-method', but uses \""
                                  method "\" instead of `default-input-method'")
                         (interactive "P\np")
                         (toggle-alternative-input-method ,method arg interactive))))))

(reload-alternative-input-methods)
;;;; ----------------------------


;;;; ----------------------------
;;;; set font
;(if (not (member '("-*-courier new-normal-r-*-*-13-*-*-*-c-*-fontset-chinese" . "fontset-chinese") fontset-alias-alist))
;    (progn
;        (create-fontset-from-fontset-spec    ; chinese fontset
;        "-*-Courier New-normal-r-*-*-14-*-*-*-c-*-fontset-chinese,
;         chinese-gb2312:-*-MS Song-normal-r-*-*-12-*-*-*-c-*-gb2312*-*,
;         chinese-big5-1:-*-MingLiU-normal-r-*-*-12-*-*-*-c-*-big5*-*,
;         chinese-big5-2:-*-MingLiU-normal-r-*-*-12-*-*-*-c-*-big5*-*" t)
;         (setq default-frame-alist
;            (append
;             '((font . "fontset-chinese"))
;             default-frame-alist))
;    )
;)

(set-fontset-font "fontset-default" 'han '("Microsoft YaHei". "unicode-bmp"))
;;(frame-parameter nil 'font)?????fontset-default???
(set-fontset-font (frame-parameter nil 'font) 'cjk-misc '("Microsoft YaHei" . "unicode-bmp"))
(set-fontset-font (frame-parameter nil 'font) 'bopomofo '("Microsoft YaHei" . "unicode-bmp"))
(set-fontset-font "fontset-default"    'gb18030 '("Microsoft YaHei". "unicode-bmp"))
(set-fontset-font (frame-parameter nil 'font) 'symbol '("Microsoft YaHei". "unicode-bmp"))

;;;; ----------------------------------------
;;;; -- eim
;(load (concat emacs-lib-path "dot/init-china.el"))
;;;; -- use eim input
(setq load-path (append load-path (list (concat emacs-lib-path "eim"))))
(autoload 'eim-use-package "eim" "Another emacs input method")

;; Tooltip 暂时还不好用
(setq eim-use-tooltip nil)

(register-input-method "eim-wb" "euc-cn" 'eim-use-package "五笔" "汉字五笔输入法" "wb.txt")
(register-input-method "eim-py" "euc-cn" 'eim-use-package "拼音" "汉字拼音输入法" "py.txt")

;; 用 ; 暂时输入英文
(require 'eim-extra)
;(global-set-key ";" 'eim-insert-ascii)

(set-frame-font "Inconsolata 12")
;(set-face-attribute 'default nil :height 100)

;;;; end of chinese
;;;; --------------------------------------------------------------------------------

No comments:

Pranten

 Pranten