unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Local values of PC-word-delimiters.
@ 2006-04-15 14:05 Michaël Cadilhac
  2006-04-17 16:22 ` Kevin Rodgers
  0 siblings, 1 reply; 5+ messages in thread
From: Michaël Cadilhac @ 2006-04-15 14:05 UTC (permalink / raw)



[-- Attachment #1.1: Type: text/plain, Size: 1115 bytes --]


  Hi !

  I've a problem I can't solve in a clean way, here.

  I   want  that  when   `gnus-group-jump-to-group'  is   called,  its
  completing-read (PC enabled) uses `:' as PC-word-delimiters.

  Easy you say ? Thought so ;-)

  I first tried

  (add-hook 'gnus-group-mode
            (lambda ()
              (set (make-local-variable 'PC-word-delimiters) ":")))

  But it was no use since we're in the minibuffer when
  PC-word-delimiters is read.

  I then tried

  (defadvice gnus-group-jump-to-group (around dummy-name activate)
    (let ((PC-word-delimiters ":"))
      ad-do-it))

  But since `gnus-group-jump-to-group' uses completing-read in its
  `interactive' part, the advice is executed AFTER it.

  Do you have any clean solution ?

  Thanks.

-- 
 |      Michaël `Micha' Cadilhac   |   Mieux vaut se taire                  |
 |         Epita/LRDE Promo 2007   |    Que de parler trop fort.            |
 | http://www.lrde.org/~cadilh_m   |            -- As de trèfle             |
 `--  -   JID: micha@amessage.be --'                                   -  --'

[-- Attachment #1.2: Type: application/pgp-signature, Size: 188 bytes --]

[-- Attachment #2: Type: text/plain, Size: 152 bytes --]

_______________________________________________
help-gnu-emacs mailing list
help-gnu-emacs@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gnu-emacs

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Local values of PC-word-delimiters.
  2006-04-15 14:05 Local values of PC-word-delimiters Michaël Cadilhac
@ 2006-04-17 16:22 ` Kevin Rodgers
  2006-04-17 17:03   ` Michaël Cadilhac
  0 siblings, 1 reply; 5+ messages in thread
From: Kevin Rodgers @ 2006-04-17 16:22 UTC (permalink / raw)


Michaël Cadilhac wrote:
 >   I've a problem I can't solve in a clean way, here.
 >
 >   I   want  that  when   `gnus-group-jump-to-group'  is   called,  its
 >   completing-read (PC enabled) uses `:' as PC-word-delimiters.
 >
 >   Easy you say ? Thought so ;-)
 >
 >   I first tried
 >
 >   (add-hook 'gnus-group-mode
 >             (lambda ()
 >               (set (make-local-variable 'PC-word-delimiters) ":")))
 >
 >   But it was no use since we're in the minibuffer when
 >   PC-word-delimiters is read.
 >
 >   I then tried
 >
 >   (defadvice gnus-group-jump-to-group (around dummy-name activate)
 >     (let ((PC-word-delimiters ":"))
 >       ad-do-it))
 >
 >   But since `gnus-group-jump-to-group' uses completing-read in its
 >   `interactive' part, the advice is executed AFTER it.
 >
 >   Do you have any clean solution ?

Does this work?

(defadvice gnus-group-jump-to-group (before PC-word-delimiters activate)
   "Temporarily bind  `PC-word-delimiters' while reading GROUP."
   (interactive
    (let ((PC-word-delimiters ":"))
      (call-interactively
       `(lambda (&rest args)
          ,(interactive-form 'gnus-group-jump-to-group)
          args)))))

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Local values of PC-word-delimiters.
  2006-04-17 16:22 ` Kevin Rodgers
@ 2006-04-17 17:03   ` Michaël Cadilhac
  2006-04-18 10:05     ` Michaël Cadilhac
  0 siblings, 1 reply; 5+ messages in thread
From: Michaël Cadilhac @ 2006-04-17 17:03 UTC (permalink / raw)
  Cc: help-gnu-emacs


[-- Attachment #1.1: Type: text/plain, Size: 1794 bytes --]

Kevin Rodgers <ihs_4664@yahoo.com> writes:

> Michaël Cadilhac wrote:
>>   I've a problem I can't solve in a clean way, here.
>>
>>   I   want  that  when   `gnus-group-jump-to-group'  is   called,  its
>>   completing-read (PC enabled) uses `:' as PC-word-delimiters.
>>
>
> Does this work?
>
> (defadvice gnus-group-jump-to-group (before PC-word-delimiters activate)
>   "Temporarily bind  `PC-word-delimiters' while reading GROUP."
>   (interactive
>    (let ((PC-word-delimiters ":"))
>      (call-interactively
>       `(lambda (&rest args)
>          ,(interactive-form 'gnus-group-jump-to-group)
>          args)))))

  Nice try :-)

  Well, it doesn't. It complains about infinite recursion. I think it's
  due to infinite evaluation of the advice on the « interactive-form ».

  However, with a « before » advice, I think jump-to-group would have
  been called twice.

  But you made the thing : just use (interactive) to make the call.
  Arg. The following works :

(defadvice gnus-group-jump-to-group (around PC-word-delimiters activate)
  "Temporarily bind  `PC-word-delimiters' while reading GROUP."
  (interactive
   (let ((PC-word-delimiters ":"))
     (ad-deactivate 'gnus-group-jump-to-group)
     (call-interactively 'gnus-group-jump-to-group)
     (ad-activate 'gnus-group-jump-to-group))))
  
  It seems that ad-do-it can't be used in the interactive part, however.

  Not so clean, but it works at least :-)

-- 
 |      Michaël `Micha' Cadilhac   |   Would someone please DTRT with this  |
 |         Epita/LRDE Promo 2007   |         then ACK?                      |
 | http://www.lrde.org/~cadilh_m   |           -- Richard Stallman          |
 `--  -   JID: micha@amessage.be --'                                   -  --'

[-- Attachment #1.2: Type: application/pgp-signature, Size: 188 bytes --]

[-- Attachment #2: Type: text/plain, Size: 152 bytes --]

_______________________________________________
help-gnu-emacs mailing list
help-gnu-emacs@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gnu-emacs

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Local values of PC-word-delimiters.
  2006-04-17 17:03   ` Michaël Cadilhac
@ 2006-04-18 10:05     ` Michaël Cadilhac
  2006-04-19 16:14       ` Kevin Rodgers
  0 siblings, 1 reply; 5+ messages in thread
From: Michaël Cadilhac @ 2006-04-18 10:05 UTC (permalink / raw)



[-- Attachment #1.1: Type: text/plain, Size: 2426 bytes --]

michael.cadilhac@lrde.org (Michaël Cadilhac) writes:

> Kevin Rodgers <ihs_4664@yahoo.com> writes:
>
>> Michaël Cadilhac wrote:
>>>   I've a problem I can't solve in a clean way, here.
>>>
>>>   I   want  that  when   `gnus-group-jump-to-group'  is   called,  its
>>>   completing-read (PC enabled) uses `:' as PC-word-delimiters.
>>>
>>
>> Does this work?
>>
>> (defadvice gnus-group-jump-to-group (before PC-word-delimiters activate)
>>   "Temporarily bind  `PC-word-delimiters' while reading GROUP."
>>   (interactive
>>    (let ((PC-word-delimiters ":"))
>>      (call-interactively
>>       `(lambda (&rest args)
>>          ,(interactive-form 'gnus-group-jump-to-group)
>>          args)))))
>
>   Nice try :-)
>
>   Well, it doesn't. It complains about infinite recursion. I think it's
>   due to infinite evaluation of the advice on the « interactive-form ».
>
>   However, with a « before » advice, I think jump-to-group would have
>   been called twice.

    Okey, this remark was silly, I didn't read as I should your
    proposition, TITS with a lot of attention ;-)

    The following doesn't work:

> (defadvice gnus-group-jump-to-group (around PC-word-delimiters activate)
>   "Temporarily bind  `PC-word-delimiters' while reading GROUP."
>   (interactive
>    (let ((PC-word-delimiters ":"))
>      (ad-deactivate 'gnus-group-jump-to-group)
>      (call-interactively 'gnus-group-jump-to-group)
>      (ad-activate 'gnus-group-jump-to-group))))

    And is really dirty.

    One can fix your proposal, which is a really great one, by the
    following :

(defadvice gnus-group-jump-to-group (before PC-word-delimiters activate)
  "Temporarily bind  `PC-word-delimiters' while reading GROUP."
  (interactive
   (progn (ad-deactivate 'gnus-group-jump-to-group)
	  (let* ((PC-word-delimiters ":")
		 (retval (call-interactively
			  `(lambda (&rest args)
			     ,(interactive-form 'gnus-group-jump-to-group)
			     args))))
	    (ad-activate 'gnus-group-jump-to-group)
	    retval))))

   Thank you again, now it seems fine !

-- 
 |      Michaël `Micha' Cadilhac   |   Pour les 35-40 ans, l'humour         |
 |         Epita/LRDE Promo 2007   |        c'est une plus-value.           |
 | http://www.lrde.org/~cadilh_m   |           -- Guillaume L.              |
 `--  -   JID: micha@amessage.be --'                                   -  --'

[-- Attachment #1.2: Type: application/pgp-signature, Size: 188 bytes --]

[-- Attachment #2: Type: text/plain, Size: 152 bytes --]

_______________________________________________
help-gnu-emacs mailing list
help-gnu-emacs@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gnu-emacs

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Local values of PC-word-delimiters.
  2006-04-18 10:05     ` Michaël Cadilhac
@ 2006-04-19 16:14       ` Kevin Rodgers
  0 siblings, 0 replies; 5+ messages in thread
From: Kevin Rodgers @ 2006-04-19 16:14 UTC (permalink / raw)


Michaël Cadilhac wrote:
 > (defadvice gnus-group-jump-to-group (before PC-word-delimiters activate)
 >   "Temporarily bind  `PC-word-delimiters' while reading GROUP."
 >   (interactive
 >    (progn (ad-deactivate 'gnus-group-jump-to-group)
 > 	  (let* ((PC-word-delimiters ":")
 > 		 (retval (call-interactively
 > 			  `(lambda (&rest args)
 > 			     ,(interactive-form 'gnus-group-jump-to-group)
 > 			     args))))
 > 	    (ad-activate 'gnus-group-jump-to-group)
 > 	    retval))))

(defadvice gnus-group-jump-to-group (before PC-word-delimiters activate)
   "Temporarily bind  `PC-word-delimiters' while reading GROUP."
   (interactive
    (let ((PC-word-delimiters ":"))
      (prog2 (ad-deactivate 'gnus-group-jump-to-group)
          (call-interactively
           `(lambda (&rest args)
              ,(interactive-form 'gnus-group-jump-to-group)
              args))
        (ad-activate 'gnus-group-jump-to-group)))))

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-04-19 16:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-15 14:05 Local values of PC-word-delimiters Michaël Cadilhac
2006-04-17 16:22 ` Kevin Rodgers
2006-04-17 17:03   ` Michaël Cadilhac
2006-04-18 10:05     ` Michaël Cadilhac
2006-04-19 16:14       ` Kevin Rodgers

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).