aboutsummaryrefslogtreecommitdiff
path: root/.ai/scripts/lint-org.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-16 11:59:40 -0500
committerCraig Jennings <c@cjennings.net>2026-05-16 11:59:40 -0500
commit70af2a019e7592089d33a0dde4a1af699175f7ef (patch)
treeccaae88fa1bc222192c92e50cd86181df08b6240 /.ai/scripts/lint-org.el
parentc5846df088a47a6f77a298bc0431dcff66e672d2 (diff)
downloadrulesets-70af2a019e7592089d33a0dde4a1af699175f7ef.tar.gz
rulesets-70af2a019e7592089d33a0dde4a1af699175f7ef.zip
chore(ai): sync lint-org and wrap-it-up from claude-templates
Project .ai/ mirror catches up to two canonical updates already in claude-templates/: - lint-org cj-comment block suppression (3fb4c80). The =#+begin_src cj: ...= annotation pattern triggered three lint categories (suspicious-language, empty-header-argument, wrong-header-argument) as false positives at todo.org:16 and todo.org:1291. lint-org.el now recognizes the opener and skips all three on those lines. - LINT_ORG_FOLLOWUPS default flipped to =./inbox/lint-followups.org= (684891d). The previous hardcoded default routed every project's wrap-up findings into the work project's inbox. Phase A startup rsync brought both into the project mirror this morning; bundled into one chore commit since neither delta is project-specific work.
Diffstat (limited to '.ai/scripts/lint-org.el')
-rw-r--r--.ai/scripts/lint-org.el18
1 files changed, 18 insertions, 0 deletions
diff --git a/.ai/scripts/lint-org.el b/.ai/scripts/lint-org.el
index 3e643d4..64b78d0 100644
--- a/.ai/scripts/lint-org.el
+++ b/.ai/scripts/lint-org.el
@@ -221,11 +221,29 @@ org-lint reports the blank line after the heading-like text."
;; Fixer declined — emit as judgment so nothing is silently swallowed.
(lo--emit-judgment name line msg))))
+(defun lo--cj-comment-block-opener-p (line)
+ "Non-nil when LINE in the current buffer is a `#+begin_src cj: ...' opener.
+The cj-comment annotation convention puts `cj:' as the src-block language and
+`comment' as the apparent header arg. org-lint reads that shape three ways
+(unknown language, empty header-arg value, missing colon in header arg) and
+flags each — all three are false positives, since cj-comment is a
+Craig-specific annotation marker rather than Babel src-block syntax."
+ (save-excursion
+ (lo--goto-line line)
+ (looking-at-p "^[ \t]*#\\+begin_src[ \t]+cj:")))
+
(defun lo--handle-item (item)
(let ((name (lo--checker-name item))
(line (lo--line item))
(msg (lo--message item)))
(cond
+ ;; Silent suppression of cj-comment false positives — see
+ ;; `lo--cj-comment-block-opener-p'. No fix counted, no judgment emitted.
+ ((and (memq name '(suspicious-language-in-src-block
+ empty-header-argument
+ wrong-header-argument))
+ (lo--cj-comment-block-opener-p line))
+ nil)
((eq name 'item-number)
(lo--apply-or-preview name line msg #'lo-fix-item-number))
((eq name 'missing-language-in-src-block)