sostituire la schermata iniziale con l'elenco di recentf


18

La schermata iniziale è utile all'inizio, ma ora voglio qualcosa di più utile: voglio avere un elenco dei file aperti di recente presentati all'avvio di emacs se non ci sono file predefiniti da aprire. Ancora meglio, se può essere la helm-recentffinestra (io uso il helmpacchetto)


Vedo che hai trovato una soluzione, ma volevo solo commentare che non devi limitarti ai metodi progettati dal team Emacs nel loro. startup.el. Puoi annullare tutte quelle cose e quindi avere il tuo ordine di avvio.
elenco delle leggi

Risposte:


15

C'è anche un pacchetto su MELPA per questo ora: dashboard: https://github.com/rakanalh/emacs-dashboard . Il pacchetto consente di avere una schermata iniziale come nell'immagine seguente:

schermata del dashboard

Ecco lo use-packagesnippet dalla mia configurazione per configurarlo con un'immagine banner e una riga di testo personalizzate, nonché un elenco di file e segnalibri recenti:

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

10

Manomagicamente: D, dopo aver postato la domanda, ho ottenuto la soluzione funzionante rimuovendo una singola citazione di seguito nella mia .emacs

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

A questo:

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

O questo:

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

Aggiornare

Non funziona ancora con la soluzione sopra in realtà. Ho aperto il file ma emacs passa al scratchbuffer subito dopo. Devo passare al buffer del file che voglio. Quindi ho ancora bisogno di più aiuto su questo.

Aggiornamento 2

Dopo un po 'di lotta con elisp, ho capito che questo funziona davvero ora:

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

Aggiornamento 3

Quanto segue è più compatto. Gestisce in modo approssimativo il caso in cui emacs viene chiamato con argomenti aggiuntivi, ad esemacs 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)))
)

2
Credo che il tuo tentativo iniziale dovrebbe essere (setq initial-buffer-choice 'helm-recentf). L' initial-buffer-choicepuò avere una funzione come valore, che il modulo citato senza parantheses darà.
Nome utente significativo

Ovviamente la mia abilità da principiante elisp.
biocyberman,

Siamo qui per imparare :). Con quel modulo ottengo il helm-recentfbuffer all'avvio, quindi la tua soluzione di aggiornamento 2 non dovrebbe essere necessaria.
Nome utente significativo

@MeaningfulUsername Ho effettuato l' aggiornamento 3 : D gestisce il caso in cui si chiama emacs con un nome file o qualcosa del genere.
biocyberman,

E come hai già notato, la versione citata non passa al buffer, quindi sembra che la tua (auto (helm-recentf)) sia la soluzione corretta. (Ho pensato che dovrebbe essere un'espressione lambda anziché solo un elenco, ma non ha funzionato ...)
Nome utente significativo

2

Ecco un pacchetto che mostra recentf-open-filesquando si avvia Emacs senza aprire un file: https://github.com/zonuexe/init-open-recentf.el

Configurazione con pacchetto d'uso :

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

(use-package init-open-recentf
  :config
  (init-open-recentf))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.