83 lines
2.2 KiB
Plaintext
83 lines
2.2 KiB
Plaintext
-- Imports the plugin's additional Lua modules.
|
|
-- local fetch = require("example-plugin.fetch")
|
|
-- local update = require("example-plugin.update")
|
|
|
|
-- Creates an object for the module. All of the module's
|
|
-- functions are associated with this object, which is
|
|
-- returned when the module is called with `require`.
|
|
local M = {}
|
|
|
|
-- Routes calls made to this module to functions in the
|
|
-- plugin's other modules.
|
|
-- M.fetch_todos = fetch.fetch_todos
|
|
-- M.insert_todo = update.insert_todo
|
|
-- M.complete_todo = update.complete_todo
|
|
|
|
function M.setup()
|
|
vim.api.nvim_create_user_command('CritiqueHelloWorld', M.hello_world, {})
|
|
-- vim.api.nvim_create_user_command('CritiqueOpenTree', M.open_window, {})
|
|
end
|
|
|
|
local buf, win
|
|
|
|
function M.hello_world()
|
|
vim.notify("HELLO WORLD!!!")
|
|
end
|
|
|
|
function M.open_window()
|
|
buf = vim.api.nvim_create_buf(false, true) -- create new emtpy buffer
|
|
|
|
vim.api.nvim_buf_set_option(buf, 'bufhidden', 'wipe')
|
|
|
|
-- get dimensions
|
|
local width = vim.api.nvim_get_option("columns")
|
|
local height = vim.api.nvim_get_option("lines")
|
|
|
|
-- calculate our floating window size
|
|
local win_height = math.ceil(height * 0.8 - 4)
|
|
local win_width = math.ceil(width * 0.8)
|
|
|
|
-- and its starting position
|
|
local row = math.ceil((height - win_height) / 2 - 1)
|
|
local col = math.ceil((width - win_width) / 2)
|
|
|
|
-- set some options
|
|
local opts = {
|
|
style = "minimal",
|
|
relative = "editor",
|
|
width = win_width,
|
|
height = win_height,
|
|
row = row,
|
|
col = col
|
|
}
|
|
|
|
-- and finally create it with buffer attached
|
|
win = vim.api.nvim_open_win(buf, true, opts)
|
|
end
|
|
|
|
local function update_view()
|
|
-- we will use vim systemlist function which run shell
|
|
-- command and return result as list
|
|
local result = vim.fn.systemlist('hg xl')
|
|
|
|
-- with small indentation results will look better
|
|
for k,v in pairs(result) do
|
|
result[k] = ' '..result[k]
|
|
end
|
|
|
|
api.nvim_buf_set_lines(buf, 0, -1, false, {
|
|
center('Critique'),
|
|
''
|
|
})
|
|
|
|
api.nvim_buf_set_lines(buf, 0, -1, false, result)
|
|
end
|
|
|
|
local function center(str)
|
|
local width = api.nvim_win_get_width(0)
|
|
local shift = math.floor(width / 2) - math.floor(string.len(str) / 2)
|
|
return string.rep(' ', shift) .. str
|
|
end
|
|
|
|
return M
|