Questions tagged «overlays»

2
叠加层有什么作用,它们与文本属性有何不同?
在手动状态: 为了呈现功能,您可以使用覆盖来更改缓冲区文本在屏幕上的外观。 从名称上看,它暗示可以用来在现有文本上创建“图层”,但是上面的描述似乎表明它改变了文本的外观,感觉与文本属性非常相似。 覆盖层的具体用途是什么?他们提供哪些文本属性不提供的功能?可以使用它们在缓冲区(如弹出窗口,信息框等)中的文本上写文本吗?

2
在框架底部显示单词列表?
我想在我打开的每个emacs框架的底部(尽管顶部也可以)水平地在单独的行上显示3个单词列表。我已经想到了6种方法来解决这个问题,但是它们都有问题: 我的第一个想法是在模式行中添加一行,但是AFAICT不能在模式行中使用换行符,它只能转换为“ ^ J”。 我的第二个想法是使该行横穿屏幕顶部并使用标题行,但它也不支持换行符。 我可以在窗口的最后三行上显示一个叠加层,但是要使其健壮起来似乎很困难-当点到达该叠加层时(而不是窗口的实际末端),需要触发滚动,并且我必须不断地重新定位覆盖层,因为覆盖层位于文本空间而非窗口空间中。 我可以尝试在框架的底部制作专用窗口。我已经尝试过对此进行编码,但是它也不是很健壮,当框架中已经包含分割窗口并且我不得不将Cx,1重新绑定到可忽略的自定义版本的delete-other-windows时,它似乎无法正常工作我的特殊窗户,我肯定还有其他情况。同样,当一个帮助窗口弹出时,它会垂直弹出,因为它认为已经存在一个水平分割线(从技术上讲,它已经存在了,但仅显示一个单行窗口)。 我可以为此设置一个专用框架,但随后我的配置将无法在终端模式下运行,并且必须编写脚本窗口管理器以使其保持在屏幕底部,以使其无法选择,而不影响布局,等等等 我可以将3行的文本直接插入minibuffer中。我得到了部分工作,可以增加迷你缓冲区以适应3条线,并可以显示它们。但是,任何时候只要回显任何消息,这些行就会消失,直到我发出另一个命令,然后它们才重新出现。理想情况下,这3条线和回波区域不会重叠,因此我可以看到两者。如果我可以可靠地过滤哪些消息进入回显区域,这将不太烦人-我在EmacsWiki上找到了一个解决方案,但它似乎不适用于源自emacs C源代码的消息(特别是我想获得删除文件保存消息,因为我经常在计时器上自动保存)。 对于上下文,我的目标是不断显示当前缓冲区中最常用的单词,当前缓冲区中最近的单词以及当前缓冲区中最近使用的单词。我打算能够通过语音命令将它们插入缓冲区。因此,我可以说“最近2”,并让它从单词最近点的列表中选择第二项并插入。我只关心单词列表对于我当前正在编辑的缓冲区是否可见。我不想使用各种代码完成模式使用的弹出窗口,因为我需要列表始终可见。

5
毫不干扰地改变文本呈现的方法?
我正在编写用于语音识别的emacs扩展,并且正在寻求有关特定功能的帮助。语音识别器(Dragon)的某些单词识别能力始终很差-训练了几次并不重要,这只会使您无法识别某些单词。通常,在同一时间写主题或编码时,一遍又一遍地使用很多相同的单词。 因此,我编写了一种使用覆盖层来更改单词在缓冲区中的呈现方式的模式。它在单词中使用随机字母,在其下方用随机颜色加下划线,并在其顶部放置随机变音标记(重音符号,变音符号等)。这是屏幕截图(您可能需要缩放以查看标记/下划线): 然后您可以说“紫色p头发”,它将在单词“ a”下寻找带有紫色下划线的单词,并带有一个变音符,看起来像头发,然后为您键入该单词。因此,在上面的屏幕截图中,这将导致emacs为您键入“ regexp-quote”。 这个想法是让您使用识别器一贯擅长识别的有限词组来引用屏幕上已经使用过的任何词组。 它工作得很好,只是偶尔会发生碰撞。为了做到这一点,我可以学习一致地引用单词,就像我使用单词的md5哈希中的字节一样,而不是(random)让算法分配更改以免发生冲突。我只发现了6种易于区分的颜色(当下划线只有一个字符宽且只有一个像素厚时很难做到)和3种易于区分的变音符号(易于区分彼此,并且与上面的下划线也不能混淆线或与下划线重叠的位置),请参见上方来源上方。 我需要更多方法来更改渲染,以减少碰撞频率。理想情况下,渲染修改将: 不要被其余的文本所震撼。例如,这导致我忽略了反视频属性。 不容易与其他更改混淆。上划线很容易被误认为前一行的下划线。除非字体大小不切实际,否则许多变音符看起来都差不多。 在空间上靠近其他变化所在。现在,一旦我的眼睛找到了目标角色,所有的信息,标记,下划线和字母就在那里。 可以正确显示变音标记的固定宽度字体(编码所需)很好地工作(我必须从Consolas切换到DejaVu Sans Mono,以使标记正确呈现) 在拉丁字母上工作。例如,有阿拉伯文的组合标记,但它们不与拉丁字母字符组合。 不要更改字母的颜色,因为它已经用于语法突出显示。 实际上可以在emacs中使用emacs lisp;) 也许有特殊的unicode字符控制渲染,可能会被滥用以开辟新的可能性?还是一种加粗下划线的方式,以便我可以轻松区分更多颜色?还是其他一些晦涩的emacs功能,可让您在unicode之外的字符顶部显示标记?


2
窗口位置中的临时文本,没有要修饰/覆盖的文本?
问:如何在屏幕位置的窗口中临时显示文本,而没有文本以显示/叠加? 我熟悉文本属性和覆盖背后的基本概念(另请参见本主题),已经使用了几次,但绝不熟练。我有限的理解是,需要文本来进行调整或覆盖,但是我想知道如何使用窗口中没有任何文本的部分。 这是示例的屏幕截图: 如何将文本临时(临时)放在屏幕快照的红色框中,即文本右边或缓冲区最后一行下方的空白处?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.