Apakah mungkin untuk membuat buffer mode-org * awal *?

13

Saat mengerjakan dokumen dalam emacs saya sering menemukan diri saya membuka buffer baru, melakukan sesuatu dalam mode-org, menyalin konten mode-org, dan menempelkannya ke dalam dokumen saya. Saya dulu membuat dokumen mode-org baru setiap kali saya perlu melakukan ini. Sekarang saya punya file ~/.scratch.orgtempat saya menyimpan pekerjaan ini.

Apakah mungkin untuk membuat *org-scratch*buffer yang berperilaku analog dengan *scratch*buffer?

Brian Fitzpatrick
sumber
3
Apakah ada yang tidak nyaman dilakukan M-x org-modesaat Anda berada di *scratch*buffer?
xji
1
@XiangJi bahkan tidak berpikir untuk melakukan itu. Itu ide yang bagus.
Brian Fitzpatrick

Jawaban:

11

Mode mayor awal untuk *Scratch*buffer dikontrol oleh variabel initial-major-mode- nilainya perlu menjadi simbol (yang dalam istilah awam berarti meletakkan tanda kutip tunggal di depan nama mode mayor): http: //www.gnu. org / software / emacs / manual / html_node / elisp / Auto-Major-Mode.html

(setq initial-major-mode 'org-mode)

EDIT : Berdasarkan komentar dari poster asli, berikut ini adalah contoh fungsi untuk membuat buffer yang tidak mengunjungi file secara berurutan dengan mode-utama org-mode:

(defun my-scratch-buffer ()
"Create a new scratch buffer -- \*hello-world\*"
(interactive)
  (let ((n 0)
        bufname buffer)
    (catch 'done
      (while t
        (setq bufname (concat "*hello-world"
          (if (= n 0) "" (int-to-string n))
            "*"))
        (setq n (1+ n))
        (when (not (get-buffer bufname))
          (setq buffer (get-buffer-create bufname))
          (with-current-buffer buffer
            (org-mode))
          ;; When called non-interactively, the `t` targets the other window (if it exists).
          (throw 'done (display-buffer buffer t))) ))))
daftar hukum
sumber
Jadi mungkinkah memiliki dua *Scratch*buffer?
Brian Fitzpatrick
Saya menambahkan fungsi sampel yang membuat buffer non-file-kunjungan baru dalam urutan numerik, dan saya menyertakan org-modepenunjukan. Nama dapat diubah dari hello-worldapa pun yang diinginkan pengguna yang dikenali oleh sistem operasi - misalnya, Windows tidak suka astrisks.
lawlist
Sangat keren. Terima kasih telah melihat ini!
Brian Fitzpatrick
Saya senang bisa membantu. Saya memutuskan untuk melempar hasilnya dan menampilkan buffer dalam satu gerakan - fungsinya sama, tetapi fungsinya terlihat sedikit lebih kompak dengan cara ini. :)
hukum
11

Ada ekstensi bernama scratch, yang memungkinkan pembuatan buffer awal mode khusus. Ini tersedia dari MELPA, jadi Anda harus dapat menginstalnya dengan mudah.

Dengan paket ini diinstal, ketika Anda berada di org-modebuffer, Anda dapat menjalankan M-xscratchuntuk mendapatkan buffer awal org-mode.

Jika Anda memberikan argumen awalan, Anda mendapat kesempatan untuk memilih mode (alih-alih memilih mode utama yang sedang aktif).

François Févotte
sumber
Saya mencoba ini tetapi saya pikir buffer awal terhapus setelah Anda keluar dari emacs. Buffer awal asli tidak, menyimpannya sendiri secara otomatis juga. Apakah ini benar atau apakah saya melewatkan sesuatu?
Vivi
1
Kecuali jika Anda melakukan sesuatu yang istimewa, *scratch*buffer asli tidak bertahan di seluruh sesi, juga tidak disimpan ketika Anda keluar dari emacs. Coba jalankan emacs -quntuk mendapatkan perilaku standar, tidak dimodifikasi oleh file init Anda.
François Févotte
Menarik, saya tidak tahu itu. Saya baru saja menyelidiki ini dan saya menemukan itu adalah fitur dari Aquamacs. Saya juga menemukan bahwa Aquamacs datang dengan Command-N keybinding untuk membuat goresan baru di frame lain (yang ini tidak persisten di seluruh sesi).
Vivi
2
Omong-omong, ada paket pada MELPA yang disebut persistent-scratch yang mengklaim dapat membuat buffer awal yang persisten.
Vivi
5

Saya pikir salah satu cara sederhana untuk mencapainya adalah dengan menjalankannya M-x org-modeketika Anda berada di *snatch*buffer, dan dengan demikian memungkinkan org-modesecara langsung. Ini dapat diterapkan untuk mengaktifkan mode utama apa pun.

xji
sumber
Cara paling sederhana sejauh ini.
user2699
Ini tentu bermanfaat. Saya suka memiliki buffer awal yang dikhususkan untuk mode-org karena saya sering menggunakan buffer awal untuk hal-hal lain.
Brian Fitzpatrick
2

Coba ini:

  1. Cx b (ketikkan nama untuk buffer awal baru Anda, mis. "Asdf")
  2. Mx org-mode (ubah mode utama buffer "asdf")

Saat menutup buffer ini, Anda tidak akan mendapatkan permintaan untuk menyimpan kontennya. Yaitu Anda mendapatkan buffer awal yang tepat. Dan *scratch*buffer tetap utuh.

undostres
sumber