diff options
author | Juri Linkov <juri@linkov.net> | 2019-11-10 23:06:37 +0200 |
---|---|---|
committer | Juri Linkov <juri@linkov.net> | 2019-11-10 23:06:37 +0200 |
commit | f216f38870c14ba995cd004b1e98c9f9ce8c2874 (patch) | |
tree | 29001035804b5a6280566a14a0f8dc9fd84321e2 /lisp/simple.el | |
parent | b15a2fc3481cdce9c1aeb719b90d8348de632a0c (diff) | |
download | emacs-f216f38870c14ba995cd004b1e98c9f9ce8c2874.tar.gz |
Move read-char-from-minibuffer from simple.el to subr.el and document it.
* doc/lispref/minibuf.texi (Multiple Queries):
Document read-char-from-minibuffer (bug#10477, bug#38076).
* lisp/subr.el (read-char-history)
(read-char-from-minibuffer-map)
(read-char-from-minibuffer-map-hash)
(read-char-from-minibuffer-insert-char)
(read-char-from-minibuffer-insert-other, empty-history)
(read-char-from-minibuffer): Move from simple.el to subr.el.
Diffstat (limited to 'lisp/simple.el')
-rw-r--r-- | lisp/simple.el | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/lisp/simple.el b/lisp/simple.el index 6dc4e5666da..47d4adb0fd6 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -5174,76 +5174,6 @@ and KILLP is t if a prefix arg was specified." ;; Avoid warning about delete-backward-char (with-no-warnings (delete-backward-char n killp)))) -(defvar read-char-history nil - "The default history for the `read-char-from-minibuffer' function.") - -(defvar read-char-from-minibuffer-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map minibuffer-local-map) - (define-key map [remap self-insert-command] - 'read-char-from-minibuffer-insert-char) - map) - "Keymap for the `read-char-from-minibuffer' function.") - -(defconst read-char-from-minibuffer-map-hash - (make-hash-table :weakness 'key :test 'equal)) - -(defun read-char-from-minibuffer-insert-char () - "Insert the character you type in the minibuffer and exit. -Discard all previous input before inserting and exiting the minibuffer." - (interactive) - (delete-minibuffer-contents) - (insert last-command-event) - (exit-minibuffer)) - -(defun read-char-from-minibuffer-insert-other () - "Handle inserting of a character other than allowed. -Display an error on trying to insert a disallowed character. -Also discard all previous input in the minibuffer." - (interactive) - (delete-minibuffer-contents) - (ding) - (minibuffer-message "Wrong answer") - (sit-for 2)) - -(defvar empty-history) - -(defun read-char-from-minibuffer (prompt &optional chars history) - "Read a character from the minibuffer, prompting for PROMPT. -Like `read-char', but uses the minibuffer to read and return a character. -When CHARS is non-nil, any input that is not one of CHARS is ignored. -When HISTORY is a symbol, then allows navigating in a history. -The navigation commands are `M-p' and `M-n', with `RET' to select -a character from history." - (discard-input) - (let* ((empty-history '()) - (map (if (consp chars) - (or (gethash chars read-char-from-minibuffer-map-hash) - (puthash chars - (let ((map (make-sparse-keymap))) - (set-keymap-parent map read-char-from-minibuffer-map) - (dolist (char chars) - (define-key map (vector char) - 'read-char-from-minibuffer-insert-char)) - (define-key map [remap self-insert-command] - 'read-char-from-minibuffer-insert-other) - map) - read-char-from-minibuffer-map-hash)) - read-char-from-minibuffer-map)) - (result - (read-from-minibuffer prompt nil map nil - (or history 'empty-history))) - (char - (if (> (length result) 0) - ;; We have a string (with one character), so return the first one. - (elt result 0) - ;; The default value is RET. - (when history (push "\r" (symbol-value history))) - ?\r))) - ;; Display the question with the answer. - (message "%s%s" prompt (char-to-string char)) - char)) - (defun zap-to-char (arg char) "Kill up to and including ARGth occurrence of CHAR. Case is ignored if `case-fold-search' is non-nil in the current buffer. |