From: Ruben Beltran del Rio Date: Thu, 29 Feb 2024 21:44:10 +0000 (+0100) Subject: Add brain config X-Git-Url: https://git.r.bdr.sh/rbdr/dotfiles/commitdiff_plain/7d35a7fcdeb0fc7e47dcd401b4c91cec9e998799?ds=sidebyside Add brain config --- diff --git a/config/nvim/init.lua b/config/nvim/init.lua index 26b7156..ac926b3 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -81,6 +81,9 @@ pcall(require, 'init_local') vim.keymap.set("n", "", "lua require('fzf-lua').files({ fzf_opts = {} })", { silent = true }) +-- Toggle Autosave +vim.api.nvim_set_keymap('n', 'n', ':ASToggle', {}) + -- Svelte Config vim.g.vim_svelte_plugin_use_typescript = true @@ -99,3 +102,4 @@ require('plugins') require('treesitter_config') require('lsp') require('dap_config') +require('brain') diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 610d03f..83dd80b 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,5 +1,6 @@ { "LargeFile": { "branch": "master", "commit": "3941a37b2b0288524300348a39521a46539bf9f6" }, + "auto-save.nvim": { "branch": "main", "commit": "979b6c82f60cfa80f4cf437d77446d0ded0addf0" }, "coq_nvim": { "branch": "coq", "commit": "76fa95ea445b3d33968ff60bc6a3e2e8e0132551" }, "fzf-lua": { "branch": "main", "commit": "d68d1cfde9bf82061dfdfe35b83fb8636e03766d" }, "gemini.vim": { "branch": "master", "commit": "c9efb59c97b71c28d4678c79fd21fbdd3a69d196" }, 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',