GNU bug report logs -
#8304
23.2; ad-read-advised-function default to func at point
Previous Next
Reported by: Kevin Ryde <user42 <at> zip.com.au>
Date: Sun, 20 Mar 2011 23:53:01 UTC
Severity: wishlist
Tags: patch
Found in version 23.2
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 8304 in the body.
You can then email your comments to 8304 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#8304
; Package
emacs
.
(Sun, 20 Mar 2011 23:53:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Kevin Ryde <user42 <at> zip.com.au>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Sun, 20 Mar 2011 23:53:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
When using the advice.el things interactively, eg. ad-disable-advice or
ad-activate, it'd be good if the read for the function name defaulted to
a func at point.
Currently I think it only offers the most recently defined advice, so
with
(defadvice doctor (around no-doctoring activate)
"Disable the doctor."
(error "The doctor is at a medical conference in Barbados"))
(defadvice dunnet (around no-games activate)
"Disable games."
(error "Shouldn't you be working?"))
An M-x ad-disable-advice with point on either "doctor" or "dunnet"
offers "dunnet", where I hoped that on "doctor" it would offer doctor.
2011-03-20 Kevin Ryde <user42 <at> zip.com.au>
* emacs-lisp/advice.el (ad-read-advised-function): Use
`function-called-at-point' as the default default, if the func at
point has advice, and passes PREDICATE.
[advice.el.read-default.diff (text/x-diff, inline)]
--- advice.el.~1.68.~ 2009-10-08 11:00:28.000000000 +1100
+++ advice.el 2011-03-21 10:37:14.000000000 +1100
@@ -2200,16 +2200,29 @@
;; @@ Interactive input functions:
;; ===============================
+(declare-function 'function-called-at-point "help")
+
(defun ad-read-advised-function (&optional prompt predicate default)
"Read name of advised function with completion from the minibuffer.
An optional PROMPT will be used to prompt for the function. PREDICATE
-plays the same role as for `try-completion' (which see). DEFAULT will
-be returned on empty input (defaults to the first advised function for
-which PREDICATE returns non-nil)."
+plays the same role as for `try-completion' (which see).
+
+DEFAULT is returned on empty input. DEFAULT defaults to the
+function name at point if it's advised and passes PREDICATE,
+otherwise to the first advised function which passes PREDICATE."
(if (null ad-advised-functions)
(error "ad-read-advised-function: There are no advised functions"))
(setq default
(or default
+ ;; prefer func name at point, if it's in ad-advised-functions etc
+ (let ((function (progn
+ (require 'help)
+ (function-called-at-point))))
+ (and function
+ (assoc (symbol-name function) ad-advised-functions)
+ (or (null predicate)
+ (funcall predicate function))
+ function))
(ad-do-advised-functions (function)
(if (or (null predicate)
(funcall predicate function))
[Message part 3 (text/plain, inline)]
In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
of 2010-05-16 on raven, modified by Debian
configured using `configure '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_AU
value of $XMODIFIERS: nil
locale-coding-system: iso-latin-1-unix
default enable-multibyte-characters: t
Information forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#8304
; Package
emacs
.
(Mon, 21 Mar 2011 14:41:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 8304 <at> debbugs.gnu.org (full text, mbox):
> * emacs-lisp/advice.el (ad-read-advised-function): Use
> `function-called-at-point' as the default default, if the func at
> point has advice, and passes PREDICATE.
Sounds like a fine change.
> -plays the same role as for `try-completion' (which see). DEFAULT will
> -be returned on empty input (defaults to the first advised function for
> -which PREDICATE returns non-nil)."
> +plays the same role as for `try-completion' (which see).
> +
> +DEFAULT is returned on empty input. DEFAULT defaults to the
> +function name at point if it's advised and passes PREDICATE,
> +otherwise to the first advised function which passes PREDICATE."
Actually, I don't think the docstring should document what `default' will
default to. Actually, AFAICT the `default' argument is never used.
> + ;; prefer func name at point, if it's in ad-advised-functions etc
Comments should start with a capital and end with a "." or some other
appropriate punctuation.
Stefan
Information forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#8304
; Package
emacs
.
(Sun, 22 May 2011 00:30:03 GMT)
Full text and
rfc822 format available.
Message #11 received at 8304 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>
> Actually, I don't think the docstring should document what `default' will
> default to.
Oh, well, it has done, and if you're using it programmatically then you
will likely want to know. I shortened it per below.
> Actually, AFAICT the `default' argument is never used.
No doubt it's in emulation of completing-read, so you can offer a
particular default in context. Seems like a good thing on the whole.
> Comments should start with a capital and end with a "." or some other
> appropriate punctuation.
You must have more trouble getting any comments, then getting sensible
comments, then getting more or less grammatical comments, without
worrying about full stops!
2011-05-22 Kevin Ryde <user42 <at> zip.com.au>
* emacs-lisp/advice.el (ad-read-advised-function): Use
`function-called-at-point' as the default default, if it has
advice and passes PREDICATE.
[advice.el.read-default-2.diff (text/x-diff, inline)]
--- advice.el.~1.68.~ 2009-10-08 11:00:28.000000000 +1100
+++ advice.el 2011-05-22 10:19:27.000000000 +1000
@@ -2200,16 +2200,27 @@
;; @@ Interactive input functions:
;; ===============================
+(declare-function 'function-called-at-point "help")
+
(defun ad-read-advised-function (&optional prompt predicate default)
"Read name of advised function with completion from the minibuffer.
An optional PROMPT will be used to prompt for the function. PREDICATE
plays the same role as for `try-completion' (which see). DEFAULT will
-be returned on empty input (defaults to the first advised function for
-which PREDICATE returns non-nil)."
+be returned on empty input (defaults to the first advised function or
+function at point for which PREDICATE returns non-nil)."
(if (null ad-advised-functions)
(error "ad-read-advised-function: There are no advised functions"))
(setq default
(or default
+ ;; Prefer func name at point, if it's in ad-advised-functions etc.
+ (let ((function (progn
+ (require 'help)
+ (function-called-at-point))))
+ (and function
+ (assoc (symbol-name function) ad-advised-functions)
+ (or (null predicate)
+ (funcall predicate function))
+ function))
(ad-do-advised-functions (function)
(if (or (null predicate)
(funcall predicate function))
[Message part 3 (text/plain, inline)]
--
Restaurant jargon elucidated for the layman:
"Special" -- almost gone bad and has to be sold today.
Reply sent
to
Stefan Monnier <monnier <at> iro.umontreal.ca>
:
You have taken responsibility.
(Mon, 23 May 2011 14:41:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Kevin Ryde <user42 <at> zip.com.au>
:
bug acknowledged by developer.
(Mon, 23 May 2011 14:41:02 GMT)
Full text and
rfc822 format available.
Message #16 received at 8304-done <at> debbugs.gnu.org (full text, mbox):
> You must have more trouble getting any comments, then getting sensible
> comments, then getting more or less grammatical comments, without
> worrying about full stops!
I like to think of it the other way: forcing people to be careful about
punctuation also forces them to be more careful in general ;-)
> 2011-05-22 Kevin Ryde <user42 <at> zip.com.au>
> * emacs-lisp/advice.el (ad-read-advised-function): Use
> `function-called-at-point' as the default default, if it has
> advice and passes PREDICATE.
Thank you, installed in the trunk,
Stefan
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Tue, 21 Jun 2011 11:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 14 years and 3 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.