From: Richard Stallman <rms@gnu.org>
Cc: jpw@gnu.org, klm@zope.com, emacs-devel@gnu.org,
monnier@iro.umontreal.ca, storm@cua.dk,
alexander.pohoyda@gmx.net
Subject: Re: how-many/count-matches for non-interactive use
Date: Sun, 24 Oct 2004 13:09:45 -0400 [thread overview]
Message-ID: <E1CLlsH-0008FL-C0@fencepost.gnu.org> (raw)
In-Reply-To: <200410240231.i9O2VlZ15381@raven.dms.auburn.edu> (message from Luc Teirlinck on Sat, 23 Oct 2004 21:31:47 -0500 (CDT))
I'm thinking of installing this doc string for Finteractive_p.
Any comments or suggestions?
DEFUN ("interactive-p", Finteractive_p, Sinteractive_p, 0, 0, 0,
doc: /* Return t if the function was run directly by user input.
This means that the function was called with call-interactively (which
includes being called as the binding of a key)
and input is currently coming from the keyboard (not in keyboard macro).
The only known proper use of `interactive-p' is in deciding whether to
print a helpful message. If you're thinking of using it for any other
purpose, it is quite likely that you're making a mistake. Think: what
do you want to do when the command is called from a keyboard macro?
If you want to test whether your function was called with
`call-interactively', the way to do that is by adding an extra
optional argument, and making the `interactive' spec specify non-nil
unconditionally for that argument. (`p' is a good way to do this.) */)
I'm also thinking of this change for commands.texi.
Any comments or suggestions?
*** commands.texi 08 Sep 2004 11:40:24 -0400 1.55
--- commands.texi 24 Oct 2004 04:52:32 -0400
***************
*** 605,629 ****
@end deffn
@defun interactive-p
! This function returns @code{t} if the containing function (the one whose
! code includes the call to @code{interactive-p}) was called
! interactively, with the function @code{call-interactively}. (It makes
! no difference whether @code{call-interactively} was called from Lisp or
! directly from the editor command loop.) If the containing function was
! called by Lisp evaluation (or with @code{apply} or @code{funcall}), then
! it was not called interactively.
! @end defun
! The most common use of @code{interactive-p} is for deciding whether to
! print an informative message. As a special exception,
! @code{interactive-p} returns @code{nil} whenever a keyboard macro is
! being run. This is to suppress the informative messages and speed
! execution of the macro.
! For example:
@example
@group
(defun foo ()
(interactive)
(when (interactive-p)
--- 605,626 ----
@end deffn
@defun interactive-p
! This function returns @code{t} if the containing function (the one
! whose code includes the call to @code{interactive-p}) was called in
! direct response to user input. This means that it was called with the
! function @code{call-interactively}, and that a keyboard macro is
! not running.
! If the containing function was called by Lisp evaluation (or with
! @code{apply} or @code{funcall}), then it was not called interactively.
! @end defun
! The most common use of @code{interactive-p} is for deciding whether
! to print an informative message. For example:
@example
@group
+ ;; @r{Here's the usual way to use @code{interactive-p}.}
(defun foo ()
(interactive)
(when (interactive-p)
***************
*** 632,637 ****
--- 629,635 ----
@end group
@group
+ ;; @r{This function is just to illustrate the behavior.}
(defun bar ()
(interactive)
(setq foobar (list (foo) (interactive-p))))
***************
*** 645,651 ****
@group
;; @r{Type @kbd{M-x bar}.}
! ;; @r{This does not print anything.}
@end group
@group
--- 643,649 ----
@group
;; @r{Type @kbd{M-x bar}.}
! ;; @r{This does not display a message.}
@end group
@group
***************
*** 654,663 ****
@end group
@end example
! The other way to do this sort of job is to make the command take an
! argument @code{print-message} which should be non-@code{nil} in an
! interactive call, and use the @code{interactive} spec to make sure it is
! non-@code{nil}. Here's how:
@example
(defun foo (&optional print-message)
--- 652,662 ----
@end group
@end example
! If you want to test @emph{only} whether the function was called
! using @code{call-interactively}, add an optional argument
! @code{print-message} which should be non-@code{nil} in an interactive
! call, and use the @code{interactive} spec to make sure it is
! non-@code{nil}. Here's an example:
@example
(defun foo (&optional print-message)
next prev parent reply other threads:[~2004-10-24 17:09 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-24 6:09 [rmail-mbox-branch]: expunge Alfred M. Szmidt
2004-09-24 7:16 ` Kim F. Storm
2004-09-24 8:21 ` Alfred M. Szmidt
2004-09-24 9:23 ` Kim F. Storm
2004-09-24 12:03 ` Paul Michael Reilly
2004-09-25 7:08 ` Richard Stallman
2004-10-03 10:40 ` Alexander Pohoyda
2004-10-04 15:18 ` Richard Stallman
2004-10-06 21:38 ` [rmail-mbox-branch]: mail-utils Alexander Pohoyda
2004-10-06 21:47 ` Miles Bader
2004-10-08 23:34 ` Alexander Pohoyda
2004-10-08 23:47 ` Miles Bader
2004-10-09 16:04 ` Alexander Pohoyda
2004-10-09 17:12 ` Stefan
2004-10-09 18:15 ` Alexander Pohoyda
2004-10-09 18:20 ` Miles Bader
2004-10-09 21:02 ` Alexander Pohoyda
2004-10-09 21:10 ` Miles Bader
2004-10-09 21:19 ` Miles Bader
2004-10-10 15:15 ` Richard Stallman
2004-10-10 22:58 ` Miles Bader
2004-10-11 16:45 ` Richard Stallman
2004-10-12 2:09 ` Miles Bader
2004-10-12 14:42 ` Juri Linkov
2004-10-12 15:03 ` Miles Bader
2004-10-12 16:05 ` Syncing Gnus with Emacs and back (was: [rmail-mbox-branch]: mail-utils) Reiner Steib
2004-10-13 1:26 ` Syncing Gnus with Emacs and back Miles Bader
2004-10-13 20:21 ` Reiner Steib
2004-10-13 22:51 ` Miles Bader
2004-10-14 7:47 ` Miles Bader
2004-10-13 14:43 ` [rmail-mbox-branch]: mail-utils Richard Stallman
2004-10-09 19:02 ` Stefan
2004-10-09 20:40 ` Alexander Pohoyda
2004-10-11 10:36 ` Simon Josefsson
2004-10-08 16:06 ` Richard Stallman
2004-10-08 23:17 ` Alexander Pohoyda
2004-10-10 15:16 ` Richard Stallman
2004-10-10 23:50 ` Alexander Pohoyda
2004-10-11 16:45 ` Richard Stallman
2004-10-11 19:01 ` Alexander Pohoyda
2004-10-12 8:57 ` Richard Stallman
2004-10-12 16:12 ` Alexander Pohoyda
2004-10-13 14:42 ` Richard Stallman
2004-10-13 18:16 ` how-many/count-matches for non-interactive use Alexander Pohoyda
2004-10-15 0:26 ` Richard Stallman
2004-10-15 6:28 ` Alexander Pohoyda
2004-10-15 12:22 ` Richard Stallman
2004-10-15 15:30 ` Alexander Pohoyda
2004-10-16 13:52 ` Richard Stallman
2004-10-16 21:49 ` Alexander Pohoyda
2004-10-15 12:54 ` Stefan
2004-10-16 13:51 ` Richard Stallman
2004-10-16 18:41 ` Stefan Monnier
2004-10-16 22:00 ` Kim F. Storm
2004-10-17 15:19 ` Stefan Monnier
2004-10-17 20:53 ` Luc Teirlinck
2004-10-17 21:44 ` Stefan Monnier
2004-10-18 8:39 ` Kim F. Storm
2004-10-18 13:59 ` Richard Stallman
2004-10-19 1:58 ` Luc Teirlinck
2004-10-19 2:08 ` Luc Teirlinck
2004-10-19 10:29 ` Kim F. Storm
2004-10-19 17:17 ` Alexander Pohoyda
2004-10-20 12:01 ` Kim F. Storm
2004-10-19 16:46 ` Richard Stallman
2004-10-19 22:08 ` Kim F. Storm
2004-10-21 1:45 ` Richard Stallman
2004-10-21 3:22 ` Luc Teirlinck
2004-10-20 1:14 ` Luc Teirlinck
2004-10-20 1:35 ` David Kastrup
2004-10-20 13:28 ` Robert J. Chassell
2004-10-20 1:27 ` Luc Teirlinck
2004-10-21 1:45 ` Richard Stallman
2004-10-21 3:08 ` Luc Teirlinck
2004-10-22 10:47 ` Richard Stallman
2004-10-22 12:54 ` Convert keyboard macros to Lisp (was: how-many/count-matches for non-interactive use) Juri Linkov
2004-10-23 13:54 ` Richard Stallman
2004-10-22 17:35 ` how-many/count-matches for non-interactive use Luc Teirlinck
2004-10-22 22:22 ` Luc Teirlinck
2004-10-23 1:53 ` Luc Teirlinck
2004-10-23 11:32 ` John Paul Wallington
2004-10-23 18:49 ` Richard Stallman
2004-10-23 20:36 ` Luc Teirlinck
2004-10-24 17:09 ` Richard Stallman
2004-10-26 3:09 ` Luc Teirlinck
2004-10-26 8:19 ` Kim F. Storm
2004-11-02 8:53 ` Richard Stallman
2004-10-24 2:31 ` Luc Teirlinck
2004-10-24 17:09 ` Richard Stallman
2004-10-25 1:53 ` Luc Teirlinck
2004-10-26 9:05 ` Richard Stallman
2004-10-25 2:53 ` Luc Teirlinck
2004-10-26 9:04 ` Richard Stallman
2004-10-25 3:08 ` Luc Teirlinck
2004-10-24 17:09 ` Richard Stallman [this message]
2004-10-23 18:49 ` Richard Stallman
2004-10-25 14:04 ` Ken Manheimer
2004-10-27 10:49 ` Richard Stallman
2004-10-28 4:39 ` Ken Manheimer
2004-11-02 15:48 ` Ken Manheimer
2004-11-07 3:37 ` Richard Stallman
2004-10-23 18:49 ` Richard Stallman
2004-10-23 19:53 ` John Paul Wallington
2004-10-23 18:49 ` Richard Stallman
2004-10-21 22:13 ` Luc Teirlinck
2004-10-23 4:48 ` Richard Stallman
2004-10-23 16:03 ` Luc Teirlinck
2004-10-18 8:32 ` Kim F. Storm
2004-10-17 16:07 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1CLlsH-0008FL-C0@fencepost.gnu.org \
--to=rms@gnu.org \
--cc=alexander.pohoyda@gmx.net \
--cc=emacs-devel@gnu.org \
--cc=jpw@gnu.org \
--cc=klm@zope.com \
--cc=monnier@iro.umontreal.ca \
--cc=storm@cua.dk \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.