浏览代码

new method for redner line

Borys Palka 5 年之前
父节点
当前提交
25b1dc82e1
共有 2 个文件被更改,包括 40 次插入24 次删除
  1. 32 15
      src/breakpointsService.ts
  2. 8 9
      src/notebookTracker/index.ts

+ 32 - 15
src/breakpointsService.ts

@@ -62,20 +62,37 @@ export class BreakpointsService {
     this.selectedBreakpointsChanged.emit([]);
   }
 
-  changeLines(lineInfo: LineInfo, sign: number) {
-    // need better way, maybe just look to gutter in editor?
-    const breakpoints = this.selectedBreakpoints.map(ele => {
-      if (
-        ele.line > lineInfo.line ||
-        (lineInfo.text === '' && lineInfo.line === ele.line)
-      ) {
-        ele.line = ele.line + sign;
-      }
-      if (ele.line > 0) {
-        return ele;
-      }
-    });
-    this.selectedBreakpoints = [...breakpoints];
-    this.selectedBreakpointsChanged.emit(this.selectedBreakpoints);
+  changeLines(linesInfo: LineInfo[]) {
+    if (!linesInfo && this.breakpoints.length === 0) {
+      return;
+    }
+    if (linesInfo.length === 0) {
+      this.selectedBreakpoints = [];
+      this.selectedBreakpointsChanged.emit([]);
+    } else {
+      const breakpoint = { ...this.breakpoints[0] };
+      var breakpoints: Breakpoints.IBreakpoint[] = [];
+      linesInfo.forEach(ele => {
+        breakpoints.push({ ...breakpoint, line: ele.line });
+      });
+      this.selectedBreakpoints = [...breakpoints];
+      this.selectedBreakpointsChanged.emit(this.selectedBreakpoints);
+    }
   }
 }
+
+// changeLines(lineInfo: LineInfo, sign: number) {
+//   const breakpoints = this.selectedBreakpoints.map(ele => {
+//     if (
+//       ele.line > lineInfo.line ||
+//       (lineInfo.text === '' && lineInfo.line === ele.line)
+//     ) {
+//       ele.line = ele.line + sign;
+//     }
+//     if (ele.line > 0) {
+//       return ele;
+//     }
+//   });
+//   this.selectedBreakpoints = [...breakpoints];
+//   this.selectedBreakpointsChanged.emit(this.selectedBreakpoints);
+// }

+ 8 - 9
src/notebookTracker/index.ts

@@ -28,7 +28,7 @@ export class DebuggerNotebookTracker {
     this.breakpointService.selectedBreakpointsChanged.connect(
       (sender, update) => {
         if (update && update.length === 0) {
-          this.clearGutter(this.getCell());
+          // this.clearGutter(this.getCell());
         }
       }
     );
@@ -149,17 +149,16 @@ export class DebuggerNotebookTracker {
     if (lineInfo.handle && lineInfo.handle.order === false) {
       return;
     }
-
     const doc: Doc = editor.getDoc();
     const linesNumber = doc.lineCount();
-
     if (this.previousLineCount !== linesNumber) {
-      if (this.previousLineCount < linesNumber) {
-        this.breakpointService.changeLines(lineInfo, +1);
-      }
-      if (this.previousLineCount > linesNumber) {
-        this.breakpointService.changeLines(lineInfo, -1);
-      }
+      var lines: LineInfo[] = [];
+      doc.eachLine(line => {
+        if ((line as LineInfo).gutterMarkers) {
+          lines.push(editor.lineInfo(line));
+        }
+      });
+      this.breakpointService.changeLines(lines);
       this.previousLineCount = linesNumber;
     }
   };