zamień ekran powitalny na listę najnowszych

18

Ekran powitalny jest przydatny na początku, ale teraz chcę coś bardziej użytecznego: chcę, aby lista ostatnio otwieranych plików była wyświetlana podczas uruchamiania emacsa, jeśli nie ma predefiniowanego pliku do otwarcia. Jeszcze lepiej, jeśli może to być helm-recentfokno (używam helmpakietu)

biocyberman
źródło
Widzę, że znalazłeś rozwiązanie, ale chciałem tylko skomentować, że nie musisz ograniczać się do metod zaprojektowanych przez zespół Emacsa w ich zespole. startup.el. Możesz anulować wszystkie te rzeczy, a następnie mieć własne zamówienie początkowe.
prawnik

Odpowiedzi:

15

Teraz dostępny jest również pakiet MELPA: pulpit nawigacyjny: https://github.com/rakanalh/emacs-dashboard . Pakiet pozwala mieć ekran powitalny, jak na obrazku poniżej:

zrzut ekranu deski rozdzielczej

Oto use-packagefragment z mojej konfiguracji, aby skonfigurować go z niestandardowym obrazem banera i linią tekstu, a także listą najnowszych plików i zakładek:

(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
źródło
10

Manomagicznie: D, po opublikowaniu pytania uzyskałem działające rozwiązanie, usuwając jeden cytat poniżej w moim .emacs

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

Do tego:

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

Albo to:

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

Aktualizacja

To nadal nie działa z powyższym rozwiązaniem. Plik został otwarty, ale emacs scratchzaraz potem przełączył się na bufor. Muszę przeskoczyć do bufora pliku, który chcę. Więc nadal potrzebuję więcej pomocy w tym zakresie.

Aktualizacja 2

Po kilku zmaganiach z elisptym, naprawdę działa teraz:

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

Aktualizacja 3

Poniższe jest bardziej kompaktowe. Z grubsza obsługuje również przypadek wywoływany przez emacsa z dodatkowymi argumentami, tjemacs 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
źródło
2
Uważam, że Twoja początkowa próba powinna być (setq initial-buffer-choice 'helm-recentf). initial-buffer-choiceMoże mieć funkcję jako wartości, które tworzą podane bez nawiasach da.
Sensowna nazwa użytkownika
Oczywiście moje umiejętności elisp początkującego.
biocyberman
Jesteśmy tutaj, aby się uczyć :). W tym formularzu otrzymuję helm-recentfbufor przy starcie, więc twoje rozwiązanie update 2 nie powinno być potrzebne.
Sensowna nazwa użytkownika
@MeaningfulUsername Zrobiłem aktualizację 3 : D obsługuje przypadek, w którym wywołujesz emacsa z nazwą pliku lub czymś już.
biocyberman
I jak już zauważyłeś, cytowana wersja nie przełącza się na bufor, więc wydaje się, że twoje (samochód (ster-najnowszy)) jest poprawnym rozwiązaniem. (Myślałem, że powinno to być wyrażenie lambda zamiast samej listy, ale to nie działało ...)
Znacząca nazwa użytkownika
2

Oto pakiet, który pokazuje się recentf-open-filespodczas uruchamiania Emacsa bez pliku do otwarcia: https://github.com/zonuexe/init-open-recentf.el

Konfiguracja z pakietem użytkowania :

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

(use-package init-open-recentf
  :config
  (init-open-recentf))
njam
źródło
nie działa z demonem.
HörmannHH