emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [BUG] R src blocks untabify literal constant TABs


From: Charles C. Berry
Subject: Re: [O] [BUG] R src blocks untabify literal constant TABs
Date: Wed, 7 Oct 2015 14:49:28 -0700
User-agent: Alpine 2.20 (OSX 67 2015-01-07)

On Wed, 7 Oct 2015, Nicolas Goaziou wrote:

Hello,

"Charles C. Berry" <address@hidden> 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

[Prev in Thread] Current Thread [Next in Thread]