最近又想开始写博客了,于是重新捡起了Windows live writer。以前都是用它写C++或者是python的技术帖子。不过最近开始学习php了,发现WLW中我安装的插件不给力呀,对php代码的高亮简直不能算高亮过……这让我感觉跟不爽,于是决定找一个好用的源代码高亮工具。由于舍不得WLW,于是开始在其中的插件库中找寻。不过最后得到的答案让我很失望,没有让我满意的。大部分的缺点主要集中在以下几个方面:
对php的高亮效果很差……
配色方案不好看,而且不支持自定义……
部分高亮代码无法脱离插件……
于是我妥协了,开始寻找第三方工具。经过不懈努力,终于让我发现了一个我自认为不错的开源工具——GESHI,而且是用php写的,这点我很喜欢。一方面可以学习php。另一方面,可以自己修改代码,实现自己想要的功能。不看不知道呀,人家写的非常好了,还配有说明文档(PS:虽然是英文的,不过研究这些问题的,看英文应该不是问题了,哈哈)。不过他们只写了一个非常好的库,想要按照自己的想法来实现代码高亮,还得自己写个前台配置页面。各位如果不嫌弃,可以先试一试我自己搭的网站,先临时凑合一下。网址如下:http://syntaxhl.sinaapp.com/。
好了,我们还是先研究一下GESHI的API吧,按照我们喜欢的方式自定义自己的代码高亮工具。
首先,我们先要实例化一个GESHI对象,代码如下:
$source保存的是需要格式化的语言代码,而$language是指按照那种语言方式高亮代码。我们之后的操作都是利用GeSHi类提供的方法实现代码的自定义高亮。
1 设置高亮代码的head格式
header的格式有2种:div和pre。这两种方案的主要区别在于有代码行号的代码上。header使用pre的高亮代码得到的字体比较小。如果你不习惯的话,还是使用GESHI_HEADER_DIV吧。
2 设置代码行号
2.1 添加代码行号
$flag有3种格式,分别是
需要说明的是GESHI_FANCY_LINE_NUMBERS的特殊之处。相信细心的读者看到过代码背景交替高亮的效果,这个常量就是干这个用的。不仅可以交替高亮,还可以每N行高亮一次,使用方法如下:
这句话的意思就是使用GESHI_FANCY_LINE_NUMBERS,并且逢37的倍数行,高亮之。
2.2 设置代码行的风格
这里为什么会出现两个style呢?因为这是为GESHI_FANCY_LINE_NUMBERS风格设置的。正常行使用第一个style,高亮行使用第二个style。需要说明的是,如果你是用的是GESHI_NORMAL_LINE_NUMBERS代码行风格,第二个style会自动失效。
需要说明的是,当你多次使用set_line_style这个函数的时候,后面的设置会覆盖掉前面的设置。如果想避免这一问题,只需要在最后加上true这个参数。例如:
2.3 设置起始行号
这个函数的功能就不用太介绍了,就是设置起始行号的。
3 设置代码风格
3.1 关键字风格
在GESHI中,会将关键字分成几组,于是我们可以按照分组,设置他们的风格。$group代表组号;$style中保存你的CSS代码;$flag标志位用来通知GESHI是否覆盖以前的设置。$group代表组号有如下几种:
1: if, while, do, for, switch 等关键字
2:null, false, true etc等关键字
3:语言的内置函数等关键字
4:int, double, real, static等数据类型关键字
这就话的意思就是将语言的内置函数设置成白色。
3.2 注释风格
因为注释也分单行注释和多行注释,所以这里用$group来表示注释方式。$style自然保存css代码。例如:
3.3 其他代码风格
除了上面提到的关键字,语言中还包括如下几种:
未完待续……