Emacs模式:突出显示点下方变量的用法

tib*_*bbe 5 emacs

在Python模式下,如果我将重点放在x下面的函数定义中的参数上

def f(x):
  #   ^------ point here
  print x
Run Code Online (Sandbox Code Playgroud)

x在功能正文中的使用以黄色突出显示。

  • 这是如何运作的?
  • 如果要编写自己的Emacs模式,如何为我的语言添加这种突出显示?

Ina*_*thi 0

不确定该模式具体是如何实现的,但这highlight-tags不久前作为思想练习编写的一个次要模式,它对匹配sgml标签执行类似的操作。

它并不能很好地确定要点击哪些标签,但无论如何,与您相关的部分将是highlight-tags-update// 。请记住,由于标签只有一个匹配标签,因此我只需要为缓冲区提供一对全局覆盖即可。您的用例可能有更多亮点,因此您需要保留它们的列表。hideshowsgml

你的抽象工作方式是:

  1. 取输出word-at-point
  2. 查找以下块中出现的所有单词(可能使用python-nav-*-block命令 和的某种组合search-forward
  3. 收集每场比赛的start/end
  4. overlay为每个start/end对创建一个新的make-overlay,并返回这些覆盖的列表。

然后,您需要一个函数来获取上述输出并将其存储在某个地方,以便您以后可以使用(mapcar #'delete-overlay overlays)

最后,您将添加hook一个post-command-hook运行函数来删除旧覆盖并生成新覆盖的函数。