emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r114069: * intervals.c (set_point_from_marker): New


From: Dmitry Antipov
Subject: [Emacs-diffs] trunk r114069: * intervals.c (set_point_from_marker): New function.
Date: Thu, 29 Aug 2013 16:37:32 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 114069
revision-id: address@hidden
parent: address@hidden
committer: Dmitry Antipov <address@hidden>
branch nick: trunk
timestamp: Thu 2013-08-29 20:36:54 +0400
message:
  * intervals.c (set_point_from_marker): New function.
  * editfns.c (Fgoto_char):
  * process.c (Finternal_default_process_filter):
  * window.c (select_window_1): Use it.
  * buffer.h (set_point_from_marker): Add prototype.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/buffer.h                   buffer.h-20091113204419-o5vbwnq5f7feedwu-196
  src/editfns.c                  editfns.c-20091113204419-o5vbwnq5f7feedwu-255
  src/intervals.c                intervals.c-20091113204419-o5vbwnq5f7feedwu-519
  src/process.c                  process.c-20091113204419-o5vbwnq5f7feedwu-462
  src/window.c                   window.c-20091113204419-o5vbwnq5f7feedwu-231
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-08-29 15:32:04 +0000
+++ b/src/ChangeLog     2013-08-29 16:36:54 +0000
@@ -1,3 +1,11 @@
+2013-08-29  Dmitry Antipov  <address@hidden>
+
+       * intervals.c (set_point_from_marker): New function.
+       * editfns.c (Fgoto_char):
+       * process.c (Finternal_default_process_filter):
+       * window.c (select_window_1): Use it.
+       * buffer.h (set_point_from_marker): Add prototype.
+
 2013-08-29  Eli Zaretskii  <address@hidden>
 
        * w32.c (term_winsock): Call release_listen_threads before calling

=== modified file 'src/buffer.h'
--- a/src/buffer.h      2013-08-27 18:47:55 +0000
+++ b/src/buffer.h      2013-08-29 16:36:54 +0000
@@ -249,6 +249,7 @@
 extern void set_point_both (ptrdiff_t, ptrdiff_t);
 extern void temp_set_point_both (struct buffer *,
                                 ptrdiff_t, ptrdiff_t);
+extern void set_point_from_marker (Lisp_Object);
 extern void enlarge_buffer_text (struct buffer *, ptrdiff_t);
 
 

=== modified file 'src/editfns.c'
--- a/src/editfns.c     2013-08-27 18:47:55 +0000
+++ b/src/editfns.c     2013-08-29 16:36:54 +0000
@@ -233,26 +233,12 @@
 The return value is POSITION.  */)
   (register Lisp_Object position)
 {
-  ptrdiff_t pos;
-
-  if (MARKERP (position)
-      && current_buffer == XMARKER (position)->buffer)
-    {
-      pos = marker_position (position);
-      if (pos < BEGV)
-       SET_PT_BOTH (BEGV, BEGV_BYTE);
-      else if (pos > ZV)
-       SET_PT_BOTH (ZV, ZV_BYTE);
-      else
-       SET_PT_BOTH (pos, marker_byte_position (position));
-
-      return position;
-    }
-
-  CHECK_NUMBER_COERCE_MARKER (position);
-
-  pos = clip_to_bounds (BEGV, XINT (position), ZV);
-  SET_PT (pos);
+  if (MARKERP (position))
+    set_point_from_marker (position);
+  else if (INTEGERP (position))
+    SET_PT (clip_to_bounds (BEGV, XINT (position), ZV));
+  else
+    wrong_type_argument (Qinteger_or_marker_p, position);
   return position;
 }
 

=== modified file 'src/intervals.c'
--- a/src/intervals.c   2013-06-30 15:14:45 +0000
+++ b/src/intervals.c   2013-08-29 16:36:54 +0000
@@ -1821,6 +1821,18 @@
   set_point_both (charpos, buf_charpos_to_bytepos (current_buffer, charpos));
 }
 
+/* Set PT from MARKER's clipped position.  */
+
+void
+set_point_from_marker (Lisp_Object marker)
+{
+  if (XMARKER (marker)->buffer != current_buffer)
+    error ("Marker points into wrong buffer");
+  set_point_both
+    (clip_to_bounds (BEGV, marker_position (marker), ZV),
+     clip_to_bounds (BEGV_BYTE, marker_byte_position (marker), ZV_BYTE));
+}
+
 /* If there's an invisible character at position POS + TEST_OFFS in the
    current buffer, and the invisible property has a `stickiness' such that
    inserting a character at position POS would inherit the property it,

=== modified file 'src/process.c'
--- a/src/process.c     2013-08-27 19:36:28 +0000
+++ b/src/process.c     2013-08-29 16:36:54 +0000
@@ -5178,15 +5178,10 @@
 
       bset_read_only (current_buffer, Qnil);
 
-      /* Insert new output into buffer
-        at the current end-of-output marker,
-        thus preserving logical ordering of input and output.  */
+      /* Insert new output into buffer at the current end-of-output
+        marker, thus preserving logical ordering of input and output.  */
       if (XMARKER (p->mark)->buffer)
-       SET_PT_BOTH (clip_to_bounds (BEGV,
-                                    marker_position (p->mark), ZV),
-                    clip_to_bounds (BEGV_BYTE,
-                                    marker_byte_position (p->mark),
-                                    ZV_BYTE));
+       set_point_from_marker (p->mark);
       else
        SET_PT_BOTH (ZV, ZV_BYTE);
       before = PT;

=== modified file 'src/window.c'
--- a/src/window.c      2013-08-27 03:52:21 +0000
+++ b/src/window.c      2013-08-29 16:36:54 +0000
@@ -549,15 +549,7 @@
      than one window.  It also matters when
      redisplay_window has altered point after scrolling,
      because it makes the change only in the window.  */
-  {
-    register ptrdiff_t new_point = marker_position (XWINDOW (window)->pointm);
-    if (new_point < BEGV)
-      SET_PT (BEGV);
-    else if (new_point > ZV)
-      SET_PT (ZV);
-    else
-      SET_PT (new_point);
-  }
+  set_point_from_marker (XWINDOW (window)->pointm);
 }
 
 DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]