2017-06-15 17 views
1

ハマースプーンで使用されるinit.luaスクリプトを分かりやすく読みやすく保守したいと考えています。Hammerspoonで `init.lua`を別のコンポーネントに分けることはできますか?

だから、それは次のようになります。

KeyRemap.lua

  • WiFiWatcher.lua
  • AppWatcher.lua
  • init.luaそして init.luaの中から私がこれらのファイルを読んでウォッチャーを有効にします。

    しかし、そのような関数は定義されていないようです(しかし、私はそれを見逃しているかもしれません)。 Hammerspoonのようなロジックを分離することは可能ですか?

    +0

    通常、あなたは 'require()'や 'dofile()'でそれを行います。それらがあなたの環境で利用可能かどうか確かめてください。 – Forivin

    答えて

    3

    はい、これはrequireを使用して行うことができます。

    ~/.hammerspoon/にLuaファイルを置くと、require('modulename')を使用して読み込むことができます。あなたは以下のモジュールがある場合たとえば、:

    • ~/.hammerspoon/AppWatcher.lua
    • ~/.hammerspoon/WiFiWatcher.lua
    • ~/.hammerspoon/KeyRemap.lua

    を次に、あなたは、このような~/.hammerspoon/init.luaからそれらを読み込むことができます。

    local AppWatcher = require('AppWatcher') 
    local WiFiWatcher = require('WiFiWatcher') 
    local KeyRemap = require('KeyRemap') 
    

    することができます表示されている限り、任意のLuaモジュールを読み込みますpackage.pathにあります。あなたが使用できるディレクトリを見るには、HammerSpoonのpackage.path setup fileを見てください。これはデフォルトのLua package.pathを参照します。これはluaconf.hで定義されています。

    Luaモジュールをpackage.pathに含まれていないディレクトリに配置する場合は、それらを環境変数のLUA_PATH_5_3またはLUA_PATHに追加することで実行できます。

    免責事項:Hammerspoonのソースコードからこの情報を入手しましたが、私はMacを持っていないので、テストしていません。それがあなたのために働かないなら私に知らせてください。 :)

    +0

    ありがとうございます。出来た。 'require'関数の戻り値がブール値であると思われます。 'hs.alert.show(AppWatcher)'は 'true'を示しました。 – Blaszard

    +0

    戻り値はモジュールから返されたものです。しばしば、モジュールがエクスポートしているすべての関数を含むテーブルになります。その特定のモジュールは、成功すればtrueを、失敗した場合はfalseを返す必要があります。 –

    関連する問題