branch: externals/org
commit 1ec3a43c58161609b34dfaa03e27d6e193348399
Author: Ihor Radchenko <[email protected]>
Commit: Ihor Radchenko <[email protected]>

    org-lint: Add checker for misspelled export options in properties
    
    * lisp/org-lint.el (org-lint-export-option-keywords): New linter
    checking export properties without EXPORT_.
    
    Link: https://orgmode.org/list/[email protected]
---
 lisp/org-lint.el | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/lisp/org-lint.el b/lisp/org-lint.el
index c2ed007abb..418ed8c6f5 100644
--- a/lisp/org-lint.el
+++ b/lisp/org-lint.el
@@ -742,6 +742,29 @@ Use \"export %s\" instead"
                         reports))))))))
     reports))
 
+(defun org-lint-export-option-keywords (ast)
+  "Check for options keyword properties without EXPORT_."
+  (require 'ox)
+  (let (options reports)
+    (dolist (opt org-export-options-alist)
+      (when (stringp (nth 1 opt))
+        (cl-pushnew (nth 1 opt) options :test #'equal)))
+    (dolist (backend org-export-registered-backends)
+      (dolist (opt (org-export-backend-options backend))
+        (when (stringp (nth 1 opt))
+         (cl-pushnew (nth 1 opt) options :test #'equal))))
+    (org-element-map ast 'node-property
+      (lambda (node)
+        (when (member
+               (org-element-property :key node)
+               options)
+          (push (list (org-element-property :post-affiliated node)
+                      (format "Potentially misspelled option \"%s\".  Consider 
\"EXPORT_%s\"."
+                              (org-element-property :key node)
+                              (org-element-property :key node)))
+                reports))))
+    reports))
+
 (defun org-lint-invalid-macro-argument-and-template (ast)
   (let* ((reports nil)
          (extract-placeholders
@@ -1443,6 +1466,11 @@ AST is the buffer parse tree."
   #'org-lint-unknown-options-item
   :categories '(export) :trust 'low)
 
+(org-lint-add-checker 'misspelled-export-option
+  "Report potentially misspelled export options in properties."
+  #'org-lint-export-option-keywords
+  :categories '(export) :trust 'low)
+
 (org-lint-add-checker 'invalid-macro-argument-and-template
   "Report spurious macro arguments or invalid macro templates"
   #'org-lint-invalid-macro-argument-and-template

Reply via email to