Microのプラグイン開発、文字列を出力するのプラグインを改修して、入力フィールド(コード等を書く部分)に任意の文字列を表示します。
※今回の内容は入力フィールドに文字列を挿入ではなく、上書きになります。
~/.config/micro/plug/sample/sample.lua
VERSION = "0.0.1" local micro = import("micro") local config = import("micro/config") local buffer = import("micro/buffer") function init() config.MakeCommand("hello", fn, config.NoComplete) end -- 第一引数にbpがあることに注意 function fn(bp) local fname = "dummy.txt" local buf, err = buffer.NewBuffer("hello micro", fname) if err == nil then bp:OpenBuffer(buf) else micro.InfoBar():Error(err) end end
コマンドモードで
> hello
を実行することで、
のように入力フィールドに任意の文字列が表示されます。
コードを見ていきます。
local fname = "dummy.txt" local buf, err = buffer.NewBuffer("hello micro", fname)
の操作で、hello microという文字列が入ったバッファを作成します。
作成したバッファを
bp:OpenBuffer(buf)
とすることで、入力フィールドにバッファの内容を出力します。
buffer.NewBufferの第二引数には何らかのファイル名を指定する必要があり、今回はdummy.txtにしています。
既に存在しているファイル名を指定した場合、ファイルの内容は読み込まれずに、コードに記述した任意の文字列のみが表示されます。
既にあるファイルの内容を読み込むように改修してみます。
VERSION = "0.0.1" local micro = import("micro") local config = import("micro/config") local buffer = import("micro/buffer") function init() config.MakeCommand("hello", fn, config.NoComplete) end function fn(bp) local filepath = "hello.txt" local buf, err = buffer.NewBufferFromFile("hello micro", filepath) if err == nil then bp:OpenBuffer(buf) else micro.InfoBar():Error(err) end end
ファイルが存在していれば、そのファイルの内容を読み込み入力フィールドに表示します。
ファイルが存在していなければ、エラーにはならず空の文字列が表示されます。