[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs buffer.c orgmode.c qe.c qe.h
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs buffer.c orgmode.c qe.c qe.h |
Date: |
Wed, 08 Jan 2014 16:27:15 +0000 |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 14/01/08 16:27:15
Modified files:
. : buffer.c orgmode.c qe.c qe.h
Log message:
new character based APIs for buffers
* add eb_skip_chars
* rename eb_delete_nextc to eb_delete_uchar
* deprecate eb_line_pad
* use char based buffer API in orgmode
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/buffer.c?cvsroot=qemacs&r1=1.52&r2=1.53
http://cvs.savannah.gnu.org/viewcvs/qemacs/orgmode.c?cvsroot=qemacs&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.114&r2=1.115
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.111&r2=1.112
Patches:
Index: buffer.c
===================================================================
RCS file: /sources/qemacs/qemacs/buffer.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -b -r1.52 -r1.53
--- buffer.c 7 Jan 2014 00:49:14 -0000 1.52
+++ buffer.c 8 Jan 2014 16:26:44 -0000 1.53
@@ -935,8 +935,15 @@
return ch;
}
+int eb_skip_chars(EditBuffer *b, int offset, int n)
+{
+ while (n-- > 0)
+ eb_nextc(b, offset, &offset);
+ return offset;
+}
+
/* delete one character at offset 'offset', return number of bytes removed */
-int eb_delete_nextc(EditBuffer *b, int offset)
+int eb_delete_uchar(EditBuffer *b, int offset)
{
int offset1, size = 0;
@@ -948,6 +955,13 @@
return size;
}
+int eb_delete_chars(EditBuffer *b, int offset, int n)
+{
+ int offset1 = eb_skip_chars(b, offset, n);
+ eb_delete(b, offset, offset1);
+ return offset1 - offset;
+}
+
/* XXX: only stateless charsets are supported */
/* XXX: suppress that */
int eb_prevc(EditBuffer *b, int offset, int *prev_ptr)
@@ -1510,6 +1524,7 @@
return len;
}
+#if 0
/* pad current line with spaces so that it reaches column n */
void eb_line_pad(EditBuffer *b, int n)
{
@@ -1527,6 +1542,7 @@
i++;
}
}
+#endif
int eb_get_contents(EditBuffer *b, char *buf, int buf_size)
{
Index: orgmode.c
===================================================================
RCS file: /sources/qemacs/qemacs/orgmode.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- orgmode.c 7 Jan 2014 18:26:07 -0000 1.1
+++ orgmode.c 8 Jan 2014 16:27:06 -0000 1.2
@@ -137,34 +137,33 @@
/* find start of line */
eb_get_pos(s->b, &line_num, &col_num, s->offset);
offset = eb_goto_bol(s->b, s->offset);
- do {
+ for (;;) {
offsetl = offset;
len = eb_get_line(s->b, buf, countof(buf), &offsetl);
bullets = org_bullet_depth(buf, len);
if (bullets > -1) {
break;
}
- offsetl = offset;
+ if (offset == 0)
+ return;
+
offset = eb_prev_line(s->b, offset);
- } while (offsetl > 0);
+ }
- if (bullets < 0)
- return;
+ offset += eb_skip_chars(s->b, offset, bullets + 2);
- offset = eb_goto_bol(s->b, offset);
kw = org_todo_keyword(buf + bullets + 2, len - bullets);
-
if (kw > -1) {
int kwlen = strlen(OrgTodoKeywords[kw].keyword);
- eb_delete(s->b, offset + bullets + 2, kwlen + 1);
+ eb_delete_chars(s->b, offset, kwlen + 1);
}
kw++;
if (kw < countof(OrgTodoKeywords)) {
int kwlen = strlen(OrgTodoKeywords[kw].keyword);
- eb_insert(s->b, offset + bullets + 2, " ", 1);
- eb_insert(s->b, offset + bullets + 2, OrgTodoKeywords[kw].keyword,
kwlen);
+ eb_insert_uchar(s->b, offset, ' ');
+ eb_insert_utf8_buf(s->b, offset, OrgTodoKeywords[kw].keyword, kwlen);
}
}
@@ -185,11 +184,11 @@
if (col_num > 0)
offset = offsetl;
- eb_insert(s->b, offset, " \n", 2);
- do {
- eb_insert(s->b, offset, "*", 1);
- } while (bullets--);
- eb_goto_eol(s->b, offset);
+ eb_insert_utf8_buf(s->b, offset, " \n", 2);
+ while (bullets-- >= 0) {
+ eb_insert_uchar(s->b, offset, '*');
+ }
+ //eb_goto_eol(s->b, offset);
if (col_num > 0)
text_move_up_down(s, 1);
text_move_eol(s);
@@ -219,9 +218,9 @@
return;
if (dir > 0)
- eb_insert(s->b, offset, "*", 1);
+ eb_insert_uchar(s->b, offset, '*');
if (dir < 0 && bullets > 0)
- eb_delete(s->b, offset, 1);
+ eb_delete_uchar(s->b, offset);
}
static void do_org_promote_subtree(EditState *s, int dir)
@@ -240,9 +239,9 @@
return;
if (dir > 0)
- eb_insert(s->b, offset, "*", 1);
+ eb_insert_uchar(s->b, offset, '*');
else if (dir < 0 && bullets > 0)
- eb_delete(s->b, offset, 1);
+ eb_delete_uchar(s->b, offset);
else
return;
@@ -261,9 +260,9 @@
break;
if (dir > 0)
- eb_insert(s->b, offset, "*", 1);
+ eb_insert_uchar(s->b, offset, '*');
if (dir < 0 && bullets > 0)
- eb_delete(s->b, offset, 1);
+ eb_delete_uchar(s->b, offset);
}
}
Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -b -r1.114 -r1.115
--- qe.c 7 Jan 2014 14:44:23 -0000 1.114
+++ qe.c 8 Jan 2014 16:27:09 -0000 1.115
@@ -611,7 +611,7 @@
/* insert space single space then word */
if (offset == par_end ||
(col + 1 + word_size > PARAGRAPH_WIDTH)) {
- eb_delete_nextc(s->b, chunk_start);
+ eb_delete_uchar(s->b, chunk_start);
chunk_start += eb_insert_uchar(s->b, chunk_start, '\n');
if (offset < par_end) {
/* indent */
Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -b -r1.111 -r1.112
--- qe.h 7 Jan 2014 14:44:23 -0000 1.111
+++ qe.h 8 Jan 2014 16:27:12 -0000 1.112
@@ -820,6 +820,8 @@
int eb_nextc(EditBuffer *b, int offset, int *next_ptr);
__attr_nonnull((3))
int eb_prevc(EditBuffer *b, int offset, int *prev_ptr);
+int eb_skip_chars(EditBuffer *b, int offset, int n);
+int eb_delete_chars(EditBuffer *b, int offset, int n);
int eb_goto_pos(EditBuffer *b, int line1, int col1);
int eb_get_pos(EditBuffer *b, int *line_ptr, int *col_ptr, int offset);
int eb_goto_char(EditBuffer *b, int pos);
@@ -844,7 +846,7 @@
enum LogOperation op,
int offset,
int size);
-int eb_delete_nextc(EditBuffer *b, int offset);
+int eb_delete_uchar(EditBuffer *b, int offset);
int eb_insert_uchar(EditBuffer *b, int offset, int c);
int eb_insert_utf8_buf(EditBuffer *b, int offset, const char *buf, int len);
int eb_printf(EditBuffer *b, const char *fmt, ...) __attr_printf(2,3);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs buffer.c orgmode.c qe.c qe.h,
Charlie Gordon <=