Padrão do modo organizacional para Alt-Enter para marcadores

9

Eu quero que o modo org seja o padrão para alt-enter quando estiver sob marcadores, de modo que, para marcadores, eu possa simplesmente pressionar enter para criar um novo marcador.

Então, por exemplo:

  • Banana
  • maçã
  • Quivi [CURSOR DE MOUSE AQUI]

Quando pressiono enter, quero o seguinte comportamento (que acontece quando pressiono M-enter):

  • Banana
  • maçã
  • kiwi
  • [CURSOR DE MOUSE AQUI]

Ao invés de:

  • Banana
  • maçã
  • kiwi

[CURSOR DE MOUSE AQUI]

Esse é o padrão para a maioria dos outros aplicativos, mas por que não no modo organizacional?

Isso melhoraria muito meu fluxo de trabalho. Mas eu não sei como! Desde já, obrigado.

Josh Cho
fonte
11
Bem-vindo ao Emacs.SE! Ajudaria se você pudesse explicar o que você tentou fazer até agora (e quais referências você procurou que o deixaram preso). Para começar, dê uma olhada na seguinte descrição das ligações de teclas do Emacs , que ajudarão você a começar com os conceitos.
Dan
11
Eu acho que o primeiro é o comportamento padrão no modo organizacional. Você pode iniciar o seu emacs apenas com o modo org carregado e tentar novamente?
Leu_Grady
Como você encerraria uma lista?
SabreWolfy
11
Não é a solução, mas, na minha experiência, me acostumar M-RETé muito mais benéfico. M-RETfaria a coisa certa quando o ponto estiver em (i) uma lista (ii) um título (iii) uma célula da tabela organizacional (iv) ... Quando você começa a gostar M-RET, descobre C-u M-RETe gosta ainda mais! :)
Kaushal Modi

Respostas:

3

Você pode tentar esta versão. Ele adiciona itens e títulos com retorno regular e, com retorno duplo em uma entrada vazia, termina a lista. Também modifica o retorno em uma tabela para adicionar linhas ou encerrar uma tabela em uma linha vazia. É levemente testado;)

(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
fonte
Resposta mais desenvolvida pelo mesmo autor kitchingroup.cheme.cmu.edu/blog/2017/04/09/…
joelostblom 15/0218
3

O pacote org-autolistque faz isso está disponível no MELPA há quase dois anos.

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

Heikki
fonte
org-autolist parece funcionar apenas com itens da lista. não títulos
iLemming
0

Você pode fazer assim:

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

Mas eu realmente não recomendo usá-lo assim.

Maxim Kim
fonte
E ele não possui um comportamento semelhante ao do msword (digite duas vezes para limpar o item da lista vazio e vá para o texto 'normal'). Claro que isso poderia ser feito, basta adicionar mais elisp.
Maxim Kim