Re: Forcing tab-width to be 8 makes using Python source blocks very difficult

2024-03-16 Thread Rudi C
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  wrote:

> Rudi C  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 .
> Support Org development at ,
> or support my work at 
>


Re: Forcing tab-width to be 8 makes using Python source blocks very difficult

2024-03-16 Thread Ihor Radchenko
Rudi C  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 .
Support Org development at ,
or support my work at 



Re: Forcing tab-width to be 8 makes using Python source blocks very difficult

2024-03-16 Thread Rudi C
`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  wrote:

> Rudi C  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 .
> Support Org development at ,
> or support my work at 
>


Re: Forcing tab-width to be 8 makes using Python source blocks very difficult

2024-03-16 Thread Ihor Radchenko
Rudi C  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 .
Support Org development at ,
or support my work at 



Forcing tab-width to be 8 makes using Python source blocks very difficult

2024-03-15 Thread Rudi C
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.