aboutsummaryrefslogtreecommitdiff
path: root/config/nvim/lua
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2024-02-29 22:44:10 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2024-02-29 22:44:10 +0100
commit7d35a7fcdeb0fc7e47dcd401b4c91cec9e998799 (patch)
tree07b5ce15ac234c7b6341c13a73bc4fefcbb28153 /config/nvim/lua
parent82df2481ef89421986d363ca519a3c8c693e7751 (diff)
Add brain config
Diffstat (limited to 'config/nvim/lua')
-rw-r--r--config/nvim/lua/brain.lua63
-rw-r--r--config/nvim/lua/plugins.lua1
2 files changed, 64 insertions, 0 deletions
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', '<leader>od', '<cmd>lua open_daily_note()<CR>', { noremap = true, silent = true })
+vim.api.nvim_set_keymap('n', '<leader>ow', '<cmd>lua open_weekly_note()<CR>', { noremap = true, silent = true })
+vim.api.nvim_set_keymap('n', '<leader>t', '<cmd>lua toggle_task()<CR>', { 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',