" ============================================================================= " Filename: autoload/calendar/mark.vim " Author: itchyny " License: MIT License " Last Change: 2015/03/29 06:30:36. " ============================================================================= let s:save_cpo = &cpo set cpo&vim " Mark controller. function! calendar#mark#new() abort return extend(copy(s:self), { 'mark': {} }) endfunction let s:self = {} function! s:self.set(mark) dict abort let self.mark[a:mark] = copy(b:calendar.day().get_ymd()) + copy(b:calendar.time().get_hms()) let self.mark["'"] = self.mark[a:mark] endfunction function! s:self.get(mark) dict abort let mark = a:mark ==# '`' ? "'" : a:mark if has_key(self.mark, mark) let m = self.mark[mark] call b:calendar.set_time(b:calendar.time().new(m[3], m[4], m[5])) call b:calendar.go(b:calendar.day().new(m[0], m[1], m[2])) else call calendar#echo#message(calendar#message#get('mark_not_set') . mark) endif endfunction function! s:self.showmarks() dict abort let marks = ['mark year month day hour minute second'] let format = '%s %6d %4d %4d %4d %4d %4d' for [k, m] in items(self.mark) call add(marks, printf(format, k, m[0], m[1], m[2], m[3], m[4], m[5])) endfor call add(marks, calendar#message#get('hit_any_key')) call calendar#echo#echo(join(marks, "\n")) call getchar() endfunction function! s:self.delmarks(...) dict abort if a:0 if has_key(self.mark, a:1) unlet self.mark[a:1] endif else let self.mark = {} endif endfunction let &cpo = s:save_cpo unlet s:save_cpo