From 387c3419ced07a1fe926df8c4c3072b594d08680 Mon Sep 17 00:00:00 2001 From: Patrick Auernig Date: Thu, 8 Jun 2023 21:09:28 +0200 Subject: [PATCH] Disable presence by default and add toggle function --- lua/valeth/packer.lua | 7 +----- lua/valeth/packer/presence.lua | 43 ++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 lua/valeth/packer/presence.lua diff --git a/lua/valeth/packer.lua b/lua/valeth/packer.lua index e0c220b..6cfaf37 100644 --- a/lua/valeth/packer.lua +++ b/lua/valeth/packer.lua @@ -43,13 +43,8 @@ local function spec(use) -- Currently doesn't seem to have an option to make it off by default easily use { "andweeb/presence.nvim", - disable = true, config = function() - local presence = require("presence") - - presence.setup({ - show_time = false, - }) + require("valeth.packer.presence") end } diff --git a/lua/valeth/packer/presence.lua b/lua/valeth/packer/presence.lua new file mode 100644 index 0000000..48cb4df --- /dev/null +++ b/lua/valeth/packer/presence.lua @@ -0,0 +1,43 @@ +local presence = require("presence") +local presence_disabled = true + +local presence_augroup = vim.api.nvim_create_augroup("PresenceEvents", { clear = true }) +local presence_autocmds = { + { "FocusGained", "handle_focus_gained" }, + { "TextChanged", "handle_text_changed" }, + { "VimLeavePre", "handle_vim_leave_pre" }, + { "WinEnter", "handle_win_enter" }, + { "WinLeave", "handle_win_leave" }, + { "BufEnter", "handle_buf_enter" }, + { "BufAdd", "handle_buf_add" }, +} +for _, item in ipairs(presence_autocmds) do + local event = item[1] + local callback_fn = item[2] + vim.api.nvim_create_autocmd(event, { + group = presence_augroup, + callback = function() + if not presence_disabled then + presence[callback_fn](presence) + end + end + }) +end + +vim.api.nvim_create_user_command("DiscordToggle", + function() + if presence_disabled then + presence_disabled = false + presence:handle_win_enter() + else + presence_disabled = true + presence:cancel() + end + end, + { nargs = 0 } +) + +presence.setup({ + auto_update = false, + show_time = false, +})