[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs qe.c qe.h shell.c
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs qe.c qe.h shell.c |
Date: |
Mon, 10 Aug 2015 18:35:14 +0000 |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 15/08/10 18:35:14
Modified files:
. : qe.c qe.h shell.c
Log message:
shell: accept more error message formats, handle column number
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.190&r2=1.191
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.188&r2=1.189
http://cvs.savannah.gnu.org/viewcvs/qemacs/shell.c?cvsroot=qemacs&r1=1.94&r2=1.95
Patches:
Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.190
retrieving revision 1.191
diff -u -b -r1.190 -r1.191
--- qe.c 7 Aug 2015 20:56:48 -0000 1.190
+++ qe.c 10 Aug 2015 18:35:13 -0000 1.191
@@ -2135,10 +2135,10 @@
put_status(s, "Invalid position: %s", str);
}
-void do_goto_line(EditState *s, int line)
+void do_goto_line(EditState *s, int line, int column)
{
if (line >= 1)
- s->offset = eb_goto_pos(s->b, line - 1, 0);
+ s->offset = eb_goto_pos(s->b, line - 1, column > 0 ? column - 1 : 0);
}
void do_count_lines(EditState *s)
@@ -8152,7 +8152,7 @@
}
do_find_file(s, argv[i]);
if (line_num)
- do_goto_line(qs->active_window, line_num);
+ do_goto_line(qs->active_window, line_num, 1);
}
#if !defined(CONFIG_TINY) && !defined(CONFIG_WIN32)
Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.188
retrieving revision 1.189
diff -u -b -r1.188 -r1.189
--- qe.h 7 Aug 2015 16:45:11 -0000 1.188
+++ qe.h 10 Aug 2015 18:35:13 -0000 1.189
@@ -1825,7 +1825,7 @@
void word_right(EditState *s, int w);
void word_left(EditState *s, int w);
void do_goto(EditState *s, const char *str, int unit);
-void do_goto_line(EditState *s, int line);
+void do_goto_line(EditState *s, int line, int column);
void do_up_down(EditState *s, int dir);
void do_left_right(EditState *s, int dir);
void text_mouse_goto(EditState *s, int x, int y);
Index: shell.c
===================================================================
RCS file: /sources/qemacs/qemacs/shell.c,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -b -r1.94 -r1.95
--- shell.c 9 Aug 2014 17:42:15 -0000 1.94
+++ shell.c 10 Aug 2015 18:35:13 -0000 1.95
@@ -1796,8 +1796,9 @@
EditState *e;
EditBuffer *b;
int offset, found_offset;
- char filename[MAX_FILENAME_SIZE], *q;
- int line_num, c;
+ char filename[MAX_FILENAME_SIZE];
+ buf_t fnamebuf, *fname;
+ int c, line_num, col_num;
char error_message[128];
/* CG: should have a buffer flag for error source.
@@ -1836,27 +1837,42 @@
}
found_offset = offset;
/* parse filename:linenum:message */
+ /* and: filename(linenum[, col]) ...: ... */
+
/* extract filename */
- for (q = filename;;) {
+ fname = buf_init(&fnamebuf, filename, countof(filename));
+ for (;;) {
c = eb_nextc(b, offset, &offset);
if (c == '\n' || c == '\t' || c == ' ')
goto next_line;
- if (c == ':')
+ if (c == ':' || c == '(')
break;
- /* CG: utf8 issue */
- if ((q - filename) < ssizeof(filename) - 1)
- *q++ = c;
+ buf_putc_utf8(fname, c);
}
- *q = '\0';
+
/* extract line number */
- for (line_num = 0;;) {
+ for (line_num = col_num = 0;;) {
c = eb_nextc(b, offset, &offset);
- if (c == ':')
+ if (c == ':' || c == ',' || c == ')')
break;
if (!qe_isdigit(c))
goto next_line;
line_num = line_num * 10 + c - '0';
}
+ if (c == ',') {
+ for (;;) {
+ c = eb_nextc(b, offset, &offset);
+ if (c == ' ') continue;
+ if (!qe_isdigit(c))
+ break;
+ col_num = col_num * 10 + c - '0';
+ }
+ }
+ while (c != ':') {
+ if (c == '\n')
+ goto next_line;
+ c = eb_nextc(b, offset, &offset);
+ }
eb_get_strline(b, error_message, sizeof(error_message), &offset);
if (line_num >= 1) {
if (line_num != error_line_num ||
@@ -1881,7 +1897,7 @@
/* go to the error */
do_find_file(s, filename);
- do_goto_line(qs->active_window, line_num);
+ do_goto_line(qs->active_window, line_num, col_num);
put_status(s, "=> %s", error_message);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs qe.c qe.h shell.c,
Charlie Gordon <=