Modo Org predeterminado a Alt-Enter para viñetas

9

Quiero que el modo org esté predeterminado en alt-enter cuando esté debajo de las viñetas, de modo que para las viñetas puedo presionar enter para hacer una nueva viñeta.

Entonces, por ejemplo:

  • Plátano
  • manzana
  • Kiwi [CURSOR DEL RATÓN AQUÍ]

Cuando presiono enter, quiero el siguiente comportamiento (que ocurre cuando presiono M-enter):

  • Plátano
  • manzana
  • kiwi
  • [CURSOR DE RATÓN AQUÍ]

En vez de:

  • Plátano
  • manzana
  • kiwi

[CURSOR DE RATÓN AQUÍ]

Ese es el valor predeterminado para la mayoría de las otras aplicaciones, pero ¿por qué no para el modo org?

Esto mejoraría en gran medida mi flujo de trabajo. ¡Pero no sé cómo! Gracias por adelantado.

Josh Cho
fuente
1
Bienvenido a Emacs.SE! Sería útil si pudieras explicar lo que has intentado hacer hasta ahora (y qué referencias has buscado que te han dejado atrapado). Para comenzar, eche un vistazo a la siguiente descripción de las combinaciones de teclas de Emacs , que lo ayudarán a comenzar con los conceptos.
Dan
1
Creo que el primero es el comportamiento predeterminado en el modo org. ¿Puede iniciar sus emacs con solo el modo org cargado y volver a intentarlo?
Leu_Grady
¿Cómo terminarías una lista?
SabreWolfy
1
No es la solución, pero en mi experiencia, acostumbrarse M-RETes mucho más beneficioso. M-RETharía lo correcto cuando el punto esté en (i) una lista (ii) un encabezado (iii) una celda de la tabla de organización (iv) ... ¡En el momento en que comienza a gustar M-RET, descubre C-u M-RETy le gusta aún más! :)
Kaushal Modi

Respuestas:

3

Puede probar esta versión. Agrega elementos y encabezados con retorno regular, y con doble retorno en una entrada vacía finaliza la lista. También modifica el retorno en una tabla para agregar filas o terminar una tabla en una fila vacía. Está ligeramente probado;)

(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
fuente
Respuesta desarrollada por el mismo autor kitchingroup.cheme.cmu.edu/blog/2017/04/09/…
joelostblom
0

Puedes hacerlo así:

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

Pero realmente no recomiendo usarlo así.

Maxim Kim
fuente
Y no tiene un comportamiento similar a msword (ingrese dos veces para borrar el elemento de la lista vacía y vaya al texto 'normal'). Por supuesto, se podría hacer solo agregue más elisp.
Maxim Kim