diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-26 19:56:21 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-26 19:56:21 -0500 |
| commit | 34c67ddc3b72f92033ced3f86346f3483f5ba463 (patch) | |
| tree | 5df3b8c96266c6f2f6a63930d5d17aaaa32b6f35 /tests | |
| parent | 00571a577e12e4a59b1400e9712e3423e4730643 (diff) | |
| download | pearl-34c67ddc3b72f92033ced3f86346f3483f5ba463.tar.gz pearl-34c67ddc3b72f92033ced3f86346f3483f5ba463.zip | |
feat(refresh): re-tidy drawers via org-tidy when it's active
After a refresh, merge, or comment add, pearl folds property drawers so the page stays scannable. When org-tidy-mode is on, org-tidy owns drawer display with its own compact inline symbol, so a plain native fold doesn't match. Worse, org-tidy's overlays go stale when pearl rewrites the buffer, leaving the new drawers untidied.
I added pearl--hide-or-tidy-drawers, which re-tidies via org-tidy-buffer when org-tidy-mode is active and falls back to the native fold otherwise. I routed the three drawer-hide paths (full render, single-issue refresh, comment add) through it. org-tidy stays an optional soft dependency, guarded by bound-and-true-p and fboundp, so a setup without it behaves exactly as before.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test-pearl-format.el | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/test-pearl-format.el b/tests/test-pearl-format.el index 96ec395..1119734 100644 --- a/tests/test-pearl-format.el +++ b/tests/test-pearl-format.el @@ -205,5 +205,29 @@ visible while property drawers fold away." (pearl--restore-page-visibility) (should (test-pearl--line-visible-p "^:LINEAR-ID:")))))) +;;; --hide-or-tidy-drawers (optional org-tidy integration) + +;; org-tidy isn't a test dependency, so declare its mode var special here; the +;; `let' bindings below then bind it dynamically where `bound-and-true-p' reads. +(defvar org-tidy-mode) + +(ert-deftest test-pearl-hide-or-tidy-uses-org-tidy-when-active () + "With org-tidy-mode on, drawer hiding re-tidies via `org-tidy-buffer'." + (let ((tidied nil) (org-tidy-mode t)) + (cl-letf (((symbol-function 'org-tidy-buffer) (lambda () (setq tidied t))) + ((symbol-function 'pearl--hide-all-drawers) + (lambda () (error "should not native-fold when org-tidy is on")))) + (pearl--hide-or-tidy-drawers)) + (should tidied))) + +(ert-deftest test-pearl-hide-or-tidy-folds-natively-when-inactive () + "With org-tidy off, drawer hiding falls back to the native fold." + (let ((folded nil) (org-tidy-mode nil)) + (cl-letf (((symbol-function 'pearl--hide-all-drawers) (lambda () (setq folded t))) + ((symbol-function 'org-tidy-buffer) + (lambda () (error "should not tidy when org-tidy is off")))) + (pearl--hide-or-tidy-drawers)) + (should folded))) + (provide 'test-pearl-format) ;;; test-pearl-format.el ends here |
