Windows Live Writer插件:在WLW中插入语法高亮代码(二)

    在 上文 中,我发布了一个在WLW中插入语法高亮代码的插件,该插件使用table的HTML 标记来分隔代码与行号。这样做的一个问题是,针对不同的博客主题,行 号列的宽度可能需要手动调整,而且大量的<td></td>标记使得博客文章变得很大。为此,我修改了插件源代码,使用空格来分隔代码与行号。这样做其实也有弊端,比如代码折行的时候,折行后的第一个字符会与行号的第一个字符同列,这会使行号与代码变得混淆难以分辨。此外,在读者Ctrl+C复制代码的时候,会连同行号一起复制过去。

    您可以点击 这里 下载这个更新后的语法高亮插件,在下载后,直接解压到WLW的Plugins目录下,重启WLW即可使用。注意,在复制的时候要先退出WLW,否则会出现文件替代的共享冲突。

    下面的代码就是通过该插件插入的代码片段,展示于此给读者参考。

  • C#

    using   System;
    using   System . Reflection;
    using   System . IO;
    using   System . Collections . Generic;
    using   System . Linq;
    using   System . Text;

    namespace   ConsoleApplication3
    {
    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

    unit   uMain;

    interface

    uses
        Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,
        Dialogs,   ComCtrls,   Menus,   ToolWin,   ExtCtrls,   ActnList;

    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

 

    在使用的过程中有什么问题,请直接回复本帖联系我,谢谢您的支持!

你可能感兴趣的:(windows)