unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "T.V Raman" <raman@google.com>
To: emacs-devel@gnu.org
Subject: Request: Please add a prompt to read-event
Date: Fri, 17 Dec 2021 08:30:15 -0800	[thread overview]
Message-ID: <p91ilvn19ew.fsf@google.com> (raw)

Emacspeak advices read-event and read-char to speak their
prompt. There are a few places in Emacs where read-event and/or
read-char  are called without a prompt; e.g. disabled-command-function

Could we perhaps fix this?

(defun disabled-command-function (&optional cmd keys)
  (unless cmd (setq cmd this-command))
  (unless keys (setq keys (this-command-keys)))
  (let (char)
    (save-window-excursion
      (with-output-to-temp-buffer "*Disabled Command*" ;; (help-buffer)
	 (if (or (eq (aref keys 0)
		     (if (stringp keys)
			 (aref "\M-x" 0)
		       ?\M-x))
		 (and (>= (length keys) 2)
		      (eq (aref keys 0) meta-prefix-char)
		      (eq (aref keys 1) ?x)))
	    (princ (format "You have invoked the disabled command %s.\n" cmd))
	   (princ (format "You have typed %s, invoking disabled command %s.\n"
			 (key-description keys) cmd)))
       ;; Print any special message saying why the command is disabled.
	(if (stringp (get cmd 'disabled))
	    (princ (get cmd 'disabled))
	 (princ "It is disabled because new users often find it confusing.\n")
	 (princ (substitute-command-keys
		 "Here's the first part of its description:\n\n"))
	 ;; Keep only the first paragraph of the documentation.
          (with-current-buffer "*Disabled Command*" ;; standard-output
	   (goto-char (point-max))
	   (let ((start (point)))
	     (save-excursion
	       (princ (or (condition-case ()
			       (documentation cmd)
			    (error nil))
			  "<< not documented >>")))
	     (if (search-forward "\n\n" nil t)
		 (delete-region (match-beginning 0) (point-max)))
	     (goto-char (point-max))
	     (indent-rigidly start (point) 3))))
       (princ "\n\nDo you want to use this command anyway?\n\n")
       (princ (substitute-command-keys "You can now type
y   to try it and enable it (no questions if you use it again).
n   to cancel--don't try the command, and it remains disabled.
SPC to try the command just this once, but leave it disabled.
!   to try it, and enable all disabled commands for this session only."))
        ;; Redundant since with-output-to-temp-buffer will do it anyway.
        ;; (with-current-buffer standard-output
        ;;   (help-mode))
        )
     (fit-window-to-buffer (get-buffer-window "*Disabled Command*"))
     (message "Type y, n, ! or SPC (the space bar): ")
     (let ((cursor-in-echo-area t))
       (while (progn (setq char (read-event))
		     (or (not (numberp char))
			 (not (memq (downcase char)
				    '(?! ?y ?n ?\s ?\C-g)))))
	 (ding)
	 (message "Please type y, n, ! or SPC (the space bar): "))))
    (setq char (downcase char))
    (pcase char
     (?\C-g (setq quit-flag t))
     (?! (setq disabled-command-function nil))
     (?y
	(if (and user-init-file
		 (not (string= "" user-init-file))
		 (y-or-n-p "Enable command for future editing sessions also? "))
	  (enable-command cmd)
	(put cmd 'disabled nil))))
    (or (char-equal char ?n)
        (call-interactively cmd))))

-- 

Thanks,

--Raman(I Search, I Find, I Misplace, I Research)
♉ Id: kg:/m/0285kf1  🦮

-- 

Thanks,

--Raman(I Search, I Find, I Misplace, I Research)
♉ Id: kg:/m/0285kf1  🦮



             reply	other threads:[~2021-12-17 16:30 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17 16:30 T.V Raman [this message]
2021-12-18  7:39 ` Request: Please add a prompt to read-event Lars Ingebrigtsen
2021-12-19 14:46   ` T.V Raman
2021-12-21 15:17   ` Stefan Monnier
2021-12-21 17:18     ` T.V Raman
2021-12-22 12:36     ` Lars Ingebrigtsen
2021-12-22 15:08       ` T.V Raman
2021-12-26 16:22     ` Stefan Kangas
     [not found]       ` <p91v8zbi8fh.fsf@google.com>
     [not found]         ` <CAOySe-69oVWDEFjyvA=quJwj78PrwRPmCgALn=Ofr_OGtmAOsQ@mail.gmail.com>
2021-12-26 20:58           ` Stefan Kangas
2021-12-27 12:09             ` Lars Ingebrigtsen
2021-12-27 15:00               ` Eli Zaretskii
2021-12-27 14:45             ` T.V Raman
2021-12-19  5:00 ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=p91ilvn19ew.fsf@google.com \
    --to=raman@google.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).