Viki/Deplate0.8.1 GVIM高亮模块无效的解决办法。

使用Viki(VIM) + Deplate 来编写WIKI是非常快捷和令人愉快的,关于Viki和deplate的安装、使用,网上随便搜下就能找到,这里就不累述了,这里主要介绍Deplate0.8.1以上版本中code-gvim71模块失效的问题。 Viki中可以使用基于GVIM的代码高亮,只需要在VIKI中加入以下格式即可: #Code syntax=(基于VIM 'ft'的值)<<----- <代码>                                                                    ------                                                                 在编译时加入 -m code-gvim71 参数。 不过在实际使用时却发现,编译后的文件没有高亮显示代码。查看编译后的HTML文件后发现不同的关键字指定了各自的class,但是却没有这些class的CSS定义体。用CVS更新了deplate,并尝试了网上找到的方法,都无效。 无奈下只得自己研究了,通过跟踪临时文件和查看code-gvim71.rb后,终于找到了问题的原因。原来,code-gvim71是调用vim中的2html.vim来生成高亮CODE_HTML的,但是新版本的2html.vim中加入了一个参数:html_use_css 这个参数使生成的高亮文件使用CSS,不像旧版本那样使用<font>来标记每一个关键词,而deplate却是按照旧方法来生成页面的,那当然没高亮了。 使用CSS当然是符合我们的使用习惯的,我们不可能放弃CSS而用回臃肿的<font>方法。因此只好来改善code-gvim71.rb的代码了。 原理很简单,只要让deplate在生成的页面中加入CSS样式表的定义即可。在deplate读取的临时文件中,其实已经包含了样式表定义,我们只要添加进去,并删除多余的 "body {}"定义体和将"pre {}"定义体改名即可,代码如下:

                codestyle = Hpricot(html).at('style')

                codestyle.inner_html = codestyle.inner_html/ 

                                        .sub(//npre.*font-family: (/w+(/s/w+)*(,/s/w+)*)+;/, "/n.#{style||"default"}{")/

                                        .sub(//nbody.*/n/, "/n")                 

                doc.search("pre").set(:class, "#{style||"default"}")                 

                doc  = codestyle.to_html + doc.inner_html 

将上述代码插入到/usr/ruby/gems/1.8/gems/deplate-0.8.1/lib/deplate/mod/code-gvim71.rb (如果不是通过GEMS安装的话则是:/usr/ruby/1.8/deplate/mod/code-gvim71.rb)的39行,  doc  = Hpricot(html).at('body') 之后即可。 保存后再编译看看,这下有高亮显示了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值