Sébastien Miquel <sebastien.miq...@posteo.eu> writes: > Ihor Radchenko writes: >> The cause is the following line in `org-list-struct-apply-struct' >> [[file:~/Git/org-mode/lisp/org-list.el::indent-line-to (+ >> (org-current-text-indentation) delta)))]] >> >> It calls `indent-line-to' that replaces spaces with tabs according to >> current value of indent-tabs-mode in Org buffer. > > There are a few other instances of `indent-line-to` in the code. I > guess the right fix is to un-obsolete `org-indent-line-to`, use it and > make a special case if point is in a src block.
Yup. Sounds reasonable. Although we should not use it blindly; just where necessary. Checking for element at point will create overheads. > This use case is > uncommon and not really compatible with `org-src-preserve-indentation` > though. May you please elaborate? > Somewhat more common possibility: say one has a src block at 0 > indentation, and wants to make it part of an org list. Is there any > proper org way to do this ? I can use `indent-rigidly`, but again, > this might break an org-src indentation. No easy fix to this beside > providing a simple org version of `indent-rigidly`. I recall struggling with it and ending up with adding spaces manually to the first src line and then using indent-region. `indent-line-function' technically allows force indent, if `tab-always-indent' is set to t, but we have <TAB> bound to org-cycle, which will take precedence when at #+begin_src. -- 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>