[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] == ' ') {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs buffer.c latex-mode.c,
Charlie Gordon <=