mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-12 09:00:40 -08:00
* lisp/allout.el (allout-exposure-change-hook) (allout-structure-added-hook, allout-structure-deleted-hook) (allout-structure-shifted-hook): * lisp/arc-mode.el (archive-extract-hooks): * lisp/buff-menu.el (Buffer-menu-buffer+size-width): * lisp/calendar/timeclock.el (timeclock-modeline-display) (timeclock-modeline-display, timeclock-update-modeline): * lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym-function-arglist): * lisp/cedet/semantic/db-file.el (semanticdb-save-database-hooks): * lisp/cedet/semantic/edit.el (semantic-change-hooks) (semantic-edits-new-change-hooks) (semantic-edits-delete-change-hooks) (semantic-edits-reparse-change-hooks): * lisp/cedet/semantic/lex.el (semantic-lex-reset-hooks): * lisp/comint.el (comint--unquote&expand-filename) (comint-unquote-filename): * lisp/custom.el (user-variable-p): * lisp/dired.el (dired-shrink-to-fit, dired-pop-to-buffer) (dired-sort-set-modeline): * lisp/ebuff-menu.el (Electric-buffer-menu-mode): * lisp/emacs-lisp/byte-run.el (macro-declaration-function): * lisp/emacs-lisp/checkdoc.el (custom-print-functions) (checkdoc-comment-style-hooks): * lisp/emacs-lisp/cl-lib.el (custom-print-functions): * lisp/emacs-lisp/edebug.el (gud-inhibit-global-bindings): * lisp/erc/erc-dcc.el (erc-dcc-chat-filter-hook): * lisp/eshell/esh-mode.el (eshell-status-in-modeline): * lisp/eshell/eshell.el (eshell-add-to-window-buffer-names) (eshell-remove-from-window-buffer-names): * lisp/faces.el (set-face-underline-p, font-list-limit): * lisp/files.el (automount-dir-prefix, toggle-read-only): * lisp/filesets.el (filesets-cache-fill-content-hooks): * lisp/frame.el (automatic-hscrolling): * lisp/generic-x.el (javascript-generic-mode) (javascript-generic-mode-hook): * lisp/gnus/gnus-start.el (gnus-subscribe-newsgroup-hooks): * lisp/gnus/nndiary.el (nndiary-request-create-group-hooks) (nndiary-request-update-info-hooks) (nndiary-request-accept-article-hooks): * lisp/htmlfontify.el (hfy-post-html-hooks): * lisp/international/mule-cmds.el (inactivate-current-input-method-function) (inactivate-input-method, input-method-inactivate-hook) (ucs-insert): * lisp/international/quail.el (quail-inactivate) (quail-inactivate-hook): * lisp/international/robin.el (robin-inactivate) (robin-inactivate-hook): * lisp/leim/quail/hangul.el (hangul-input-method-inactivate): * lisp/leim/quail/uni-input.el (ucs-input-inactivate): * lisp/mail/emacsbug.el (report-emacs-bug-info): * lisp/mh-e/mh-e.el (mh-kill-folder-suppress-prompt-hooks): * lisp/mpc.el (mpc-string-prefix-p): * lisp/net/rcirc.el (rcirc-print-hooks, rcirc-sentinel-hooks) (rcirc-receive-message-hooks, rcirc-activity-hooks): * lisp/obsolete/crisp.el (crisp-mode-modeline-string): * lisp/pcomplete.el (pcomplete-arg-quote-list) (pcomplete-quote-argument): * lisp/progmodes/cc-mode.el (c-prepare-bug-report-hooks): * lisp/progmodes/python.el (python-info-ppss-context) (python-info-ppss-context-type) (python-info-ppss-comment-or-string-p, python-indent) (python-guess-indent, python-buffer, python-preoutput-result) (python-proc, python-send-receive, python-send-string) (python-use-skeletons): * lisp/progmodes/sh-script.el (sh-maybe-here-document): * lisp/replace.el (query-replace-interactive): * lisp/strokes.el (strokes-modeline-string): * lisp/subr.el (redraw-modeline): * lisp/term.el (term-default-fg-color, term-default-bg-color): * lisp/textmodes/tex-mode.el (latex-string-prefix-p) (tex-string-prefix-p): * lisp/url/url-parse.el (url-recreate-url-attributes): * lisp/vc/add-log.el (change-log-acknowledgement): * lisp/vc/ediff-wind.el (ediff-choose-window-setup-function-automatically): * lisp/vc/pcvs-util.el (cvs-string-prefix-p): * lisp/vc/vc.el (vc-string-prefix-p): * lisp/window.el (display-buffer-function): * lisp/winner.el (winner-mode-leave-hook): Remove many functions and variables obsolete since 24.3. * lisp/buff-menu.el (list-buffers--refresh): * lisp/dired.el (dired-mode-map): * lisp/files.el (abbreviate-file-name): * lisp/generic-x.el (generic-default-modes): * lisp/mh-e/mh-funcs.el (mh-kill-folder): * lisp/progmodes/hideif.el (hide-ifdef-mode-submap): * lisp/replace.el (query-replace-read-from): * lisp/term.el (term): * lisp/window.el (display-buffer): Don't use above deleted functions and variables. * src/marker.c (Fbuffer_has_markers_at): Delete DEFUN obsolete since 24.3. (syms_of_marker) <Sbuffer_has_markers_at>: Delete defsubr. * lisp/subr.el (buffer-has-markers-at): Remove obsoletion of above deleted DEFUN. * etc/TODO: Doc fix; don't mention above deleted function. * admin/cus-test.el (cus-test-get-options): * lisp/pcomplete.el: Doc fixes; don't mention removed items. ; * etc/NEWS: List removed items.
134 lines
4.2 KiB
EmacsLisp
134 lines
4.2 KiB
EmacsLisp
;;; uni-input.el --- Hex Unicode input method -*- lexical-binding: t; -*-
|
|
|
|
;; Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
|
;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
|
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
|
;; Registration Number H14PRO021
|
|
|
|
;; Author: Dave Love <fx@gnu.org>
|
|
;; Keywords: i18n
|
|
|
|
;; 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 <https://www.gnu.org/licenses/>.
|
|
|
|
;;; Commentary:
|
|
|
|
;; Provides an input method for entering characters by hex unicode in
|
|
;; the form `uxxxx', similarly to the Yudit editor.
|
|
|
|
;; This is not really a Quail method, but uses some Quail functions.
|
|
;; There is probably A Better Way.
|
|
|
|
;; You can get a similar effect by using C-q with
|
|
;; `read-quoted-char-radix' set to 16.
|
|
|
|
;; Note that this only allows you to enter BMP values unless someone
|
|
;; extends it to use variable numbers of digits.
|
|
|
|
;;; Code:
|
|
|
|
(require 'quail)
|
|
|
|
(defun ucs-input-insert-char (char)
|
|
(insert char)
|
|
(move-overlay quail-overlay (overlay-start quail-overlay) (point)))
|
|
|
|
(defun ucs-input-method (key)
|
|
(if (or buffer-read-only
|
|
(and (/= key ?U) (/= key ?u)))
|
|
(list key)
|
|
(quail-setup-overlays nil)
|
|
(ucs-input-insert-char key)
|
|
(let ((modified-p (buffer-modified-p))
|
|
(buffer-undo-list t)
|
|
(input-method-function nil)
|
|
(echo-keystrokes 0)
|
|
(help-char nil)
|
|
(events (list key))
|
|
;; (str " ")
|
|
)
|
|
(unwind-protect
|
|
(catch 'non-digit
|
|
(progn
|
|
(dotimes (_ 4)
|
|
(let ((seq (read-key-sequence nil))
|
|
key)
|
|
(if (and (stringp seq)
|
|
(= 1 (length seq))
|
|
(setq key (aref seq 0))
|
|
(memq key '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?a
|
|
?b ?c ?d ?e ?f ?A ?B ?C ?D ?E ?F)))
|
|
(progn
|
|
(push key events)
|
|
(ucs-input-insert-char key))
|
|
(quail-delete-region)
|
|
(throw 'non-digit (append (reverse events)
|
|
(listify-key-sequence seq))))))
|
|
(quail-delete-region)
|
|
(let ((n (string-to-number (apply #'string
|
|
(cdr (nreverse events)))
|
|
16)))
|
|
(if (characterp n)
|
|
(list n)))))
|
|
(quail-delete-overlays)
|
|
(set-buffer-modified-p modified-p)
|
|
(run-hooks 'input-method-after-insert-chunk-hook)))))
|
|
|
|
;;;###autoload
|
|
(defun ucs-input-activate (&optional arg)
|
|
"Activate UCS input method.
|
|
With ARG, activate UCS input method if and only if ARG is positive.
|
|
|
|
While this input method is active, the variable
|
|
`input-method-function' is bound to the function `ucs-input-method'."
|
|
(if (and arg
|
|
(< (prefix-numeric-value arg) 0))
|
|
(unwind-protect
|
|
(progn
|
|
(quail-hide-guidance)
|
|
(quail-delete-overlays)
|
|
(setq describe-current-input-method-function nil))
|
|
(kill-local-variable 'input-method-function))
|
|
(setq deactivate-current-input-method-function #'ucs-input-deactivate)
|
|
(setq describe-current-input-method-function #'ucs-input-help)
|
|
(quail-delete-overlays)
|
|
(if (eq (selected-window) (minibuffer-window))
|
|
(add-hook 'minibuffer-exit-hook #'quail-exit-from-minibuffer))
|
|
(setq-local input-method-function #'ucs-input-method)))
|
|
|
|
(defun ucs-input-deactivate ()
|
|
"Deactivate UCS input method."
|
|
(interactive)
|
|
(ucs-input-activate -1))
|
|
|
|
(defun ucs-input-help ()
|
|
(interactive)
|
|
(with-output-to-temp-buffer "*Help*"
|
|
(princ "\
|
|
Input method: ucs (mode line indicator:U+)
|
|
|
|
Input as Unicode: U<hex> or u<hex>, where <hex> is a four-digit hex number.")))
|
|
|
|
;; The file leim-list.el contains the following call.
|
|
;; (register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+"
|
|
;; "Unicode input as hex in the form Uxxxx.")
|
|
|
|
(provide 'uni-input)
|
|
|
|
;; Local Variables:
|
|
;; generated-autoload-load-name: "quail/uni-input"
|
|
;; End:
|
|
|
|
;;; uni-input.el ends here
|