Mode organisation par défaut sur Alt-Enter pour les puces

9

Je veux que le mode organisation par défaut soit alt-enter lorsque sous les puces, de sorte que pour les puces, je peux simplement appuyer sur Entrée pour créer une nouvelle puce.

Ainsi, par exemple:

  • banane
  • Pomme
  • Kiwi [CURSEUR DE LA SOURIS ICI]

Lorsque j'appuie sur Entrée, je souhaite le comportement suivant (qui se produit lorsque j'appuie sur M-Entrée):

  • banane
  • Pomme
  • kiwi
  • [CURSEUR DE LA SOURIS ICI]

Au lieu de:

  • banane
  • Pomme
  • kiwi

[CURSEUR DE LA SOURIS ICI]

C'est la valeur par défaut pour la plupart des autres applications, mais pourquoi pas pour le mode org?

Cela améliorerait considérablement mon flux de travail. Mais je ne sais pas comment! Merci d'avance.

Josh Cho
la source
1
Bienvenue sur Emacs.SE! Il serait utile que vous puissiez expliquer ce que vous avez essayé de faire jusqu'à présent (et quelles références vous avez recherchées qui vous ont laissé coincé). Pour commencer, jetez un œil à la description suivante des raccourcis clavier Emacs , qui vous permettra de démarrer avec les concepts.
Dan
1
Je pense que l'ancien est le comportement par défaut en mode org. Pouvez-vous démarrer vos emacs avec uniquement le mode org chargé et réessayer?
Leu_Grady
Comment mettriez-vous fin à une liste?
SabreWolfy
1
Pas la solution, mais d'après mon expérience, m'y habituer M-RETest beaucoup plus bénéfique. M-RETferait la bonne chose quand le point est dans (i) une liste (ii) un titre (iii) une cellule de tableau org (iv) ... Au moment où vous commencez à aimer M-RET, vous découvrez C-u M-RETet vous l'aimez encore plus! :)
Kaushal Modi

Réponses:

3

Vous pourriez essayer cette version. Il ajoute des éléments et des en-têtes avec un retour régulier, et avec un double retour sur une entrée vide termine la liste. Il modifie également le retour dans une table pour ajouter des lignes ou terminer une table sur une ligne vide. C'est légèrement testé;)

(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)
John Kitchin
la source
Réponse développée par le même auteur kitchingroup.cheme.cmu.edu/blog/2017/04/09/…
joelostblom
3

Le package org-autolistqui fait cela est disponible chez MELPA depuis près de deux ans.

Voir https://github.com/calvinwyoung/org-autolist

Heikki
la source
org-autolist semble fonctionner uniquement avec les éléments de liste. pas de titres
iLemming
0

Vous pouvez le faire comme ceci:

 (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)

Mais je ne recommande vraiment pas de l'utiliser comme ça.

Maxim Kim
la source
Et il n'a pas le comportement de msword (double entrée pour effacer l'élément de liste vide et aller au texte «normal»). Bien sûr, cela pourrait être fait simplement ajouter plus d'élisp.
Maxim Kim