Org Mode Default ke Alt-Enter untuk Bullets

9

Saya ingin mode-org secara default untuk alt-enter ketika berada di bawah peluru, sehingga untuk peluru saya cukup menekan enter untuk membuat peluru baru.

Jadi misalnya:

  • pisang
  • apel
  • Kiwi [MOUSE CURSOR DI SINI]

Ketika saya menekan enter, saya ingin perilaku berikut (yang terjadi ketika saya menekan M-enter):

  • pisang
  • apel
  • Kiwi
  • [MOUSE CURSOR DI SINI]

Dari pada:

  • pisang
  • apel
  • Kiwi

[MOUSE CURSOR DI SINI]

Itu adalah default untuk sebagian besar aplikasi lain, tetapi mengapa tidak untuk mode-org?

Ini akan sangat meningkatkan alur kerja saya. Tapi saya tidak tahu caranya! Terima kasih sebelumnya.

Josh Cho
sumber
1
Selamat datang di Emacs.SE! Akan membantu jika Anda bisa menjelaskan apa yang telah Anda coba lakukan sejauh ini (dan referensi apa yang Anda cari yang membuat Anda terjebak). Untuk memulai, lihat deskripsi berikut dari binding kunci Emacs , yang akan membantu Anda memulai dengan konsep.
Dan
1
Saya pikir yang pertama adalah perilaku default dalam mode-org. Bisakah Anda memulai emacs Anda hanya dengan mode org dimuat, dan coba lagi?
Leu_Grady
Bagaimana Anda mengakhiri daftar?
SabreWolfy
1
Bukan solusinya, tetapi dalam pengalaman saya, menggunakan untuk M-RETjauh lebih bermanfaat. M-RETakan melakukan hal yang benar ketika titik ada di (i) daftar (ii) judul (iii) sel tabel org (iv) ... Pada saat Anda mulai menyukai M-RET, Anda menemukan C-u M-RET, dan Anda semakin menyukainya! :)
Kaushal Modi

Jawaban:

3

Anda dapat mencoba versi ini. Ia menambahkan item dan heading dengan pengembalian reguler, dan dengan pengembalian ganda pada entri kosong mengakhiri daftar. Itu juga memodifikasi kembali dalam tabel untuk menambah baris atau mengakhiri tabel pada baris kosong. Ini diuji ringan;)

(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
sumber
Tanggapan selanjutnya dikembangkan oleh penulis yang sama kitchingroup.cheme.cmu.edu/blog/2017/04/09/…
joelostblom
3

Paket org-autolistyang melakukan ini telah tersedia dari MELPA selama hampir dua tahun.

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

Heikki
sumber
org-autolist tampaknya hanya berfungsi dengan item daftar. bukan heading
iLemming
0

Anda bisa melakukannya seperti ini:

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

Tapi saya benar-benar tidak merekomendasikan untuk menggunakannya seperti ini.

Maxim Kim
sumber
Dan itu tidak memiliki perilaku seperti msword (masukkan dua kali untuk menghapus item daftar kosong dan pergi ke teks 'normal'). Tentu saja itu bisa dilakukan hanya menambahkan lebih banyak elisp.
Maksim Kim