I think the problem is that M-< does more than just move point to
(point-min); it may also run (push-mark). You should be able to stop that
happening by calling beginning-of-buffer with a universal argument, i.e. use
C-u M-<. You might like to see if that helps.

 

Francis

 

From: help-emacs-windows-bounces+f.j.wright=live.co...@gnu.org
[mailto:help-emacs-windows-bounces+f.j.wright=live.co...@gnu.org] On Behalf
Of MBR
Sent: 25 May 2012 8:25 pm
To: Francis Wright
Cc: help-emacs-windows@gnu.org; 'Raymond Zeitler'
Subject: Re: [h-e-w] Why do replace commands sometimes not work?

 

Thanks, Francis.  That's a big help.  Kevin Buchs' suggestion solves this
specific case, but I define macros frequently, and within those macros I
often want to move to either the beginning or end of a narrowed region.  I'm
looking at (defun beginning-of-buffer ... in simple.el, and it's not obvious
to me why it should not be used in Lisp programs.  But as a programmer I'm
more familiar with C and its descendants.  I only have a passing
acquaintance with Lisp, so there may be things that are obvious to an
experienced Emacs-Lisp programmer that are not obvious to me.

Mark


On 5/25/2012 2:24 PM, Francis Wright wrote: 

Mark: If I run your macro with standard Emacs settings (having started it
with the -Q flag) then I see the problem that you describe, whereas if I run
with my normal settings then I don't. I think it's a question of how the
region is handled and  the significant difference is that in my normal
environment I have Delete Selection Mode turned on, whereas by default it is
off. And it's the setting when the macro is defined that seems to matter.
 
If you look at the help for M-< it says "Don't use this command in Lisp
programs!", but by using it in a macro that's effectively what you are
doing. However, rather than worrying any further about precisely why your
macro is unreliable, I suggest you use Kevin Buchs' proposal.
 
Francis
 

Reply via email to