Visual Studio Code 拡張機能を使用したコードのシンタックスハイライトの設定

Deeplからの自動翻訳

先日、Visual Studio Codeの新しい拡張機能で、VS Codeが4Dと通信してコードを管理できるようになったことをお話しました。シンタックスハイライトは、4D v19 R6の最初のLanguage Server Protocolの機能でした。それでは、ソースコードのレンダリングをカスタマイズする方法を見ていきましょう。

下図のように、シンタックスハイライトを独自のスタイルシートまたは4Dのデフォルトスタイルシートにカスタマイズすることができます。

さらに技術的な情報を見てみましょう。

セマンティックトークン

すべてのプログラミング言語において、コードはセマンティックトークンで構成されています。セマンティック・トークンとは、クラス、メソッド、変数など、ユニークな意味を持つコードの一部分です。他の言語と同様に、4Dコードもセマンティックトークンとモディファイアに分割されています。

VS Codeでは、コードエディターでセマンティックトークンを確認することができます。表示方法は、VSコードのコマンドパレットを開き、「エディタのトークンとスコープを検査」を検索し、選択します。

blank

パレットには、セマンティックトークンとそのモディファイアを含む、カーソルの後ろのコード部分のプロパティが表示されます(もしあれば)。コードの他の部分を選択するだけで、関連するプロパティを直接見ることができます。

blank

以下は、4D言語とLSPセマンティックトークン間のマッピング表です。

LSPセマンティックトークン 4D言語
メソッド メソッド
メソッド.defaultLibrary コマンド
メソッド.プラグイン プラグインメソッド
プロパティ オブジェクトの属性
関数 オブジェクトメンバーファンクション
パラメータ メソッドパラメータ、オブジェクトメンバーファンクションパラメータ
変数.プロセス間 プロセス間変数
変数.プロセス プロセス変数
変数.ローカル ローカル変数
キーワード キーワード
テーブル テーブル
フィールド フィールド
コメント コメント
タイプ タイプ
定数 定数
文字列 文字列
エラー エラー

フォントの設定方法は?

VS Codeは、4Dコードを自動的に認識しますが、それ以上何が必要でしょうか?これは最後のステップで、それぞれのセマンティックトークンのフォントを設定するのです。
これをカスタマイズするには、VS Codeが使用する設定ファイルを編集する必要があります。そのためには、VS Codeのコマンドパレットを開き、「Settings.json」を検索して編集してください。
ちなみに、VS CodeのSettings.jsonファイルは、ここに置かれています。

macOSの場合は、/Users/{UserName}/Library/Application Support/Code/User/settings.jsonとなります。
Windowsの場合は、C:³ Files³ Electronics Tools³ Electronics Tools³ Electronics Tools³ Electronics Tools³ Electronics Tools³ Electronics Tools³ Electronics Tools³.json

blank

blank

4Dコードを「light 4D」と「dark 4D」のスタイルシートで表示するために追加するJSON設定は以下の通りです(settings.jsonで「4D-Analyzer.server.path」という行を探し、以下のブロック全体を上か下の行に挿入してください)。

"editor.semanticHighlighting.enabled": true,
    "editor.semanticTokenColorCustomizations": {
        "[Default Light+]":{
            "enabled": true,
            "rules": {
                "*:4d": {"foreground": "#000000", "bold": false, "italic": false, "underline": false, "strikethrough": false},
                "method:4d": {"foreground": "#000088", "bold": true, "italic": true},
                "method.defaultLibrary:4d": {"foreground": "#068c00", "italic": false},
                "method.plugin:4d": {"foreground": "#000000"},
                "property:4d": {"foreground": "#a0806b"},
                "function:4d": {"foreground": "#5f8e5e", "italic": true},
                "parameter:4d": {"foreground": "#000b76", "bold": true},
                "variable.interprocess:4d": {"foreground": "#ff0088"},
                "variable.process:4d": {"foreground": "#0000ff"},
                "variable.local:4d": {"foreground": "#0031ff"},
                "keyword:4d": {"foreground": "#034d00", "bold": true},
                "table:4d": {"foreground": "#532300"},
                "field:4d": {"foreground": "#323232"},
                "comment:4d": {"foreground": "#535353"},
                "type:4d": {"foreground": "#068c00", "bold": true},
                "constant:4d": {"foreground": "#4d004d", "underline": true},
                "string:4d": {"foreground": "#000000"},
                "error:4d": {"foreground": "#ff0000", "bold": true, "italic": true}
            }
        },
        "[Default Dark+]":{
            "enabled": true,
            "rules": {
                "*:4d": {"foreground": "#FFFFFF", "bold": false, "italic": false, "underline": false, "strikethrough": false},
                "method:4d": {"foreground": "#1B79F3", "bold": true, "italic": true},
                "method.defaultLibrary:4d": {"foreground": "#59BB00", "italic": false},
                "method.plugin:4d": {"foreground": "#BFBFBF"},
                "property:4d": {"foreground": "#A0806B"},
                "function:4d": {"foreground": "#4EC36E", "italic": true},
                "parameter:4d": {"foreground": "#0C70FF", "bold": true},
                "variable.interprocess:4d": {"foreground": "#FF0088"},
                "variable.process:4d": {"foreground": "#53B0EB"},
                "variable.local:4d": {"foreground": "#18B3F1"},
                "keyword:4d": {"foreground": "#575757", "bold": true},
                "table:4d": {"foreground": "#CF5600"},
                "field:4d": {"foreground": "#9C6765"},
                "comment:4d": {"foreground": "#8F8F8F"},
                "type:4d": {"foreground": "#59BB00", "bold": true},
                "constant:4d": {"foreground": "#FA647F", "underline": true},
                "string:4d": {"foreground": "#FFFFFF"},
                "error:4d": {"foreground": "#ff0000", "bold": true, "italic": true}
            }
        }
    },

各意味トークン型の後の「:4d」は必須ではありませんが、このシンタックスハイライトを4D言語に対してのみ設定できるようにすることに注意してください。こうすることで、他の言語に対するシンタックスハイライトはそのままになります。
設定を保存すると、コードエディタで直接効果を確認することができます

このカスタマイズは、Webパーツを含む4DプロジェクトでVS Codeを使用する際に有効です。すべての言語は、それぞれのシンタックスハイライトを保持しています。HTML、CSS、Javascript、そして今回は…。4D!

Avatar
- プロダクトオーナー - Damien Fuzeauは、2019年2月に4D Productチームに参加しました。プロダクトオーナーとして、ユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換することを担当しています。また、実装された機能が顧客のニーズを満たしているかどうかを確認することも彼の役割です。ナント大学のソフトウェア工学科を卒業。前職の会社では最初は開発者として(1997年に4Dを発見)、後にエンジニアリングマネージャーとソフトウェアアーキテクトとして、23年以上勤務しました。この会社は、4DのOEMパートナーであり、現在は数千のユーザーと数百のサーバーに向けて4Dベースのビジネスソフトを展開しています。ですから、Damienは、多言語環境での4D開発・導入に慣れています。