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)


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

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

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))
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.