;;; Code:
-(defvar encoded-kbd-mode nil
- "Non-nil if in Encoded-kbd minor mode.")
-(put 'encoded-kbd-mode 'permanent-local t)
-
-(let ((slot (assq 'encoded-kbd-mode minor-mode-alist))
- (name " Encoded-kbd"))
- (if slot
- (setcar (cdr slot) name)
- (setq minor-mode-alist
- (cons '(encoded-kbd-mode " Encoded-kbd") minor-mode-alist))))
-
(defconst encoded-kbd-mode-map (make-sparse-keymap)
"Keymap for Encoded-kbd minor mode.")
-(let ((slot (assq 'encoded-kbd-mode minor-mode-map-alist)))
- (if slot
- (setcdr slot encoded-kbd-mode-map)
- (setq minor-mode-map-alist
- (cons (cons 'encoded-kbd-mode encoded-kbd-mode-map)
- minor-mode-map-alist))))
-
;; Subsidiary keymaps for handling ISO2022 escape sequences.
(defvar encoded-kbd-iso2022-esc-map
((= last-command-char ?\217) ; SS3 (Single Shift 3)
(aset encoded-kbd-iso2022-invocations 2 3))
(t
- (let* ((charset (aref encoded-kbd-iso2022-designations
- (or (aref encoded-kbd-iso2022-invocations 2)
- (aref encoded-kbd-iso2022-invocations 1))))
- (char (if (= (charset-dimension charset) 1)
- (make-char charset last-command-char)
+ (let* ((charset (aref encoded-kbd-iso2022-designations
+ (or (aref encoded-kbd-iso2022-invocations 2)
+ (aref encoded-kbd-iso2022-invocations 1))))
+ (char (if (= (charset-dimension charset) 1)
+ (make-char charset last-command-char)
(make-char charset last-command-char
(read-char-exclusive)))))
- (aset encoded-kbd-iso2022-invocations 2 nil)
+ (aset encoded-kbd-iso2022-invocations 2 nil)
(setq unread-command-events (cons char unread-command-events))))))
(defun encoded-kbd-self-insert-sjis ()
((eq encoded-kbd-coding 'iso2022-7)
(define-key encoded-kbd-mode-map "\e" 'encoded-kbd-iso2022-esc-prefix))
-
+
((eq encoded-kbd-coding 'iso2022-8)
(define-key encoded-kbd-mode-map
(vector ?\216) 'encoded-kbd-self-insert-iso2022-8bit)
;; Input mode at the time Encoded-kbd mode is turned on is saved here.
(defvar saved-input-mode nil)
+(put 'encoded-kbd-mode 'permanent-local t)
;;;###autoload
-(defun encoded-kbd-mode (&optional arg)
+(define-minor-mode encoded-kbd-mode
"Toggle Encoded-kbd minor mode.
With arg, turn Encoded-kbd mode on if and only if arg is positive.
In Encoded-kbd mode, a text sent from keyboard is accepted
as a multilingual text encoded in a coding system set by
\\[set-keyboard-coding-system]."
- (if encoded-kbd-mode
- ;; We must at first reset input-mode to the original.
- (apply 'set-input-mode saved-input-mode))
- (setq encoded-kbd-mode
- (if (null arg) (null encoded-kbd-mode)
- (> (prefix-numeric-value arg) 0)))
+ :global t
+ ;; We must at first reset input-mode to the original.
+ (if saved-input-mode (apply 'set-input-mode saved-input-mode))
(if encoded-kbd-mode
(let ((coding (keyboard-coding-system)))
(setq saved-input-mode (current-input-mode))
(cond ((null coding)
- (setq encoded-kbd-mode nil)
+ (setq encoded-kbd-mode nil)
(error "No coding system for keyboard input is set"))
((= (coding-system-type coding) 1) ; SJIS
(set-input-mode
(nth 0 saved-input-mode) (nth 1 saved-input-mode)
- 'use-8th-bit (nth 3 saved-input-mode))
+ 'use-8th-bit (nth 3 saved-input-mode))
(setq encoded-kbd-coding 'sjis))
((= (coding-system-type coding) 2) ; ISO2022
(setq encoded-kbd-coding 'iso2022-7)
(set-input-mode
(nth 0 saved-input-mode) (nth 1 saved-input-mode)
- 'use-8th-bit (nth 3 saved-input-mode))
+ 'use-8th-bit (nth 3 saved-input-mode))
(setq encoded-kbd-coding 'iso2022-8))
(setq encoded-kbd-iso2022-designations (make-vector 4 nil))
(let ((flags (coding-system-flags coding))
((= (coding-system-type coding) 3) ; BIG5
(set-input-mode
(nth 0 saved-input-mode) (nth 1 saved-input-mode)
- 'use-8th-bit (nth 3 saved-input-mode))
+ 'use-8th-bit (nth 3 saved-input-mode))
(setq encoded-kbd-coding 'big5))
((= (coding-system-type coding) 4) ; CCL based coding
(set-input-mode
(nth 0 saved-input-mode) (nth 1 saved-input-mode)
- 'use-8th-bit (nth 3 saved-input-mode))
+ 'use-8th-bit (nth 3 saved-input-mode))
(setq encoded-kbd-coding 'ccl))
(t
(setq encoded-kbd-mode nil)
(error "Coding-system `%s' is not supported in Encoded-kbd mode"
(keyboard-coding-system))))
- (encoded-kbd-setup-keymap coding)
- (run-hooks 'encoded-kbd-mode-hook))))
+ (encoded-kbd-setup-keymap coding))))
+
+(provide 'encoded-kb)
;;; encoded-kb.el ends here