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