On Wed, 7 Oct 2015, Nicolas Goaziou wrote:

Hello,

"Charles C. Berry" <ccbe...@ucsd.edu> writes:

Attached is a patch.

Thank you.

I think it is an improvement, but `org-src-preserve-indentation'
behaves differently according to context, which makes it hard to
document succinctly.

There's something suspicious here.

This variable is supposed to only replace tab characters used in
indentation, not anywhere else. However, it seems that your
documentation patch suggests otherwise. It may be a bug then.


More than one bug, I am afraid.

Do you have any such example?

Sure, make sure that the whitespace in the `> <' below is a TAB
character (C-q C-i). Running the src block replaces the TAB when
`org-src-preserve-indentation' is nil.

Also, use `org-edit-src-code' with point in the block and immediately exist,
i.e. =C-c ' C-c '=, and the embedded tab disappears.

#+BEGIN_SRC emacs-lisp
  "this is a TAB-->     <--"
  #+END_SRC

`untabify' is called by some functions that honor (in some way)
`org-src-preserve-indentation' which explains some of this. FWIW, here
is a summary of functions that use the variable:


|---------------------------------------+-----------------------+---------------------------|
| function                              | protect-leading space | effect on 
tabs            |
|---------------------------------------+-----------------------+---------------------------|
| org-babel-exp-process-buffer          | yes or no             | ignore (+/- 
to indent)    |
| org-export-unravel-code               | yes or no             | ignore        
            |
| org-element-src-block-interpreter     | contents only or not  | ignore        
            |
| org-element-example-block-interpreter | contents only or not  | ignore        
            |
| org-fixup-indentation                 | contents only or not  | ignore (+/- 
to indent)    |
| org-babel-parse-src-block-match       | yes or no             | keep or 
remove            |
| org-babel-haskell-export-to-lhs       | yes or no             | keep or 
remove            |
| org-babel-spec-to-string              | yes or no             | keep or 
remove lead+trail |
| org-src--edit-element                 | yes or no             | keep or 
remove            |
| org-edit-src-code                     | yes or no             | keep or 
remove            |
|---------------------------------------+-----------------------+---------------------------|

the '(+/- to indent)' means that leading tabs may be added or removed
with org-metaright and friends. `keep or remove lead+trail' == "keep
or remove leading or trailing TABs only". 'contents only or not' means
there is no effect on `#+BEGIN...' etc.

HTH,

Chuck


Reply via email to