stitch

Note taking for messy minimalists

git clone git://mccd.space/stitch
commit 90f8c5e65c96f946ab079271b52112ec36d6c42c
parent d5d547126c5fe2d0235b63e4ed964c4285bb2bfb
Author: Marc Coquand <marc@mccd.space>
Date:   Fri, 17 May 2024 17:46:46 -0500

Resolve OOB error

Diffstat:
Mlib/grep.ml | 7++++---
Mlib/stitched_article.ml | 11++++++-----
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/lib/grep.ml b/lib/grep.ml
@@ -295,8 +295,9 @@ type display_type =
 let pretty_print_parsed_content parsed_files =
   let padding = String.make headline_pattern_length ' ' in
   List.concat_map
-    (fun (file_name, line_number, line_content, _) ->
+    (fun (file_name, line_number, line_content, file_number) ->
       if line_number == 0
-      then [ Bold ("--------- " ^ file_name); Normal line_content ]
-      else [ Normal (padding ^ line_content) ])
+      then
+        [ file_number, Bold ("--------- " ^ file_name); file_number, Normal line_content ]
+      else [ file_number, Normal (padding ^ line_content) ])
     parsed_files
diff --git a/lib/stitched_article.ml b/lib/stitched_article.ml
@@ -9,7 +9,7 @@ type state =
   ; scroll : int
   ; content : (string * int * string * int) array
   ; go_back : unit -> unit
-  ; content_pretty : Grep.display_type array
+  ; content_pretty : (int * Grep.display_type) array
   ; goto_todos_view : (unit -> unit) -> unit
   ; goto_done_view : (unit -> unit) -> unit
   }
@@ -28,7 +28,7 @@ let rec render
   let img =
     let elements =
       Array.mapi
-        (fun i el -> Compontent.current_line size_x y scroll el (i + content_start))
+        (fun i (_, el) -> Compontent.current_line size_x y scroll el (i + content_start))
         (* TODO: Fix this ugly slow conversion *)
         (Array.to_seq content_pretty |> Seq.drop scroll |> Array.of_seq)
     in
@@ -109,13 +109,14 @@ let rec render
     let[@warning "-8"] (editor :: args) =
       String.split_on_char ' ' (Sys.getenv "EDITOR")
     in
-    let selected_file, line_number, _, file_number_offset =
-      Array.get content (y - content_start)
+    let file_number_offset, _ = Array.get content_pretty (y - content_start) in
+    let selected_file, line_number, _, _ =
+      Array.get content (y - content_start - file_number_offset)
     in
     let full_path_file = Grep.execution_directory ^ "/" ^ selected_file in
     (* Because each file title consists of two lines, we need to account for the offset
        it adds by removing the file_number *)
-    let line_number_arg = "+" ^ Int.to_string (line_number - file_number_offset) in
+    let line_number_arg = "+" ^ Int.to_string line_number in
     let full_args =
       Array.append (Array.of_list args) [| ""; full_path_file; line_number_arg |]
     in