我想在 emacs 的标签栏标签栏中标记具有未保存更改的缓冲区。我还想将 F1 - F12 分配给缓冲区并通过按下相应的按钮打开它们。但由于我没有 lisp 的编程实践,我不知道从哪里开始。我也觉得学习 lisp 以了解如何在低 lwevel 上配置 emacs 是一项令人难以置信的有用技能。
所以我的问题不是真的如何归档,而是从哪里开始寻找。也许如何开始学习 Lisp。
谢谢
我想在 emacs 的标签栏标签栏中标记具有未保存更改的缓冲区。我还想将 F1 - F12 分配给缓冲区并通过按下相应的按钮打开它们。但由于我没有 lisp 的编程实践,我不知道从哪里开始。我也觉得学习 lisp 以了解如何在低 lwevel 上配置 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-modified
和tabbar-selected-modified
。您可能需要将 Aquamacs 用于上述选项,或者您需要对以下文件进行一些修改,以便它们与 Emacs 的库存版本一起使用: aquamacs-tabbar.el
、、tabbar.el
和tabbar-window.el
:
https://github.com/davidswelt/aquamacs-emacs/tree/master/aquamacs/src/site-lisp/tabbar
另请参阅此示例,了解进一步自定义外观的可能性。
(来源:lawlist.com)
你在一个问题中提出了太多问题。
我将简要回答每个问题,但如果您不清楚,您应该提出一个单独的问题。
我想在 emacs 的标签栏标签栏中标记具有未保存更改的缓冲区。
我想将 F1 - F12 分配给缓冲区并通过按下相应的按钮打开它们
不,你不想那样。钥匙很珍贵,你不想那样浪费它们。使用鼠标缓冲区菜单或list-buffers
。
如何开始学习 Lisp
在 Emacs 中,键入并开始阅读。C-h i m Emacs Lisp Intro RET
Emacs 是极好的可定制的,你可以让它做你想做的事。但是,您必须意识到它已经被许多聪明人使用了 30 多年,因此,只要您的愿望是合理的,就有可能开箱即用,如果没有,您将获得很多乐趣它自己。
正如 sds 所提到的,您必须浏览信息页面。您可以按照 sds 的说明执行 Ch im Emacs Lisp RET,或者您可以执行 Mx info 然后从那里找到 Emacs Lisp Intro。
您还可以查看并tabbar.el
尝试找出创建栏的实际文本的位置(即您要添加“未保存”指示符的位置)。要确定缓冲区是否有未保存的更改,您可以使用该buffer-modified-p
函数。