emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Re: [PATCH] Indent code with TAB in Org buffer


From: Dan Davison
Subject: [Orgmode] Re: [PATCH] Indent code with TAB in Org buffer
Date: Sun, 15 Aug 2010 19:00:07 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Carsten Dominik <address@hidden> writes:

> On Aug 15, 2010, at 8:43 AM, Dan Davison wrote:
>
>> With this patch TAB in a code block aligns the code according to the
>> major mode. The macro could be used to do the same thing for other
>> commands (i.e. allow other commands to be invoked in the Org buffer,
>> but
>> actually carried out in the code buffer.)
>>
>> Patch attached and in branch src-block-tab at
>> address@hidden:dandavison/org-devel.git.
>>
>> diff --git a/lisp/org-src.el b/lisp/org-src.el
>> index baa2b11..fc15a83 100644
>> --- a/lisp/org-src.el
>> +++ b/lisp/org-src.el
>> @@ -435,6 +435,19 @@ the fragment in the Org-mode buffer."
>>       (message "%s" msg)
>>       t)))
>>
>> +(defmacro org-src-do-in-edit-buffer (&rest body)
>> +  "Evaluate BODY in edit buffer if there is a code block at point.
>> +Return t if a code block was found at point, nil otherwise."
>> +  `(when (org-edit-src-code)
>
> Wow, an excursion to the temp buffer for every TAB call
> in a source code block?
>
> Sounds heavy.  But I see that it could be nice together with
> the new fontification stuff.  My gut feeling would be to have
> both of these feature off by default.  But I have not tried
> them yet.

Hi Carsten,

In a small code block the TAB is actually not bad at all, but in a big
one there's a delay (that's worst case scenario: a netbook with an atom
processor).

I think it's clear that automatic fontification as you type by emacs
font-lock should be turned off by default. We could consider
fontification of code blocks e.g. on start up, and when
folding/unfolding, but let's discuss that in a separate thread.

We can go one further with the tab command, and supply a general
mechanism for calling major mode commands from the src buffer (patch
attached):

(defun org-src-do-key-sequence-in-edit-buffer (&optional key)
  "Read key sequence and execute the command in edit buffer."
  (interactive)
  (org-src-do-in-edit-buffer
   (call-interactively
    (key-binding (or key (read-key-sequence nil))))))

So I'm proposing to bind that within the org-babel keymap (currently 
C-c C-v x, and C-c C-v C-x). That way for example:

- C-c C-v C-x TAB :: indent code natively

and with an interactive R session:

- C-c C-v C-x C-c C-c :: `ess-eval-function-or-paragraph-and-step'

I've included a variable `org-src-indent-natively' to control the native
TAB by default (currently defaulting to off, seeing as the C-v C-v x
alternative is always available).

Eric and I are planning on providing the inverse also: exposing the
babel keymap when in the edit buffer.

Dan

patch attached and at address@hidden:dandavison/org-devel.git[1] branch 
src-block-tab

Attachment: src-block-tab.diff
Description: Text Data



>
> - Carsten
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

reply via email to

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