reemplazar la pantalla de bienvenida con la lista de recientes

18

La pantalla de inicio es útil al principio, pero ahora quiero algo más útil: quiero tener una lista de archivos abiertos recientemente presentados al iniciar emacs si no hay un archivo predefinido para abrir. Aún mejor, si puede ser la helm-recentfventana (uso el helmpaquete)

biocyberman
fuente
Veo que encontraste una solución, pero solo quería comentar que no tienes que limitarte a los métodos diseñados por el equipo de Emacs en su. startup.el. Puedes anular todo eso y luego tener tu propio pedido de inicio.
abogados

Respuestas:

15

También hay un paquete en MELPA para esto ahora: tablero: https://github.com/rakanalh/emacs-dashboard . El paquete le permite tener una pantalla de inicio como en la imagen a continuación:

captura de pantalla del tablero

Aquí está el use-packagefragmento de mi configuración para configurarlo con una imagen de banner personalizada y una línea de texto, así como una lista de archivos y marcadores recientes:

(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))
tirocinio
fuente
10

Manomagically: D, después de publicar la pregunta, obtuve la solución de trabajo eliminando una cita simple a continuación en mi .emacs

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

A esto:

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

O esto:

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

Actualizar

Todavía no funciona con la solución anterior en realidad. Abrí el archivo pero emacs cambia al scratchbúfer inmediatamente después. Tengo que saltar al búfer del archivo que quiero. Así que todavía necesito más ayuda en esto.

Actualización 2

Después de un poco de lucha elisp, tengo este realmente funciona ahora:

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

Actualización 3

Lo siguiente es más compacto. También maneja aproximadamente el caso de emacs con argumentos adicionales, es deciremacs 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
fuente
2
Creo que tu intento inicial debería ser (setq initial-buffer-choice 'helm-recentf). El initial-buffer-choicepuede tener una función como valor, que dará la forma citada sin paréntesis.
Nombre de usuario significativo
Obviamente mi habilidad de novato elisp.
biocyberman
Estamos aquí para aprender :). Con ese formulario obtengo el helm-recentfbúfer al inicio, por lo que no debería necesitar su solución de actualización 2.
Nombre de usuario significativo
@MeaningfulUsername Hice la Actualización 3 : D maneja el caso en el que llamas a emacs con un nombre de archivo o algo así.
biocyberman
Y como ya notó, la versión citada no cambia al búfer, por lo que parece que su (car (helm-Recentf)) es la solución correcta. (Pensé que debería ser una expresión lambda en lugar de solo una lista, pero eso no funcionó ...)
Nombre de usuario significativo
2

Aquí hay un paquete que se muestra recentf-open-filesal iniciar Emacs sin abrir un archivo: https://github.com/zonuexe/init-open-recentf.el

Configuración con use-package :

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

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