各位 Emacs 道友,大家好,想大家咨询一下,安装了dashboard 面板后我想当点击了Projects中的项目的时候自动打开 treemacs 并打开该项目在 recent file 中的文件,实现这个功能要怎么做?
简单看了一下,应该自定义这个就好:dashboard-projects-switch-function
你好!根据你说的dashboard-projects-switch-function 使用它来进行性设置,但是接收到的项目路径不对一直是根路径/。
之前没用过dashboard,根据chatgpt生成的代码略微调整了下,大体可用,细节可能需要你自己调整。
主要代码步骤为三步:
1、找到项目根路径
2、treemacs打开项目。根据项目根路径
3、打开项目相关文件。匹配包含项目根路径的recentf文件
具体代码如下:
(use-package projectile
:ensure t
:config
(projectile-mode +1))
(defun my/dashboard-open-project-and-treemacs (project-root)
"Open treemacs for the given PROJECT-ROOT and open recent files."
(interactive)
;; 打开 treemacs 并跳转到项目根目录
(treemacs-add-and-display-current-project)
;; 尝试从 recentf 列表中找到与该项目相关的文件并打开
(let ((recent-files (seq-filter
(lambda (file)
(string-prefix-p project-root file))
recentf-list)))
(if recent-files
;; 遍历并打开与项目相关的所有文件
(dolist (file recent-files)
(find-file file))
(message "No recent files found for project %s" project-root))))
(use-package dashboard
:ensure t
:after projectile
:config
(setq dashboard-items '((recents . 5)
(projects . 5)))
(dashboard-setup-startup-hook)
(setq dashboard-item-shortcuts '((recents . "r")
(projects . "p")))
(setq dashboard-projects-backend 'projectile) ;; 确保 dashboard 使用 projectile 获取项目
(setq dashboard-projects-switch-function 'my/dashboard-open-project-and-treemacs))
好的,谢谢啦!我试试行不行。
你好!你能再帮我一下吗?我想当跳转到treemacs 中的时候,treemacs workspace 只留当前项目在工作空间中,其他的删除。并且只显示的recentf文件和treemacs 窗口其他窗口和buffer关闭。
您好,就是稍微提个建议哈,不要多次只提需求伸手询问。这些小功能都不难,学习一下 emacs lisp 自己动手才有乐趣。