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.


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)

Resposta mais desenvolvida pelo mesmo autor kitchingroup.cheme.cmu.edu/blog/2017/04/09/…
joelostblom 15/0218


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.