diff --git a/lisp/lib/docs.el b/lisp/lib/docs.el index c3b0056cd..b30a3072a 100644 --- a/lisp/lib/docs.el +++ b/lisp/lib/docs.el @@ -166,14 +166,24 @@ (defun doom-docs--hide-drawers-h () "Hide all property drawers." - (org-with-wide-buffer - (goto-char (point-min)) - (while (re-search-forward org-drawer-regexp nil t) - (let ((beg (max (point-min) (1- (match-beginning 0)))) - (end (re-search-forward org-drawer-regexp nil t))) - (unless (org-current-level) - (cl-incf end)) - (org-fold-core-region beg end doom-docs-mode 'doom-doc-hidden))))) + (let (pt) + (org-with-wide-buffer + (goto-char (point-min)) + (when (looking-at-p org-drawer-regexp) + (setq pt (org-element-property :end (org-element-at-point)))) + (while (re-search-forward org-drawer-regexp nil t) + (when-let ((el (org-element-at-point)) + (beg (max (point-min) (1- (org-element-property :begin el)))) + (end (org-element-property :end el)) + ((memq (org-element-type el) '(drawer property-drawer)))) + (when (org-current-level) + (cl-decf end)) + (org-fold-core-region beg end doom-docs-mode 'doom-doc-hidden) + (when doom-docs-mode + (org-fold-core-region beg end nil 'org-hide-drawer))))) + ;; FIX: If the cursor remains within a newly folded region, that folk will + ;; come undone, so we move it. + (if pt (goto-char pt)))) (defun doom-docs--hide-tags-h () "Hide tags in org headings." @@ -308,9 +318,8 @@ This primes `org-mode' for reading." (user-error "Not an org mode buffer")) (org-fold-add-folding-spec 'doom-doc-hidden '(:visible nil - :alias (hidden) - :isearch-open nil - :font-lock-skip t)) + :ellipsis nil + :isearch-ignore t)) (mapc (lambda (sym) (if doom-docs-mode (set (make-local-variable sym) t) @@ -442,7 +451,8 @@ Keeps track of its own IDs in `doom-docs-dir' and toggles `doom-docs-mode' when (org-num-mode -1)) (org-num-mode +1)) (unless (local-variable-p 'org-startup-folded) - (let ((org-startup-folded 'content)) + (let ((org-startup-folded 'content) + org-cycle-hide-drawer-startup) (org-set-startup-visibility)))) (add-hook 'read-only-mode-hook #'doom-docs--toggle-read-only-h nil 'local))) diff --git a/modules/lang/org/packages.el b/modules/lang/org/packages.el index 2da88f484..e0423ddc1 100644 --- a/modules/lang/org/packages.el +++ b/modules/lang/org/packages.el @@ -27,11 +27,11 @@ (format "(defun org-git-version (&rest _) \"%s-??-%s\")\n" version (cdr (doom-call-process "git" "rev-parse" "--short" "HEAD"))) "(provide 'org-version)\n")))) - :pin "00adad9357b9123a7b11ecf12c148a5196debcb7") + :pin "86c4635dba556da01c18f6896aa09bf05d67802b") (package! org-contrib :recipe (:host github :repo "emacsmirror/org-contrib") - :pin "39e2abc5629c1be6186bb6489ec4f76524edf82a") + :pin "0740bd3fe69c4b327420185d931dcf0a9900a80e") (package! avy) (package! htmlize :pin "dd27bc3f26efd728f2b1f01f9e4ac4f61f2ffbf9") @@ -55,7 +55,7 @@ (when (modulep! +brain) (package! org-brain :pin "46ca9f766322cff31279ecdf02251ff24a0e9431")) (when (modulep! +dragndrop) - (package! org-download :pin "947ca223643d28e189480e607df68449c15786cb")) + (package! org-download :pin "19e166f0a8c539b4144cfbc614309d47a9b2a9b7")) (when (modulep! +gnuplot) (package! gnuplot :pin "7138b139d2dca9683f1a81325c643b2744aa1ea3") (package! gnuplot-mode :pin "601f6392986f0cba332c87678d31ae0d0a496ce7")) @@ -82,7 +82,7 @@ (package! revealjs :recipe (:host github :repo "hakimel/reveal.js" :files ("css" "dist" "js" "plugin")) - :pin "e219184f37a71c406e41d55ac3212eb79797f0aa")) + :pin "c1c4145240270380140d0794bf1bfbfca6b3e101")) (cond ((modulep! +roam) (package! org-roam @@ -93,7 +93,7 @@ ;; FIXME A :recipe isn't strictly necessary, but without it, our package ;; bumper fails to distinguish between org-roam v1 and v2. :recipe (:host github :repo "org-roam/org-roam") - :pin "7f453f3fffb924ca4ae3f8d34cabc03fbcae0127"))) + :pin "d95d25615e69e7cc847641800c1886366336c97e"))) ;;; Babel (package! ob-async :pin "9aac486073f5c356ada20e716571be33a350a982") @@ -118,7 +118,7 @@ :recipe (:host github :repo "DEADB17/ob-racket") :pin "d8fd51bddb019b0eb68755255f88fc800cfe03cb")) (when (modulep! :lang rest) - (package! ob-restclient :pin "3ac834b02b8276aae1b760312612c3b940598f90")) + (package! ob-restclient :pin "1b021ce1c67c97fa1aa4d2c0816edb7add129e48")) (when (modulep! :lang scala) (package! ob-ammonite :pin "39937dff395e70aff76a4224fa49cf2ec6c57cca"))