diff options
Diffstat (limited to 'config/nvim/lua/calendar_tools.lua')
| -rw-r--r-- | config/nvim/lua/calendar_tools.lua | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/config/nvim/lua/calendar_tools.lua b/config/nvim/lua/calendar_tools.lua new file mode 100644 index 0000000..2f8c602 --- /dev/null +++ b/config/nvim/lua/calendar_tools.lua @@ -0,0 +1,29 @@ +local function insert_agenda() + local clipboard_content = vim.fn.getreg('+') + + if not clipboard_content or clipboard_content == '' then + vim.api.nvim_err_writeln('This feature requires optional dependency fzf-lua') + end + + clipboard_content = clipboard_content:match('\n(.*)') + + local parts = vim.split(clipboard_content, '---', {plain = true, trimempty = true}) + + local agenda_text = {'# Agenda', ''} + for _, part in ipairs(parts) do + local trimmed_part = part:match('^%s*(.-)%s*$') + local lines = vim.split(trimmed_part, '\n', {trimempty = true}) + + if #lines >= 2 then + local date = lines[1] + local title = lines[2] + + table.insert(agenda_text, '[' .. date .. '] ' .. title) + end + end + local line = vim.api.nvim_win_get_cursor(0)[1] + vim.api.nvim_buf_set_lines(0, line, line, false, agenda_text) +end + +vim.api.nvim_create_user_command('InsertAgendaFromClipboard', insert_agenda, { nargs = 0 }) +vim.api.nvim_set_keymap('n', '<leader>ia', '<cmd>InsertAgendaFromClipboard<CR>', { noremap = true, silent = true }) |