emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ihor Radchenko <yantar92@posteo.net>
To: Rudi C <rudiwillalwaysloveyou@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Forcing tab-width to be 8 makes using Python source blocks very difficult
Date: Sat, 16 Mar 2024 11:02:06 +0000	[thread overview]
Message-ID: <87jzm2ignl.fsf@localhost> (raw)
In-Reply-To: <CAE9z9A1Chxorsuv7_BM=YBTnSvuAbrTJfhLKzPb7StHqB-RpLA@mail.gmail.com>

Rudi C <rudiwillalwaysloveyou@gmail.com> writes:

> ... runs `evil-shift-right`, which
> indents the selected region by the `evil-shift-width` amount.
> `evil-shift-width` is set based on `tab-width`.

Are you sure?
I am looking at
https://github.com/emacs-evil/evil/blob/master/evil-vars.el#L175
and it appears that `evil-shift-width' has nothing to do with
`tab-width'. It is a customization with default value of 4.

Also, do note that `evil-shift-width' in python code blocks may break
things when the code block itself is also indented. Org mode normally
discards this common indentation and takes care about distinguishing
(and not merging!) the tabs belonging to the code itself and the
tabs/spaces that are used to indent the whole code block:

     This whole code block is indented
     #+begin_src python
     def foo():
       if True:
         return 1;
     #+end_src

Indentation in Org mode blocks can be tricky and generic editing
commands may not cut it. Org mode itself does the indentation using the
code block's major mode in a separate buffer in order to keep things
consistent.

> ... I solved this specific
> problem by overriding `evil-shift-width` using a timer in an org-mode hook.
> The delay introduced by the timer was necessary, as something kept
> overriding my settings. Perhaps the magic machinery that sets `tab-width`
> in the source blocks can also set `evil-shift-width`. The best-case
> scenario would be to have a list of variables that need to be set from
> their major-mode buffer in the source blocks.

Why not simply setting `evil-shift-width' to 4?

>> May you please provide a detailed example where 8 spaces causes issues?
>
> My lists are still indenting with 2 spaces, so I am not actually seeing 8
> spaces. I have no idea why that is, but I very much like the 2-space
> indentation.
>
> ```
> - a
>   - b
> ```
>
> I see 4 spaces in numerical lists, which again, I have no idea about:
>
> ```
> 1. hi
>    2. hi
>       3. hi
> ```

Org mode aligns child sub-lists with parent item text. So, "-" is right
below "a" and "2." is right below "hi". List depth is not defined by the
absolute number of spaces/tabs.
See https://orgmode.org/manual/Plain-Lists.html

-- 
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>


  reply	other threads:[~2024-03-16 11:03 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-16  5:32 Forcing tab-width to be 8 makes using Python source blocks very difficult Rudi C
2024-03-16  9:41 ` Ihor Radchenko
2024-03-16 10:27   ` Rudi C
2024-03-16 11:02     ` Ihor Radchenko [this message]
2024-03-16 17:39       ` Rudi C

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=87jzm2ignl.fsf@localhost \
    --to=yantar92@posteo.net \
    --cc=emacs-orgmode@gnu.org \
    --cc=rudiwillalwaysloveyou@gmail.com \
    /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).