diff options
Diffstat (limited to '.config/nvim/lua/leaf')
| -rw-r--r-- | .config/nvim/lua/leaf/calendar.lua | 43 | ||||
| -rw-r--r-- | .config/nvim/lua/leaf/fold.lua | 61 | ||||
| -rw-r--r-- | .config/nvim/lua/leaf/indent.lua | 16 | ||||
| -rw-r--r-- | .config/nvim/lua/leaf/init.lua | 88 |
4 files changed, 0 insertions, 208 deletions
diff --git a/.config/nvim/lua/leaf/calendar.lua b/.config/nvim/lua/leaf/calendar.lua deleted file mode 100644 index f998785..0000000 --- a/.config/nvim/lua/leaf/calendar.lua +++ /dev/null @@ -1,43 +0,0 @@ -local M = {} - - -local floor = math.floor - - -M.MON = 1 -M.TUE = 2 -M.WED = 3 -M.THU = 4 -M.FRI = 5 -M.SAT = 6 -M.SUN = 7 - - -function M.calc_week_of_day(y, m, d) - -- Zeller's congruence - if m == 1 or m == 2 then - m = m + 12 - y = y - 1 - end - local C = floor(y / 100) - local Y = y % 100 - local G = 5*C + floor(C/4) - return 1 + (d + floor(26 * (m+1) / 10) + Y + floor(Y/4) + G + 5) % 7 -end - - -function M.translate_week_of_day(w, locale) - -- assert(locale == 'ja_JP') - return ({ - [M.MON] = '月', - [M.TUE] = '火', - [M.WED] = '水', - [M.THU] = '木', - [M.FRI] = '金', - [M.SAT] = '土', - [M.SUN] = '日', - })[w] -end - - -return M diff --git a/.config/nvim/lua/leaf/fold.lua b/.config/nvim/lua/leaf/fold.lua deleted file mode 100644 index 0221dda..0000000 --- a/.config/nvim/lua/leaf/fold.lua +++ /dev/null @@ -1,61 +0,0 @@ -local M = {} - - -local F = vim.fn -local V = vim.v - - -local function find_plain_string(haystack, needle, start) - return haystack:find(needle, start or 1, true) -end - - -function M.foldexpr() - local lnum = V.lnum - local current_line_indent = F.indent(lnum) - local task_level = math.floor(current_line_indent / F.shiftwidth()) - if lnum == F.line('$') then - return task_level - end - local next_line_indent = F.indent(lnum + 1) - if current_line_indent < next_line_indent then - return ('>%d'):format(task_level + 1) - else - return task_level - end -end - - -function M.foldtext() - local foldstart = V.foldstart - local foldend = V.foldend - local shiftwidth = F.shiftwidth() - local current_line_indent = F.indent(foldstart) - - local todo = 0 - local done = 0 - for i = foldstart + 1, foldend do - local line = F.getline(i) - local line_indent = F.indent(i) - if line_indent == current_line_indent + shiftwidth then - if find_plain_string(line, '[x] ') then - done = done + 1 - elseif find_plain_string(line, '[ ] ') then - todo = todo + 1 - elseif find_plain_string(line, '[-] ') then - done = done + 1 - end - end - end - - local progress - if done + todo == 0 then - progress = '...' - else - progress = (' [%d/%d]'):format(done, done + todo) - end - return F.getline(foldstart) .. progress -end - - -return M diff --git a/.config/nvim/lua/leaf/indent.lua b/.config/nvim/lua/leaf/indent.lua deleted file mode 100644 index d1df34a..0000000 --- a/.config/nvim/lua/leaf/indent.lua +++ /dev/null @@ -1,16 +0,0 @@ -local M = {} - -local F = vim.fn -local V = vim.v - - -function M.indentexpr() - local lnum = V.lnum - if lnum == 0 then - return 0 - end - return F.indent(lnum - 1) -end - - -return M diff --git a/.config/nvim/lua/leaf/init.lua b/.config/nvim/lua/leaf/init.lua deleted file mode 100644 index c389ffd..0000000 --- a/.config/nvim/lua/leaf/init.lua +++ /dev/null @@ -1,88 +0,0 @@ -local M = {} - - -local A = vim.api -local F = vim.fn - -local TASK_STATUS_PATTERN = [=[\[[ x-]\] ]=] -local TASK_STATUS_PATTERN_EXCEPT_DONE = [=[\[[ -]\] ]=] -local TASK_STATUS_PATTERN_EXCEPT_CANCELED = [=[\[[ x]\] ]=] --- op = T --- T => T --- D => T --- C => T --- op = D --- T => D --- D => D --- C => C --- op = C --- T => C --- D => D --- C => C - - -local function vim_match(s, pattern) - return vim.regex(pattern):match_str(s) -end - -local function switch_task_status_internal(line_num, op, is_subtask) - local line = F.getline(line_num) - local pattern - if is_subtask then - if op == ' ' then - pattern = TASK_STATUS_PATTERN - elseif op == 'x' then - pattern = TASK_STATUS_PATTERN_EXCEPT_CANCELED - elseif op == '-' then - pattern = TASK_STATUS_PATTERN_EXCEPT_DONE - else - assert('unexpected op: ' .. tostring(op)) - end - else - pattern = TASK_STATUS_PATTERN - end - if vim_match(line, pattern) then - local replacement = ('[%s] '):format(op) - F.setline(line_num, F.substitute(line, pattern, replacement, '')) - return true - else - return false - end -end - - -function M.checkbox(check, char) - local line = F.getline('.') - if vim_match(line, [[^\s*$]]) and #line % F.shiftwidth() == 0 then - return check and '[x] ' or '[ ] ' - else - return char - end -end - -function M.switch_task_status(op) - switch_task_status_internal(F.line('.'), op) -end - -function M.switch_task_status_rec(op) - local current_line_num = F.line('.') - local replaced = switch_task_status_internal(current_line_num, op) - if not replaced then - return - end - local last_line_num = F.line('$') - if current_line_num == last_line_num then - return - end - - local base_indent_level = F.indent('.') - for l = current_line_num + 1, last_line_num do - if F.indent(l) <= base_indent_level then - break - end - switch_task_status_internal(l, op, true) - end -end - - -return M |
