Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

neovim/lua/bugabinga/pivi/init.lua

Raw
local session = require 'bugabinga.pivi.session'
local help = require 'bugabinga.pivi.help'
local command = require 'bugabinga.pivi.command'
local status = require 'bugabinga.pivi.status'
local publish = require 'bugabinga.pivi.publish'
local transcript = require 'bugabinga.pivi.transcript'
local activity = require 'bugabinga.pivi.activity'
local edit = require 'bugabinga.pivi.edit'
local follow = require 'bugabinga.pivi.follow'
local dialog = require 'bugabinga.pivi.dialog'
local context = require 'bugabinga.pivi.context'
local bridge = require 'bugabinga.pivi.bridge'
local docs = require 'bugabinga.pivi.docs'
local runtime = require 'bugabinga.pivi.runtime'
local entry = require 'bugabinga.pivi.entry'
local render = require 'bugabinga.pivi.render'
local fold = require 'bugabinga.pivi.fold'
local navigate = require 'bugabinga.pivi.navigate'
local detail = require 'bugabinga.pivi.detail'
local tool = require 'bugabinga.pivi.tool'
local comparison = require 'bugabinga.pivi.diff'
local guide = require 'bugabinga.pivi.guide'
local layout = require 'bugabinga.pivi.layout'

--- Reads cached status only. Safe to call from a statusline.
local summary = function( name ) return publish.summary( name ) end

local reset = function()
  session.stop_all()
  follow.reset()
  dialog.reset()
  transcript.forget_all()
  publish.reset()
end

_G.BugabingaPivi = {
  session = session,
  help = help,
  command = command,
  status = status,
  publish = publish,
  transcript = transcript,
  activity = activity,
  edit = edit,
  follow = follow,
  dialog = dialog,
  context = context,
  bridge = bridge,
  docs = docs,
  runtime = runtime,
  entry = entry,
  render = render,
  fold = fold,
  navigate = navigate,
  detail = detail,
  tool = tool,
  comparison = comparison,
  guide = guide,
  layout = layout,
  summary = summary,
  reset = reset,
}

command.setup()

vim.api.nvim_create_autocmd( 'VimResized', {
  group = vim.api.nvim_create_augroup( 'pivi_layout', { clear = true, } ),
  desc = 'Resize pivi windows to suit the new editor size.',
  callback = function() pcall( layout.apply ) end,
} )

vim.api.nvim_create_autocmd( 'VimLeavePre', {
  group = vim.api.nvim_create_augroup( 'pivi_shutdown', { clear = true, } ),
  desc = 'End every Pi process when Neovim exits.',
  callback = function() pcall( session.stop_all ) end,
} )

return _G.BugabingaPivi