" ============================================================================= " Filename: autoload/calendar/setting.vim " Author: itchyny " License: MIT License " Last Change: 2020/10/17 01:28:47. " ============================================================================= scriptencoding utf-8 let s:save_cpo = &cpo set cpo&vim " Obtaining settings. " 1: b:_calendar[option] is set by :Calendar -option=value " 2: g:calendar_option is set in vimrc. let g:calendar_option = value " 3: s:option() is the default value. " Firstly, check the buffer variable if exists. It is set from argument. See " calendar#new(args) for more detail. If the buffer was not found as a buffer " variable, check the global variable. A user can set the variable in the vimrc " file. Lastly, returns the default setting. All the default settings are " defined in this file. Conversely, all the variables defined in this file can " be configured by users from their vimrc file. function! calendar#setting#get(name) abort return get(get(b:, '_calendar', {}), a:name, get(g:, 'calendar_' . a:name, s:{a:name}())) endfunction function! calendar#setting#get_default(name) abort return s:{a:name}() endfunction function! s:locale() abort return substitute(v:lang, '[.-]', '_', 'g') endfunction function! s:calendar() abort return 'default' endfunction function! s:calendar_candidates() abort return 0 endfunction function! s:first_day() abort return v:lang =~# '\v(US|CA|JP|IL)|^(ja)' ? 'sunday' : 'monday' endfunction let s:t = strftime('%z') function! s:time_zone() abort return s:t endfunction function! s:date_endian() abort return v:lang =~# '\v(JP|KR|HU|LT|IR|MN)|^(ja|zh)' ? 'big' \ : v:lang =~# 'US' ? 'middle' \ : 'little' endfunction function! s:date_separator() abort return v:lang =~# '\v(AM|AT|AZ|BY|BG|HR|CZ|EE|FI|GE|DE|HU|IS|KZ|KG|LV|MN|NO|RO|RU|SK|CH|TM|UA)' ? '.' \ : v:lang =~# '\v(BD|CN|DK|FR|IN|IE|LT|NL|SE|TW)' ? '-' \ : '/' endfunction function! s:date_month_name() abort return 0 endfunction function! s:date_full_month_name() abort return 0 endfunction function! s:task() abort return 0 endfunction function! s:event_start_time() abort return 1 endfunction function! s:event_start_time_minwidth() abort return 16 endfunction function! s:week_number() abort return 0 endfunction function! s:clock_12hour() abort return 0 endfunction let s:c = expand('~/.cache/calendar.vim/') function! s:cache_directory() abort return s:c endfunction function! s:google_calendar() abort return 0 endfunction function! s:google_task() abort return 0 endfunction function! s:updatetime() abort return 200 endfunction function! s:view() abort return 'month' endfunction function! s:views() abort return ['year', 'month', 'week', 'day_4', 'day', 'clock'] endfunction function! s:cyclic_view() abort return 0 endfunction function! s:yank_deleting() abort return 1 endfunction function! s:skip_event_delete_confirm() abort return 0 endfunction function! s:skip_task_delete_confirm() abort return 0 endfunction function! s:skip_task_clear_completed_confirm() abort return 0 endfunction function! s:task_delete() abort return 0 endfunction function! s:task_width() abort return calendar#util#winwidth() / 6 endfunction function! s:view_source() abort return [ \ { 'type': 'ymd' \ , 'top': '1' \ , 'align': 'center' \ , 'maxwidth': 'b:calendar.view.task_visible() ? calendar#util#winwidth() - calendar#task#width() : calendar#util#winwidth() - 1' \ , 'visible': 'b:calendar.view.get_calendar_views() !~# "clock\\|event\\|agenda"' \ } , \ { 'type': 'event' \ , 'left': '(calendar#util#winwidth() - self.width()) / 2' \ , 'top': '(calendar#util#winheight() - self.height()) / 2' \ , 'on_top': '1' \ , 'position': 'absolute' \ , 'maxwidth': 'max([calendar#util#winwidth() / 3, 15])' \ , 'maxheight': 'max([calendar#util#winheight() / 2, 3])' \ , 'visible': 'b:calendar.view.event_visible() && b:calendar.view.get_calendar_views() !~# "clock\\|event\\|agenda"' \ }, \ { 'type': 'task' \ , 'align': 'right' \ , 'left': 'calendar#util#winwidth() - calendar#task#width()' \ , 'top': '(calendar#util#winheight() - self.height()) / 2' \ , 'position': 'absolute' \ , 'maxwidth': 'calendar#task#width()' \ , 'maxheight': 'max([calendar#util#winheight() * 5 / 6, 3])' \ , 'visible': 'b:calendar.view.task_visible()' \ }, \ { 'type': 'help' \ , 'align': 'center' \ , 'position': 'absolute' \ , 'on_top': '1' \ , 'left': '(calendar#util#winwidth() - self.width()) / 2' \ , 'top': '(calendar#util#winheight() - self.height()) / 2' \ , 'maxwidth': 'max([min([calendar#util#winwidth() / 2, min([77, calendar#util#winwidth()])]), min([30, calendar#util#winwidth()])])' \ , 'maxheight': 'max([calendar#util#winheight() * 3 / 5, 3])' \ , 'visible': 'b:calendar.view.help_visible()' \ }, \ { 'type': 'calendar' \ , 'top': 'b:calendar.view.get_calendar_views() =~# "clock\\|event\\|agenda" ? 0 : 3' \ , 'align': 'center' \ , 'maxwidth': 'b:calendar.view.task_visible() ? calendar#util#winwidth() - calendar#task#width() - 3 : calendar#util#winwidth() - 1' \ , 'maxheight': 'calendar#util#winheight() - (b:calendar.view.get_calendar_views() =~# "clock\\|event\\|agenda" ? 0 : 3)' \ }, \ ] endfunction function! calendar#setting#frame() abort let n = calendar#setting#get('frame') if has_key(s:f, n) | return s:f[n] | endif let s:f[n] = calendar#setting#get('frame_' . n) return s:f[n] endfunction let s:f = {} function! s:frame() abort return &enc ==# 'utf-8' && &fenc ==# 'utf-8' ? 'unicode' : 'default' endfunction function! s:frame_default() abort return { 'type': 'default', 'vertical': '|', 'horizontal': '-', 'junction': '+', \ 'left': '+', 'right': '+', 'top': '+', 'bottom': '+', \ 'topleft': '+', 'topright': '+', 'bottomleft': '+', 'bottomright': '+' } endfunction function! s:frame_unicode() abort if &enc ==# 'utf-8' && &fenc ==# 'utf-8' return { 'type': 'unicode', 'vertical': "\u2502", 'horizontal': "\u2500", 'junction': "\u253C", \ 'left': "\u251C", 'right': "\u2524", 'top': "\u252C", 'bottom': "\u2534", \ 'topleft': "\u250C", 'topright': "\u2510", 'bottomleft': "\u2514", 'bottomright': "\u2518" } else return s:frame_default() endif endfunction function! s:frame_unicode_bold() abort if &enc ==# 'utf-8' && &fenc ==# 'utf-8' return { 'type': 'unicode_bold', 'vertical': "\u2503", 'horizontal': "\u2501", 'junction': "\u254B", \ 'left': "\u2523", 'right': "\u252B", 'top': "\u2533", 'bottom': "\u253B", \ 'topleft': "\u250F", 'topright': "\u2513", 'bottomleft': "\u2517", 'bottomright': "\u251B" } else return s:frame_default() endif endfunction function! s:frame_unicode_round() abort if &enc ==# 'utf-8' && &fenc ==# 'utf-8' return extend(s:frame_unicode_bold(), { \ 'type': 'unicode_round', 'topleft': "\u256D", 'topright': "\u256E", \ 'bottomleft': "\u2570", 'bottomright': "\u256F" }) else return s:frame_default() endif endfunction function! s:frame_unicode_double() abort if &enc ==# 'utf-8' && &fenc ==# 'utf-8' return { 'type': 'unicode_double', 'vertical': "\u2551", 'horizontal': "\u2550", 'junction': "\u256C", \ 'left': "\u2560", 'right': "\u2563", 'top': "\u2566", 'bottom': "\u2569", \ 'topleft': "\u2554", 'topright': "\u2557", 'bottomleft': "\u255A", 'bottomright': "\u255D" } else return s:frame_default() endif endfunction function! s:frame_space() abort return { 'type': 'space', 'vertical': ' ', 'horizontal': ' ', 'junction': ' ', \ 'left': ' ', 'right': ' ', 'top': ' ', 'bottom': ' ', \ 'topleft': ' ', 'topright': ' ', 'bottomleft': ' ', 'bottomright': ' ' } endfunction function! s:google_client() abort if has_key(s:, '_google_client') return s:_google_client endif let s:_google_client = { \ 'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob', \ 'scope': 'https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/tasks', \ 'api_key': '', \ 'client_id': '', \ 'client_secret': '', \ } if exists('g:calendar_google_api_key') let s:_google_client.api_key = g:calendar_google_api_key endif if exists('g:calendar_google_client_id') let s:_google_client.client_id = g:calendar_google_client_id endif if exists('g:calendar_google_client_secret') let s:_google_client.client_secret = g:calendar_google_client_secret endif return s:_google_client endfunction function! s:message_prefix() abort return '[calendar] ' endfunction function! s:debug() abort return 0 endfunction let &cpo = s:save_cpo unlet s:save_cpo