Created
April 11, 2021 04:48
-
-
Save tamago324/92d6cbc1970922c4bb41c7a26b26779a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- @file ~/.config/nvim/lua/xido/vertical_mode.lua | |
local main = require'ido.main' | |
local vertical = {} | |
--- バッファの設定を行う? | |
vertical.init = function() | |
-- 高さは 10 | |
vim.cmd 'botright 10new' | |
vim.b.buftype = 'nofile' | |
vim.wo.relativenumber = false | |
vim.wo.number = false | |
vim.wo.wrap = false | |
-- XXX: なぜ、true を返しているのかは不明 | |
return true | |
end | |
vertical.main = function() | |
local variables = main.sandbox.variables | |
local options = main.sandbox.options | |
vim.api.nvim_buf_set_lines(0, 0, -1, false, {}) | |
-- 入力フィールドをレンダリングする | |
vim.fn.setline(1, | |
options.prompt .. -- プロンプトの文字列 | |
variables.before .. -- カーソルの前のクエリ文字 | |
"_" .. -- カーソル | |
variables.after .. -- カーソルの後ろのクエリ文字 | |
"[" .. variables.suggestion .. "]" -- 候補? | |
) | |
-- print(vim.inspect(variables.results)) | |
-- 結果をレンダリングする | |
local results_limit = #variables.results | |
-- 結果があったら描画する | |
if results_limit > 1 then | |
-- 選択している候補の次の候補を初期インデックスとする | |
local index = variables.selected + 1 | |
-- もし、1つ目を選択していた場合、 ' -> red' という文字列が挿入される | |
-- { { 'red', 0 }, { 'blue', 0 } } | |
-- ^^^^^ | |
vim.fn.append(1, ' -> ' .. variables.results[variables.selected][1]) | |
-- 残りのアイテムを描画する | |
for i = 1, results_limit do | |
-- 末尾に行ったら、先頭に戻す | |
if index > results_limit then | |
index = 1 | |
end | |
if index == variables.selected then | |
-- 1周したら終わり | |
goto redraw | |
end | |
-- 今回は、 init() で 10new としているため、それ以降はレンダリングしない | |
if i > 10 then | |
goto redraw | |
end | |
vim.fn.append(vim.fn.line('$'), ' ' .. variables.results[index][1]) | |
index = index + 1 | |
end | |
end | |
::redraw:: | |
vim.cmd 'redraw' | |
return true | |
end | |
vertical.exit = function() | |
vim.cmd 'bdelete!' | |
return true | |
end | |
return vertical |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment