在Emacs中显示菜单/帮助屏幕的正确方式是什么?

在Emacs中显示菜单/帮助屏幕的正确方式是什么?,emacs,menu,Emacs,Menu,当使用诸如Org模式和Magit之类的工具时,该模式有时会显示帮助菜单。例如,组织模式导出将显示一个漂亮的菜单,它接受单个键,然后执行一些命令。在Magit中,当查看状态视图时,它将接受选项卡以展开暂存和提交区域 对于Git和Org,这些区域的位置都很好,占据了emacs框架中最方便的部分。emacs是如何选择的 此外,这些视图是只读的,直到用户在Magit和status视图中按tab键为止。在创建这些控制编辑但允许模式编辑文件和显示备选文本的视图时,是否有最佳做法 也许答案是看看这些函数a、B

当使用诸如Org模式和Magit之类的工具时,该模式有时会显示帮助菜单。例如,组织模式导出将显示一个漂亮的菜单,它接受单个键,然后执行一些命令。在Magit中,当查看状态视图时,它将接受选项卡以展开暂存和提交区域

对于Git和Org,这些区域的位置都很好,占据了emacs框架中最方便的部分。emacs是如何选择的

此外,这些视图是只读的,直到用户在Magit和status视图中按tab键为止。在创建这些控制编辑但允许模式编辑文件和显示备选文本的视图时,是否有最佳做法


也许答案是看看这些函数a、B和C。这很好,我只是在自己学习和实验。

Magit并不是Emacs中弹出缓冲区的最简单介绍,但它确实很复杂,是一本很好的读物。在您的机器上查找magit-popup.el,例如M-x查找功能RET magit popup mode setup。在我看来,该函数似乎是开始读取该文件的一个很好的候选函数。您可以在文件magit-remote.el的magit push popup中看到正在使用的宏magit define popup

最后,它归结为在一个新窗口中打开一个新的缓冲区,并为它提供一个具有所有键绑定的专用主模式

另一个很好的候选函数是temp buffer-*函数族


希望,这给了我们一些开始阅读的建议

Magit并不是Emacs中弹出缓冲区的最简单介绍,但它确实非常复杂,而且是一本很好的读物。在您的机器上查找magit-popup.el,例如M-x查找功能RET magit popup mode setup。在我看来,该函数似乎是开始读取该文件的一个很好的候选函数。您可以在文件magit-remote.el的magit push popup中看到正在使用的宏magit define popup

最后,它归结为在一个新窗口中打开一个新的缓冲区,并为它提供一个具有所有键绑定的专用主模式

另一个很好的候选函数是temp buffer-*函数族


希望,这给了我们一些开始阅读的建议

使用Hydras可轻松显示菜单/帮助屏幕,如Magit和org模式:

这是一个很短的elisp编写方法,它将为您提供一个类似于org模式的菜单。例如:

(defhydra hydra-zoom (global-map "<f2>")
"zoom"
  ("g" text-scale-increase "in")
  ("l" text-scale-decrease "out")) 

ps:这不是组织模式和magit使用的。Magit的系统直到最近才可重用,我不知道它与Hydra相比如何。Hydras的一个很好的功能是,你可以告诉它在按键后不要消失,这样你就可以连续按多个键。

显示菜单/帮助屏幕的一种简单方法是使用Hydras:

这是一个很短的elisp编写方法,它将为您提供一个类似于org模式的菜单。例如:

(defhydra hydra-zoom (global-map "<f2>")
"zoom"
  ("g" text-scale-increase "in")
  ("l" text-scale-decrease "out")) 

ps:这不是组织模式和magit使用的。Magit的系统直到最近才可重用,我不知道它与Hydra相比如何。Hydras的一个很好的功能是,你可以告诉它在按键后不要消失,这样你就可以连续按多个键。

请将你的问题缩小到只有一个特定问题,并且有有限的正确答案。您在各种不同的主要模式下看到的每个帮助窗口都可能有不同的生成和显示方法,并且没有一个通用的答案或最佳实践-问题太广泛,无法按原样回答。@lawlist我很乐意-在决定最佳方式时遇到困难,但又没有使其更广泛。例如,如果你正在创建一个新模式,你知道你想表现得像Magit一样,并且还使用组织模式的选项卡循环,那么你会如何开始?我真的不知道从哪里开始。我在黑暗中摸索一段时间,直到我觉得它值得放在堆栈溢出。一个想法,你可能要考虑探索是狭隘的地区,在一个特定的任务。您还可以考虑探索一个间接缓冲区,该缓冲区首先使用窄到区域,可以有它自己的模式和它自己的键绑定,或者它可以保持以前的模式活动。我在从*Org Agenda*缓冲区或主待办文件编辑任务时执行此操作。看一看org窄到子树-我使用makeindirectbuffer的一个变体。例如,我的主要待办事项文件有截断行,而我的间接缓冲区有换行。请将您的问题缩小到只有有限正确答案的一个特定问题。您在各种不同的主要模式下看到的每个帮助窗口都可能有不同的生成和显示方法,并且没有一个通用的答案或最佳实践-问题太广泛,无法按原样回答。@lawlist我很乐意-在决定最佳方式时遇到困难,但又没有使其更广泛。例如,如果你正在制作一种新的模式,你知道你很想表现出来
像Magit一样,也可以使用组织模式的选项卡循环,您将如何开始?我真的不知道从哪里开始。我在黑暗中摸索一段时间,直到我觉得它值得放在堆栈溢出。一个想法,你可能要考虑探索是狭隘的地区,在一个特定的任务。您还可以考虑探索一个间接缓冲区,该缓冲区首先使用窄到区域,可以有它自己的模式和它自己的键绑定,或者它可以保持以前的模式活动。我在从*Org Agenda*缓冲区或主待办文件编辑任务时执行此操作。看一看org窄到子树-我使用makeindirectbuffer的一个变体。例如,我的主待办文件有截断行,而我的间接缓冲区有换行。我想这就是我想要的。基本上,我认为我需要尽可能地通读magit。我的目标是打开一个新的缓冲区,设置一个用于任务的自定义模式,以及自定义键绑定。出于某种原因,我并不认为我需要不止一种模式,但看起来magit也使用了不止一种模式。我想这就是我想要的。基本上,我认为我需要尽可能地通读magit。我的目标是打开一个新的缓冲区,设置一个用于任务的自定义模式,以及自定义键绑定。出于某种原因,我并不认为我需要不止一种模式,但看起来magit也使用了不止一种模式。