GNU bug report logs - #8304
23.2; ad-read-advised-function default to func at point

Previous Next

Package: emacs;

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.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Kevin Ryde <user42 <at> zip.com.au>
Subject: bug#8304: closed (Re: bug#8304: 23.2; ad-read-advised-function
 default to func at point)
Date: Mon, 23 May 2011 14:41:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#8304: 23.2; ad-read-advised-function default to func at point

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 8304 <at> debbugs.gnu.org.

-- 
8304: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8304
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Kevin Ryde <user42 <at> zip.com.au>
Cc: 8304-done <at> debbugs.gnu.org
Subject: Re: bug#8304: 23.2; ad-read-advised-function default to func at point
Date: Mon, 23 May 2011 11:40:31 -0300
> 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

[Message part 3 (message/rfc822, inline)]
From: Kevin Ryde <user42 <at> zip.com.au>
To: bug-gnu-emacs <at> gnu.org
Subject: 23.2; ad-read-advised-function default to func at point
Date: Mon, 21 Mar 2011 10:52:21 +1100
[Message part 4 (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 6 (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

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.