Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, October 16, 2026

Diff for vimconfig/vim/plugin/calendar.vim between version 1.5 and 1.6

version 1.5, 2003/11/03 16:04:07 version 1.6, 2005/03/09 19:59:26
Line 2 
Line 2 
 " What Is This: Calendar  " What Is This: Calendar
 " File: calendar.vim  " File: calendar.vim
 " Author: Yasuhiro Matsumoto <mattn_jp@hotmail.com>  " Author: Yasuhiro Matsumoto <mattn_jp@hotmail.com>
 " Last Change: Thu, 19 Jun 2003  " Last Change: Thu, 04 Nov 2004
 " Version: 1.3u  " Version: 1.4
 " Thanks:  " Thanks:
   "     Peter Findeisen     : bug fix
   "     Chip Campbell       : gave a hint for 1.3z
   "     PAN Shizhu          : gave a hint for 1.3y
   "     Eric Wald           : bug fix
   "     Sascha Wuestemann   : advise
   "     Linas Vasiliauskas  : bug report
   "     Per Winkvist        : bug report
 "     Ronald Hoelwarth    : gave a hint for 1.3s  "     Ronald Hoelwarth    : gave a hint for 1.3s
 "     Vikas Agnihotri     : bug report  "     Vikas Agnihotri     : bug report
 "     Steve Hall          : gave a hint for 1.3q  "     Steve Hall          : gave a hint for 1.3q
Line 40 
Line 47 
 "     <Leader>ch  "     <Leader>ch
 "       show horizontal calendar ...  "       show horizontal calendar ...
 " ChangeLog:  " ChangeLog:
   "     1.4  : bug fix, and one improvement.
   "            bug 1:
   "              when marking the current date, there is not distinguished e.g. between
   "              20041103 and 20040113, both dates are marked as today
   "            bug 2:
   "              the navigation mark "today" doesn't work
   "            improvement:
   "              the mapping t worked only when today was displayed, now it works always
   "              and redisplays the cuurent month and today
   "     1.3z : few changes
   "            asign <Left>, <Right> for navigation.
   "            set ws for search navigation.
   "            add tag for GetLatestVimScripts(AutoInstall)
   "     1.3y : bug fix, few changes
   "            changed color syntax name. (ex. CalNavi, see bottom of this)
   "            changed a map CalendarV for <Leader>cal
   "            changed a map CalendarH for <Leader>caL
   "            (competitive map for cvscommand.vim)
   "            the date on the right-hand side didn't work correctoly.
   "            make a map to rebuild Calendar window(r).
   "     1.3x : bug fix
   "            viweek can't refer when not set calendar_weeknm.
   "     1.3w : bug fix
   "            on leap year, week number decreases.
   "     1.3v : bug fix
   "            add nowrapscan
   "            use s:bufautocommandsset for making title
   "            don't focus to navi when doubleclick bottom next>.
 "     1.3u : bug fix  "     1.3u : bug fix
 "             when enter diary first time,  "             when enter diary first time,
 "              it don't warn that you don't have diary directory.  "              it don't warn that you don't have diary directory.
Line 232 
Line 267 
 "       type below.  "       type below.
 "  "
 "       :echo calendar_version  "       :echo calendar_version
   " GetLatestVimScripts: 52 1 :AutoInstall: calendar.vim
   
   let g:calendar_version = "1.4"
   if &compatible
     finish
   endif
   
 let g:calendar_version = "1.3u"  
 if !exists("g:calendar_action")  if !exists("g:calendar_action")
   let g:calendar_action = "<SID>CalendarDiary"    let g:calendar_action = "<SID>CalendarDiary"
 endif  endif
Line 270  endif
Line 310  endif
 :command! -nargs=* CalendarH call Calendar(1,<f-args>)  :command! -nargs=* CalendarH call Calendar(1,<f-args>)
   
 if !hasmapto("<Plug>CalendarV")  if !hasmapto("<Plug>CalendarV")
   nmap <unique> <Leader>ca <Plug>CalendarV    nmap <unique> <Leader>cal <Plug>CalendarV
 endif  endif
 if !hasmapto("<Plug>CalendarH")  if !hasmapto("<Plug>CalendarH")
   nmap <unique> <Leader>ch <Plug>CalendarH    nmap <unique> <Leader>caL <Plug>CalendarH
 endif  endif
 nmap <silent> <Plug>CalendarV :cal Calendar(0)<CR>  nmap <silent> <Plug>CalendarV :cal Calendar(0)<CR>
 nmap <silent> <Plug>CalendarH :cal Calendar(1)<CR>  nmap <silent> <Plug>CalendarH :cal Calendar(1)<CR>
Line 311  endfunction
Line 351  endfunction
 "* CalendarDoAction : call the action handler function  "* CalendarDoAction : call the action handler function
 "*----------------------------------------------------------------  "*----------------------------------------------------------------
 "*****************************************************************  "*****************************************************************
 function! s:CalendarDoAction()  function! s:CalendarDoAction(...)
   " if no action defined return    " if no action defined return
   if !exists("g:calendar_action")    if !exists("g:calendar_action")
     return      return
Line 319  function! s:CalendarDoAction()
Line 359  function! s:CalendarDoAction()
   
   " for navi    " for navi
   if exists('g:calendar_navi')    if exists('g:calendar_navi')
     let navi = expand("<cword>")      let navi = (a:0 > 0)? a:1 : expand("<cWORD>")
     let curl = line(".")      let curl = line(".")
     if navi == s:GetToken(g:calendar_navi_label, ',', 1)      if navi == '<' . s:GetToken(g:calendar_navi_label, ',', 1)
       exec substitute(maparg('<s-left>', 'n'), '<CR>', '', '')        exec substitute(maparg('<s-left>', 'n'), '<CR>', '', '')
     elseif navi == s:GetToken(g:calendar_navi_label, ',', 3)      elseif navi == s:GetToken(g:calendar_navi_label, ',', 3) . '>'
       exec substitute(maparg('<s-right>', 'n'), '<CR>', '', '')        exec substitute(maparg('<s-right>', 'n'), '<CR>', '', '')
     elseif navi == s:GetToken(g:calendar_navi_label, ',', 2)      elseif navi == s:GetToken(g:calendar_navi_label, ',', 2)
       call Calendar(b:CalendarDir)        call Calendar(b:CalendarDir)
Line 335  function! s:CalendarDoAction()
Line 375  function! s:CalendarDoAction()
         silent execute "normal! gg/\*\<cr>"          silent execute "normal! gg/\*\<cr>"
         return          return
       else        else
               setlocal ws
         if curl < line('$')/2          if curl < line('$')/2
           silent execute "normal! gg/".navi."\<cr>"            silent execute "normal! gg0/".navi."\<cr>"
         elseif curl < line('$')/2          else
           silent execute "normal! gg?".navi."\<cr>"            silent execute "normal! G0/".navi."\<cr>"
         endif          endif
               setlocal nows
         return          return
       endif        endif
     endif      endif
Line 380  function! s:CalendarDoAction()
Line 422  function! s:CalendarDoAction()
     return      return
   endif    endif
   let sline = substitute(strpart(getline(hdr),cnr,21),'\s*\(.*\)\s*','\1','')    let sline = substitute(strpart(getline(hdr),cnr,21),'\s*\(.*\)\s*','\1','')
   if (col(".")-cnr) > 20    if (col(".")-cnr) > 21
     return      return
   endif    endif
   
   " extracr day    " extract day
   let day = matchstr(expand("<cword>"), '[^0].*')    if g:calendar_mark == 'right' && col('.') > 1
       normal! h
       let day = matchstr(expand("<cword>"), '[^0].*')
       normal! l
     else
       let day = matchstr(expand("<cword>"), '[^0].*')
     endif
   if day == 0    if day == 0
     return      return
   endif    endif
   " extracr year and month    " extract year and month
   if exists('g:calendar_erafmt') && g:calendar_erafmt !~ "^\s*$"    if exists('g:calendar_erafmt') && g:calendar_erafmt !~ "^\s*$"
     let year = matchstr(substitute(sline, '/.*', '', ''), '\d\+')      let year = matchstr(substitute(sline, '/.*', '', ''), '\d\+')
     let month = matchstr(substitute(sline, '.*/\(\d\d\=\).*', '\1', ""), '[^0].*')      let month = matchstr(substitute(sline, '.*/\(\d\d\=\).*', '\1', ""), '[^0].*')
Line 400  function! s:CalendarDoAction()
Line 448  function! s:CalendarDoAction()
       endif        endif
     endif      endif
   else    else
     let year = matchstr(substitute(sline, '/.*', '', ''), '[^0].*')      let year  = matchstr(substitute(sline, '/.*', '', ''), '[^0].*')
     let month = matchstr(substitute(sline, '\d*/\(\d\d\=\).*', '\1', ""), '[^0].*')      let month = matchstr(substitute(sline, '\d*/\(\d\d\=\).*', '\1', ""), '[^0].*')
   endif    endif
   " call the action function    " call the action function
Line 421  function! Calendar(...)
Line 469  function! Calendar(...)
   "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++    "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   " remember today    " remember today
   " divide strftime('%d') by 1 so as to get "1, 2,3 .. 9" instead of "01, 02, 03 .. 09"    " divide strftime('%d') by 1 so as to get "1, 2,3 .. 9" instead of "01, 02, 03 .. 09"
   let vtoday = strftime('%Y').    let vtoday = strftime('%Y').strftime('%m').strftime('%d')
     \matchstr(strftime('%m'), '[^0].*').matchstr(strftime('%d'), '[^0].*')  
   
   " get arguments    " get arguments
   if a:0 == 0    if a:0 == 0
Line 584  function! Calendar(...)
Line 631  function! Calendar(...)
         endif          endif
       endif        endif
       let vcolumn = vcolumn + 5        let vcolumn = vcolumn + 5
         if vyear % 4 == 0 && vmnth >= 3
           let viweek = viweek + 1
         endif
     endif      endif
   
     "--------------------------------------------------------------      "--------------------------------------------------------------
Line 634  function! Calendar(...)
Line 684  function! Calendar(...)
     endwhile      endwhile
     let vdaycur = 1      let vdaycur = 1
     while (vdaycur <= vmdays)      while (vdaycur <= vmdays)
       let vtarget = vyear.vmnth.vdaycur        if vmnth < 10
            let vtarget =vyear."0".vmnth
         else
            let vtarget =vyear.vmnth
         endif
         if vdaycur < 10
            let vtarget = vtarget."0".vdaycur
         else
            let vtarget = vtarget.vdaycur
         endif
       if exists("g:calendar_sign")        if exists("g:calendar_sign")
         exe "let vsign = " . g:calendar_sign . "(vdaycur, vmnth, vyear)"          exe "let vsign = " . g:calendar_sign . "(vdaycur, vmnth, vyear)"
         if vsign != ""          if vsign != ""
Line 653  function! Calendar(...)
Line 712  function! Calendar(...)
           let vdisplay2=vdisplay2.' '            let vdisplay2=vdisplay2.' '
         endif          endif
         let vdisplay2=vdisplay2.vdaycur          let vdisplay2=vdisplay2.vdaycur
       endif        elseif g:calendar_mark == 'left-fit'
       if g:calendar_mark == 'left-fit'  
         if vdaycur < 10          if vdaycur < 10
           let vdisplay2=vdisplay2.' '            let vdisplay2=vdisplay2.' '
         endif          endif
Line 844  function! Calendar(...)
Line 902  function! Calendar(...)
     silent %d _      silent %d _
   else    else
     " make title      " make title
     auto BufEnter *Calendar let &titlestring = strftime('%c')      if (!exists('s:bufautocommandsset'))
     auto BufLeave *Calendar let &titlestring = ''        auto BufEnter *Calendar let b:sav_titlestring = &titlestring | let &titlestring = '%{strftime("%c")}'
         auto BufLeave *Calendar let &titlestring = b:sav_titlestring
         let s:bufautocommandsset=1
       endif
   
     if exists('g:calendar_navi') && dir      if exists('g:calendar_navi') && dir
       if g:calendar_navi == 'both'        if g:calendar_navi == 'both'
Line 866  function! Calendar(...)
Line 927  function! Calendar(...)
     setlocal bufhidden=delete      setlocal bufhidden=delete
     setlocal nonumber      setlocal nonumber
     setlocal nowrap      setlocal nowrap
       setlocal nowrapscan
     setlocal norightleft      setlocal norightleft
     setlocal foldcolumn=0      setlocal foldcolumn=0
     setlocal modifiable      setlocal modifiable
Line 873  function! Calendar(...)
Line 935  function! Calendar(...)
     " is this a vertical (0) or a horizontal (1) split?      " is this a vertical (0) or a horizontal (1) split?
   endif    endif
   let b:CalendarDir=dir    let b:CalendarDir=dir
     let b:CalendarYear = vyear_org
     let b:CalendarMonth = vmnth_org
   
   " navi    " navi
   if exists('g:calendar_navi')    if exists('g:calendar_navi')
Line 885  function! Calendar(...)
Line 949  function! Calendar(...)
     else      else
       let navcol = (vcolumn-strlen(navi_label)+2)/2        let navcol = (vcolumn-strlen(navi_label)+2)/2
     endif      endif
           if navcol < 3
             let navcol = 3
           endif
   
     if g:calendar_navi == 'top'      if g:calendar_navi == 'top'
       execute "normal gg".navcol."i "        execute "normal gg".navcol."i "
Line 936  function! Calendar(...)
Line 1003  function! Calendar(...)
   
   execute 'nnoremap <silent> <buffer> <cr> :call <SID>CalendarDoAction()<cr>'    execute 'nnoremap <silent> <buffer> <cr> :call <SID>CalendarDoAction()<cr>'
   execute 'nnoremap <silent> <buffer> <2-LeftMouse> :call <SID>CalendarDoAction()<cr>'    execute 'nnoremap <silent> <buffer> <2-LeftMouse> :call <SID>CalendarDoAction()<cr>'
   execute 'nnoremap <silent> <buffer> t gg/\*<cr>'    execute 'nnoremap <silent> <buffer> t :call Calendar(b:CalendarDir)<cr>'
   execute 'nnoremap <silent> <buffer> ? :call <SID>CalendarHelp()<cr>'    execute 'nnoremap <silent> <buffer> ? :call <SID>CalendarHelp()<cr>'
     execute 'nnoremap <silent> <buffer> r :call Calendar(' . dir . ',' . vyear . ',' . vmnth . ')<cr>'
     let pnav = s:GetToken(g:calendar_navi_label, ',', 1)
     let nnav = s:GetToken(g:calendar_navi_label, ',', 3)
     execute 'nnoremap <silent> <buffer> <Up>    :call <SID>CalendarDoAction("<' . pnav . '")<cr>'
     execute 'nnoremap <silent> <buffer> <Left>  :call <SID>CalendarDoAction("<' . pnav . '")<cr>'
     execute 'nnoremap <silent> <buffer> <Down>  :call <SID>CalendarDoAction("' . nnav . '>")<cr>'
     execute 'nnoremap <silent> <buffer> <Right> :call <SID>CalendarDoAction("' . nnav . '>")<cr>'
   
   "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++    "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   "+++ build highlight    "+++ build highlight
   "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++    "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   " today    " today
   syn clear    syn clear
   if g:calendar_mark =~ 'left'  
     syn match Directory display "\*\s*\d*"  
     syn match Identifier display "[+!#$%&@?]\s*\d*"  
   endif  
   if g:calendar_mark =~ 'left-fit'    if g:calendar_mark =~ 'left-fit'
     syn match Directory display "\s*\*\d*"      syn match CalToday display "\s*\*\d*"
     syn match Identifier display "\s*[+!#$%&@?]\d*"      syn match CalMemo display "\s*[+!#$%&@?]\d*"
   endif    elseif g:calendar_mark =~ 'right'
   if g:calendar_mark =~ 'right'      syn match CalToday display "\d*\*\s*"
     syn match Directory display "\d*\*\s*"      syn match CalMemo display "\d*[+!#$%&@?]\s*"
     syn match Identifier display "\d*[+!#$%&@?]\s*"    else
       syn match CalToday display "\*\s*\d*"
       syn match CalMemo display "[+!#$%&@?]\s*\d*"
   endif    endif
   " header    " header
   syn match Special display "[^ ]*\d\+\/\d\+([^)]*)"    syn match CalHeader display "[^ ]*\d\+\/\d\+([^)]*)"
   
   " navi    " navi
   if exists('g:calendar_navi')    if exists('g:calendar_navi')
     exec "syn match Search display \"\\(<"      exec "silent! syn match CalNavi display \"\\(<"
         \.s:GetToken(g:calendar_navi_label, ',', 1)."\\|"          \.s:GetToken(g:calendar_navi_label, ',', 1)."\\|"
         \.s:GetToken(g:calendar_navi_label, ',', 3).">\\)\""          \.s:GetToken(g:calendar_navi_label, ',', 3).">\\)\""
     exec "syn match Search display \"\\s"      exec "silent! syn match CalNavi display \"\\s"
         \.s:GetToken(g:calendar_navi_label, ',', 2)."\\s\"hs=s+1,he=e-1"          \.s:GetToken(g:calendar_navi_label, ',', 2)."\\s\"hs=s+1,he=e-1"
   endif    endif
   
Line 977  function! Calendar(...)
Line 1049  function! Calendar(...)
   endif    endif
   let eolnstring = '\s\(|\|$\)'    let eolnstring = '\s\(|\|$\)'
   if exists('g:calendar_monday')    if exists('g:calendar_monday')
     execute "syn match Statement display \'"      execute "syn match CalSaturday display \'"
       \.dayorspace.dayorspace.wknmstring.eolnstring."\'ms=s+1,me=s+3"        \.dayorspace.dayorspace.wknmstring.eolnstring."\'ms=s+1,me=s+3"
     execute "syn match Type display \'"      execute "syn match CalSunday display \'"
       \.dayorspace.wknmstring.eolnstring."\'ms=s+1,me=s+3"        \.dayorspace.wknmstring.eolnstring."\'ms=s+1,me=s+3"
   else    else
     if dir      if dir
       execute "syn match Statement display \'"        execute "syn match CalSaturday display \'"
         \.dayorspace.wknmstring.eolnstring."\'ms=s+1,me=s+3"          \.dayorspace.wknmstring.eolnstring."\'ms=s+1,me=s+3"
       execute "syn match Type display \'\|"        execute "syn match CalSunday display \'\|"
         \.dayorspace."\'ms=s+2,me=s+4"          \.dayorspace."\'ms=s+2,me=s+4"
     else      else
       execute "syn match Statement display \'"        execute "syn match CalSaturday display \'"
         \.dayorspace.wknmstring.eolnstring."\'ms=s+1,me=s+3"          \.dayorspace.wknmstring.eolnstring."\'ms=s+1,me=s+3"
       execute "syn match Type display \'^"        execute "syn match CalSunday display \'^"
         \.dayorspace."\'ms=s+1,me=s+3"          \.dayorspace."\'ms=s+1,me=s+3"
     endif      endif
   endif    endif
   
   " week number    " week number
   if !exists('g:calendar_weeknm') || g:calendar_weeknm <= 2    if !exists('g:calendar_weeknm') || g:calendar_weeknm <= 2
     syn match Comment display "WK[0-9\ ]\d"      syn match CalWeeknm display "WK[0-9\ ]\d"
   else    else
     syn match Comment display "KW[0-9\ ]\d"      syn match CalWeeknm display "KW[0-9\ ]\d"
   endif    endif
   
   " ruler    " ruler
   execute 'syn match StatusLine "'.vwruler.'"'    execute 'syn match CalRuler "'.vwruler.'"'
   
   if search("\*","w") > 0    if search("\*","w") > 0
     silent execute "normal! gg/\*\<cr>"      silent execute "normal! gg/\*\<cr>"
Line 1061  function! s:CalendarDiary(day, month, ye
Line 1133  function! s:CalendarDiary(day, month, ye
   endif    endif
   let sfile = expand(sfile) . "/" . a:day . ".cal"    let sfile = expand(sfile) . "/" . a:day . ".cal"
   let sfile = substitute(sfile, ' ', '\\ ', 'g')    let sfile = substitute(sfile, ' ', '\\ ', 'g')
   let vwinnum = bufwinnr('__Calendar')    let vbufnr = bufnr('__Calendar')
   
   " load the file    " load the file
   exe "sp " . sfile    exe "sp " . sfile
   set ft=calendar    setlocal ft=calendar
   exe "auto BufLeave ".escape(sfile, ' \\')." normal! ".vwinnum."<c-w>w"    let dir = getbufvar(vbufnr, "CalendarDir")
     let vyear = getbufvar(vbufnr, "CalendarYear")
     let vmnth = getbufvar(vbufnr, "CalendarMonth")
     exe "auto BufLeave ".escape(sfile, ' \\')." w|call Calendar(" . dir . "," . vyear . "," . vmnth . ")"
 endfunc  endfunc
   
 "*****************************************************************  "*****************************************************************
Line 1102  function! s:CalendarHelp()
Line 1177  function! s:CalendarHelp()
   echo '<s-right> : goto next month'    echo '<s-right> : goto next month'
   echo 't         : goto today'    echo 't         : goto today'
   echo 'q         : close window'    echo 'q         : close window'
     echo 'r         : re-display window'
   echo '?         : show this help'    echo '?         : show this help'
   if g:calendar_action == "<SID>CalendarDiary"    if g:calendar_action == "<SID>CalendarDiary"
     echo '<cr>      : show diary'      echo '<cr>      : show diary'
Line 1122  function! s:CalendarHelp()
Line 1198  function! s:CalendarHelp()
   call getchar()    call getchar()
   redraw!    redraw!
 endfunction  endfunction
   
   hi def link CalNavi     Search
   hi def link CalSaturday Statement
   hi def link CalSunday   Type
   hi def link CalRuler    StatusLine
   hi def link CalWeeknm   Comment
   hi def link CalToday    Directory
   hi def link CalHeader   Special
   hi def link CalMemo     Identifier

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top