Microのプラグイン開発、入力フィールドに文字列を表示する

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

ファイルが存在していれば、そのファイルの内容を読み込み入力フィールドに表示します。

ファイルが存在していなければ、エラーにはならず空の文字列が表示されます。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。