In un file org-mode, con codice quanto segue:codice rientro in blocchi src org-babele
#+begin_src emacs-lisp
(add-to-list 'org-tab-before-tab-emulation-hook
(lambda()
(when (within-the-body-of-a-begin-src-block)
(indent-for-tab-command--as-if-in-lisp-mode))))
#+end_src
desidero il TAB per rientrare il codice come sarebbe se fosse in un buffer in modalità lisp.
Quello che serve è:
- Un modo per capire se il cursore si trova all'interno di un blocco src. Non deve attivarsi quando si trova sulla riga dell'intestazione stessa, in quanto in quel caso dovrebbe avvenire il piegamento org predefinito.
- Un modo per indentare il codice in base alla modalità (emacs-lisp in questo caso) specificata nell'intestazione.
Org può già sintetizzare i blocchi src di evidenziazione in base alla modalità e gli hook TAB ci sono. Questo sembra fattibile.
Dato che si sta modificando il codice corrente, sarebbe '' C-c ''' sufficiente per accedere alla modalità di modifica? – gongzhitaao
Sì, conosco questa scorciatoia, ma mi sembra troppo pesante quando si modificano molti frammenti brevi, ad esempio in un file config-within-org di emacs. – user103576
potrebbe essere utile su questo [thread] (http://lists.gnu.org/archive/html/emacs-orgmode/2012-02/msg00847.html) – gongzhitaao