unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* `call-interactively' only the first time
@ 2006-08-15 13:48 augukarl
  2006-08-16  2:13 ` wenbinye
  0 siblings, 1 reply; 8+ messages in thread
From: augukarl @ 2006-08-15 13:48 UTC (permalink / raw)


Hi everyone,

Is it possible to write a function that first calls a function, f,
interactively and then invokes f with the same parameters
non-interactively?


Regards,

August

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

* Re: `call-interactively' only the first time
  2006-08-15 13:48 `call-interactively' only the first time augukarl
@ 2006-08-16  2:13 ` wenbinye
  2006-08-16  9:58   ` augukarl
  0 siblings, 1 reply; 8+ messages in thread
From: wenbinye @ 2006-08-16  2:13 UTC (permalink / raw)


If use (call-interactively 'f), the function is interactively.
if provide parameters to the function, such (f 1), the function f is
like other functions.
Is this the answer?
augukarl@yahoo.se wrote:
> Hi everyone,
>
> Is it possible to write a function that first calls a function, f,
> interactively and then invokes f with the same parameters
> non-interactively?
> 
> 
> Regards,
> 
> August

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

* Re: `call-interactively' only the first time
  2006-08-16  2:13 ` wenbinye
@ 2006-08-16  9:58   ` augukarl
  2006-08-16 15:20     ` wenbinye
  0 siblings, 1 reply; 8+ messages in thread
From: augukarl @ 2006-08-16  9:58 UTC (permalink / raw)


wenbinye@gmail.com skrev:

> If use (call-interactively 'f), the function is interactively.
> if provide parameters to the function, such (f 1), the function f is
> like other functions.
> Is this the answer?

Unfortunately, no.

I first want to call a function interactively and then I want to call
the same function non-interactively. In the non-interactive call I want
to pass the same parameters used with the preceding interactive call.


August

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

* Re: `call-interactively' only the first time
  2006-08-16  9:58   ` augukarl
@ 2006-08-16 15:20     ` wenbinye
  2006-08-17  9:05       ` augukarl
  0 siblings, 1 reply; 8+ messages in thread
From: wenbinye @ 2006-08-16 15:20 UTC (permalink / raw)


Can you give the definition of the function?
augukarl@yahoo.se wrote:
> wenbinye@gmail.com skrev:
>
> > If use (call-interactively 'f), the function is interactively.
> > if provide parameters to the function, such (f 1), the function f is
> > like other functions.
> > Is this the answer?
>
> Unfortunately, no.
>
> I first want to call a function interactively and then I want to call
> the same function non-interactively. In the non-interactive call I want
> to pass the same parameters used with the preceding interactive call.
> 
> 
> August

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

* Re: `call-interactively' only the first time
  2006-08-16 15:20     ` wenbinye
@ 2006-08-17  9:05       ` augukarl
  2006-08-17 12:02         ` wenbinye
  0 siblings, 1 reply; 8+ messages in thread
From: augukarl @ 2006-08-17  9:05 UTC (permalink / raw)


wenbinye@gmail.com skrev:
> Can you give the definition of the function?

Here is the pseudo code for the function I want to define:

(defun f (g)  ;; g is an interactive function.
  ;; Call g interactively.
  ;; Call g non-interactively with the parameters (specified by
  ;; the user) in the command above.
  )

Is this clear enough?


Thanks,

August

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

* Re: `call-interactively' only the first time
  2006-08-17  9:05       ` augukarl
@ 2006-08-17 12:02         ` wenbinye
  2006-08-17 13:19           ` augukarl
  0 siblings, 1 reply; 8+ messages in thread
From: wenbinye @ 2006-08-17 12:02 UTC (permalink / raw)


You didn't provide the real code, I assume you may make mistake when
use
the function in parameter, which is named g in you pseudo code. You
should
use funcall function.
Another question is how do you restore the argument when called
interactively first time?

(defun foo (arg)
  (interactive "sGive me a string: ")
  (message "foo: %S" arg))

(defun bar (func)
    (message "first call: ")
    (call-interactively func)
    (message "call again: ")
    (funcall func "efg"))

;; use like this:
(bar 'foo)

augukarl@yahoo.se wrote:
> wenbinye@gmail.com skrev:
> > Can you give the definition of the function?
>
> Here is the pseudo code for the function I want to define:
>
> (defun f (g)  ;; g is an interactive function.
>   ;; Call g interactively.
>   ;; Call g non-interactively with the parameters (specified by
>   ;; the user) in the command above.
>   )
> 
> Is this clear enough?
> 
> 
> Thanks,
> 
> August

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

* Re: `call-interactively' only the first time
  2006-08-17 12:02         ` wenbinye
@ 2006-08-17 13:19           ` augukarl
  2006-08-17 13:35             ` wenbinye
  0 siblings, 1 reply; 8+ messages in thread
From: augukarl @ 2006-08-17 13:19 UTC (permalink / raw)


wenbinye@gmail.com skrev:
> You didn't provide the real code,

Of course not. My question is how to write it.

> I assume you may make mistake when use
> the function in parameter, which is named g in you pseudo code. You
> should use funcall function.

How can it be a misstake? I haven't written any (real) function-call
statements.

> Another question is how do you restore the argument when called
> interactively first time?

Exactly, that's the essence of my question.

> (defun foo (arg)
>   (interactive "sGive me a string: ")
>   (message "foo: %S" arg))
>
> (defun bar (func)
>     (message "first call: ")
>     (call-interactively func)
>     (message "call again: ")
>     (funcall func "efg"))
>
> ;; use like this:
> (bar 'foo)

This is only a special case. In my pseudo code I put no restrictions on
the command g (it can take any number of parameters).


August

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

* Re: `call-interactively' only the first time
  2006-08-17 13:19           ` augukarl
@ 2006-08-17 13:35             ` wenbinye
  0 siblings, 0 replies; 8+ messages in thread
From: wenbinye @ 2006-08-17 13:35 UTC (permalink / raw)


Maybe I misunderstand you question. You should tell you real problem at
the beginning.

(defun foo (arg1 arg2)
  (interactive "nNumber: \nsString: \n")
  (message "foo: %S, %S" arg1 arg2)
  (setq my-global-arg (list arg1 arg2)))

(defun bar (func)
  (let (arg)
    (message "first call: ")
    (call-interactively func)
    (message "call again: ")
    (apply func my-global-arg)))

(bar 'foo)

augukarl@yahoo.se wrote:
> wenbinye@gmail.com skrev:
> > You didn't provide the real code,
>
> Of course not. My question is how to write it.
>
> > I assume you may make mistake when use
> > the function in parameter, which is named g in you pseudo code. You
> > should use funcall function.
>
> How can it be a misstake? I haven't written any (real) function-call
> statements.
>
> > Another question is how do you restore the argument when called
> > interactively first time?
>
> Exactly, that's the essence of my question.
Global variable may help.
>
> > (defun foo (arg)
> >   (interactive "sGive me a string: ")
> >   (message "foo: %S" arg))
> >
> > (defun bar (func)
> >     (message "first call: ")
> >     (call-interactively func)
> >     (message "call again: ")
> >     (funcall func "efg"))
> >
> > ;; use like this:
> > (bar 'foo)
>
> This is only a special case. In my pseudo code I put no restrictions on
> the command g (it can take any number of parameters).
> 
> 
> August

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

end of thread, other threads:[~2006-08-17 13:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-15 13:48 `call-interactively' only the first time augukarl
2006-08-16  2:13 ` wenbinye
2006-08-16  9:58   ` augukarl
2006-08-16 15:20     ` wenbinye
2006-08-17  9:05       ` augukarl
2006-08-17 12:02         ` wenbinye
2006-08-17 13:19           ` augukarl
2006-08-17 13:35             ` wenbinye

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