Valentin Lab <valentin....@kalysto.org> writes: > I'm using org-mode for a long time, and I never understood quite well > how headline data were supposed to be indented, however I was happy with > what emerged to me as the default of 2 spaces (with my emacs and > org-mode version at the time). I recently updated my old emacs to > =9.5.3=, and what I thought was a default indentation was removed. > > Suddenly, I had no indentation at all for these headline-data and this > bugged me.
First of all, thanks for the patch! New contributions are always welcome. Note that we rarely change the defaults. This particular change came after extensive discussion: https://orgmode.org/list/878s4x3bwh....@gnu.org Also, it has been documented in https://orgmode.org/Changes.html I recommend reviewing the changes every time you update Org to new version. > I went through documentation, and code, and (re-)discovered > `org-adapt-indentation' that was nil in my case and is intended to stay > this way as far as I am concerned : I'm looking for a fixed indentation > whatever the depth of my outlines. > > I'm far from sure it was a default one day, but sure it was at least > suggested/enforced in my workflow with my emacs at some time. And even > if it didn't feel like it was clad in iron, it seems I'm not the only > one who was using that as I can find some examples remaining in the > current 'testing/examples' org files. > > This indentation concerns only what is called "headline data" in the > documentation of `org-adapt-indentation'. To be precise: schedules > ("SCHEDULE:", "DEADLINE:"...), clock drawer (":LOGBOOK:..."), property > drawer (":PROPERTY:..."). These are "data" appearing after the headline > as I understand them. This sounds like a reasonable addition. > If I'm a user of org-mode, I'm fairly new in the emacs lisp and hacking > community and I need to know: > - if my proposal is useful and has any chance to be accepted, It looks useful for me. > - if there are any pitfalls I delved into in matter of coding, > conventions, ... I will provide some comments on the patch below. In general, the patch looks nice. Providing tests is especially welcome. > Subject: [PATCH] org-el: Add fixed indentation of headline data > > * lisp/org.el (org-headline-data-fixed-indent-level): Definition of > new customizable variable and doc. > (org-add-planning-info): When creating planning line, force a > `org-indent-line' to indent it correctly. > (org--get-expected-indentation): If variable > `org-headline-data-fixed-indent-level' is set and line is header, > inform `org-indent-line' to indent from specified amount. > (org-adapt-indentation): Update documentation to mention new > `org-headline-data-fixed-indent-level'. Note that introducing a new customization should be documented in etc/ORG-NEWS file and probably also in the manual (17.4.2 Hard indentation). Also, I am not sure if we really need a new custom variable. We already have many. What about simply allowing an integer value of org-adapt-indentation? > TINYCHANGE > > Signed-off-by: Valentin Lab <valentin....@kalysto.org> Note that your patch is _not_ a tiny change (not <15 LOC). See https://orgmode.org/worg/org-contribute.html#first-patch and https://orgmode.org/worg/org-contribute.html#copyright Would you consider signing the copyright assignment papers with FSF? > @@ -18371,6 +18386,9 @@ ELEMENT." > ;; a footnote definition. > (org--get-expected-indentation > (org-element-property :parent previous) t)))))))))) > + ((and (not (eq org-headline-data-fixed-indent-level nil)) > + (memq type '(drawer property-drawer planning node-property clock))) > + org-headline-data-fixed-indent-level) > ;; Otherwise, move to the first non-blank line above. Why clock? It does not belong to property drawers. > @@ -1216,6 +1259,13 @@ > (org-test-with-temp-text "* H\n:PROPERTIES:\n:key:\n:END:" > (org-indent-region (point-min) (point-max)) > (buffer-string))))) > + ;; ;; Indent property drawers according to `org-adapt-indentation'. > + ;; (let ((org-adapt-indentation 'headline-data)) > + ;; (should > + ;; (equal "* H\n :PROPERTIES:\n :key:\n :END:\n\ncontent2" > + ;; (org-test-with-temp-text "* > H\n:PROPERTIES:\n:key:\n:END:\n\ncontent" > + ;; (org-indent-region (point-min) (point-max)) > + ;; (buffer-string))))) This test is commented. Is it intentional? Best, Ihor