function! s:HatenaEdit(...)
if !exists('b:hatena_login_info')
let hatena_login_info = s:HatenaLogin()
if !len(hatena_login_info)
return
endif
else
let hatena_login_info = b:hatena_login_info
endif
let [base_url, user, cookie_file] = hatena_login_info
if a:0 > 0
let date = a:1
else
let date = input('Date: ', strftime('%Y%m%d'))
endif
if !len(date)
echo 'キャンセルしました'
return
endif
let pat = '\%(\%(\(\d\d\d\d\)[/-]\=\)\=\(\d\d\)[/-]\=\)\=\(\d\d\)'
let matches = matchlist(date, pat)
if !len(matches)
echoerr '日時のフォーマットが正しくありません!(YYYYMMDD)'
return
endif
let [year, month, day] = matches[1:3]
if !strlen(day)
echoerr '日時のフォーマットが正しくありません!(YYYYMMDD)'
return
endif
if !strlen(year) | let year = strftime('%Y') | endif
if !strlen(month) | let month = strftime('%m') | endif
let content = HatenaLoadContent(base_url,user,year,month,day,cookie_file)
let tmpfile = tempname()
execute g:hatena_edit_command tmpfile
set filetype=hatena
":set"
setlocal noswapfile
let &fileencoding = content['fenc']
let b:rkm = content['rkm']
if !strlen(b:rkm)
echoerr 'ログインできませんでした'
if exists('s:user')
unlet s:user
endif
return
endif
let b:hatena_login_info = hatena_login_info
let b:year = year
let b:month = month
let b:day = day
let b:trivial = g:hatena_always_trivial
let b:diary_title = content['diary_title']
let b:day_title = content['day_title']
let b:timestamp = content['timestamp']
let b:prev_titlestring = &titlestring
autocmd BufWritePost <buffer> call s:HatenaUpdate()
| set readonly
|let &titlestring = b:prev_titlestring
| bdelete
autocmd WinLeave <buffer> let &titlestring = b:prev_titlestring
autocmd WinEnter <buffer> let &titlestring = b:diary_title
. ' ' . b:year . '-' . b:month
. '-' . b:day . ' [' . b:hatena_login_info[1] . ']'
let &titlestring = b:diary_title . ' '
. b:year . '-' . b:month . '-'
. b:day . ' [' . user . ']'
let nopaste = !&paste
set paste
execute 'normal i' . content['body']
if nopaste
set nopaste
endif
set nomodified
endfunction