Modalità organizzazione predefinita su Alt-Invio per proiettili


9

Voglio che la modalità org sia impostata per default su alt-enter quando ci si trova sotto i proiettili, quindi per i proiettili posso semplicemente premere Invio per creare un nuovo proiettile.

Quindi per esempio:

  • Banana
  • Mela
  • Kiwi [MOUSE CURSOR QUI]

Quando premo invio, voglio il seguente comportamento (che si verifica quando premo M-invio):

  • Banana
  • Mela
  • Kiwi
  • [MOUSE CURSOR QUI]

Invece di:

  • Banana
  • Mela
  • Kiwi

[MOUSE CURSOR QUI]

Questo è il valore predefinito per la maggior parte delle altre applicazioni, ma perché non per la modalità organizzazione?

Ciò migliorerebbe notevolmente il mio flusso di lavoro. Ma non so come! Grazie in anticipo.


1
Benvenuto in Emacs.SE! Sarebbe utile se potessi spiegare cosa hai cercato di fare finora (e quali riferimenti hai cercato che ti hanno lasciato bloccato). Per iniziare, dai un'occhiata alla seguente descrizione delle combinazioni di tasti di Emacs , che ti farà iniziare con i concetti.
Dan

1
Penso che il primo sia il comportamento predefinito in modalità org. Puoi avviare emacs con solo la modalità org caricata e riprovare?
Leu_Grady,

Come termineresti un elenco?
SabreWolfy,

1
Non la soluzione, ma nella mia esperienza, abituarsi M-RETè molto più vantaggioso. M-RETfarebbe la cosa giusta quando il punto è in (i) un elenco (ii) un'intestazione (iii) una cella della tabella organizzativa (iv) ... Quando inizi a piacerti M-RET, lo scopri C-u M-RETe ti piace ancora di più! :)
Kaushal Modi,

Risposte:


3

Puoi provare questa versione. Aggiunge elementi e intestazioni con ritorno regolare e con doppio ritorno su una voce vuota termina l'elenco. Modifica anche il ritorno in una tabella per aggiungere righe o terminare una tabella su una riga vuota. È leggermente testato;)

(defun scimax/org-return ()
  "Add new list or headline "
  (interactive)
  (cond
   ((org-in-item-p)
    (if (org-element-property :contents-begin (org-element-context))
    (org-insert-heading)
      (beginning-of-line)
      (kill-line)
      (org-return)))
   ((org-at-heading-p)
    (if (not (string= "" (org-element-property :title (org-element-context))))
    (org-insert-heading)
      (beginning-of-line)
      (kill-line)
      (org-return)))
   ((org-at-table-p)
    (if (-any?
     (lambda (x) (not (string= "" x)))
     (nth
      (- (org-table-current-dline) 1)
      (org-table-to-lisp)))
    (org-return)
      ;; empty row
      (beginning-of-line)
      (kill-line)
      (org-return)))
   (t
    (org-return))))

(define-key org-mode-map (kbd "RET")
  'scimax/org-return)

Risposta ulteriormente sviluppata dallo stesso autore kitchingroup.cheme.cmu.edu/blog/2017/04/09/…
joelostblom


0

Puoi farlo in questo modo:

 (defun my/org-list-new-item ()
   (interactive)
   (if (org-in-item-p) (org-insert-heading) (org-return)))
 (define-key org-mode-map (kbd "RET") 'my/org-list-new-item)

Ma davvero non consiglio di usarlo in questo modo.


E non ha un comportamento simile a msword (premi due volte per cancellare la voce di elenco vuota e vai al testo 'normale'). Ovviamente si potrebbe fare semplicemente aggiungere più elisp.
Maxim Kim,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.