Quellcode durchsuchen

Long chars fixed; Position cursor at end of line on error

Arthur Yefimov vor 3 Jahren
Ursprung
Commit
90dc198f83
3 geänderte Dateien mit 23 neuen und 28 gelöschten Zeilen
  1. 7 16
      src/EditorText.Mod
  2. 4 0
      src/FreeOberon.Mod
  3. 12 12
      src/make.sh

+ 7 - 16
src/EditorText.Mod

@@ -438,16 +438,12 @@ VAR i, centerY, tx, ty: INTEGER; L: Line;
 BEGIN L := t.first; tx := 0; ty := 0; DEC(line); DEC(col);
   WHILE (L # NIL) & (ty # line) DO L := L.next; INC(ty) END;
   IF L # NIL THEN
-    WHILE (L.s[tx] # 0X) & (col > 0) DO
-      IF L.s[tx] < 80X THEN DEC(col) ELSE DEC(col, 2) END;
-      INC(tx)
-    END;
-    IF L.s[tx] # 0X THEN t.x := tx; t.y := ty; t.cur := L;
-      IF (ty > t.scrY + winH - 4) OR (ty < t.scrY + 1) THEN 
-        i := 5; IF i > winH DIV 2 THEN i := winH DIV 2 END;
-        WHILE (L.prev # NIL) & (i # 0) DO L := L.prev; DEC(i); DEC(ty) END;
-        t.scrFirst := L; t.scrY := ty
-      END
+    WHILE (L.s[tx] # 0X) & (col > 0) DO DEC(col); INC(tx) END;
+    t.x := tx; t.y := ty; t.cur := L;
+    IF (ty > t.scrY + winH - 4) OR (ty < t.scrY + 1) THEN 
+      i := 5; IF i > winH DIV 2 THEN i := winH DIV 2 END;
+      WHILE (L.prev # NIL) & (i # 0) DO L := L.prev; DEC(i); DEC(ty) END;
+      t.scrFirst := L; t.scrY := ty
     END
   END
 END MoveToLineCol;
@@ -457,12 +453,7 @@ CONST pad = 3;
 VAR i, centerY: INTEGER; L: Line;
 BEGIN L := t.first; t.x := 0; t.y := 0;
   REPEAT
-    WHILE (L.s[t.x] # 0X) & (pos > 0) DO
-      IF (ORD(L.s[t.x]) > 127) & (pos >= 2) THEN DEC(pos, 2)
-      ELSE DEC(pos)
-      END;
-      INC(t.x)
-    END;
+    WHILE (L.s[t.x] # 0X) & (pos > 0) DO DEC(pos); INC(t.x) END;
     IF (pos >= L.lineEndLen) & (L.next # NIL) THEN
       DEC(pos, L.lineEndLen); L := L.next; INC(t.y); t.x := 0
     END

+ 4 - 0
src/FreeOberon.Mod

@@ -550,9 +550,13 @@ BEGIN
       END;
       Utf8.Decode(buf, z);
       ParseErrors(z, fname, line, col, error);
+      Out.Int(line, 10);Out.Int(col, 10);Out.Ln;;;;;;;
       FocusOrOpenFile(fname);
       e := app.windows(Editor.Editor);
       e.text.MoveToLineCol(line, col, e.h - 2);
+      IF (col = 1) & (line # 1) & (TRUE) THEN
+        e.text.MoveToLineCol(line - 1, 256, e.h - 2)
+      END;
       Editor.PrintText(app.windows(Editor.Editor))
     ELSIF link THEN z := 'Linking failed.'
     ELSE z := 'Compilation failed.'

+ 12 - 12
src/make.sh

@@ -11,14 +11,14 @@ CC="gcc"
 AR="ar"
 CCFULL="$CC -g3 -O0 -fno-exceptions -I $OFRDIR/../../Mod/Lib -I $OFRDIR/Lib/Obj"
 
-$OFR -C Config_linux.Mod
-$OFR -C Utf8.Mod
-$OFR -C Strings.Mod
-$OFR -C Reals.Mod
-$OFR -C Int.Mod
-$OFR -C In.Mod
-$OFR -C Out.Mod
-$OFR -C Files.Mod
+$OFR -Cw Config_linux.Mod
+$OFR -Cw Utf8.Mod
+$OFR -Cw Strings.Mod
+$OFR -Cw Reals.Mod
+$OFR -Cw Int.Mod
+$OFR -Cw In.Mod
+$OFR -Cw Out.Mod
+$OFR -Cw Files.Mod
 $OFR -7w Texts.Mod
 $OFR -7w Random.Mod
 $OFR -7w StrList.Mod
@@ -26,11 +26,11 @@ $OFR -7w Dir.Mod
 $OFR -7w Allegro5.Mod
 $OFR -7w Graph2.Mod
 $OFR -7w TermBox.Mod
-$OFR -C Term.Mod
+$OFR -Cw Term.Mod
 $OFR -7w OV.Mod
-$OFR -C EditorText.Mod
-$OFR -C Editor.Mod
-$OFR -Cm FreeOberon.Mod
+$OFR -Cw EditorText.Mod
+$OFR -Cw Editor.Mod
+$OFR -Cwm FreeOberon.Mod
 
 $CCFULL -c Utf8.c
 $CCFULL -c Strings.c