hello

SilkEditのパッケージメニューの中のパッケージ開発、新しいパッケージをクリックします。

hello という名前を入力してOKをクリックします。

helloパッケージのディレクトリが開かれるので、index.jsを開きます。(helloパッケージはMacなら/Users/<ユーザ名>/.silk/packages/node_modules/hello, WindowsはC:\Users\<ユーザ名>\.silk\packages\node_modules\helloに作成されます)

index.jsの中身は以下のようになっています。

const silkedit = require('silkedit');

module.exports = {
  activate: function() {
  },

  deactivate: function() {
  },

  commands: {
    "hello": () => {
      silkedit.alert(silkedit.tr("hello", "hello", "Hello!"));
    }
  }
}

index.jsはNodeモジュールとなっており、activate, deactivate, commandsのプロパティを持つオブジェクトを公開しています。

activateはパッケージがロードされた時に呼び出されます。deactivateはパッケージが削除される時に呼び出されます。

commandsプロパティにはパッケージが提供するコマンドを登録します。上の例では"hello"がコマンド名となり、コマンドが実行された時にはsilkedit.alert(silkedit.tr("hello", "hello", "Hello!"));が実行されます。

silkedit.alertはアラートを表示する関数です。

silkedit.trはローカライズされた文字列を取得する関数です。locales/ja/translation.ymlに日本語ロケールの時に使用されるローカライズされた文字列がYAMLで定義されています。

menu.hello.label: 挨拶

hello: こんにちは!

silkedit.tr("hello", "hello", "Hello!")は、helloパッケージのlocales/ja/translation.ymlに定義されているhelloキーの文字列を探します。translation.ymlではhello: こんにちは!が定義されているので、"こんにちは!"という文字列を取得できます。キーが見つからなかった場合"Hello!"という文字列が使用されます。

menu.ymlは以下のようになっています。

menu:
  - id: packages
    menu:
      - label: 'Say Hello!'
        id: hello
        command: hello.hello

id: packagesはSilkEditのパッケージメニューを表します。menuを入れ子にすることで既存メニューの子メニューを作ることができます。

上記の例ではパッケージメニューの子メニューとしてhelloメニューを作成しています。labelは表示される文字列ですが、locales/ja/translation.ymlでhelloメニュー用の文字列が定義されているので、日本語ロケールでは"挨拶"というメニューになります。

commandでメニューをクリックした時に実行するコマンドを指定します。コマンドは<パッケージ名>.<コマンド名>のように指定します。hello.helloはhelloパッケージのhelloコマンドを指定しています。

パッケージメニューの"パッケージ開発" -> "パッケージの再読み込み"を実行して下さい。パッケージメニューの下に"挨拶"メニューが表示されているはずなので、クリックすると"こんにちは!"というアラートが表示されます。