Function: describe-language-environment
describe-language-environment is an interactive and byte-compiled
function defined in mule-cmds.el.gz.
Signature
(describe-language-environment LANGUAGE-NAME)
Documentation
Describe how Emacs supports language environment LANGUAGE-NAME.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/international/mule-cmds.el.gz
(defun describe-language-environment (language-name)
"Describe how Emacs supports language environment LANGUAGE-NAME."
(interactive
(list (read-language-name
'documentation
(format-prompt "Describe language environment"
current-language-environment)
current-language-environment)))
(let ((help-buffer-under-preparation t))
(if (null language-name)
(setq language-name current-language-environment))
(if (or (null language-name)
(null (get-language-info language-name 'documentation)))
(error "No documentation for the specified language"))
(if (symbolp language-name)
(setq language-name (symbol-name language-name)))
(dolist (feature (get-language-info language-name 'features))
(require feature))
(let ((doc (get-language-info language-name 'documentation)))
(help-setup-xref (list #'describe-language-environment language-name)
(called-interactively-p 'interactive))
(with-output-to-temp-buffer (help-buffer)
(with-current-buffer standard-output
(insert language-name " language environment\n\n")
(if (stringp doc)
(insert (substitute-command-keys doc) "\n\n"))
(condition-case nil
(let ((str (eval (get-language-info language-name 'sample-text))))
(if (stringp str)
(insert "Sample text:\n "
(string-replace "\n" "\n " str)
"\n\n")))
(error nil))
(let ((input-method (get-language-info language-name 'input-method))
(l (copy-sequence input-method-alist))
(first t))
(when (and input-method
(setq input-method (assoc input-method l)))
(insert "Input methods (default " (car input-method) ")\n")
(setq l (cons input-method (delete input-method l))
first nil))
(dolist (elt l)
(when (or (eq input-method elt)
(string-equal-ignore-case language-name (nth 1 elt)))
(when first
(insert "Input methods:\n")
(setq first nil))
(insert " " (car elt))
(search-backward (car elt))
(help-xref-button 0 'help-input-method (car elt))
(goto-char (point-max))
(insert " (\""
(if (stringp (nth 3 elt)) (nth 3 elt) (car (nth 3 elt)))
"\" in mode line)\n")))
(or first
(insert "\n")))
(insert "Character sets:\n")
(let ((l (get-language-info language-name 'charset)))
(if (null l)
(insert " nothing specific to " language-name "\n")
(while l
(insert " " (symbol-name (car l)))
(search-backward (symbol-name (car l)))
(help-xref-button 0 'help-character-set (car l))
(goto-char (point-max))
(insert ": " (charset-description (car l)) "\n")
(setq l (cdr l)))))
(insert "\n")
(insert "Coding systems:\n")
(let ((l (get-language-info language-name 'coding-system)))
(if (null l)
(insert " nothing specific to " language-name "\n")
(while l
(insert " " (symbol-name (car l)))
(search-backward (symbol-name (car l)))
(help-xref-button 0 'help-coding-system (car l))
(goto-char (point-max))
(insert (substitute-command-keys " (`")
(coding-system-mnemonic (car l))
(substitute-command-keys "' in mode line):\n\t")
(substitute-command-keys
(coding-system-doc-string (car l)))
"\n")
(let ((aliases (coding-system-aliases (car l))))
(when aliases
(insert "\t(alias:")
(while aliases
(insert " " (symbol-name (car aliases)))
(setq aliases (cdr aliases)))
(insert ")\n")))
(setq l (cdr l))))))))))