Hi, Cdlatex environment inserted via org-cdlatex-environment-indent are pretty bad at getting the right indention. Consider:
- concept :: a long description of concept | Where | is cursor. When I call org-cdlatex-environment-indent, I expect - concept :: a long description of concept \begin{equation} | \end{equation} But I get - concept :: a long description of concept \begin{equation} | \end{equation} This is because it determines the indention after the element is inserted at column zero. So the correct indention /is/ column zero but I wanted it to be part of the description. IOW I want Org to use the correct indention of when the time when I call the command. Note that I can still get an environment at column zero by issuing the command here: - concept :: a long description of concept | This patch just fixes this for org-cdlatex-indent-environment only, but maybe it's more correct to fix it in org-indent-region? —Rasmus -- . . . It begins of course with The Internet. A Net of Peers
>From 1a61c446fa1c92df9ba28a68d13188c296b8b718 Mon Sep 17 00:00:00 2001 From: rasmus <ras...@gmx.us> Date: Tue, 10 Feb 2015 12:02:59 +0100 Subject: [PATCH] org.el: Change indention for cdlatex environments * org.el (org-cdlatex-environment-indent): Use different indent algorithm based on content above the new latex-environment. --- lisp/org.el | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 9bc67a8..e0a8842 100755 --- a/lisp/org.el +++ b/lisp/org.el @@ -18647,10 +18647,24 @@ Revert to the normal definition outside of these fragments." (defun org-cdlatex-environment-indent (&optional environment item) "Execute `cdlatex-environment' and indent the inserted environment." (interactive) - (cdlatex-environment environment item) - (let ((element (org-element-at-point))) - (org-indent-region (org-element-property :begin element) - (org-element-property :end element)))) + (let* ((ind (org-get-indentation)) + (ind-str (make-string ind ? ))) + (cdlatex-environment environment item) + (let* ((element (org-element-at-point)) + (beg (org-element-property :begin element)) + (end (org-element-property :end element))) + ;; Make a rough estimate of the indention. We do this to + ;; because `org-indent-region' will always guess column zero, + ;; when dealing with e.g. description items. + (save-excursion + ;; Walk backwards. Otherwise we'd need markers. + (goto-char end) + (beginning-of-line) + (while (>= (point) beg) + (insert ind-str) + (forward-line -1))) + ;; indent cursor + (forward-char ind)))) ;;;; LaTeX fragments -- 2.3.0