Microのプラグイン開発、画面分割について


Microでの画面分割について見ていきます。

プラグインを介さず通常の操作で画面分割を行う時は、

> vsplit ファイルパスを含むファイル名

※vsplitは垂直分割(横に並べる)

> hsplit ファイルパスを含むファイル名

※hsplitは垂直分割(上下に並べる)

を実行します。

※ファイル名の箇所を空文字にして実行しても画面分割を行うことが出来ます。


画面分割をプラグインから操作する方法を見ていきます。




画面分割(垂直)に関するメソッドは

func (h *BufPane) VSplitIndex(buf *buffer.Buffer, right bool) *BufPane

https://github.com/zyedidia/micro/blob/master/internal/action/bufpane.go

になります。


第一引数のbufにはMicroのプラグイン開発、入力フィールドに文字列を表示するで触れたバッファを挿入します。

第二引数のrightには、true(真)かfalse(偽)を入れ、画面分割時にどちらのフィールドに文字列を挿入するか?を指定します。


これらの内容を踏まえた上で、コードを見ていきます。


~/.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("vs", fn, config.NoComplete)
end

function fn()
	local buf, err = buffer.NewBuffer("hello new panel", "new panel")
	micro.CurPane():VSplitIndex(buf, false)
end

micro.CurPane():VSplitIndex(buf, false)

の第二引数にfalse(偽)を指定して、実行してみます。


今回のプラグインでは、コマンドモードで

> vs

を実行することで画面分割をするようにしています。


早速実行してみると、



のようになりました。


続いて、

micro.CurPane():VSplitIndex(buf, true)

にして実行してみます。



のようになりました。




水平分割の方も見ておきます。

func (h *BufPane) HSplitIndex(buf *buffer.Buffer, bottom bool) *BufPane

第二引数をtrueにすると、分割時に下のフィールドに文字列が挿入されるようです。

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