замінити екран сплеску на список recentf


18

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


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

Відповіді:


15

Зараз на MELPA також є пакет: панель приладів: 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

Маномагічно: 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!!!

Оновлення

Насправді це все ще не працює з рішенням вище. Я відкрив файл, але Emacs перемикається на scratchбуфер відразу після цього. Я повинен перейти до буфера потрібного файлу. Тому все-таки потрібна додаткова допомога з цього приводу.

Оновлення 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)))
)

2
Я вважаю, що ваша перша спроба повинна бути (setq initial-buffer-choice 'helm-recentf). Кан initial-buffer-choiceможе мати функцію як значення, яке дасть цитована форма без парантезів.
Значуще ім’я користувача

Очевидно, моя навичка початківця Elisp.
biocyberman

Ми тут, щоб вчитися :). За допомогою цієї форми я отримую helm-recentfбуфер на старті, тому ваше рішення для оновлення 2 не потрібно.
Значуще ім’я користувача

@MeaningfulUsername Я зробив оновлення 3 : D, він обробляє випадок, коли ви викликаєте emacs з ім'ям файлу або чимось уже.
biocyberman

І як ви вже зазначали, версія, що цитується, не перемикається на буфер, тому здається, що ваш автомобіль (штурвал-Recentf) є правильним рішенням. (Я думав, що це повинен бути лямбда-вираз замість просто списку, але це не спрацювало ...)
Значне ім'я користувача

2

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

Конфігурація за допомогою пакета use :

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

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

не працює з демоном.
HörmannHH
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.