1

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

所以我的问题不是真的如何归档,而是从哪里开始寻找。也许如何开始学习 Lisp。

谢谢

4

4 回答 4

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.el、、tabbar.eltabbar-window.el

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


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

截屏
(来源:lawlist.com

于 2013-08-29T18:00:08.367 回答
1

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

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

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

不,你不想那样。这已经在模式 中完成了。

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

不,你不想那样。钥匙很珍贵,你不想那样浪费它们。使用鼠标缓冲区菜单list-buffers

如何开始学习 Lisp

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

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

于 2013-08-29T13:56:29.053 回答
1

正如 sds 所提到的,您必须浏览信息页面。您可以按照 sds 的说明执行 Ch im Emacs Lisp RET,或者您可以执行 Mx info 然后从那里找到 Emacs Lisp Intro。

于 2013-08-29T14:06:37.310 回答
0

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

于 2013-08-29T14:35:16.437 回答