Add better handling for vimwiki reviews indexes

pull/1/head
Ensar Sarajčić 2021-03-10 14:26:49 +01:00
parent bbafb92447
commit ad01edc96b
2 changed files with 41 additions and 36 deletions

View File

@ -4,20 +4,20 @@
-- DEPENDS ON VIMWIKI PLUGIN
-------------------------------------------------------------------------------
vim.cmd[[command! -nargs=? VimwikiWeeklyReview :lua require('vimwiki_reviews').vimwiki_weekly_review(<f-args>)]]
vim.cmd[[command! -nargs=? VimwikiWeeklyTemplate :lua require('vimwiki_reviews').open_review_weekly_template(<f-args>)]]
vim.cmd[[command! -nargs=? VimwikiMonthlyReview :lua require('vimwiki_reviews').vimwiki_monthly_review(<f-args>)]]
vim.cmd[[command! -nargs=? VimwikiMonthlyTemplate :lua require('vimwiki_reviews').open_review_monthly_template(<f-args>)]]
vim.cmd[[command! -nargs=? VimwikiYearlyReview :lua require('vimwiki_reviews').vimwiki_yearly_review(<f-args>)]]
vim.cmd[[command! -nargs=? VimwikiYearlyTemplate :lua require('vimwiki_reviews').open_review_yearly_template(<f-args>)]]
vim.cmd[[command! -nargs=? VimwikiReviewIndex :lua require('vimwiki_reviews').vimwiki_review_index(<f-args>)]]
vim.cmd[[command! -count=0 VimwikiWeeklyReview :lua require('vimwiki_reviews').vimwiki_weekly_review(<count>)]]
vim.cmd[[command! -count=0 VimwikiWeeklyTemplate :lua require('vimwiki_reviews').open_review_weekly_template(<count>)]]
vim.cmd[[command! -count=0 VimwikiMonthlyReview :lua require('vimwiki_reviews').vimwiki_monthly_review(<count>)]]
vim.cmd[[command! -count=0 VimwikiMonthlyTemplate :lua require('vimwiki_reviews').open_review_monthly_template(<count>)]]
vim.cmd[[command! -count=0 VimwikiYearlyReview :lua require('vimwiki_reviews').vimwiki_yearly_review(<count>)]]
vim.cmd[[command! -count=0 VimwikiYearlyTemplate :lua require('vimwiki_reviews').open_review_yearly_template(<count>)]]
vim.cmd[[command! -count=0 VimwikiReviewIndex :lua require('vimwiki_reviews').vimwiki_review_index(<count>)]]
local default_opts = {noremap=true}
local function set_keymap(...) vim.api.nvim_set_keymap(...) end
set_keymap('n', '<Leader>wrw', '<cmd>VimwikiWeeklyReview<CR>', default_opts)
set_keymap('n', '<Leader>wrtw', '<cmd>VimwikiWeeklyTemplate<CR>', default_opts)
set_keymap('n', '<Leader>wrm', '<cmd>VimwikiMonthlyReview<CR>', default_opts)
set_keymap('n', '<Leader>wrtm', '<cmd>VimwikiMonthlyTemplate<CR>', default_opts)
set_keymap('n', '<Leader>wry', '<cmd>VimwikiYearlyReview<CR>', default_opts)
set_keymap('n', '<Leader>wrty', '<cmd>VimwikiYearlyTemplate<CR>', default_opts)
set_keymap('n', '<Leader>wri', '<cmd>VimwikiReviewIndex<CR>', default_opts)
set_keymap('n', '<Leader>wrw', "<Cmd>lua require('vimwiki_reviews').vimwiki_weekly_review(vim.v.count)<CR>", default_opts)
set_keymap('n', '<Leader>wrtw', "<Cmd>lua require('vimwiki_reviews').open_review_weekly_template(vim.v.count)<CR>", default_opts)
set_keymap('n', '<Leader>wrm', "<Cmd>lua require('vimwiki_reviews').vimwiki_monthly_review(vim.v.count)<CR>", default_opts)
set_keymap('n', '<Leader>wrtm', "<Cmd>lua require('vimwiki_reviews').open_review_monthly_template(vim.v.count)<CR>", default_opts)
set_keymap('n', '<Leader>wry', "<Cmd>lua require('vimwiki_reviews').vimwiki_yearly_review(vim.v.count)<CR>", default_opts)
set_keymap('n', '<Leader>wrty', "<Cmd>lua require('vimwiki_reviews').open_review_yearly_template(vim.v.count)<CR>", default_opts)
set_keymap('n', '<Leader>wri', "<Cmd>lua require('vimwiki_reviews').vimwiki_review_index(vim.v.count)<CR>", default_opts)

View File

@ -6,13 +6,18 @@ local Path = require('plenary.path')
local scandir = require('plenary.scandir')
-- Gets path to reviews dir of provided vimwiki (by index)
local function get_reviews_dir(...)
local function get_reviews_dir(vimwiki_index)
local vimwiki = {}
if (select('#', ...) == 0)
if (vimwiki_index == 0)
then
vimwiki = vim.g.vimwiki_list[1]
local current_index = vim.fn['vimwiki#vars#get_bufferlocal']('wiki_nr')
if (current_index < 0)
then
current_index = 0
end
vimwiki = vim.g.vimwiki_list[current_index + 1]
else
vimwiki = vim.g.vimwiki_list[tonumber(select(1, ...))]
vimwiki = vim.g.vimwiki_list[vimwiki_index]
end
return vimwiki.path .. 'reviews/'
@ -34,7 +39,7 @@ end
-- - %date% (Puts different date based on review type)
local function read_review_template_into_buffer(vimwiki_reviews_path, review_type)
local template_path = get_review_template_path(vimwiki_reviews_path, review_type)
if (vim.fn.filereadable(vim.fn.glob(template_path)))
if (vim.fn.filereadable(vim.fn.glob(template_path)) ~= 0)
then
vim.cmd('read ' .. template_path)
vim.cmd('0d')
@ -69,28 +74,28 @@ end
local M = {}
-- Edits weekly review template
function M.open_review_weekly_template(...)
local reviews_dir = get_reviews_dir(...)
function M.open_review_weekly_template(vimwiki_index)
local reviews_dir = get_reviews_dir(vimwiki_index)
vim.cmd('edit ' .. get_review_template_path(reviews_dir, 'week'))
end
-- Edits monthly review template
function M.open_review_monthly_template(...)
local reviews_dir = get_reviews_dir(...)
function M.open_review_monthly_template(vimwiki_index)
local reviews_dir = get_reviews_dir(vimwiki_index)
vim.cmd('edit ' .. get_review_template_path(reviews_dir, 'month'))
end
-- Edits yearly review template
function M.open_review_yearly_template(...)
local reviews_dir = get_reviews_dir(...)
function M.open_review_yearly_template(vimwiki_index)
local reviews_dir = get_reviews_dir(vimwiki_index)
vim.cmd('edit ' .. get_review_template_path(reviews_dir, 'year'))
end
-- Open current week weekly review file
-- Created buffer is dated to Sunday of current week
-- Opens current week because Sunday is good time to do this review
function M.vimwiki_weekly_review(...)
local reviews_dir = get_reviews_dir(...)
function M.vimwiki_weekly_review(vimwiki_index)
local reviews_dir = get_reviews_dir(vimwiki_index)
local days_to_sunday = 7 - tonumber(os.date('%u'))
local week_date = os.date('%Y-%m-%d', os.time() + days_to_sunday * 24 * 60 * 60)
local file_name = reviews_dir .. week_date .. '-week.md'
@ -108,8 +113,8 @@ end
-- Created buffer is dated to previous month
-- Previous month is calculated in an erroneous way
-- 28 days are subtracted from current time to get previous month
function M.vimwiki_monthly_review(...)
local reviews_dir = get_reviews_dir(...)
function M.vimwiki_monthly_review(vimwiki_index)
local reviews_dir = get_reviews_dir(vimwiki_index)
local month_time = os.time() - 28 * 24 * 60 * 60
local month_date = os.date('%Y-%m', month_time)
local file_name = reviews_dir .. month_date .. '-month.md'
@ -124,8 +129,8 @@ end
-- Open past year yearly review file
-- Created buffer is dated to previous year
function M.vimwiki_yearly_review(...)
local reviews_dir = get_reviews_dir(...)
function M.vimwiki_yearly_review(vimwiki_index)
local reviews_dir = get_reviews_dir(vimwiki_index)
local year_date = (tonumber(os.date('%Y')) - 1)
local file_name = reviews_dir .. year_date .. '-year.md'
local exists = file_exists_or_open(file_name)
@ -140,8 +145,8 @@ end
-- Generates review index table
-- Takes arguments similar to all vimwiki calls
-- (no args, or 1 arg representing vimwiki index)
function M.get_review_index(...)
local reviews_dir = get_reviews_dir(...)
function M.get_review_index(vimwiki_index)
local reviews_dir = get_reviews_dir(vimwiki_index)
local reviews_path = Path:new(reviews_dir):expand()
local entries = scandir.scan_dir(
@ -209,11 +214,11 @@ function M.get_review_index(...)
end
-- Open reviews index file
function M.vimwiki_review_index(...)
local reviews_dir = get_reviews_dir(...)
function M.vimwiki_review_index(vimwiki_index)
local reviews_dir = get_reviews_dir(vimwiki_index)
vim.cmd('edit ' .. reviews_dir .. 'reviews.md')
local index = M.get_review_index(...)
local index = M.get_review_index(vimwiki_index)
local lines = {
'# Reviews',