Намерих тази чудесна малка функция за Org-mode:
;;; Move to next heading with dedicated buffer preview
(defun ded/org-show-next-heading-tidily ()
"Show next entry, keeping other entries closed."
(if (save-excursion (end-of-line) (outline-invisible-p))
(progn (org-show-entry) (show-children))
(outline-next-heading)
(unless (and (bolp) (org-on-heading-p))
(org-up-heading-safe)
(hide-subtree)
(error "Boundary reached"))
(org-overview)
(org-reveal t)
(org-show-entry)
(show-children)))
Той се движи от заглавие към заглавие и показва директното съдържание и децата. Хареса ми идеята, но бих предпочел да се показва в специален буфер, използвайки (org-tree-to-indirect-buffer)
.
Опитах се да го направя така:
(defun ded/org-show-next-heading-test ()
"Show next entry, keeping other entries closed."
(if (save-excursion (end-of-line) (outline-invisible-p))
(progn (org-show-entry) (org-tree-to-indirect-buffer))
(outline-next-heading)
(unless (and (bolp) (org-on-heading-p))
(org-up-heading-safe)
(hide-subtree)
(error "Boundary reached"))
(org-overview)
(org-reveal t)
(org-tree-to-indirect-buffer)
(show-children)))
Но тогава трябва да натисна два пъти клавиша - веднъж показва записа в специален буфер и втори път все още показва записа. Опитах се да премахна функцията progn
, но след това не проработи напълно.
Не съм програмист на lisp и се опитах да играя с него около час, но безуспешно, така че ще се радвам някой с опит да ми помогне да оправя това нещо :)
Много задължен.