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(filepath)
if err == nil then
bp:OpenBuffer(buf)
else
micro.InfoBar():Error(err)
end
end
ファイルが存在していれば、そのファイルの内容を読み込み入力フィールドに表示します。
ファイルが存在していなければ、エラーにはならず空の文字列が表示されます。