> That means the interesting bits in the example above are these:

> (set-mark (point))
> (beginning-of-line 0))

> ... set the mark and move point.  (Using `push-mark' instead of
> `set-mark' doesn't seem to make a difference.)

Oh, I see it now:

    % emacs -Q
    M-x icomplete-mode RET
    M-x transient-mark-mode RET
    M-SPC .. move around to select text...
    M-x ignore RET

And note how the mark is deactivated.
Note that if you instead do M-x ignore C-g, the mark stays active.
Better yet: you can reproduce the problem even if icomplete-mode is
turned off:

    % emacs -Q
    M-x transient-mark-mode RET
    M-SPC .. move around to select text...
    M-x ign RET

The problem is that the RET command modifies the minibuffer and thus sets
deactivate-mark (which is a global variable).  And after the command is
finished (we're then back in the main buffer) the command-loop notices
deactivate-mark is non-nil and thus sets mark-active to nil.
I.e. deactivate-mark was set to non-nil in buffer A and it causes
mark-active to be set to nil in buffer B.

I think the right answer is to make deactivate-mark buffer-local.


        Stefan


_______________________________________________
Emacs-pretest-bug mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Reply via email to