changeset 93884:b4877813e2df

(Qdeactivate_mark): New var. (command_loop_1): Use it to call `deactivate-mark'. (syms_of_keyboard): Initialize it.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 09 Apr 2008 03:29:46 +0000
parents 722fdbc7a012
children 6c6216b3b878
files src/ChangeLog src/keyboard.c
diffstat 2 files changed, 10 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Wed Apr 09 03:25:14 2008 +0000
+++ b/src/ChangeLog	Wed Apr 09 03:29:46 2008 +0000
@@ -1,5 +1,9 @@
 2008-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* keyboard.c (Qdeactivate_mark): New var.
+	(command_loop_1): Use it to call `deactivate-mark'.
+	(syms_of_keyboard): Initialize it.
+
 	* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
 	to another frame.
 	* frame.c (do_switch_frame): Refine the top_frame/async_visible code.
--- a/src/keyboard.c	Wed Apr 09 03:25:14 2008 +0000
+++ b/src/keyboard.c	Wed Apr 09 03:29:46 2008 +0000
@@ -397,6 +397,7 @@
 
 /* Non-nil means deactivate the mark at end of this command.  */
 Lisp_Object Vdeactivate_mark;
+Lisp_Object Qdeactivate_mark;
 
 /* Menu bar specified in Lucid Emacs fashion.  */
 
@@ -1977,17 +1978,8 @@
 	  else if (EQ (Vtransient_mark_mode, Qonly))
 	    Vtransient_mark_mode = Qidentity;
 
-	  if (!NILP (Vdeactivate_mark) && !NILP (Vtransient_mark_mode))
-	    {
-	      /* We could also call `deactivate'mark'.  */
-	      if (EQ (Vtransient_mark_mode, Qlambda))
-		Vtransient_mark_mode = Qnil;
-	      else
-		{
-		  current_buffer->mark_active = Qnil;
-		  call1 (Vrun_hooks, intern ("deactivate-mark-hook"));
-		}
-	    }
+	  if (!NILP (Vdeactivate_mark))
+	    call0 (Qdeactivate_mark);
 	  else if (current_buffer != prev_buffer || MODIFF != prev_modiff)
 	    call1 (Vrun_hooks, intern ("activate-mark-hook"));
 	}
@@ -2039,6 +2031,7 @@
      can't be usefully combined anyway.  */
   while (check_composition || check_display || check_invisible)
     {
+      /* FIXME: check `intangible'.  */
       if (check_composition
 	  && PT > BEGV && PT < ZV
 	  && get_property_and_range (PT, Qcomposition, &val, &beg, &end, Qnil)
@@ -12283,6 +12276,8 @@
 and tests the value when the command returns.
 Buffer modification stores t in this variable.  */);
   Vdeactivate_mark = Qnil;
+  Qdeactivate_mark = intern ("deactivate-mark");
+  staticpro (&Qdeactivate_mark);
 
   DEFVAR_LISP ("command-hook-internal", &Vcommand_hook_internal,
 	       doc: /* Temporary storage of pre-command-hook or post-command-hook.  */);