VSCodeサーバサイド編集のサーチ機能を有効化する
こちらの内容は、今後のリリースにより変わる(不要になる)可能性があります。
バージョン2023.2以降で、IRISスタジオが非推奨となったこともあり、VSCode拡張機能を評価される方も今後増えるかと思います。
既存のCache'資産をお持ちで、ソース管理をソースコントロールフックで実施されている方などにおかれましては、その際にサーバサイド編集を選択される方もおられるかと思います。
VSCode拡張には、Cache'/IRISスタジオの「ファイルから検索」と同じ要領でサーチを行いたいというご要望に応えるための機能が備わっています。その導入方法が、VSCodeの未公開APIを使用している関係で、ひと手間かかるものとなっているため、解説します。
方法は複数ありますが、手順を簡素化するべく、なるべくGUIを使わない方法をご紹介しています。
導入方法
サーバサイドのサーチ機能は、VSCodeの"Proposed API"であるTextSearchProvider,FileSearchProvideを使用しています。 いずれこれらのAPIが安定化してStableとしてリリースされるまでの措置として、これらを使用している拡張機能はマーケットプレイスからの導入(クリックするだけの簡単インストール)が制限されています。
サーバサイドのサーチ機能を使用する目的でVisual Studio Code Insidersリリースを使用する必要はないようです。
それまでは、マニュアルで導入する必要があります。以降、その導入手順をご紹介します。
InterSystems ObjectScriptのベータ版を導入
使用中のバージョンの「次のバージョン」のbeta.1をインストールします。
VSCode拡張は、日々更新・改良されていますので、常に最新バージョンを保つことをお勧めします。
使用中のバージョンは、下記で確認できます。

この例では2.10.3ですので、2.10.4-beta.1をダウンロードし、ダウンロードされたファイル(拡張子vsix)を、Extentionsにドラッグ&ドロップします。

再起動を促されますので、VSCodeを再起動します。
Proposed APIを有効化
Command Paletteで"Preferences: Configure Runtime Arguments"を選択し、下記を追加します。
"enable-proposed-api": ["intersystems-community.vscode-objectscript"]
実体はC:\Users\Windowsユーザ名.vscode\argv.jsonにありますので、直接編集しても良いです。
// This configuration file allows you to pass permanent command line arguments to VS Code.
// Only a subset of arguments is currently supported to reduce the likelihood of breaking
// the installation.
//
// PLEASE DO NOT CHANGE WITHOUT UNDERSTANDING THE IMPACT
//
// NOTE: Changing this file requires a restart of VS Code.
{
// Use software rendering instead of hardware accelerated rendering.
// This can help in cases where you see rendering issues in VS Code.
// "disable-hardware-acceleration": true,
// Allows to disable crash reporting.
// Should restart the app if the value is changed.
"enable-crash-reporter": true,
// Unique id used for correlating crash reports sent from this instance.
// Do not edit this value.
"crash-reporter-id": "xxxxxxxxxxxxx",
"enable-proposed-api": ["intersystems-community.vscode-objectscript"]
}
有効化されると、OUTPUT(ObjectScript)に下記のようなメッセージが表示されるようになります。

VSCodeのワークスペースを作成・保存
VSCodeのワークスペースを作成・保存して、アクセスしたいIRIS環境を追加(感覚的にはマウントする感じです)します。
この作業はUIで行っても良いのですが、ここではワークスペースの設定ファイル(.code-workspace.code-workspace)を直接編集する方法をご紹介します。ワークスペースの設定ファイルをVSCode自身で編集するには、いったん、フォルダとして開き直します。
編集後の.code-workspace.code-workspaceは下記のようになります。
{
"folders": [
{
"name": "local:scdemo",
"uri": "isfs://local:scdemo/",
},
{
"name": "local:samples",
"uri": "isfs://local:samples/"
},
{
"path": "."
}
],
"settings": {
"objectscript.showExplorer": false,
"intersystems.servers": {
"local": {
"webServer": {
"scheme": "http",
"host": "localhost",
"port": 52773
},
"username": "SuperUser"
}
}
}
}
上記の意味は
- local:scdemoという名前(name)で,アクセス先サーバ isfs://local/ のネームスペースscdemoを、ワークスペースにマウントする
- local:samplesという名前(name)で,アクセス先サーバ isfs://local/ のネームスペースsamplesを、ワークスペースにマウントする
- フォルダの"."、つまりルートフォルダをワークスペースにマウントする(これはローカルにファイルがなければ不要です)
- ただしサーバlocalの実体は、http://localhost:52773/ 、IRISユーザ名SuperUserを使用する
となります。IRISサーバのホスト名やポート、ユーザ名は、環境に合わせて変更してください。
nameは、検索対象のフォルダ名の一部として使用されますので、あまり長くすると、サーチ結果を読みにくくなります。
これでサーバサイド編集やサーバサイドサーチを使用する準備が出来ました。ワークスペースとして開き直してください。
ご参考までに、UIで行う方法は下記になります。
接続するIRISサーバの定義と、ネームスペース指定して、仮想的なファイルシステムであるisfsをワークスペースに追加します。
使用
ここまでの作業を行ったフォルダをGitHubで公開してありますので、ご利用ください。git cloneした後に、フォルダ内の.code-workspace.code-workspaceをワークスペースとして開いて使用します。
うまく設定が出来ていれば、Exploreに下記のようなフォルダが表示されます。

この時点で、各フォルダをクリックすれば、IRISサーバ内の要素がツリー表示され、編集、保存(コンパイル)可能になっているはずです。
初めてアクセスする場合はパスワードを聞いてきます。以降、The extenstion 'InterSystems Language Server' wants to sign in using InterSystems Server Credentials.と表示されたら、Allowを押して使用するCredential(SupseUser on localなど)を選択してください。この辺りは、通常のサーバサイド編集時の操作と同じです。
肝心のサーチ機能ですが、Control+シフト+Fを押してファイルサーチ機能を開いてください。普通にVSCodeでファイルサーチを行う要領で、サーチワードを入力すると、ヒットした対象が列挙されます。大量にヒットした場合、(画像のように)Collapse Allアイコンで全体を折りたたんで、まずはヒット件数表示すると良いかもしれません。

files to includeにフォルダ指定するのと同じ要領で、フィルタ設定すると、サーチ対象もフィルタされます。
EnsLibパッケージを対象にする場合。

ワイルドカードを含む場合。

MACのみを対象にする場合。

名前が分かっている場合は、Quick Open機能を使用できます。フォルダツリーを使って、大量に存在するクラスやルーチンの中から、編集対象をピックアップするのが大変な時に役立ちます。

Comments
> VSCodeのワークスペースを作成・保存
> この作業はUIで行っても良いのですが、
ここの UI 作業については、以下の記事でスクリーンショット付きで公開しています。少し古いですが、2023年10月現在でも同じ手順で登録できます。「鉛筆マーク」 クリックで登録されます。
https://jp.community.intersystems.com/node/493616
→ 3. クラス定義やルーチンを編集する