C#のソースをTeraPadという古くからあるフリーのテキストエディタで入力しています。
とても軽量なソフトなので非力なPC環境でもサクサク動くので自分の使うパソコンに大概インストールしています。
便利なのは確かですがC#のソースファイルを開くとこんな感じになります。
TeraPadで対応したプログラミング言語のキーワードを強調表示してくれる機能がありますが、どうやらC#は対応していないようです。C#は比較的新しい?言語ですので仕方がないです。
というわけで今回はTeraPadでC#のキーワードをハイライト対応するよう設定を施したいと思います。
設定項目はメニュー→「表示」→「オプション」→「拡張子」を開きます。
拡張子と対応するプログラミング言語を紐づけする設定です。こちらを変更していくわけですが、今回のように利用者が自由に設定するように用意された「ユーザー」を使うべきだとは思いますが、「ユーザー」は次の機会の為にとっておき、あまり使うことの無さそうな言語を上書きさせていただこうと思います。
ということで上書きする言語は「HSP」にします。「Hot Soup Processor」という名のスクリプト言語です。昔、名前は聞いたことがありますが触ったことはないです。wikiを見てみると登場時期は1996年ですので今ほどお手軽に開発環境が整えられない時代に無料で使えるスクリプト言語があったということは素晴らしいことだとおもいます。Windows APIやCOM、DirectXなど多彩なAPIに対応できるようなので、多くのプログラミング案件はこなせるのではないかと想像します。興味深い言語ではありますが、現在執筆中のパソコンでHSPを触る機会はなさそうなのでHSPの設定を上書きしていきます。
リストボックスの「HSP」の行を選択し「編集」をクリック。
「*.as」 → 「*.cs」に編集し「更新」をクリック。
リストボックスの「HSP」の行の内容が「*.cs」に変更されます。
「OK」押しプロパティを閉じます。
これで.csファイルをTeraPadで開くとHSPとして認識されます。
次にC#のキーワードを仕込みます。
キーワードはマイクロソフトのサイトからいただいてきます。
C#のキーワードを設定用にキーワードを改行区切りにしたをテキストを用意します。
マイクロソフトのサイトのキーワードをTeraPadでコピペすると、各キーワードがタブ区切りで3キーワードで改行されています。
一つ一つ改行にするのも面倒なので、TeraPadの置換機能でざっと並びを整えます。
「Ctrl」+「R」
検索する文字列:\r
置換後の文字列:\t
実行すると改行が無くなり1行に並び全てのキーワードがタブ区切りになります。
続いて
検索する文字列:\t
置換後の文字列:\r
を実行するとタブが改行になります。
後は空の行や重複しているキーワードなどを整えて出来上がります。
この内容をコピーした状態で、「表示」→「オプション」→「色」→「HSPキーワード」を選択します。
「キーワード編集」をクリックするとHSPのキーワードの設定ファイルが開かれますので、C#のキーワードを貼り付け保存し終了します。
設定は以上となります。
それでは先程のC#のソースをひらてみます。
先ほどとは異なりキーワードは太字で表示され、文字列は青、コメントは緑い色のフォントで表示されています。
ここまで来て気がついたのですが、任意に設定できるのはキーワードだけで文字列やコメントはデフォルト設定を変更できないようです。たまたまHSPとC#が同じようなので問題なさそうですが…
設定したC#のキーワードファイル:hsp.kwd
abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
using static
virtual
void
volatile
while
add
alias
ascending
async
await
by
descending
dynamic
equals
from
get
global
group
into
join
let
nameof
on
orderby
partial
remove
select
set
unmanaged
value
var
when
where
yield
コメント