public inbox for guile-emacs@sourceware.org
 help / color / mirror / Atom feed
From: Kalle Olavi Niemitalo <tosi@ees2.oulu.fi>
To: Keisuke Nishida <kxn30@po.cwru.edu>
Cc: guile-emacs@sourceware.cygnus.com
Subject: Re: special forms (save-excursion)
Date: Wed, 15 Mar 2000 00:34:00 -0000	[thread overview]
Message-ID: <iznbt4gy6m3.fsf@stekt.oulu.fi> (raw)
In-Reply-To: <m3snxtb3sh.fsf@kei.cwru.edu>

[I'm on this list now]

Keisuke Nishida <kxn30@po.cwru.edu> writes:

> If you could contribute some macros, I'd very appreciate it and
> include it in the distribution.

Perhaps I can.  But I tend to get bored with things so don't take this
as a promise.

Should the macros be in module (emacs import), if they correspond to
Emacs features?

If it were possible to pass Scheme procedure objects to Emacs Lisp and
call them from there, save-excursion could use the existing primitive:

(define-syntax save-excursion
  (syntax-rules ()
    ((save-excursion body ...)
     (emacs-eval `(save-excursion
		     (,(lambda ()
			  body ...)))))))

This would convert the body forms to a Scheme thunk and then evaluate
an Emacs form which calls that thunk within save-excursion.  LAMBDA
captures the current bindings so lexical scoping would be preserved.

Here's another version which uses guile-eval instead of directly
calling the procedure from Emacs.  But it too needs the new type.

(define-syntax save-excursion
  (syntax-rules ()
    ((save-excursion body ...)
     (emacs-eval `(save-excursion
		     (guile-eval '(',(lambda ()
				        body ...))))))))

You wrote you'd rename emacs-eval and emacs-apply.
What are the new names?

  parent reply	other threads:[~2000-03-15  0:34 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-03-14 12:46 Kalle Olavi Niemitalo
2000-03-14 13:32 ` Keisuke Nishida
2000-03-14 14:11 ` Keisuke Nishida
2000-03-14 14:17   ` Keisuke Nishida
2000-03-15  0:34   ` Kalle Olavi Niemitalo [this message]
2000-03-15  3:32     ` Keisuke Nishida
2000-03-15  5:11       ` Kalle Olavi Niemitalo
2000-03-15  5:43         ` Keisuke Nishida
2000-03-15  6:12           ` Kalle Olavi Niemitalo
2000-03-15 11:37             ` guile-emacs GC (was special forms) Kalle Olavi Niemitalo
2000-03-15 12:18               ` Keisuke Nishida
2000-03-15 13:48                 ` Jim Blandy
2000-03-15 15:14                   ` Keisuke Nishida
2000-03-15 11:30           ` special forms (save-excursion) Kalle Olavi Niemitalo
2000-03-15 12:42             ` Keisuke Nishida

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=iznbt4gy6m3.fsf@stekt.oulu.fi \
    --to=tosi@ees2.oulu.fi \
    --cc=guile-emacs@sourceware.cygnus.com \
    --cc=kxn30@po.cwru.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).