aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/org-config.el14
-rw-r--r--tests/manual/headline-wrap/README.org41
-rw-r--r--tests/manual/headline-wrap/fixture.org28
3 files changed, 79 insertions, 4 deletions
diff --git a/modules/org-config.el b/modules/org-config.el
index 90a0a5d2..7d66acfd 100644
--- a/modules/org-config.el
+++ b/modules/org-config.el
@@ -108,12 +108,18 @@
Group 1 is the single gap character before the tags; group 2 is the tag
string itself.")
-(defconst cj/org-tag-right-margin 5
+(defconst cj/org-tag-right-margin 9
"Columns of gap left between right-aligned tags and the window's right edge.
At least 1 keeps a glyph out of the final column, which would wrap a
-non-truncated line. The extra columns leave room for the folded-heading
-ellipsis (`org-ellipsis', \" ▾\") that org appends after the tags, so it
-stays on the heading line instead of wrapping onto its own line.")
+non-truncated line. The remaining columns reserve room for the glyphs org
+appends AFTER the tags on a folded, property-drawer heading: the org-tidy
+inline symbol (`org-tidy-properties-inline-symbol', \" ·\") and the fold
+ellipsis (`org-ellipsis', \" ▾\"). Their nominal width is 4 columns, but the
+fallback font renders the triangle wider than its reported width and the
+`:align-to' stretch rounds, so the true overflow exceeds the nominal count.
+The value is set from rendered measurement (see the headline-wrap harness),
+not arithmetic -- that mismatch is what made the earlier 5-column reserve
+wrap. Verify changes with a screenshot, never column math alone.")
(defun cj/org--tag-align-spec (tag-string)
"Return a display spec that right-aligns TAG-STRING to the window edge.
diff --git a/tests/manual/headline-wrap/README.org b/tests/manual/headline-wrap/README.org
new file mode 100644
index 00000000..dbd16a7e
--- /dev/null
+++ b/tests/manual/headline-wrap/README.org
@@ -0,0 +1,41 @@
+#+TITLE: Headline-indicator wrap — manual render check
+
+* What this guards
+
+Org headline tags are right-aligned to the window edge by a font-lock display
+property (see =cj/org-right-align-tags-keyword= in =modules/org-config.el=).
+After the tag, a folded heading that also has a property drawer renders two
+extra glyphs: the org-tidy inline symbol (" ·") and the fold ellipsis
+(=org-ellipsis=, " ▾"). =cj/org-tag-right-margin= reserves columns between the
+tag and the edge so those glyphs stay on the heading line.
+
+If the reserve is too small, the trailing " · ▾" wraps onto a second screen
+row, leaving a stray indicator line under the heading. This is a redisplay
+bug: the column arithmetic can say the glyphs fit while they visibly wrap (the
+fallback triangle renders wider than its reported width, and the =:align-to=
+stretch rounds). So it must be checked by rendering and looking, never by
+column math.
+
+* How to check
+
+1. Open =fixture.org= in this directory with the full config:
+
+ #+begin_src bash
+ emacs tests/manual/headline-wrap/fixture.org
+ #+end_src
+
+2. The =#+STARTUP: content= line folds every heading on open, so the folded
+ property-drawer headings show their " ·" and " ▾" indicators.
+
+3. Look at each =**= heading. Every one must sit on a single screen row, with
+ its tag and any trailing " ·" / " ▾" all on the heading line.
+
+ - Expected: four single-line headings, no stray indicator wrapped below any
+ of them.
+ - Regression: the first two headings (folded, with property drawers) show
+ "· ▾" wrapped onto the line beneath them.
+
+* If it regresses
+
+Raise =cj/org-tag-right-margin= in =modules/org-config.el=, reload, and re-check
+here. Confirm by the render above, not by recomputing column widths.
diff --git a/tests/manual/headline-wrap/fixture.org b/tests/manual/headline-wrap/fixture.org
new file mode 100644
index 00000000..9b4ae617
--- /dev/null
+++ b/tests/manual/headline-wrap/fixture.org
@@ -0,0 +1,28 @@
+#+TITLE: Headline-indicator wrap fixture
+#+STARTUP: content
+
+# Regression fixture for the right-aligned-tag wrap bug. A folded heading that
+# also has a property drawer renders two trailing indicators after its tag: the
+# org-tidy inline symbol (" ·") and the fold ellipsis (" ▾"). If the tag-align
+# reserve (cj/org-tag-right-margin in modules/org-config.el) is too small, those
+# indicators spill onto a second screen row. Open this file, confirm every
+# heading below stays on a single line. See README.org for steps.
+
+* Open Work
+** TODO [#B] Interactive sort/order changes for the agenda view :feature:
+:PROPERTIES:
+:ID: one
+:END:
+Body text under the first heading so the subtree folds with an ellipsis.
+** TODO [#C] Pager robustness: null customView and missing end-cursor :bug:discuss:
+:PROPERTIES:
+:ID: two
+:END:
+Body text under the second heading.
+** TODO [#B] GitHub Actions CI :chore:
+:PROPERTIES:
+:ID: three
+:END:
+Body text under the third heading.
+** TODO [#D] No property drawer here so org-tidy adds no dot :feature:
+Body under a heading that has no properties drawer.