заменить заставку списком недавних

18

Заставка полезна в начале, но теперь я хочу кое-что более полезное: я хочу, чтобы список недавно открытых файлов был представлен при запуске emacs, если нет предопределенного файла для открытия. Еще лучше, если это может быть helm-recentfокно (я использую helmпакет)

biocyberman
источник
Я вижу, что вы нашли решение, но я просто хотел прокомментировать, что вам не нужно ограничивать себя методами, разработанными командой Emacs. startup.el. Вы можете аннулировать все эти вещи и затем иметь свой собственный порядок запуска.
юрист

Ответы:

15

В MELPA также есть пакет для этого: dashboard: https://github.com/rakanalh/emacs-dashboard . Пакет позволяет вам иметь заставку, как на рисунке ниже:

скриншот приборной панели

Вот use-packageфрагмент из моей конфигурации, чтобы настроить его с пользовательским изображением баннера и строкой текста, а также список последних файлов и закладок:

(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, после публикации вопроса я получил рабочее решение, удалив одну единственную цитату ниже в моем .emacs

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

К этому:

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

Или это:

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

Обновить

Это все еще не работает с решением выше на самом деле. Я открыл файл, но scratchсразу после этого emacs переключается в буфер. Я должен перейти к буферу файла, который я хочу. Так что еще нужно больше помощи по этому вопросу.

Обновление 2

После некоторой борьбы с этим elispя понял, что это действительно работает:

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

Обновление 3

Следующее более компактно. Он также примерно обрабатывает случай, когда emacs вызывается с дополнительными аргументами, т.е.emacs 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
источник
2
Я считаю, что ваша первая попытка должна быть (setq initial-buffer-choice 'helm-recentf). initial-buffer-choiceМожет иметь функцию в качестве значения, которое даст в кавычках формы без скобок.
Значимое имя пользователя
Очевидно мой навык новичка elisp.
биоциберман
Мы здесь, чтобы учиться :). С помощью этой формы я получаю helm-recentfбуфер при запуске, поэтому ваше решение для обновления 2 не нужно.
Значимое имя пользователя
@MeaningfulUsername Я сделал обновление 3 : D, оно обрабатывает случай, когда вы вызываете emacs с именем файла или чем-то уже.
biocyberman
И, как вы уже заметили, указанная версия не переключается в буфер, поэтому, похоже, ваше (car (helm-RecentF)) является правильным решением. (Я думал, что это должно быть лямбда-выражение, а не просто список, но это не сработало ...)
Значимое имя пользователя
2

Вот пакет, который отображается recentf-open-filesпри запуске Emacs без открытия файла: https://github.com/zonuexe/init-open-recentf.el

Конфигурация с использованием пакета :

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

(use-package init-open-recentf
  :config
  (init-open-recentf))
ням
источник