* bug#8304: 23.2; ad-read-advised-function default to func at point
@ 2011-03-20 23:52 Kevin Ryde
2011-03-21 14:40 ` Stefan Monnier
0 siblings, 1 reply; 4+ messages in thread
From: Kevin Ryde @ 2011-03-20 23:52 UTC (permalink / raw)
To: 8304
[-- Attachment #1: Type: text/plain, Size: 852 bytes --]
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@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.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: advice.el.read-default.diff --]
[-- Type: text/x-diff, Size: 1490 bytes --]
--- 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))
[-- Attachment #3: Type: text/plain, Size: 1054 bytes --]
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
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#8304: 23.2; ad-read-advised-function default to func at point
2011-03-20 23:52 bug#8304: 23.2; ad-read-advised-function default to func at point Kevin Ryde
@ 2011-03-21 14:40 ` Stefan Monnier
2011-05-22 0:29 ` Kevin Ryde
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2011-03-21 14:40 UTC (permalink / raw)
To: Kevin Ryde; +Cc: 8304
> * 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
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#8304: 23.2; ad-read-advised-function default to func at point
2011-03-21 14:40 ` Stefan Monnier
@ 2011-05-22 0:29 ` Kevin Ryde
2011-05-23 14:40 ` Stefan Monnier
0 siblings, 1 reply; 4+ messages in thread
From: Kevin Ryde @ 2011-05-22 0:29 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 8304
[-- Attachment #1: Type: text/plain, Size: 925 bytes --]
Stefan Monnier <monnier@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@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.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: advice.el.read-default-2.diff --]
[-- Type: text/x-diff, Size: 1370 bytes --]
--- 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))
[-- Attachment #3: Type: text/plain, Size: 106 bytes --]
--
Restaurant jargon elucidated for the layman:
"Special" -- almost gone bad and has to be sold today.
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#8304: 23.2; ad-read-advised-function default to func at point
2011-05-22 0:29 ` Kevin Ryde
@ 2011-05-23 14:40 ` Stefan Monnier
0 siblings, 0 replies; 4+ messages in thread
From: Stefan Monnier @ 2011-05-23 14:40 UTC (permalink / raw)
To: Kevin Ryde; +Cc: 8304-done
> 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@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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-05-23 14:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-20 23:52 bug#8304: 23.2; ad-read-advised-function default to func at point Kevin Ryde
2011-03-21 14:40 ` Stefan Monnier
2011-05-22 0:29 ` Kevin Ryde
2011-05-23 14:40 ` Stefan Monnier
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).