emacs tabbar 自定义,使未保存的更改可见

标签 emacs lisp customization tabbar

我想在 emacs 的 tabbar 选项卡栏中标记具有未保存更改的缓冲区。我还想将 F1 - F12 分配给缓冲区,然后按相应的按钮打开它们。 但是因为我没有 lisp 的编程实践,所以我不知道从哪里开始。我还觉得学习 lisp 以了解如何在低层配置 emacs 是一项非常有用的技能。

所以我的问题不是真正如何实现它,而是从哪里开始寻找。以及如何开始学习 Lisp。

谢谢

最佳答案

以下代码适用于 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


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

screenshot
(来源:lawlist.com)

关于emacs tabbar 自定义,使未保存的更改可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511113/

相关文章:

WordPress 和子主题 - 找出要覆盖哪个 .php 的策略?

iphone - iOS - iPhone : UISlider track image disappearing randomly

java - J日历 : how to change the foreground color of certain days?

emacs - 是否可以在每个文件的基础上禁用次要模式(例如 flyspell)?

Emacs 函数创建新终端

lisp - lisp 中的非阻塞输入

function - 如何在 emacs lisp 函数中进行搜索

lisp - 避免 Clozure lisp 中的回声(菜鸟)

emacs - 禁用 lisp 模式的 cedet/语义代码完成

vim - 如何为 Groovy 类生成 TAGS 文件以便在 VIM/Emacs 中使用