gpt4 book ai didi

wordpress - 改进 T-SQL 的 GeSHi 语法突出显示

转载 作者:行者123 更新时间:2023-12-02 21:45:27 25 4
gpt4 key购买 nike

我正在使用WP-GeSHi在 WordPress 中,我对它非常满意。然而,在一些小场景中,当关键字处于以下状态时,颜色突出显示过于激进:

  1. 变量名称(由前导 @ 表示)
  2. 另一个单词的一部分(例如 INSERTED 中的 IN)
  3. 组合(变量名称的一部分,例如 @JOINBING 中的 JOININ)
  4. 在方括号内(例如[status])

某些关键字区分大小写,而其他关键字则不区分大小写。下面的屏幕截图总结了出现问题的各种情况:

enter image description here

现在,GeSHi.php 中的代码相当冗长,而且我绝不是 PHP 专家。我不怕在这里弄脏我的手,但我希望其他人对此代码进行了更正并可以提供一些指示。我已经实现了一种解决方法来防止 @@ROWCOUNT 被错误地突出显示,但这很容易,因为 @@ROWCOUNT 已定义 - 我只是将数组打乱,以便它在 ROWCOUNT 之前找到。

我希望 GeSHi 完全忽略不是整个单词的关键字(无论它们是以 @ 为前缀还是立即被其他字母/数字包围)。 JOIN 应为灰色,但 @JOINJOINS 不应为灰色。我还希望它忽略方括号内的关键字(毕竟,这就是我们告诉 Management Studio 不要用颜色突出显示它的方式,也是我们告诉 SQL 引擎忽略保留字、关键字和无效标识符的方式)。

最佳答案

您可以通过在数组末尾添加 PARSER_CONTROL 控件来实现此目的:

'PARSER_CONTROL' => array(
'KEYWORDS' => array(
1 => array( // "1" maps to the main keywords near the start of the array
'DISALLOWED_BEFORE' => '(?![\(\w])',
'DISALLOWED_AFTER' => '(?![\(\w])'
),
5 => array( // "5" maps to the shorter keywords like "IN" that are further down
'DISALLOWED_BEFORE' => '(?![\(\w])',
'DISALLOWED_AFTER' => '(?![\(\w])'
),
)
)

编辑

我修改了您的要点,将您添加到 SYMBOLS 的一些关键字移回到 KEYWORDS(尽管在它们自己的组中,并且使用您的自定义样式),并且我更新了 PARSER_CONTROL 数组以匹配新的关键字数组索引,并包含 geshi 生成的默认regex。这是链接:

https://gist.github.com/jamend/07e60bf0b9acdfdeee7a

关于wordpress - 改进 T-SQL 的 GeSHi 语法突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23544380/

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