【问题标题】:emacs tabbar customisation, making unsaved changes visibleemacs 标签栏自定义,使未保存的更改可见
【发布时间】:2013-08-29 12:31:58
【问题描述】:

我想在 emacs 的标签栏标签栏中标记未保存更改的缓冲区。我还想将 F1 - F12 分配给缓冲区并通过按下相应的按钮打开它们。 但由于我没有 lisp 的编程实践,我不知道从哪里开始。我也觉得学习 lisp 以了解如何在低 lwevel 上配置 emacs 是一项令人难以置信的有用技能。

所以我的问题实际上不是如何归档,而是从哪里开始寻找。以及如何开始学习 Lisp。

谢谢

【问题讨论】:

    标签: emacs lisp customization tabbar


    【解决方案1】:

    以下代码适用于 Emacs 和 tabbar.el 的股票版本——它在选项卡中修改后的缓冲区名称的开头创建 + 符号。

    ;; BUFFER MODIFICATION STATE INDICATOR
    (defadvice tabbar-buffer-tab-label (after fixup_tab_label_space_and_flag activate)
       (setq ad-return-value
             (if (and (buffer-modified-p (tabbar-tab-value tab))
                      (buffer-file-name (tabbar-tab-value tab)))
                 (concat " + " (concat ad-return-value " "))
               (concat " " (concat ad-return-value " ")))))
    (defun ztl-modification-state-change ()
       (tabbar-set-template tabbar-current-tabset nil)
       (tabbar-display-update))
    (defun ztl-on-buffer-modification ()
       (set-buffer-modified-p t)
       (ztl-modification-state-change))
    (add-hook 'after-save-hook 'ztl-modification-state-change)
    (add-hook 'first-change-hook 'ztl-on-buffer-modification)
    

    如果您想更进一步,请查看aquamacs-tabbar.el 的源代码——它包含可自定义的选项,例如tabbar-unselected-modifiedtabbar-selected-modified。您可能需要将 Aquamacs 用于上述选项,或者您需要对以下文件进行一些修改,以便它们与 Emacs 的库存版本一起使用:aquamacs-tabbar.eltabbar.eltabbar-window.el

    https://github.com/davidswelt/aquamacs-emacs/tree/master/aquamacs/src/site-lisp/tabbar


    另请参阅此示例,了解进一步自定义外观的可能性。


    (来源:lawlist.com

    【讨论】:

      【解决方案2】:

      正如 sds 所述,您必须浏览信息页面。您可以按照 sds 的说明执行 C-h i m Emacs Lisp RET,或者您可以执行 M-x info 然后从那里找到 Emacs Lisp Intro。

      【讨论】:

        【解决方案3】:

        您在一个问题中提出了太多问题。

        我将简要回答每个问题,但如果您不清楚,请单独提出问题。

        我想在 emacs 的标签栏标签栏中标记未保存更改的缓冲区。

        不,你不希望这样。 这已经在mode line 中完成了。

        我想将 F1 - F12 分配给缓冲区并通过按下相应的按钮打开它们

        不,你不希望这样。 钥匙很珍贵,你不想那样浪费它们。 使用Mouse Buffers menulist-buffers

        如何开始学习 Lisp

        在 Emacs 中,输入 C-h i m Emacs Lisp Intro RET 并开始阅读。

        Emacs 具有极好的可定制性,您可以让它完全按照您的意愿行事。 但是,您必须意识到它已经被许多聪明人使用了 30 多年,因此,只要您的愿望是合理的,就有可能开箱即用,如果没有,您将获得很多乐趣自己动手。

        【讨论】:

        • 模式行指示当前缓冲区是否有未保存的更改。我认为他希望在标签栏中列出其他缓冲区的指示。
        • @Stefan:不知道,你可能是对的。如果这确实是他的问题,他应该专门提出一个新问题,而不需要任何其他主题。
        • @Stefan:这正是我要问的,我已经知道模式线了。
        【解决方案4】:

        您还可以查看tabbar.el 来尝试找出创建栏的实际文本的位置(即您要添加“未保存”指示符的位置)。要确定缓冲区是否有未保存的更改,可以使用buffer-modified-p 函数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-21
          • 1970-01-01
          • 1970-01-01
          • 2018-05-28
          相关资源
          最近更新 更多