(set-default-coding-systems):
Doc-string modified. (prefer-coding-system): Likewise. Call coding-system-base instead of coding-system-parent. (describe-language-environment): Print aliases of each coding system. (set-language-environment-hook): New variable. (exit-language-environment-hook): New variable. (set-language-environment): Call these hooks. Before setting a new language environment, exit from the current-language-environment if necessary. (input-method-verbose-flag): The value can be nil, t, complex-only, or default. (input-method-highlight-flag): Doc-string augmented. (activate-input-method): Check if we can run the registered function to activate an input method.
This commit is contained in:
parent
fec0e02ded
commit
8efc03e1b4
1 changed files with 74 additions and 28 deletions
|
@ -179,11 +179,12 @@ With arg, make them enable iff arg is positive."
|
|||
|
||||
(defun set-default-coding-systems (coding-system)
|
||||
"Set default value of various coding systems to CODING-SYSTEM.
|
||||
The follwing coding systems are set:
|
||||
This sets the follwing coding systems:
|
||||
o coding system of a newly created buffer
|
||||
o default coding system for terminal output
|
||||
o default coding system for keyboard input
|
||||
o default coding system for subprocess I/O"
|
||||
o default coding system for subprocess I/O
|
||||
This also sets the following values:
|
||||
o default value for the command `set-terminal-coding-system'
|
||||
o default value for the command `set-keyboard-coding-system'"
|
||||
(check-coding-system coding-system)
|
||||
(setq-default buffer-file-coding-system coding-system)
|
||||
(setq default-terminal-coding-system coding-system)
|
||||
|
@ -192,29 +193,30 @@ The follwing coding systems are set:
|
|||
|
||||
(defun prefer-coding-system (coding-system)
|
||||
"Add CODING-SYSTEM at the front of the priority list for automatic detection.
|
||||
This also sets the following coding systems to CODING-SYSTEM:
|
||||
This also sets the follwing coding systems:
|
||||
o coding system of a newly created buffer
|
||||
o default coding system for terminal output
|
||||
o default coding system for keyboard input
|
||||
o default coding system for subprocess I/O"
|
||||
o default coding system for subprocess I/O
|
||||
This also sets the following values:
|
||||
o default value for the command `set-terminal-coding-system'
|
||||
o default value for the command `set-keyboard-coding-system'"
|
||||
(interactive "zPrefer coding system: ")
|
||||
(if (not (and coding-system (coding-system-p coding-system)))
|
||||
(error "Invalid coding system `%s'" coding-system))
|
||||
(let ((coding-category (coding-system-category coding-system))
|
||||
(parent (coding-system-parent coding-system)))
|
||||
(base (coding-system-base coding-system)))
|
||||
(if (not coding-category)
|
||||
;; CODING-SYSTEM is no-conversion or undecided.
|
||||
(error "Can't prefer the coding system `%s'" coding-system))
|
||||
(set coding-category (or parent coding-system))
|
||||
(set coding-category (or base coding-system))
|
||||
(if (not (eq coding-category (car coding-category-list)))
|
||||
;; We must change the order.
|
||||
(setq coding-category-list
|
||||
(cons coding-category
|
||||
(delq coding-category coding-category-list))))
|
||||
(if (and parent (interactive-p))
|
||||
(message "Highest priority is set to %s (parent of %s)"
|
||||
parent coding-system))
|
||||
(set-default-coding-systems (or parent coding-system))))
|
||||
(if (and base (interactive-p))
|
||||
(message "Highest priority is set to %s (base of %s)"
|
||||
base coding-system))
|
||||
(set-default-coding-systems (or base coding-system))))
|
||||
|
||||
|
||||
;;; Language support staffs.
|
||||
|
@ -468,7 +470,14 @@ If some input method is already on, turn it off at first."
|
|||
(let ((slot (assoc input-method input-method-alist)))
|
||||
(if (null slot)
|
||||
(error "Can't activate input method `%s'" input-method))
|
||||
(apply (nth 2 slot) input-method (nthcdr 5 slot))
|
||||
(let ((func (nth 2 slot)))
|
||||
(if (functionp func)
|
||||
(apply (nth 2 slot) input-method (nthcdr 5 slot))
|
||||
(if (and (consp func) (symbolp (car func)) (symbolp (cdr func)))
|
||||
(progn
|
||||
(require (cdr func))
|
||||
(apply (car func) input-method (nthcdr 5 slot)))
|
||||
(error "Can't activate input method `%s'" input-method))))
|
||||
(setq current-input-method input-method)
|
||||
(setq current-input-method-title (nth 3 slot))
|
||||
(run-hooks 'input-method-activate-hook))))
|
||||
|
@ -576,25 +585,34 @@ or a string."
|
|||
;; Variables to control behavior of input methods. All input methods
|
||||
;; should react to these variables.
|
||||
|
||||
(defcustom input-method-verbose-flag t
|
||||
"*If this flag is non-nil, input methods give extra guidance.
|
||||
(defcustom input-method-verbose-flag 'default
|
||||
"*A flag to control extra guidance given by input methods.
|
||||
The value should be nil, t, `complex-only', or `default'.
|
||||
|
||||
The extra guidance is done by showing list of available keys in echo
|
||||
area.
|
||||
area. When you use the input method in the minibuffer, the guidance
|
||||
is shown at the bottom short window (split from the existing window).
|
||||
|
||||
For complex input methods such as `chinese-py' and `japanese',
|
||||
when you use the input method in the minibuffer, the guidance is
|
||||
shown at the bottom short window (split from the existing window).
|
||||
For simple input methods, guidance is not shown
|
||||
when you are in the minibuffer."
|
||||
:type 'boolean
|
||||
If the value is t, extra guidance is always given, if the value is
|
||||
nil, extra guidance is always suppressed.
|
||||
|
||||
If the value is `complex-only', only complex input methods such as
|
||||
`chinese-py' and `japanese' give extra guidance.
|
||||
|
||||
If the value is `default', complex input methods always give extra
|
||||
guidance, but simple input methods give it only when you are not in
|
||||
the minibuffer.
|
||||
|
||||
See also the variable `input-method-highlight-flag'."
|
||||
:type '(choice (const t) (const nil) (const complex-only) (const default))
|
||||
:group 'mule)
|
||||
|
||||
(defcustom input-method-highlight-flag t
|
||||
"*If this flag is non-nil, input methods highlight partially-entered text.
|
||||
For instance, while you are in the middle of a Quail input method sequence,
|
||||
the text inserted so far is temporarily underlined.
|
||||
The underlining goes away when you finish or abort the input method sequence."
|
||||
The underlining goes away when you finish or abort the input method sequence.
|
||||
See also the variable `input-method-verbose-flag'."
|
||||
:type 'boolean
|
||||
:group 'mule)
|
||||
|
||||
|
@ -622,6 +640,22 @@ back on.
|
|||
But, if this flag is non-nil, the input method is never back on.")
|
||||
|
||||
|
||||
(defvar set-language-environment-hook nil
|
||||
"Normal hook run after some language environment is set.
|
||||
|
||||
When you set some hook function here, that effect usually should not
|
||||
be inherited to another language environment. So, you had better set
|
||||
another function in `exit-language-environment-hook' (which see) to
|
||||
cancel the effect.")
|
||||
|
||||
(defvar exit-language-environment-hook nil
|
||||
"Normal hook run after exiting from some language environment.
|
||||
When this hook is run, the variable `current-language-environment'
|
||||
is still bound to the language environment being exited.
|
||||
|
||||
This hook is mainly used for cancelling the effect of
|
||||
`set-language-environment-hook' (which-see).")
|
||||
|
||||
(defun setup-specified-language-environment ()
|
||||
"Set up multi-lingual environment convenient for the specified language."
|
||||
(interactive)
|
||||
|
@ -640,16 +674,23 @@ But, if this flag is non-nil, the input method is never back on.")
|
|||
"Set up multi-lingual environment for using LANGUAGE-NAME.
|
||||
This sets the coding system priority and the default input method
|
||||
and sometimes other things."
|
||||
(interactive (list (read-language-name 'setup-function
|
||||
"Set language environment: ")))
|
||||
(interactive (list (read-language-name
|
||||
'setup-function
|
||||
"Set language environment (default, English): ")))
|
||||
(if language-name
|
||||
(if (symbolp language-name)
|
||||
(setq language-name (symbol-name language-name)))
|
||||
(setq language-name "English"))
|
||||
(if (null (get-language-info language-name 'setup-function))
|
||||
(error "Language environment not defined: %S" language-name))
|
||||
(funcall (get-language-info language-name 'setup-function))
|
||||
(if current-language-environment
|
||||
(let ((func (get-language-info current-language-environment
|
||||
'exit-function)))
|
||||
(if (fboundp func) (funcall func))
|
||||
(run-hooks 'exit-language-environment-hook)))
|
||||
(setq current-language-environment language-name)
|
||||
(funcall (get-language-info language-name 'setup-function))
|
||||
(run-hooks 'set-language-environment-hook)
|
||||
(force-mode-line-update t))
|
||||
|
||||
;; Print all arguments with `princ', then print "\n".
|
||||
|
@ -722,6 +763,11 @@ and sometimes other things."
|
|||
(car l)
|
||||
(coding-system-mnemonic (car l))
|
||||
(coding-system-doc-string (car l))))
|
||||
(let ((aliases (coding-system-get (car l) 'alias-coding-systems)))
|
||||
(when aliases
|
||||
(princ "\t")
|
||||
(princ (cons 'alias: (cdr aliases)))
|
||||
(terpri)))
|
||||
(setq l (cdr l))))))))
|
||||
|
||||
;;; Charset property
|
||||
|
|
Loading…
Add table
Reference in a new issue