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.


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)

Tanggapan selanjutnya dikembangkan oleh penulis yang sama kitchingroup.cheme.cmu.edu/blog/2017/04/09/…
joelostblom


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.