ganti splash screen dengan daftar Recentf

18

Layar splash berguna di awal, tetapi sekarang saya ingin sesuatu yang lebih berguna: Saya ingin daftar file yang baru dibuka disajikan ketika memulai emacs jika tidak ada file yang telah ditentukan untuk dibuka. Bahkan lebih baik, jika bisa berupa helm-recentfjendela (saya menggunakan helmpaket)

biocyberman
sumber
Saya melihat bahwa Anda menemukan solusi, tetapi saya hanya ingin berkomentar bahwa Anda tidak harus membatasi diri Anda pada metode yang dirancang oleh tim Emacs di mereka. startup.el. Anda dapat membatalkan semua hal itu dan kemudian memiliki pesanan startup Anda sendiri.
lawlist

Jawaban:

15

Ada juga paket tentang MELPA untuk ini sekarang: dasbor: https://github.com/rakanalh/emacs-dashboard . Paket ini memungkinkan Anda untuk memiliki splash screen seperti pada gambar di bawah ini:

tangkapan layar dasbor

Berikut use-packagecuplikan dari konfigurasi saya untuk mengaturnya dengan gambar spanduk khusus dan baris teks, serta daftar file dan bookmark terbaru:

(use-package dashboard
    :ensure t
    :diminish dashboard-mode
    :config
    (setq dashboard-banner-logo-title "your custom text")
    (setq dashboard-startup-banner "/path/to/image")
    (setq dashboard-items '((recents  . 10)
                            (bookmarks . 10)))
    (dashboard-setup-startup-hook))
hal tak berpengalaman
sumber
10

Secara Manomagis: D, setelah memposting pertanyaan saya mendapatkan solusi yang berfungsi dengan menghapus satu kutipan di bawah ini di .emacs

(setq initial-buffer-choice '(helm-recentf)) ;; Does not work

Untuk ini:

(setq initial-buffer-choice (helm-recentf)) ;; Works!!!
;; I still haven't tried doing with the built-in recentf only

Atau ini:

(setq initial-buffer-choice 'helm-recentf) ;; Works!!!

Memperbarui

Itu masih tidak bekerja dengan solusi di atas sebenarnya. Saya membuka file tetapi emacs beralih ke scratchbuffer setelahnya. Saya harus melompat ke buffer file yang saya inginkan. Jadi masih perlu bantuan lebih lanjut tentang ini.

Perbarui 2

Setelah beberapa pergulatan elisp, saya mendapatkan yang ini benar-benar berfungsi sekarang:

(require 'recentf) ;; Provided for the whole picture
(require 'helm)
(require 'helm-config)

(defun startwithrecentf()
 (buffer-name (find-file (car (helm-recentf))))
  )
(setq initial-buffer-choice (startwithrecentf)) 

Perbarui 3

Berikut ini lebih ringkas. Itu juga kira-kira menangani kasus emacs disebut dengan argumen tambahan, yaituemacs somefile

(require 'recentf) ;; Provided for the whole picture
(require 'helm)
(require 'helm-config)
(if (< (length command-line-args) 2) 
(setq initial-buffer-choice (car (helm-recentf)))
)
biocyberman
sumber
2
Saya percaya upaya awal Anda seharusnya (setq initial-buffer-choice 'helm-recentf). The initial-buffer-choicedapat memiliki fungsi sebagai nilai, yang berupa dikutip tanpa parantheses akan memberikan.
Nama pengguna yang bermakna
Jelas keterampilan pemula elisp saya.
biocyberman
Kami di sini untuk belajar :). Dengan formulir itu saya mendapatkan helm-recentfbuffer saat mulai, jadi solusi pembaruan 2 Anda tidak diperlukan.
Nama pengguna yang bermakna
@MeaningfulUsername Saya membuat Pembaruan 3 : D menangani kasus di mana Anda memanggil emacs dengan nama file atau sesuatu.
biocyberman
Dan seperti yang sudah Anda catat, versi yang dikutip tidak beralih ke buffer, jadi sepertinya mobil Anda (helm-recentf) adalah solusi yang tepat. (Saya pikir itu seharusnya ekspresi lambda, bukan hanya daftar, tapi itu tidak berhasil ...)
Username Berarti
2

Berikut adalah paket yang ditampilkan recentf-open-filesketika memulai Emacs tanpa file untuk dibuka: https://github.com/zonuexe/init-open-recentf.el

Konfigurasi dengan paket penggunaan :

(recentf-mode 1)
(setq recentf-max-menu-items 25)

(use-package init-open-recentf
  :config
  (init-open-recentf))
njam
sumber