ICSharpCode.TextEditor的Lisp语法高亮显示

本文关键字:高亮 显示 语法 Lisp TextEditor ICSharpCode | 更新日期: 2023-09-27 18:07:13

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

需要包含以下内容:

  • 突出显示常见lisp关键字,如listdolistread-linelambda
  • defundefmacrodefvar等后面的单词进行语法高亮显示,从而在文本(defun a () ...)a中高亮显示。它不必是完整的,因为我可以添加更多,只是一个或两个很好,以显示如何完成。
  • 突出:a等符号
  • 突出显示反引号和单引号形式的引号列表,并"取消突出"引号列表中的转义格式(由,, @,等转义)
  • 显示正在调用的函数的名称。例如,在文本(a b c), a需要突出显示
  • 可选:任何我错过的东西,这将是有帮助的(我是新的lisp,所以我不知道所有可以突出显示)

有谁知道在哪里得到一个通用Lisp语法高亮显示文件的ICSharpCode。有这些功能的TextEditor ?

ICSharpCode.TextEditor的Lisp语法高亮显示

这是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>