タイ語テキスト内の重複結合文字(例: SARA UU ู が2つ連続)を検出・修正するVSCode拡張機能です。
問題の背景
タイ語の母音・声調記号は Unicode の「結合文字 (Combining character, Mn)」として定義されており、 同じ文字が2つ連続しても見た目は全く同じに描画されます。
ดูู ← U+0E14 + U+0E39 + U+0E39(問題あり・3コードポイント)
ดู ← U+0E14 + U+0E39 (正常・2コードポイント)
VLOOKUP・EXACT・データベース照合などで「見つからない」不具合の原因になります。
機能
| 機能 | 説明 |
|---|---|
| リアルタイム検出 | ファイルを開く・編集するたびに波線で警告 |
| ホバー詳細 | U+XXXX 形式でコードポイントを表示 |
| クイックフィックス | 電球アイコンから1クリックで修正 |
| Fix All コマンド | ファイル全体を一括修正 |
| 保存時自動修正 | 設定で有効化可能 |
| ステータスバー | 問題数をリアルタイム表示 |
検出対象の文字
| コードポイント | 文字名 |
|---|---|
| U+0E30–U+0E3A | タイ語母音記号(上・下) |
| U+0E47–U+0E4E | 声調記号・補助記号 |
インストール・起動方法
# 1. 依存パッケージをインストール
npm install
# 2. TypeScript をコンパイル
npm run compile
# 3. VSCode でこのフォルダを開き F5 キーで拡張機能ホストを起動
設定
settings.json で以下の設定が可能です。
{
"thaiLint.enable": true,
"thaiLint.fixOnSave": false,
"thaiLint.severity": "warning"
}
| 設定キー | 型 | デフォルト | 説明 |
|---|---|---|---|
thaiLint.enable |
boolean | true |
拡張機能の有効/無効 |
thaiLint.fixOnSave |
boolean | false |
保存時に自動修正 |
thaiLint.severity |
string | "warning" |
"error" / "warning" / "information" |
コマンド
Thai Lint: Fix All Duplicate Combining Characters in Fileコマンドパレット(Ctrl+Shift+P)から実行、またはステータスバーをクリック
vsix パッケージ化(配布用)
npm install -g @vscode/vsce
vsce package
# → thai-lint-0.1.0.vsix が生成される
# VSCode の「拡張機能」→「VSIXからインストール」で導入可能