Mercurial > emacs
changeset 102735:07f2395ce3db
* 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.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Thu, 26 Mar 2009 17:07:54 +0000 |
parents | c4853c1bf38c |
children | c8e6da2dab57 |
files | lisp/ChangeLog lisp/simple.el src/ChangeLog src/callint.c |
diffstat | 4 files changed, 41 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Thu Mar 26 16:21:25 2009 +0000 +++ b/lisp/ChangeLog Thu Mar 26 17:07:54 2009 +0000 @@ -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)
--- a/lisp/simple.el Thu Mar 26 16:21:25 2009 +0000 +++ b/lisp/simple.el Thu Mar 26 17:07:54 2009 +0000 @@ -3746,33 +3746,44 @@ (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.
--- a/src/ChangeLog Thu Mar 26 16:21:25 2009 +0000 +++ b/src/ChangeLog Thu Mar 26 17:07:54 2009 +0000 @@ -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).
--- a/src/callint.c Thu Mar 26 16:21:25 2009 +0000 +++ b/src/callint.c Thu Mar 26 17:07:54 2009 +0000 @@ -51,7 +51,7 @@ 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 @@ } 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 @@ 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