From: Don Armstrong Date: Tue, 23 Feb 2016 23:41:43 +0000 (-0600) Subject: add function to repair property drawers X-Git-Url: https://git.donarmstrong.com/?p=lib.git;a=commitdiff_plain;h=bf6a6e868a5f2cfc3c3d2e323f16f10622433a85 add function to repair property drawers --- diff --git a/emacs_el/configuration/org-mode-configuration.el b/emacs_el/configuration/org-mode-configuration.el index 59219fc..973e002 100644 --- a/emacs_el/configuration/org-mode-configuration.el +++ b/emacs_el/configuration/org-mode-configuration.el @@ -1000,4 +1000,35 @@ same directory as the org-buffer and insert a link to this file." (insert (concat "[[" my/org-insert-screenshot/filename "]]")) (org-display-inline-images)) +; from http://orgmode.org/Changes.html +(defun my/org-repair-property-drawers () + "Fix properties drawers in current buffer. + Ignore non Org buffers." + (interactive) + (when (eq major-mode 'org-mode) + (org-with-wide-buffer + (goto-char (point-min)) + (let ((case-fold-search t) + (inline-re (and (featurep 'org-inlinetask) + (concat (org-inlinetask-outline-regexp) + "END[ \t]*$")))) + (org-map-entries + (lambda () + (unless (and inline-re (org-looking-at-p inline-re)) + (save-excursion + (let ((end (save-excursion (outline-next-heading) (point)))) + (forward-line) + (when (org-looking-at-p org-planning-line-re) (forward-line)) + (when (and (< (point) end) + (not (org-looking-at-p org-property-drawer-re)) + (save-excursion + (and (re-search-forward org-property-drawer-re end t) + (eq (org-element-type + (save-match-data (org-element-at-point))) + 'drawer)))) + (insert (delete-and-extract-region + (match-beginning 0) + (min (1+ (match-end 0)) end))) + (unless (bolp) (insert "\n")))))))))))) + (provide 'org-mode-configuration)