【问题标题】:Lisp syntax highlighting for ICSharpCode.TextEditorICSharpCode.TextEditor 的 Lisp 语法高亮显示
【发布时间】:2011-09-02 03:26:12
【问题描述】:

是否有用于 ICSharpCode.TextEditor 的 Common Lisp 语法高亮 .xshd 文件?我在 google 上找不到,而且编写语法突出显示规范文件的格式记录得非常糟糕,我自己也做不出一个很好的文件。我可以突出显示基本关键字,但仅此而已。

需要具备以下条件:

  • 突出显示常见的lisp关键字,例如listdolistread-linelambda
  • defundefmacrodefvar 等之后的单词的语法突出显示,从而在文本中突出显示 (defun a () ...)a。它不一定要完整,因为我可以添加更多内容,只需一两个即可展示它是如何完成的。
  • 高亮符号如:a
  • 以反引号和单引号形式突出显示带引号的列表,并在带引号的列表中“取消突出显示”转义形式(通过,@, 等转义)
  • 突出显示正在调用的函数的名称。例如,(a b c) 文本中,a 需要高亮显示
  • 可选:我错过的任何其他有用的东西(我是 lisp 新手,所以我不知道可以突出显示的所有内容)

有谁知道在哪里可以获得具有这些功能的 ICSharpCode.TextEditor 的 Common Lisp 语法高亮文件?

【问题讨论】:

  • 'Ping'我如果你得到一个答案,我也想要这个方案:)
  • @leppie 我怀疑我会得到答案,但我会很快设置赏金。
  • 您使用的是哪个版本的 ICSharpCode.TextEditor?我也许可以看看。
  • @leppie 我已经尝试过 3.2 和最新版本(4.something)。如果你真的找到了,我很乐意奖励你。
  • 代码应该是相对简单的,我以前为IronScheme的xacc.ide和VS2008都做过。

标签: c# syntax-highlighting common-lisp icsharpcode text-editor


【解决方案1】:

这是一个 Scheme 荧光笔的开始。不是很花哨,但展示了递归如何与规则集一起使用。

<SyntaxDefinition name="Scheme" extensions=".sls;.sps;.ss;.scm" 
     xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
  <Color foreground="Green" name="Comment" />
  <Color foreground="Blue" name="Syntax" />
  <Color foreground="Blue" name="Library Syntax" />
  <Color foreground="Blue" name="Auxilliary Syntax" />
  <Color foreground="DarkMagenta" name="Procedure" />

  <RuleSet>
    <Import ruleSet="Expression"/>
  </RuleSet>

    <RuleSet name="Expression">
        <Span color="Comment" multiline="false">
            <Begin>;</Begin>
        </Span>
    <Span color="Comment" multiline="true" >
      <Begin>\#\|</Begin>
      <End>\|\#</End>
    </Span>
    <Span ruleSet="Expression" multiline="true" >
      <Begin fontWeight="bold">\(</Begin>
      <End fontWeight="bold">\)</End>
    </Span>
    <Span  ruleSet="Expression" multiline="true">
      <Begin fontWeight="bold">\#\(</Begin>
      <End fontWeight="bold">\)</End>
    </Span>

    <Keywords color="Library Syntax">
      <Word>import</Word>
      <Word>export</Word>
      <Word>library</Word>
    </Keywords>

    <Keywords color="Syntax">
      <Word>define</Word>
      <Word>set!</Word>
      <Word>lambda</Word>
      <Word>begin</Word>
      <Word>if</Word>
      <Word>cond</Word>
      <Word>let</Word>
      <Word>letrec</Word>
    </Keywords>

    <Keywords color="Auxilliary Syntax">
      <Word>else</Word>
    </Keywords>

    <Keywords color="Procedure">
      <Word>map</Word>
      <Word>cons</Word>
      <Word>car</Word>
    </Keywords>

  </RuleSet>

</SyntaxDefinition>

【讨论】:

  • 这就是我所拥有的,从 Ruby .xshd 开始。你知道如何让它突出括号中的第一个单词吗?就像(a b c) a 一样会突出显示。
  • 在 Ruby 中,它有 &lt;MarkPrevious bold="true" color="MidnightBlue"&gt;(&lt;/MarkPrevious&gt;,这使得 ( 之前的单词变成蓝色。我试过MarkNext,但它不起作用。你能想到什么吗?
  • 在规则中使用肯定的后向断言正则表达式应该可以工作,但它不起作用:(
  • 你如何使用正则表达式?你必须告诉它它们是正则表达式而不是纯文本吗?
  • 尽管这不是我所需要的,但感谢您的尝试,获得 50 个代表 :)
猜你喜欢
  • 2010-10-26
  • 2010-11-26
  • 2016-06-09
  • 1970-01-01
  • 2011-08-26
  • 2011-09-22
  • 2016-08-16
  • 2015-05-22
  • 1970-01-01
相关资源
最近更新 更多