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

时间:2013-08-29 12:31:58

标签: emacs lisp customization tabbar

我想在emacs的标签栏标签栏中标记有未保存更改的缓冲区。此外,我想将F1-F12指定给缓冲区,然后按相应按钮打开它们。 但由于我在lisp中没有编程实践,我不知道从哪里开始。另外我觉得学习lisp知道如何在低级别上配置emacs是一种非常有用的技能。

所以我的问题不是如何实现这一目标,而是从哪里开始寻找。也许如何开始学习Lisp。

由于

4 个答案:

答案 0 :(得分:4)

以下代码适用于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 http://www.lawlist.com/images/frames_tabbar.png

答案 1 :(得分:1)

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

我会对每一个做简要回复,但如果你不清楚,你应该问一个单独的问题。

  

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

不,你不想那样。 这已在mode line中完成。

  

我想将F1-F12指定给缓冲区,然后按相应按钮

打开它们

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

  

如何开始学习Lisp

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

Emacs具有出色的可定制性,您可以使其完全符合您的要求。 然而,你必须意识到它已经被许多聪明人使用了30多年,所以,只要你的愿望合理,这可以开箱即用,如果没有,你会有很多乐趣实现你自己。

答案 2 :(得分:1)

正如sds所提到的,你必须浏览信息页面。您可以像sds一样提到C-h我是Emacs Lisp RET,或者你可以做M-x信息然后从那里找到Emacs Lisp Intro。

答案 3 :(得分:0)

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