remplacer l'écran de démarrage par la liste des récents

18

L'écran de démarrage est utile au début, mais maintenant je veux quelque chose de plus utile: je veux que la liste des fichiers récemment ouverts soit présentée au démarrage d'emacs s'il n'y a pas de fichier prédéfini à ouvrir. Encore mieux, si ça peut être la helm-recentffenêtre (j'utilise le helmpackage)

biocyberman
la source
Je vois que vous avez trouvé une solution, mais je voulais juste dire que vous n'avez pas à vous limiter aux méthodes conçues par l'équipe Emacs dans leur startup.el. Vous pouvez annuler toutes ces choses et ensuite avoir votre propre ordre de démarrage.
Lawlist

Réponses:

15

Il existe également un package sur MELPA pour cela maintenant: tableau de bord: https://github.com/rakanalh/emacs-dashboard . Le package vous permet d'avoir un écran de démarrage comme dans l'image ci-dessous:

capture d'écran du tableau de bord

Voici l' use-packageextrait de ma configuration pour le configurer avec une image de bannière personnalisée et une ligne de texte, ainsi qu'une liste de fichiers et de signets récents:

(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))
tirocinium
la source
10

Manomagically: D, après avoir posté la question, j'ai obtenu la solution de travail en supprimant une seule citation ci-dessous dans mon .emacs

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

Pour ça:

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

Ou ca:

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

Mise à jour

Cela ne fonctionne toujours pas avec la solution ci-dessus. J'ai ouvert le fichier mais emacs passe au scratchtampon juste après. Je dois passer au tampon du fichier que je veux. Il nous faut donc encore plus d'aide à ce sujet.

Mise à jour 2

Après avoir lutté avec elisp, j'ai obtenu que celui-ci fonctionne vraiment maintenant:

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

Mise à jour 3

Ce qui suit est plus compact. Il gère également à peu près le cas où emacs est appelé avec des arguments supplémentaires, c'est-à-direemacs 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
la source
2
Je crois que votre première tentative devrait l'être (setq initial-buffer-choice 'helm-recentf). Le initial-buffer-choicepeut avoir une fonction en tant que valeur, que la forme citée sans parenthèses donnera.
Nom d'utilisateur significatif
De toute évidence, ma compétence de débutant.
biocyberman du
Nous sommes ici pour apprendre :). Avec ce formulaire, je reçois le helm-recentftampon au démarrage, donc votre solution de mise à jour 2 ne devrait pas être nécessaire.
Nom d'utilisateur significatif
@MeaningfulUsername J'ai fait la mise à jour 3 : D il gère le cas où vous appelez emacs avec un nom de fichier ou quelque chose déjà.
biocyberman
Et comme vous l'avez déjà noté, la version citée ne passe pas au tampon, il semble donc que votre (voiture (helm-recentf)) soit la bonne solution. (Je pensais que ce devrait être une expression lambda au lieu d'une simple liste, mais cela n'a pas fonctionné ...)
Nom d'utilisateur significatif
2

Voici un package qui s'affiche recentf-open-fileslors du démarrage d'Emacs sans fichier à ouvrir: https://github.com/zonuexe/init-open-recentf.el

Configuration avec use-package :

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

(use-package init-open-recentf
  :config
  (init-open-recentf))
njam
la source