gpt4 book ai didi

clojure - 在 vim 中突出显示函数体中的参数

转载 作者:行者123 更新时间:2023-12-03 05:55:04 25 4
gpt4 key购买 nike

一些可以从 IDE 借用的东西。因此,我们的想法是在函数体内突出显示函数参数(可能还有作用域变量名称)。这是某些 C: 的默认行为:

plain vim highlighting

好吧,如果我将光标放在 func 内,我希望看到参数 foobar 突出显示以遵循算法逻辑更好。请注意,func2 中类似名称的 foo 不会突出显示。不过,这种奢侈可以省略......

func hilighted

使用本地范围的变量,我还希望本地初始化的变量高亮:

highlight <code>i</code> inside for

终于重新展现奢华:

luxury again

写这个并不是那么简单。我用 C 来给出一个总体概念。真的,我可以更好地使用它来进行Scheme/Clojure 编程:

for clojure too inside let construct

这应该识别例如 letloopfordoseq 绑定(bind)。

我的 vimscript-fu 没那么强;我怀疑我们需要

  • 解析(非正则表达式?)光标下函数定义中的参数。当然,这将是特定于语言的。我的首要任务是 Clojure。
  • 定义语法区域以仅覆盖给定的函数/范围
  • 给出所需的语法匹配

作为一个函数,它可以映射到一个键(如果资源非常密集)或CursorMoved(如果不是那么慢的话)。

好的,现在。有人写过/发现过类似的东西吗? vimscript 专家知道如何真正开始编写这样的脚本吗?

对于轻微的离题和格式错误,我们深表歉意。请随意编辑/格式化。或投票结束。

最佳答案

这比听起来要困难得多,而且对于现有的 vimscript API 来说几乎是不可能的,因为您不仅需要解析文件;还需要解析文件。如果您希望它正常工作,您需要增量地解析文件。这就是为什么常规语法文件仅限于您可以使用正则表达式执行的操作 - 当您更改几个字符时,vim 可以找出语法突出显示中发生的更改,而无需重做整个文件。

vim 语法荧光笔仅限于处理正则表达式,但如果您执意要这样做,您可以在 vimscript 中使用自己的解析器,并让它生成引用文件中标记的缓冲区本地语法:行和列,在正则表达式中使用\%l 和\%c 原子。每次更改后都必须重新运行。不幸的是,没有用于“文件已更改”的自动命令,但有 CursorHold 自动命令,它会在您空闲一段可配置的持续时间时运行。

关于clojure - 在 vim 中突出显示函数体中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9348687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com