azukiテキストエディタ
visual studioのtextboxでは物足りないので、azukiというテキストエディタコンポーネントを使用してみた。
Azukiテキストエディタエンジン | Simple is best.
ダウンロードはこちら
ダウンロードファイル一覧 - Azuki - OSDN
Azuki-バージョン-bin.zipをダウンロードし、Cドライブ等に置く。
フォームのツールボックスを右クリックし、アイテムの選択、または、ツールからツールボックスの選択で、.netの参照から「Azuki.dll」を参照すればコントロールが追加される。
機能としては、undoやredoやコピペ関係も実装済であるし、行数も表示されとても便利に使える。また、シンタックスハイライトに対応している。
自作のシンタックスハイライトも作成できる。
Imports Sgry.Azuki Imports Sgry.Azuki.Highlighter Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim keys As KeywordHighlighter = New KeywordHighlighter Dim key1 As String() = New String() {"</a", "</br", "</div", "</font", "</head", _ "</strong", "</table","</tbody", "</td", "</tr", _ "<a", "<br", "<center", "<div", "<font", "<head", "<html", "<img", _ "<strong", "<table", "<tbody", "<td", "<title", "<tr", _ ">", "align=", "alt=", "bgColor=", "border=", "cellspacing=", "color=", _ "face=", "height=","href=", "size=", "src=", "style=", "valign=", "width="} Array.Sort(key1) keys.AddEnclosure("""", """", CharClass.Comment, True) keys.AddKeywordSet(key1, CharClass.Keyword) keys.AddEnclosure("<!--", "-->", CharClass.Comment, True) AzukiControl1.Highlighter = keys End Sub
例えばこんな感じ?HTMLがハイライトされる。
必要な命令などは大体textboxと同じなので使いやすいし、必要な物は既に入っているし、便利である。
自分で使用するだけなら、他のエディタからキーワードをゲットし導入してもよい。
Dim kwdFile As String() = New String() {"キーワードファイルのパス"} Dim key2 As New ArrayList For i As Integer = 0 To kwdFile.Length - 1 fName = Path.GetDirectoryName(kwdFile(i)) Using sr As New System.IO.StreamReader(fName, System.Text.Encoding.Default) Do While Not sr.EndOfStream Dim s As String = sr.ReadLine If InStr(s, "//") = 0 Then 'コメントアウトは読み込まない If key2.Contains(s) = 0 Then key2.Add(Trim(s)) End If End If Loop End Using Next Dim key3 As String() = Nothing key3 = DirectCast(key2.ToArray(GetType(String)), String()) 'ArrayListを配列に変換 key2.Clear() Array.Sort(key3) keys.AddKeywordSet(key3, CharClass.Keyword) AzukiControl1.Highlighter = keys
キーワードはabc順でないといけないので、ソートしている。