qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs buffer.c latex-mode.c


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs buffer.c latex-mode.c
Date: Mon, 13 Jan 2014 10:31:56 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        14/01/13 10:31:56

Modified files:
        .              : buffer.c latex-mode.c 

Log message:
        extend eb_skip_chars, eb_delete_chars
        
        * accept negative displacement in eb_skip_chars, eb_delete_chars

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/buffer.c?cvsroot=qemacs&r1=1.56&r2=1.57
http://cvs.savannah.gnu.org/viewcvs/qemacs/latex-mode.c?cvsroot=qemacs&r1=1.38&r2=1.39

Patches:
Index: buffer.c
===================================================================
RCS file: /sources/qemacs/qemacs/buffer.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -b -r1.56 -r1.57
--- buffer.c    11 Jan 2014 15:07:14 -0000      1.56
+++ buffer.c    13 Jan 2014 10:31:56 -0000      1.57
@@ -935,10 +935,19 @@
     return ch;
 }
 
+/* compute offset after moving 'n' chars from 'offset'.
+ * 'n' can be negative
+ */ 
 int eb_skip_chars(EditBuffer *b, int offset, int n)
 {
-    while (n-- > 0)
+    while (n < 0) {
+        eb_prevc(b, offset, &offset);
+        n++;
+    }
+    while (n > 0) {
         eb_nextc(b, offset, &offset);
+        n--;
+    }
     return offset;
 }
 
@@ -955,9 +964,18 @@
     return size;
 }
 
+/* return number of bytes deleted */
 int eb_delete_chars(EditBuffer *b, int offset, int n)
 {
-    int size = eb_skip_chars(b, offset, n) -  offset;
+    int offset1 = eb_skip_chars(b, offset, n);
+    int size = offset1 - offset;
+
+    if (size < 0) {
+        offset += size;
+        offset1 -= size;
+        size = -size;
+    }        
+
     eb_delete(b, offset, size);
     return size;
 }

Index: latex-mode.c
===================================================================
RCS file: /sources/qemacs/qemacs/latex-mode.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- latex-mode.c        11 Jan 2014 14:38:30 -0000      1.38
+++ latex-mode.c        13 Jan 2014 10:31:56 -0000      1.39
@@ -153,8 +153,7 @@
     if (pos >= 2 && (buf[pos-1] == '`' || buf[pos-1] == '\'') &&
           buf[pos-1] == buf[pos-2])
     {
-        /* CG: this is incorrect for non 8-bit encodings */
-        eb_delete(s->b, s->offset - 2, 2);
+        eb_delete_chars(s->b, s->offset, -2);
         s->offset += eb_insert_uchar(s->b, s->offset, '\"');
     } else {
         if (pos == 0 || buf[pos-1] == ' ') {



reply via email to

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