From: Ihor Radchenko <yantar92@posteo.net>
To: sebastien.miquel@posteo.eu
Cc: wolf <wolf@wolfsden.cz>, emacs-orgmode@gnu.org
Subject: Re: [BUG] Source block indentation does not work properly for yaml-mode [9.6.6 ( @ /home/user/.emacs.d/elpa/org-9.6.6/)]
Date: Wed, 28 Jun 2023 09:21:28 +0000 [thread overview]
Message-ID: <87o7l0vt5z.fsf@localhost> (raw)
In-Reply-To: <af982099-518a-aa3c-f282-400eccc4d6ff@posteo.eu>
Sébastien Miquel <sebastien.miquel@posteo.eu> writes:
> Here are two patches, the first that removes the special case logic
> for LaTeX fragments, and the second that implements what you suggest,
> and applies on top of the first one. Does that look ok to you ?
Thanks!
> + ;; Apply WRITE-BACK function on edit buffer contents.
> + (goto-char (point-min))
> + (when (functionp write-back) (save-excursion (funcall write-back)))
> (set-marker marker nil))))
`save-excursion' is no longer necessary here.
> (defun org-src--edit-element
> @@ -1150,7 +1149,14 @@ Throw an error when not at such a table."
> (lambda ()
> ;; Blank lines break things, replace with a single newline.
> (while (re-search-forward "\n[ \t]*\n" nil t) (replace-match "\n"))
> - ;; If within a table a newline would disrupt the structure,
> + ;; Trim contents.
It would be nice to have a bit more context about the purpose in the
comment here.
> Subject: [PATCH] org-src.el: Use native value of `indent-tabs-mode' for
> indentation
>
> * lisp/org-src.el (org-src--contents-for-write-back): Preserve the
> native indentation (spaces vs tabs). If necessary, add a common org
> indentation to the block according to org's `indent-tabs-mode'.
> (org-src-font-lock-fontify-block): In case of mixed indentation,
> display the tab characters with a fixed width, according to the native
> tab width value.
> * testing/lisp/test-org-src.el (test-org-src/indented-blocks): Update
> tests. Indentation no longer obeys `indent-tabs-mode' from the org
> buffer, but is separated in two parts.
> diff --git a/lisp/org-src.el b/lisp/org-src.el
> index 5c272c7f5..5a1030c42 100644
> --- a/lisp/org-src.el
> +++ b/lisp/org-src.el
> ...
> - (skip-chars-forward " \t")
> - (when (or (not (eolp)) ; not a blank line
> - (and (eq (point) (marker-position marker)) ; current line
> + (when (or (not (eolp)) ; not an empty line
> + ;; If the current line is empty, we may
> + ;; want to indent it.
> + (and (eq (point) (marker-position marker))
> preserve-blank-line))
Do we still need this dance with special case for current line?
> + ;; Display tab indentation characters preceded by spaces as spaces
> + (unless org-src-preserve-indentation
unless? Don't we rather want to preserve the original indentation
alignment when `org-src-preserve-indentation' is t?
> + (save-excursion
> + (goto-char start)
> + (while (re-search-forward "^[ ]+\\([\t]+\\)" end t)
Why just tabs at indentation? It would make sense to preserve width of
all the tabs.
> + (let* ((b (match-beginning 1))
> + (e (match-end 1))
> + (s (make-string (* (- e b) native-tab-width) ? )))
> + (add-text-properties b e `(display ,s))))))
Will the actual tab width be always equal to native-tab-width? What
about tab stops? May it be more reliable to use different of column
numbers in the src mode buffer after/before the tab?
> @@ -318,19 +318,21 @@ This is a tab:\t.
> argument2))
> #+END_SRC"
> (setq-local indent-tabs-mode t)
> - (let ((org-edit-src-content-indentation 2)
> + (let ((tab-width 8)
> + (org-edit-src-content-indentation 2)
Why is setting tab-width necessary? 8 is the default value.
> #+BEGIN_SRC emacs-lisp<point>
> - (progn\n (function argument1\n\t\targument2))
> + (progn\n (function argument1\n \targument2))
I think it would be a bit more readable to convert this string into
actual multi-line, where the alignment is visible when reading the test
source.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
next prev parent reply other threads:[~2023-06-28 9:22 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-11 22:33 [BUG] Source block indentation does not work properly for yaml-mode [9.6.6 ( @ /home/user/.emacs.d/elpa/org-9.6.6/)] wolf
2023-06-14 12:16 ` Ihor Radchenko
2023-06-17 19:11 ` Sébastien Miquel
2023-06-18 11:16 ` Ihor Radchenko
2023-06-19 8:43 ` Sébastien Miquel
2023-06-19 11:05 ` Ihor Radchenko
2023-06-19 15:32 ` Sébastien Miquel
2023-06-20 10:02 ` Ihor Radchenko
2023-06-21 5:46 ` Sébastien Miquel
2023-06-25 10:46 ` Ihor Radchenko
2023-06-26 11:14 ` Sébastien Miquel
2023-06-26 11:45 ` Sébastien Miquel
2023-06-26 11:52 ` Ihor Radchenko
2023-06-26 12:15 ` Sébastien Miquel
2023-06-26 12:44 ` Ihor Radchenko
2023-06-27 8:54 ` Sébastien Miquel
2023-06-28 9:21 ` Ihor Radchenko [this message]
2023-06-29 15:54 ` Sébastien Miquel
2023-06-30 11:43 ` Ihor Radchenko
2023-06-30 20:27 ` Sébastien Miquel
2023-07-01 11:07 ` Ihor Radchenko
2023-07-01 17:17 ` Sébastien Miquel
2023-07-03 9:58 ` Ihor Radchenko
2023-07-03 12:49 ` Sébastien Miquel
2023-07-03 13:05 ` Ihor Radchenko
2023-07-03 13:48 ` Sébastien Miquel
2023-07-04 10:41 ` Ihor Radchenko
2023-07-06 11:01 ` Sébastien Miquel
2023-07-07 9:26 ` Ihor Radchenko
2023-07-07 9:54 ` Ihor Radchenko
2023-07-07 13:21 ` Sébastien Miquel
2023-07-08 8:44 ` Ihor Radchenko
2023-07-09 11:10 ` Sébastien Miquel
2023-07-10 8:22 ` Ihor Radchenko
2023-07-07 9:31 ` [BUG] org-list-struct-apply-struct overrides src block indentation (was: [BUG] Source block indentation does not work properly for yaml-mode [9.6.6 ( @ /home/user/.emacs.d/elpa/org-9.6.6/)]) Ihor Radchenko
2023-07-07 13:43 ` Sébastien Miquel
2023-07-08 9:06 ` Ihor Radchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87o7l0vt5z.fsf@localhost \
--to=yantar92@posteo.net \
--cc=emacs-orgmode@gnu.org \
--cc=sebastien.miquel@posteo.eu \
--cc=wolf@wolfsden.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).