emacs: Remove notmuch-read-char-choice

Just use `read-char-choice', which existed since Emacs 24.1.
This commit is contained in:
Jonas Bernoulli 2020-08-08 13:50:05 +02:00 committed by David Bremner
parent 2156517d90
commit 08b26f449d
2 changed files with 2 additions and 58 deletions

View file

@ -40,62 +40,6 @@
(unless (fboundp 'message--fold-long-headers) (unless (fboundp 'message--fold-long-headers)
(add-hook 'message-header-hook 'notmuch-message--fold-long-headers)) (add-hook 'message-header-hook 'notmuch-message--fold-long-headers))
(if (fboundp 'read-char-choice)
(defalias 'notmuch-read-char-choice 'read-char-choice)
(defun notmuch-read-char-choice (prompt chars &optional inhibit-keyboard-quit)
"Read and return one of CHARS, prompting for PROMPT.
Any input that is not one of CHARS is ignored.
If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore
keyboard-quit events while waiting for a valid input.
This is an exact copy of this function from emacs 24 for use on
emacs 23, except with the one emacs 24 only function it calls
inlined."
(unless (consp chars)
(error "Called `read-char-choice' without valid char choices"))
(let (char done show-help (helpbuf " *Char Help*"))
(let ((cursor-in-echo-area t)
(executing-kbd-macro executing-kbd-macro)
(esc-flag nil))
(save-window-excursion ; in case we call help-form-show
(while (not done)
(unless (get-text-property 0 'face prompt)
(setq prompt (propertize prompt 'face 'minibuffer-prompt)))
(setq char (let ((inhibit-quit inhibit-keyboard-quit))
(read-key prompt)))
(and show-help (buffer-live-p (get-buffer helpbuf))
(kill-buffer helpbuf))
(cond
((not (numberp char)))
;; If caller has set help-form, that's enough.
;; They don't explicitly have to add help-char to chars.
((and help-form
(eq char help-char)
(setq show-help t)
;; This is an inlined copy of help-form-show as that
;; was introduced in emacs 24 too.
(let ((msg (eval help-form)))
(when (stringp msg)
(with-output-to-temp-buffer " *Char Help*"
(princ msg))))))
((memq char chars)
(setq done t))
((and executing-kbd-macro (= char -1))
;; read-event returns -1 if we are in a kbd macro and
;; there are no more events in the macro. Attempt to
;; get an event interactively.
(setq executing-kbd-macro nil))
((not inhibit-keyboard-quit)
(cond
((and (null esc-flag) (eq char ?\e))
(setq esc-flag t))
((memq char '(?\C-g ?\e))
(keyboard-quit))))))))
;; Display the question with the answer. But without cursor-in-echo-area.
(message "%s%s" prompt (char-to-string char))
char)))
;; End of compatibility functions ;; End of compatibility functions
(provide 'notmuch-compat) (provide 'notmuch-compat)

View file

@ -242,7 +242,7 @@ If CREATE is non-nil then create the folder if necessary."
;; typo, or just the user want a new folder, let the user decide ;; typo, or just the user want a new folder, let the user decide
;; how to deal with it. ;; how to deal with it.
(error (error
(let ((response (notmuch-read-char-choice "Insert failed: \ (let ((response (read-char-choice "Insert failed: \
\(r)etry, (c)reate folder, (i)gnore, or (e)dit the header? " '(?r ?c ?i ?e)))) \(r)etry, (c)reate folder, (i)gnore, or (e)dit the header? " '(?r ?c ?i ?e))))
(cl-case response (cl-case response
(?r (notmuch-maildir-fcc-with-notmuch-insert fcc-header)) (?r (notmuch-maildir-fcc-with-notmuch-insert fcc-header))
@ -327,7 +327,7 @@ if needed."
;; fix it in some way. ;; fix it in some way.
(let* ((prompt (format "Fcc %s is not a maildir: \ (let* ((prompt (format "Fcc %s is not a maildir: \
\(r)etry, (c)reate folder, (i)gnore, or (e)dit the header? " fcc-header)) \(r)etry, (c)reate folder, (i)gnore, or (e)dit the header? " fcc-header))
(response (notmuch-read-char-choice prompt '(?r ?c ?i ?e)))) (response (read-char-choice prompt '(?r ?c ?i ?e))))
(cl-case response (cl-case response
(?r (notmuch-maildir-fcc-file-fcc fcc-header)) (?r (notmuch-maildir-fcc-file-fcc fcc-header))
(?c (if (file-writable-p fcc-header) (?c (if (file-writable-p fcc-header)