Emacs快速创建侧边栏——maple-explorer


闲着没事又造了一个轮子,:smile:

maple-explorer 是一个用于快速创建类似neotree文件浏览,或者类似maple-imenu的变量函数浏览的侧边栏的插件,让每个人都能写一个属于自己的侧边栏

emacs-maple-explorer

  • 快速创建一个侧边栏: 只需要定义一个maple-explorer-NAME-list的函数,并且返回一个列表

    (list
     :name name
     :value value
     :face face
     :click click
     :status 'close ;; or 'open
     :children '((child1 child2 ...))

    其中child1,child2格式与父列表格式一致,child1中也可以嵌套下一组children,比如我定义一个名为aaa的list的函数:

    (defun maple-explorer-aaa-list(&optional isroot)
      "Get recentf file list ISROOT mean first call."
      (list
       :name "aaa"
       :value "aaa"
       :face 'font-lock-constant-face
       :click 'maple-explorer-fold
       :status 'open
       :children
       (list
        (list :name "aaa_child1"
              :face 'font-lock-keyword-face
              :click (lambda() (interactive) (message "bbb")))
        (list :name "aaa_child2"
              :face 'font-lock-comment-face
              :click (lambda() (interactive) (message "aaaa"))))))

    定义好后只要使用 (maple-explorer-define aaa) 就能快速创建一个maple-explorer-aaa的函数,使用它就能打开一个侧边栏,效果是这样的

  • 自定义内容显示: maple-explorer提供了一个maple-explorer-NAME-name-function的变量,可用于自定义内容的显示,比如对于一个文件列表,我可以增加自定义图标

    (defun maple-explorer-icon (str icon)
      "The ICON of maple-explorer STR."
      (format "%s %s" (propertize "\t" 'display icon) str))
    
    (defun maple-explorer-icon-file-name(info)
      "Custom maple-explorer-file INFO icon name."
      (let ((name  (plist-get info :name))
            (value (plist-get info :value)))
        (plist-put info :indent 5)
        (cond ((or (string= name ".") (string= name ".."))
               (maple-explorer-icon name (all-the-icons-faicon "folder")))
              ((file-directory-p value)
               (maple-explorer-icon
                name
                (if (maple-explorer--is-open info)
                    (all-the-icons-faicon "folder-open")
                  (all-the-icons-faicon "folder"))))
              (t (maple-explorer-icon name (all-the-icons-icon-for-file value))))))
    
    (setq maple-explorer-file-name-function 'maple-explorer-icon-file-name)

    自定义之前是这样的

    自定义之后是这样的

  • 更多信息 maple-explorer目前已实现了

    maple-explorer-file      ;; 文件浏览
    maple-explorer-imenu     ;; 函数变量名浏览
    maple-explorer-buffer    ;; 已打开buffer浏览
    maple-explorer-recentf   ;; 最近文件浏览
    maple-explorer-project   ;; 已打开的项目浏览

    欢迎各位emacs同道测试

作者: honmaple
链接: https://honmaple.me/articles/2019/11/Emacs快速创建侧边栏——maple-explorer.html
版权: CC BY-NC-SA 4.0 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat
alipay

加载评论