改进T-SQL的GeSHi语法高亮

Aar*_*and 32 wordpress geshi syntax-highlighting

我在WordPress中使用WP-GeSHi,在很大程度上我对它非常满意.但是,有一些小的场景,当关键字为:时,颜色突出显示过于激进:

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

某些关键字区分大小写,有些则不区分大小写.下面的屏幕截图总结了出现这种情况的各种情况:

在此输入图像描述

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

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

Jon*_*end 31

您可以通过向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])'
        ),
    )
)
Run Code Online (Sandbox Code Playgroud)

编辑

我已经修改了你的要点,将你添加的一些关键字移SYMBOLSKEYWORDS(虽然在他们自己的组中并使用你的自定义样式),我更新了PARSER_CONTROL数组以匹配新的关键字数组索引,并且还包括默认的regexgeshi产生.链接在这里:

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

  • 天才.再次感谢你.(并且抱歉没有预先说明我的所有要求 - 我认为如果没有那些额外的,基本上无关的更改,问题已经是压倒性的.)现在,最后一个问题:为什么不让我让个人超过500个代表赏金?你知道我对这些微小变化感到头疼多久了吗? (8认同)