emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Forcing tab-width to be 8 makes using Python source blocks very difficult
@ 2024-03-16  5:32 Rudi C
  2024-03-16  9:41 ` Ihor Radchenko
  0 siblings, 1 reply; 5+ messages in thread
From: Rudi C @ 2024-03-16  5:32 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1071 bytes --]

Recently, a breaking change has been introduced in Org mode that sets the
default tab-width to 8 spaces (
https://list.orgmode.org/orgmode/8734y5d2gs.fsf@localhost/). This change
has made using Python source blocks in Org mode challenging, as operations
like `evil-org->` rely on `tab-width`, and Python code conventions
typically use 4 spaces for indentation.

Moreover, using 8 spaces for indentation is generally unsuitable for small
laptop screens, where screen real estate is of utmost importance.
Personally, I have been using a hook to force `tab-width` back to 4 spaces,
but this has resulted in persistent warnings:
```
Error running timer 'org-indent-initialize-agent': (error "Tab width in Org
files must be 8, not 4.  Please adjust your 'tab-width' settings for Org
mode.") [4 times]
```

In my opinion, the touted benefits of consistency brought by this breaking
change do not justify the inconvenience it causes. I prefer customizable
software that can be adapted to various situations, rather than enforcing
uniform behavior.

PS: Please use Reply to All.

[-- Attachment #2: Type: text/html, Size: 1229 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Forcing tab-width to be 8 makes using Python source blocks very difficult
  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
  0 siblings, 1 reply; 5+ messages in thread
From: Ihor Radchenko @ 2024-03-16  9:41 UTC (permalink / raw)
  To: Rudi C; +Cc: emacs-orgmode

Rudi C <rudiwillalwaysloveyou@gmail.com> writes:

> Recently, a breaking change has been introduced in Org mode that sets the
> default tab-width to 8 spaces (
> https://list.orgmode.org/orgmode/8734y5d2gs.fsf@localhost/). This change
> has made using Python source blocks in Org mode challenging, as operations
> like `evil-org->` rely on `tab-width`, and Python code conventions
> typically use 4 spaces for indentation.

May you please provide more details on what exactly "evil-org->" refers
to and what specific problems you encountered?

> Moreover, using 8 spaces for indentation is generally unsuitable for small
> laptop screens, where screen real estate is of utmost importance.

May you please provide a detailed example where 8 spaces causes issues?
In source blocks specifically, we make sure that tab width visually
looks as in the corresponding source code buffer.

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Forcing tab-width to be 8 makes using Python source blocks very difficult
  2024-03-16  9:41 ` Ihor Radchenko
@ 2024-03-16 10:27   ` Rudi C
  2024-03-16 11:02     ` Ihor Radchenko
  0 siblings, 1 reply; 5+ messages in thread
From: Rudi C @ 2024-03-16 10:27 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 2372 bytes --]

`evil-org->` doesn't matter per se. It runs `evil-shift-right`, which
indents the selected region by the `evil-shift-width` amount.
`evil-shift-width` is set based on `tab-width`. 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.

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

So I don't see the effects of `tab-width` anywhere except in
`evil-shift-width`, as far as I can see currently.

On Sat, Mar 16, 2024 at 1:11 PM Ihor Radchenko <yantar92@posteo.net> wrote:

> Rudi C <rudiwillalwaysloveyou@gmail.com> writes:
>
> > Recently, a breaking change has been introduced in Org mode that sets the
> > default tab-width to 8 spaces (
> > https://list.orgmode.org/orgmode/8734y5d2gs.fsf@localhost/). This change
> > has made using Python source blocks in Org mode challenging, as
> operations
> > like `evil-org->` rely on `tab-width`, and Python code conventions
> > typically use 4 spaces for indentation.
>
> May you please provide more details on what exactly "evil-org->" refers
> to and what specific problems you encountered?
>
> > Moreover, using 8 spaces for indentation is generally unsuitable for
> small
> > laptop screens, where screen real estate is of utmost importance.
>
> May you please provide a detailed example where 8 spaces causes issues?
> In source blocks specifically, we make sure that tab width visually
> looks as in the corresponding source code buffer.
>
> --
> 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>
>

[-- Attachment #2: Type: text/html, Size: 3237 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Forcing tab-width to be 8 makes using Python source blocks very difficult
  2024-03-16 10:27   ` Rudi C
@ 2024-03-16 11:02     ` Ihor Radchenko
  2024-03-16 17:39       ` Rudi C
  0 siblings, 1 reply; 5+ messages in thread
From: Ihor Radchenko @ 2024-03-16 11:02 UTC (permalink / raw)
  To: Rudi C; +Cc: emacs-orgmode

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>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Forcing tab-width to be 8 makes using Python source blocks very difficult
  2024-03-16 11:02     ` Ihor Radchenko
@ 2024-03-16 17:39       ` Rudi C
  0 siblings, 0 replies; 5+ messages in thread
From: Rudi C @ 2024-03-16 17:39 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 2793 bytes --]

Thanks, I don't have any problems now, so we can consider this closed.

On Sat, Mar 16, 2024 at 2:32 PM Ihor Radchenko <yantar92@posteo.net> wrote:

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

[-- Attachment #2: Type: text/html, Size: 3913 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-03-16 17:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2024-03-16 17:39       ` Rudi C

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