如何让PROPETIES和LOGBOOK drawer只读以防止误操作

(defun org-make-properties-read-only ()
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward
            "^ *:PROPERTIES:\n\\( *:.+?:.*\n\\)+ *:END:\n" nil t)
      (add-text-properties (- (match-beginning 0) 1) (- (match-end 0) 1) '(read-only t)))))

(defun org-make-logbooks-read-only ()
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward
            "^ *:LOGBOOK:\n\\( *-.+\n\\)+ *:END:\n" nil t)
      (add-text-properties (- (match-beginning 0) 1) (- (match-end 0) 1) '(read-only t)))))

(add-hook 'org-mode-hook #'org-make-properties-read-only)
(add-hook 'org-mode-hook #'org-make-logbooks-read-only)

临时糊了一个,应该能满足要求,但是这样修改就挺麻烦的。

ps. 也可以隐藏 drawers 来防止误操作,

5 个赞