diff options
-rw-r--r-- | hex.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -398,7 +398,7 @@ app_is_character_in_locale (ucs4_t ch) // --- Field marking ----------------------------------------------------------- -/// Find the "marks_by_offset" object covering the offset (if any) +/// Find the "marks_by_offset" span covering the offset (if any) static ssize_t app_find_marks (int64_t offset) { @@ -439,6 +439,15 @@ app_mark_cmp (const void *first, const void *second) return 0; } +/// Flattens marks into sequential non-overlapping spans suitable for search +/// by offset, assigning different colors to them in the process: +/// @code +/// ________ _______ ___ +/// |________|__|_______| |___| +/// |_________| +/// ___ ____ __ _ _____ ___ ___ +/// |___|____|__|_|_____|___|___| +/// @endcode static void app_flatten_marks (void) { @@ -612,6 +621,8 @@ app_draw_info (void) struct mark **iter = marks->marks; for (int y = 0; y < app_visible_rows (); y++) { + // TODO: we can use the field background + // TODO: we can keep going through subsequent fields to fill the column struct mark *mark; if (!iter || !(mark = *iter++)) break; @@ -1517,6 +1528,10 @@ app_process_left_mouse_click (int line, int column) } else if (line < app_visible_rows ()) { + // TODO: when holding a mouse button over a mark string, + // go to a locked mode that highlights that entire mark + // (probably by inverting colors) + // TODO: employ strict checking here before the autofix int offset; if (column >= 10 && column < 50) |