unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Change the default binding of C-x C-e ?
@ 2008-01-06 11:41 Mike Mattie
  2008-01-06 14:59 ` Leo
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Mike Mattie @ 2008-01-06 11:41 UTC (permalink / raw)
  To: emacs developers


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

Hello,

I think it is a good idea to change the default key-binding of C-x C-e to eval-defun. From a reading of the Elisp
Intro I became used to using the usual binding which is eval-last-sexp. Things worked fine until I progressed
in elisp to where I wanted to use defvar. As the informed have probably surmised I was baffled by the results
because repeated evaluation did not affect the default value.

While reading through the manuals I stumbled across eval-defun and realized what was going on. AFAICT they
are effectively the same in use, however eval-defun does not have suprising corner cases like defvar default
values.

FWIW it may help others to change this binding.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

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

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

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

* Re: Change the default binding of C-x C-e ?
  2008-01-06 11:41 Change the default binding of C-x C-e ? Mike Mattie
@ 2008-01-06 14:59 ` Leo
  2008-01-06 15:14   ` Mike Mattie
  2008-01-06 15:17 ` Alan Mackenzie
  2008-01-07  4:18 ` Richard Stallman
  2 siblings, 1 reply; 10+ messages in thread
From: Leo @ 2008-01-06 14:59 UTC (permalink / raw)
  To: emacs-devel

On 2008-01-06 11:41 +0000, Mike Mattie wrote:
> Hello,
>
> I think it is a good idea to change the default key-binding of C-x C-e to eval-defun. From a reading of the Elisp
> Intro I became used to using the usual binding which is eval-last-sexp. Things worked fine until I progressed
> in elisp to where I wanted to use defvar. As the informed have probably surmised I was baffled by the results
> because repeated evaluation did not affect the default value.
>
> While reading through the manuals I stumbled across eval-defun and realized what was going on. AFAICT they
> are effectively the same in use, however eval-defun does not have suprising corner cases like defvar default
> values.
>
> FWIW it may help others to change this binding.

Do you know about "C-M-x"?

-- 
.:  Leo  :.  [ sdl.web AT gmail.com ]  .:  [ GPG Key: 9283AA3F ]  :.

          Use the best OS -- http://www.fedoraproject.org/

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

* Re: Change the default binding of C-x C-e ?
  2008-01-06 14:59 ` Leo
@ 2008-01-06 15:14   ` Mike Mattie
  0 siblings, 0 replies; 10+ messages in thread
From: Mike Mattie @ 2008-01-06 15:14 UTC (permalink / raw)
  To: emacs-devel


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

On Sun, 06 Jan 2008 14:59:11 +0000
Leo <sdl.web@gmail.com> wrote:

> On 2008-01-06 11:41 +0000, Mike Mattie wrote:
> > Hello,
> >
> > I think it is a good idea to change the default key-binding of C-x
> > C-e to eval-defun. From a reading of the Elisp Intro I became used
> > to using the usual binding which is eval-last-sexp. Things worked
> > fine until I progressed in elisp to where I wanted to use defvar.
> > As the informed have probably surmised I was baffled by the results
> > because repeated evaluation did not affect the default value.
> >
> > While reading through the manuals I stumbled across eval-defun and
> > realized what was going on. AFAICT they are effectively the same in
> > use, however eval-defun does not have suprising corner cases like
> > defvar default values.
> >
> > FWIW it may help others to change this binding.
> 
> Do you know about "C-M-x"?
> 

I do now. I have eval-defun bound to a key-sequence that works for me. I addressed
the mailing list because I thought others might stumble as I did on this particular
issue while learning elisp.

A note in the Emacs Lisp Intro would likely only confuse the learning process at
the earliest stage which is precocious. I thought that using eval-defun from
the beginning would side-step trouble down the road with defvar altogether.

So the issue is resolved for me, my concern was for others travelling the
elisp path.

Cheers,
Mike Mattie

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

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

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

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

* Re: Change the default binding of C-x C-e ?
  2008-01-06 11:41 Change the default binding of C-x C-e ? Mike Mattie
  2008-01-06 14:59 ` Leo
@ 2008-01-06 15:17 ` Alan Mackenzie
  2008-01-06 20:35   ` Stefan Monnier
  2008-01-07  4:18 ` Richard Stallman
  2 siblings, 1 reply; 10+ messages in thread
From: Alan Mackenzie @ 2008-01-06 15:17 UTC (permalink / raw)
  To: Mike Mattie; +Cc: emacs developers

Hi, Mike!

On Sun, Jan 06, 2008 at 03:41:04AM -0800, Mike Mattie wrote:
> Hello,

> I think it is a good idea to change the default key-binding of C-x C-e
> to eval-defun. From a reading of the Elisp Intro I became used to using
> the usual binding which is eval-last-sexp. Things worked fine until I
> progressed in elisp to where I wanted to use defvar. As the informed
> have probably surmised I was baffled by the results because repeated
> evaluation did not affect the default value.

> While reading through the manuals I stumbled across eval-defun and
> realized what was going on. AFAICT they are effectively the same in
> use, however eval-defun does not have suprising corner cases like
> defvar default values.

eval-last-sexp and eval-defun do different things - e-d determines the
top level construct surrounding point, e-l-s finds the previous
expression.  I think you've just found that out.

It is sometimes useful whilst hacking lisp to evaluate an expression in
the middle of a defun.  You'd be surprised how often that happens.
That's what C-x C-e is for, and I'd bet my entire life savings on the
rest of the Emacs team agreeing here.

> FWIW it may help others to change this binding.

Maybe, maybe not.  I would suggest a compromise binding: C-u C-x C-e for
eval-defun.  You could implement that for yourself using "advice".

-- 
Alan Mackenzie (Nuremberg).

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

* Re: Change the default binding of C-x C-e ?
@ 2008-01-06 17:21 Robert J. Chassell
  2008-01-06 19:45 ` Tom Tromey
  0 siblings, 1 reply; 10+ messages in thread
From: Robert J. Chassell @ 2008-01-06 17:21 UTC (permalink / raw)
  To: emacs-devel

    Things worked fine until I progressed in elisp to where I wanted
    to use defvar.

(info "(eintr)defvar")
says

       The `defvar' special form ... only sets the value of the
    variable if the variable does not already have a value.

I just checked this:  I can use C-x C-e (eval-last-sexp) to set the
value of a variable with `defvar' for the first time.  As described in
the Introduction, I cannot change the value a second time with
`defvar' and `eval-last-sexp'; for that, I must use `setq'.

Today's GNU Emacs CVS snapshot, Sun, 2008 Jan  6  11:10 UTC
GNU Emacs 23.0.50.21 (i686-pc-linux-gnu, GTK+ Version 2.12.1)

--
    Robert J. Chassell                          GnuPG Key ID: 004B4AC8
    bob@rattlesnake.com                         bob@gnu.org
    http://www.rattlesnake.com                  http://www.teak.cc

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

* Re: Change the default binding of C-x C-e ?
  2008-01-06 17:21 Robert J. Chassell
@ 2008-01-06 19:45 ` Tom Tromey
  2008-01-07  0:15   ` Stephen J. Turnbull
  0 siblings, 1 reply; 10+ messages in thread
From: Tom Tromey @ 2008-01-06 19:45 UTC (permalink / raw)
  To: bob; +Cc: emacs-devel

Robert> I just checked this:  I can use C-x C-e (eval-last-sexp) to set the
Robert> value of a variable with `defvar' for the first time.  As described in
Robert> the Introduction, I cannot change the value a second time with
Robert> `defvar' and `eval-last-sexp'; for that, I must use `setq'.

For interactive elisp hacking I redefine eval-last-sexp to treat a
defvar more like a defconst.  This is pretty handy since it means I
don't have to modify the source or copy/paste/modify sexps in order to
do what I (usually) want.

Tom

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

* Re: Change the default binding of C-x C-e ?
  2008-01-06 15:17 ` Alan Mackenzie
@ 2008-01-06 20:35   ` Stefan Monnier
  2008-01-07  6:53     ` Andreas Röhler
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2008-01-06 20:35 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: Mike Mattie, emacs developers

> It is sometimes useful whilst hacking lisp to evaluate an expression in
> the middle of a defun.  You'd be surprised how often that happens.
> That's what C-x C-e is for, and I'd bet my entire life savings on the
> rest of the Emacs team agreeing here.

I'd agree, but I also think that maybe the OP has a point: C-x C-e when
used after an expression such as (defvar foo 1) should, just like C-M-x
force `foo' to be reset to 1.


        Stefan

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

* Re: Change the default binding of C-x C-e ?
  2008-01-06 19:45 ` Tom Tromey
@ 2008-01-07  0:15   ` Stephen J. Turnbull
  0 siblings, 0 replies; 10+ messages in thread
From: Stephen J. Turnbull @ 2008-01-07  0:15 UTC (permalink / raw)
  To: Tom Tromey; +Cc: bob, emacs-devel

Tom Tromey writes:

 > For interactive elisp hacking I redefine eval-last-sexp to treat a
 > defvar more like a defconst.  This is pretty handy since it means I
 > don't have to modify the source or copy/paste/modify sexps in order to
 > do what I (usually) want.

XEmacs's eval-last-sexp also does this (by default) and issues a
warning that the defvar has been treated as a defconst.

As a possibly useful data point, I do not recall seeing a complaint
about this (I've been following the XEmacs developer's list
religiouusly and the newsgroup intermittently since 1997).

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

* Re: Change the default binding of C-x C-e ?
  2008-01-06 11:41 Change the default binding of C-x C-e ? Mike Mattie
  2008-01-06 14:59 ` Leo
  2008-01-06 15:17 ` Alan Mackenzie
@ 2008-01-07  4:18 ` Richard Stallman
  2 siblings, 0 replies; 10+ messages in thread
From: Richard Stallman @ 2008-01-07  4:18 UTC (permalink / raw)
  To: Mike Mattie; +Cc: emacs-devel

    I think it is a good idea to change the default key-binding of C-x C-e to e=
    val-defun.

Since eval-defun is already on C-M-x, I don't see a point putting it
on C-x C-e as well.

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

* Re: Change the default binding of C-x C-e ?
  2008-01-06 20:35   ` Stefan Monnier
@ 2008-01-07  6:53     ` Andreas Röhler
  0 siblings, 0 replies; 10+ messages in thread
From: Andreas Röhler @ 2008-01-07  6:53 UTC (permalink / raw)
  To: emacs-devel
  Cc: Richard Stallman, Mike Mattie, Tom Tromey, Robert Chassell,
	Stefan Monnier, Alan Mackenzie, Leo, 

Am Sonntag, 6. Januar 2008 21:35 schrieb Stefan Monnier:
> > It is sometimes useful whilst hacking lisp to evaluate an expression in
> > the middle of a defun.  You'd be surprised how often that happens.
> > That's what C-x C-e is for, and I'd bet my entire life savings on the
> > rest of the Emacs team agreeing here.
>
> I'd agree, but I also think that maybe the OP has a point: C-x C-e when
> used after an expression such as (defvar foo 1) should, just like C-M-x
> force `foo' to be reset to 1.
>
>
>         Stefan
>

Would welcome that.

Presently, while playing around with new code, `devfar'
is not comfortable, as it defends it's value once set.

If values are still experimental, I use `setq'
instead. From what follows a need to correct that
afterwards. With this changing we would get rid of that
need and avoid possible errors.

Right?

Andreas Röhler

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

end of thread, other threads:[~2008-01-07  6:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-06 11:41 Change the default binding of C-x C-e ? Mike Mattie
2008-01-06 14:59 ` Leo
2008-01-06 15:14   ` Mike Mattie
2008-01-06 15:17 ` Alan Mackenzie
2008-01-06 20:35   ` Stefan Monnier
2008-01-07  6:53     ` Andreas Röhler
2008-01-07  4:18 ` Richard Stallman
  -- strict thread matches above, loose matches on Subject: below --
2008-01-06 17:21 Robert J. Chassell
2008-01-06 19:45 ` Tom Tromey
2008-01-07  0:15   ` Stephen J. Turnbull

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