【问题标题】:Dynamic syntax highlighting动态语法高亮
【发布时间】:2012-04-07 10:26:32
【问题描述】:

我正在寻找一种工具,可以让我自定义 动态 语法高亮规则:

静态语法高亮示例(大多数 IDE 已经这样做了)。

  1. 将所有出现的单词int 突出显示为红色。

  2. 以蓝色突出显示所有字符串(包含在 " 中)。

DYNAMIC 语法高亮示例

  1. 给定一个出现两次 > 的 txt 字符串,我希望它以紫色突出显示。

  2. 如果我单击一个文本块,我希望同一文件上的所有 txt 块都以绿色突出显示。

我假设以前可能有人制作过这样的荧光笔,但我在网上找不到任何东西。任何反馈:

  1. 我可以扩展现有项目(理想情况下,我希望这是一个 IDE 插件)来自定义我的动态需求?

  2. 如果情况 1 不存在,任何可能对此类项目最有效的模板语言?即任何动态突出显示文本的框架,动态地,同时启用编辑 - 很容易扩展。

【问题讨论】:

  • 更新:我发现 XText 看起来像是一个很好的框架,但对于这个项目来说它有点太重了(我想要一些我每次想添加一个不需要重新编译的东西新规则或验证钩子)。但是,它很强大。还有其他想法吗?
  • 有什么建议吗?这听起来像是一个有用的 IDE 插件
  • 我偶然发现了EclipseColorer,它似乎扩展了 Eclipse 的突出显示能力——可能是一个不错的起点。
  • 对于您的动态示例 #1,您是指出现两次以上的特定字符串吗?我假设您并不是指每个长度的每个文本字符串都出现两次以上但想要检查...对于#2,您能举个例子吗?听起来令人困惑(您是在谈论匹配块吗?)。

标签: eclipse dynamic netbeans ide syntax-highlighting


【解决方案1】:

Emacs (www.gnu.org/s/emacs/) 应该能够做到这一点。

Emacs 是高度可定制的;你编写 (e)Lisp 函数来让它做你想做的事。 Emacs 的许多特定于语言的模式都会“固定”突出显示关键字;您应该能够劫持该机器并根据您的兴趣使突出显示动态。 GNU 提供了用于此类模式的大量 eLisp 代码库。

【讨论】:

  • 能否给我们举个eLisp代码的例子来实现上面的一些例子?
【解决方案2】:

Eclipse 所做的事情可能正是您想要的,或者至少非常接近。

在“首选项”>“Java”>“编辑器”>“标记事件”中启用“标记事件”

只要您单击局部变量之类的东西,您就会在当前源文件中标记该变量的所有出现。

这与“注释”结合使用会非常有用。对除“出现”之外的所有注释禁用“包含在下一个/上一个导航中”。最简单的方法是通过 UI 中的向上/向下箭头。您单击工具栏中黄色大向上或向下箭头旁边的黑色小向下箭头。现在您可以使用逗号和句点来浏览您突出显示的所有事件。

【讨论】:

  • 这是一个很酷的功能,但我又在寻找一个更全面的框架。
【解决方案3】:

Netbeans 高亮工具也相当完善和可配置。

将所有出现的单词“int”突出显示为红色。

  • 在 Netbeans 中,此特定关键字没有默认条目,原语位于 Keyword 组中。

用蓝色突出显示所有字符串(用 "'s 括起来)。

  • 是的,这是可能的;类别:String

给定一个出现 > 两次的 txt 字符串,我希望它以紫色突出显示。

  • 也许我不太理解这一点,因为如果你将所有写过多次的单词都高亮显示出来,我担心你的所有代码在某行代码之后都会变成紫色!

如果我单击一个文本块,我希望同一文件上的所有 txt 块都以绿色突出显示。

  • 当您通过双击选择一个单词时,所有出现的单词都将突出显示,并且在包含该关键字的每一行的右栏中都会出现一个标记。您可以单击标记快速转到包含该事件的行。
  • 您还可以使用快捷键Ctrl+F3 来查找选择并突出显示所有出现的内容(它可以是您想要的所有内容,而不仅仅是关键字)。然后使用 Shift+F3 查找上一个出现和 F3 查找下一个

我可以扩展现有项目(理想情况下,我希望这是一个 IDE 插件)来定制我的动态需求?

  • 我从来没有尝试过扩展高亮类别,这似乎是可能的,但需要做很多工作!请参阅此link 和此one

【讨论】:

    【解决方案4】:

    我不确定你是否打算使用完整的 IDE,但 Sublime Text 2 有一些非常好的自动突出显示:http://www.sublimetext.com/2

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      相关资源
      最近更新 更多