前些天开始喜欢上用windows live writer来写博客, 特别在记录一些心得,或备忘一些在网上收集到的资料时很方便。

开始是用的windows live space, 感觉用起来很不方便, 想转cnblogs.

先是Google了一下WLW是否支持cnblogs, 显然是支持的, 意外的收获是有人为wlw写了cnblogs的插入高亮代码块的插件,激动之余马上下下来使用。

下载地址: LiveWriter插入高亮代码插件介绍 基于SyntaxHighighter

 

结果插入C++代码时老是崩溃。 我以为是系统不兼容的问题(用的2K3), 换到XP问题依然。 有点遗憾了~!

还好作者非常善良, 给出了源码下载, 赶紧下下来调试看看是什么原因。

 

原因如下:

下面是原始代码, 在Wilco.SyntaxHighlighting.HighlighterCollection中

public HighlighterBase this[string name]
{
    get
    {
        HighlighterBase highlighter = null;
        for (int i = 0; i < this.List.Count; i++)
        {
            highlighter = (HighlighterBase)this.List[i];
            if (highlighter.Name.ToLower() == name.ToLower())
                return highlighter;
        }
        return null;
    }
}

 

highlighter有两个属性与名字有关: Name和FullName

CPPHighlighter的Name是C++, FullName是CPP

而传进去的name是我们在第一次插入代码块时在下拉选项框中选择的语言 – cpp.

此时根据原始代码的判断,找不到这样的HighLighterBase对象, 系统因此崩溃.

 

我做了简单修改:

public HighlighterBase this[string name]
{
	get
	{
		HighlighterBase highlighter = null;
		for (int i = 0; i < this.List.Count; i++)
		{
			highlighter = (HighlighterBase)this.List[i];
			if (String.Compare(highlighter.Name, name, true) == 0 || String.Compare(highlighter.FullName, name, true) == 0)
				return highlighter;
		}
		return null;
	}
}

重新编译后拷贝到\Windows Live\Writer\Plugins\中去, OK通过。

 

修正后的插件:

https://files.cnblogs.com/wfpb/Plugins.rar 

 

再次感谢这个插件的作者, 很稀饭, 很好用!