From 7d35a7fcdeb0fc7e47dcd401b4c91cec9e998799 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Thu, 29 Feb 2024 22:44:10 +0100 Subject: Add brain config --- config/nvim/lua/brain.lua | 63 +++++++++++++++++++++++++++++++++++++++++++++ config/nvim/lua/plugins.lua | 1 + 2 files changed, 64 insertions(+) create mode 100644 config/nvim/lua/brain.lua (limited to 'config/nvim/lua') diff --git a/config/nvim/lua/brain.lua b/config/nvim/lua/brain.lua new file mode 100644 index 0000000..4dfd231 --- /dev/null +++ b/config/nvim/lua/brain.lua @@ -0,0 +1,63 @@ +local brain_home = os.getenv('HOME') .. '/brain' +local templates_path = brain_home .. '/1 periodic/99 templates' + +local function load_template(template_name) + local template_path = brain_home .. templates_path .. '/' .. template_name + + local template_file = io.open(template_path, "r") + if not template_file then + print("Template file not found") + return + end + local content = template_file:read("*a") + template_file:close() +end + +local function open_or_create_from_template(template_name, file) + local journal_file = io.open(file, "r") + if not journal_file then + local template_contents = load_template(template_name) + + journal_file = io.open(file, "w") + journal_file:write(template_contents) + journal_file:close() + end + vim.cmd("edit " .. file) +end + +function open_daily_note() + local filename_format = os.date('%Y-%m-%d') + local template_name = '001 daily.md' + + local daily_note = brain_home .. "/1 periodic/01 journal/" .. filename_format .. ".md" + open_or_create_from_template(template_name, daily_note) +end + +function open_weekly_note() + local filename_format = os.date('%Y-w%V') + local template_name = '002 weekly.md' + + local weekly_note = brain_home .. "/1 periodic/02 weeks/" .. filename_format .. ".md" + open_or_create_from_template(template_name, weekly_note) +end + +function toggle_task() + local line_num = vim.api.nvim_win_get_cursor(0)[1] + local line = vim.api.nvim_get_current_line() + + local unchecked_pattern = '^%s*%- %[ %]' + local checked_pattern = '^%s*%- %[x%]' + + if line:match(unchecked_pattern) then + line = line:gsub(unchecked_pattern, '- [x]', 1) + elseif line:match(checked_pattern) then + line = line:gsub(checked_pattern, '- [ ]', 1) + end + + vim.api.nvim_buf_set_lines(0, line_num - 1, line_num, false, {line}) +end + +-- Keybinds +vim.api.nvim_set_keymap('n', 'od', 'lua open_daily_note()', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', 'ow', 'lua open_weekly_note()', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', 't', 'lua toggle_task()', { noremap = true, silent = true }) diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua index 24154d9..20cb89e 100644 --- a/config/nvim/lua/plugins.lua +++ b/config/nvim/lua/plugins.lua @@ -57,6 +57,7 @@ require('lazy').setup({ 'tpope/vim-endwise', 'rstacruz/vim-closer', 'michaeljsmith/vim-indent-object', + 'Pocco81/auto-save.nvim', -- Treesitter 'nvim-treesitter/nvim-treesitter', -- cgit