From f95cea70673ca739373827e21a35f92e4240ba75 Mon Sep 17 00:00:00 2001 From: Jethro Kuan Date: Tue, 26 May 2020 14:52:51 +0800 Subject: [PATCH] (feat): doctor: add check for misspelled roam properties (#703) --- org-roam-doctor.el | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/org-roam-doctor.el b/org-roam-doctor.el index 8463b75..006107a 100644 --- a/org-roam-doctor.el +++ b/org-roam-doctor.el @@ -69,6 +69,9 @@ :actions '(("d" . ("Unlink" . org-roam-doctor--remove-link)) ("r" . ("Replace link" . org-roam-doctor--replace-link)) ("R" . ("Replace link (keep label)" . org-roam-doctor--replace-link-keep-label)))) + (make-org-roam-doctor-checker + :name 'org-roam-doctor-check-roam-props + :description "Check #+ROAM_* properties.") (make-org-roam-doctor-checker :name 'org-roam-doctor-check-tags :description "Check #+ROAM_TAGS.") @@ -76,6 +79,28 @@ :name 'org-roam-doctor-check-alias :description "Check #+ROAM_ALIAS."))) +(defconst org-roam-doctor--supported-roam-properties + '("ROAM_TAGS" "ROAM_ALIAS") + "List of supported Org-roam properties.") + +(defun org-roam-doctor-check-roam-props (ast) + "Checker for detecting invalid #+ROAM_* properties. +AST is the org-element parse tree." + (let (reports) + (org-element-map ast 'keyword + (lambda (kw) + (let ((key (org-element-property :key kw))) + (when (and (string-prefix-p "ROAM_" key) + (not (member key org-roam-doctor--supported-roam-properties))) + (push + `(,(org-element-property :begin kw) + ,(concat "Possible mispelled key: " + (prin1-to-string key) + "\nOrg-roam supports the following keys: " + (s-join ", " org-roam-doctor--supported-roam-properties))) + reports))))) + reports)) + (defun org-roam-doctor-check-tags (ast) "Checker for detecting invalid #+ROAM_TAGS. AST is the org-element parse tree."