Windows Live Writer插件:在WLW中插入语法高亮代码(二)
在 上文 中,我发布了一个在WLW中插入语法高亮代码的插件,该插件使用tabl
e的HTML 标记来分隔代码与行号。这样做的一个问题是,针对不同的博客主题,行 号列的宽度可能需要手动调整,而且大量的<td></td>标记使得博客文章变得很大。为此,我修改了插件源代码,使用空格来分隔代码与行号。这样做其实也有弊端,比如代码折行的时候,折行后的第一个字符会与行号的第一个字符同列,这会使行号与代码变得混淆难以分辨。此外,在读者Ctrl+C复制代码的时候,会连同行号一起复制过去。
您可以点击 这里 下载这个更新后的语法高亮插件,在下载后,直接解压到WLW的Plugins目录下,重启WLW即可使用。注意,在复制的时候要先退出WLW,否则会出现文件替代的共享冲突。
下面的代码就是通过该插件插入的代码片段,展示于此给读者参考。
- C# 1 using System; 2 using System.Reflection; 3 using System.IO; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 8 namespace ConsoleApplication3 9 { 10 class TGeneric<T> 11 { 12 public T Get(T _t) 13 { 14 return _t; 15 } 16 } 17 18 class TGeneric<T, U> 19 { } 20 21 class Program 22 { 23 static string GetGenericTypeSignature(Type genType) 24 { 25 if (!genType.IsGenericType) 26 return genType.Name; 27 StringBuilder result = new StringBuilder(); 28 result.Append(genType.Name.Substring(0, genType.Name.IndexOf('`'))); 29 result.Append("<"); 30 Type[] genericArguments = genType.GetGenericArguments(); 31 for (int i = 0; i < genericArguments.Length; i++) 32 { 33 result.Append(genericArguments[i].Name); 34 if (i != genericArguments.Length - 1) 35 result.Append(","); 36 } 37 result.Append(">"); 38 return result.ToString(); 39 } 40 static void Main(string[] args) 41 { 42 foreach (Type type in Assembly.GetExecutingAssembly().GetTypes()) 43 { 44 if (type.IsGenericType) 45 { 46 Console.WriteLine(GetGenericTypeSignature(type)); 47 } 48 } 49 } 50 } 51 } 52
- Borland Delphi 1 unit uMain; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, ComCtrls, Menus, ToolWin, ExtCtrls, ActnList; 8 9 type 10 TfrmMain = class(TForm) 11 StatusBar: TStatusBar; 12 MainMenu: TMainMenu; 13 F1: TMenuItem; 14 CoolBar: TCoolBar; 15 MainToolBar: TToolBar; 16 ToolButton1: TToolButton; 17 ObjectTree: TTreeView; 18 Splitter1: TSplitter; 19 ActionList: TActionList; 20 ac_New: TAction; 21 New1: TMenuItem; 22 procedure ac_NewExecute(Sender: TObject); 23 private 24 { Private declarations } 25 public 26 { Public declarations } 27 end; 28 29 var 30 frmMain: TfrmMain; 31 32 implementation 33 34 uses uNewList, uGlobal, uDataDictionary; 35 36 {$R *.dfm} 37 procedure TfrmMain.ac_NewExecute(Sender: TObject); 38 var iRet: Integer; 39 dd: TDataDictionary; 40 begin 41 frmNewList.ShowModal; 42 iRet := frmNewList.GetModuleResult; 43 if iRet = MODRES_CANCEL then Exit; 44 dd := TDataDictionary.Create(frmNewList.GetConnectionString); 45 try 46 dd.BuildDataDictionary; 47 except 48 on E: Exception do MessageDlg (E.Message, mtError, [mbOK], 0); 49 end; 50 dd.Destroy; 51 end; 52 53 end. 54
在使用的过程中有什么问题,请直接回复本帖联系我,谢谢您的支持!
转载至:http://www.cnblogs.com/daxnet/archive/2009/05/06/1686982.html
查看完整版本: Windows Live Writer插件:在WLW中插入语法高亮代码(二)
Tags: