แทนที่หน้าจอเริ่มต้นด้วยรายการล่าสุด


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 ฉันทำUpdate 3 : D มันจัดการกับกรณีที่คุณเรียก emacs ด้วยชื่อไฟล์หรืออะไรบางอย่างอยู่แล้ว
biocyberman

และตามที่คุณจดบันทึกไว้เวอร์ชันที่ยกมาไม่ได้เปลี่ยนไปใช้บัฟเฟอร์ดังนั้นดูเหมือนว่า (car (helm-recentf) ของคุณจะเป็นทางออกที่ถูกต้อง (ฉันคิดว่ามันควรจะเป็นแลมบ์ดาแสดงออกแทนที่จะเป็นแค่รายการ แต่มันไม่ได้ผล ... )
ชื่อผู้ใช้ที่มีความหมาย

2

นี่คือแพคเกจที่แสดงrecentf-open-filesเมื่อเริ่มต้น Emacs ที่ไม่มีไฟล์ให้เปิด: https://github.com/zonuexe/init-open-recentf.el

การกำหนดค่าด้วยuse-package :

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

(use-package init-open-recentf
  :config
  (init-open-recentf))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.