(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 来防止误操作,