mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-02 08:22:22 +00:00
* callint.c (Fcall_interactively): For '^' just delegate the work to
handle-shift-selection. (syms_of_callint): Move declaration of shift-select-mode to simple.el. * simple.el (shift-select-mode): Move declaration from callint.c. (handle-shift-selection): Remove `deactivate' arg and check shift-select-mode instead.
This commit is contained in:
parent
6c01cfb683
commit
84db11d602
@ -1,3 +1,9 @@
|
||||
2009-03-26 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* simple.el (shift-select-mode): Move declaration from callint.c.
|
||||
(handle-shift-selection): Remove `deactivate' arg and check
|
||||
shift-select-mode instead.
|
||||
|
||||
2009-03-26 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* align.el (align-large-region, align-perl-modes, align-rules-list)
|
||||
|
@ -3746,33 +3746,44 @@ mode temporarily."
|
||||
(t (activate-mark)))
|
||||
nil))
|
||||
|
||||
(defun handle-shift-selection (&optional deactivate)
|
||||
(defvar shift-select-mode t
|
||||
"When non-nil, shifted motion keys activate the mark momentarily.
|
||||
|
||||
While the mark is activated in this way, any shift-translated point
|
||||
motion key extends the region, and if Transient Mark mode was off, it
|
||||
is temporarily turned on. Furthermore, the mark will be deactivated
|
||||
by any subsequent point motion key that was not shift-translated, or
|
||||
by any action that normally deactivates the mark in Transient Mark mode.
|
||||
|
||||
See `this-command-keys-shift-translated' for the meaning of
|
||||
shift-translation.")
|
||||
|
||||
(defun handle-shift-selection ()
|
||||
"Activate/deactivate mark depending on invocation thru ``shift translation.''
|
||||
|
||||
\(See `this-command-keys-shift-translated' for the meaning of
|
||||
shift translation.)
|
||||
|
||||
This is called whenever a command with a `^' character in its
|
||||
`interactive' spec is invoked while `shift-select-mode' is
|
||||
non-nil.
|
||||
`interactive' spec is invoked.
|
||||
Its behavior is controlled by `shift-select-mode'.
|
||||
|
||||
If the command was invoked through shift translation, set the
|
||||
mark and activate the region temporarily, unless it was already
|
||||
set in this way. If the command was invoked without shift
|
||||
translation, or if the optional argument DEACTIVATE is non-nil,
|
||||
translation, or if the region was activated by the mouse,
|
||||
deactivate the mark if the region is temporarily active."
|
||||
(cond ((and this-command-keys-shift-translated
|
||||
(null deactivate))
|
||||
(unless (and mark-active
|
||||
(eq (car-safe transient-mark-mode) 'only))
|
||||
(setq transient-mark-mode
|
||||
(cons 'only
|
||||
(unless (eq transient-mark-mode 'lambda)
|
||||
transient-mark-mode)))
|
||||
(push-mark nil nil t)))
|
||||
((eq (car-safe transient-mark-mode) 'only)
|
||||
(setq transient-mark-mode (cdr transient-mark-mode))
|
||||
(deactivate-mark))))
|
||||
(cond ((and shift-select-mode this-command-keys-shift-translated)
|
||||
(unless (and mark-active
|
||||
(eq (car-safe transient-mark-mode) 'only))
|
||||
(setq transient-mark-mode
|
||||
(cons 'only
|
||||
(unless (eq transient-mark-mode 'lambda)
|
||||
transient-mark-mode)))
|
||||
(push-mark nil nil t)))
|
||||
((eq (car-safe transient-mark-mode) 'only)
|
||||
(setq transient-mark-mode (cdr transient-mark-mode))
|
||||
(deactivate-mark))))
|
||||
|
||||
(define-minor-mode transient-mark-mode
|
||||
"Toggle Transient Mark mode.
|
||||
|
@ -1,3 +1,9 @@
|
||||
2009-03-26 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* callint.c (Fcall_interactively): For '^' just delegate the work to
|
||||
handle-shift-selection.
|
||||
(syms_of_callint): Move declaration of shift-select-mode to simple.el.
|
||||
|
||||
2009-03-24 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* editfns.c (Ffloat_time): Doc fix (Bug#2768).
|
||||
|
@ -51,7 +51,7 @@ extern Lisp_Object Qface, Qminibuffer_prompt;
|
||||
even if mark_active is 0. */
|
||||
Lisp_Object Vmark_even_if_inactive;
|
||||
|
||||
Lisp_Object Vshift_select_mode, Qhandle_shift_selection;
|
||||
Lisp_Object Qhandle_shift_selection;
|
||||
|
||||
Lisp_Object Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook;
|
||||
|
||||
@ -454,14 +454,7 @@ invoke it. If KEYS is omitted or nil, the return value of
|
||||
}
|
||||
else if (*string == '^')
|
||||
{
|
||||
if (! NILP (Vshift_select_mode))
|
||||
call1 (Qhandle_shift_selection, Qnil);
|
||||
/* Even if shift-select-mode is off, temporarily active
|
||||
regions could be set using the mouse, and should be
|
||||
deactivated. */
|
||||
else if (CONSP (Vtransient_mark_mode)
|
||||
&& EQ (XCAR (Vtransient_mark_mode), Qonly))
|
||||
call1 (Qhandle_shift_selection, Qt);
|
||||
call0 (Qhandle_shift_selection);
|
||||
string++;
|
||||
}
|
||||
else break;
|
||||
@ -994,20 +987,6 @@ turns off region highlighting, but commands that use the mark
|
||||
behave as if the mark were still active. */);
|
||||
Vmark_even_if_inactive = Qt;
|
||||
|
||||
DEFVAR_LISP ("shift-select-mode", &Vshift_select_mode,
|
||||
doc: /* When non-nil, shifted motion keys activate the mark momentarily.
|
||||
|
||||
While the mark is activated in this way, any shift-translated point
|
||||
motion key extends the region, and if Transient Mark mode was off, it
|
||||
is temporarily turned on. Furthermore, the mark will be deactivated
|
||||
by any subsequent point motion key that was not shift-translated, or
|
||||
by any action that normally deactivates the mark in Transient Mark
|
||||
mode.
|
||||
|
||||
See `this-command-keys-shift-translated' for the meaning of
|
||||
shift-translation. */);
|
||||
Vshift_select_mode = Qt;
|
||||
|
||||
DEFVAR_LISP ("mouse-leave-buffer-hook", &Vmouse_leave_buffer_hook,
|
||||
doc: /* Hook to run when about to switch windows with a mouse command.
|
||||
Its purpose is to give temporary modes such as Isearch mode
|
||||
|
Loading…
Reference in New Issue
Block a user