From 7da69666fcdcee3fe29768476bc6bcec21dc7b70 Mon Sep 17 00:00:00 2001 From: Vineet Kumar Date: Mon, 25 May 2026 19:57:25 -0400 Subject: split hl-parse-section-ops to be not monolithic --- llm-tools-hl.el | 54 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/llm-tools-hl.el b/llm-tools-hl.el index 1854acb..f4473d3 100644 --- a/llm-tools-hl.el +++ b/llm-tools-hl.el @@ -112,31 +112,41 @@ Each element is a line number and two-character hash, like `1vx'." (payload nil) ; list of strings (nil is no payload) (raw nil)) ; raw op line text for error messages +(defun llm-tools--hl-non-empty-non-comment-line-p (line) + "Return t if LINE is not empty and not a comment (starts with #)." + (let ((trimmed (string-trim line))) + (and (not (string-empty-p trimmed)) + (not (string-prefix-p "#" trimmed))))) + +(defun llm-tools--hl-parse-op-line-for-verify (line) + "Parse a single operation LINE (e.g. \"+ 4ei\") into a `hl-verify-op`." + (let* ((trimmed (string-trim line)) + (ch (substring trimmed 0 1))) + (make-hl-verify-op + :type (pcase ch + ("+" 'insert-after) + ("<" 'insert-before) + ("-" 'delete) + ("=" 'replace)) + :anchor (string-trim (substring trimmed 1)) + :raw trimmed))) + +(defun llm-tools--hl-add-payload-to-verify-op (op payload-line) + "Append PAYLOAD-LINE (without leading ~) to OP's payload list." + (setf (hl-verify-op-payload op) + (append (hl-verify-op-payload op) (list (substring (string-trim payload-line) 1))))) + (defun llm-tools--hl-parse-section-ops (section-body) - "Parse SECTION-BODY into a list of `hl-verify-op' structs. -Skips comment lines and blank lines." + "Parse SECTION-BODY into a list of `hl-verify-op' structs." (let (ops op) (dolist (line (string-lines section-body)) - (let ((trimmed (string-trim line))) - (when (and (not (string-empty-p trimmed)) - (not (string-prefix-p "#" trimmed))) - (let ((ch (substring trimmed 0 1))) - (pcase ch - ("~" - (when op - (setf (hl-verify-op-payload op) - (append (hl-verify-op-payload op) - (list (substring trimmed 1)))))) - (_ - (when op (push op ops)) - (setq op (make-hl-verify-op - :type (pcase ch - ("+" 'insert-after) - ("<" 'insert-before) - ("-" 'delete) - ("=" 'replace)) - :anchor (string-trim (substring trimmed 1)) - :raw trimmed)))))))) + (when (llm-tools--hl-non-empty-non-comment-line-p line) + (let* ((trimmed (string-trim line)) + (ch (substring trimmed 0 1))) + (if (string= ch "~") + (when op (llm-tools--hl-add-payload-to-verify-op op trimmed)) + (when op (push op ops)) + (setq op (llm-tools--hl-parse-op-line-for-verify trimmed)))))) (when op (push op ops)) (nreverse ops))) -- cgit v1.2.3