我想在emacs的标签栏标签栏中标记有未保存更改的缓冲区。此外,我想将F1-F12指定给缓冲区,然后按相应按钮打开它们。 但由于我在lisp中没有编程实践,我不知道从哪里开始。另外我觉得学习lisp知道如何在低级别上配置emacs是一种非常有用的技能。
所以我的问题不是如何实现这一目标,而是从哪里开始寻找。也许如何开始学习Lisp。
由于
答案 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-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
另请参阅此示例,了解进一步自定义外观的可能性。
答案 1 :(得分:1)
你在一个问题中提出了太多问题。
我会对每一个做简要回复,但如果你不清楚,你应该问一个单独的问题。
我想在emacs的标签栏标签栏中标记有未保存更改的缓冲区。
我想将F1-F12指定给缓冲区,然后按相应按钮
打开它们
不,你不想那样。
钥匙很珍贵,你不想浪费它们。
使用Mouse Buffers menu或list-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
函数。