Vim Tips Wiki

Enhance the calendar script with special dates

Redirected from VimTip408

1,625pages on
this wiki
Add New Page
Talk0 Share
Tip 408 Printable Monobook Previous Next

created January 19, 2003 · complexity basic · author Suresh Govindachar · version 6.0

To enhance Calendar script#52 with display of special dates:

Step 1. Create a file called "holidays" in the directory assigned to g:calendar_diary (default value for g:calendar_diary is ~/diary).

This file will contain the special dates. Essence of contents of the holidays file is the special dates encoded as (10000+(month*100)+day).

Example contents of file g:calendar_diary/holidays

List of holidays: ^(10000 + ((month * 100)+day))

Encoded   Sign   Color   Description

10101     n      blue    Jan 01   (Wed)      - New Year's Day
10217     p      blue    Feb 17   (Mon)      - President's Day
10214     v      red     Feb 14   (Fri)      - Valentine's Day
10414     s      green   Apr 14   (Mon)      - Spring Break
10526     m      blue    May 26   (Mon)      - Memorial Day
10703     i      gold
10704     i      gold    Jul 3&4  (Thu & Fri)- Independence Day + 1 day
10901     l      blue    Sep 01   (Mon)      - Labor Day
11127     t      blue    Nov 27&28(Thu & Fri)- Thanksgiving Day + 1 day
11128     t      blue
11225     c      silver  Dec 25&26(Thu & Fri)- Christmas Day + 1 day
11226     c      silver  Dec 25&26(Thu & Fri)- Christmas Day + 1 day

Step 2. Add the following to your vimrc file:

let calendar_sign = 'MyGetSpecialDay'
function! MyGetSpecialDay(day, month, year)
  let l:m100d = 10000 + (a:month * 100 ) + a:day
  let l:holidays = expand(g:calendar_diary) . "/holidays"
  exe "split " . l:holidays
  let l:found = search(l:m100d)
  if l:found
    let l:found = 'h'
  return l:found

Note: The preceding constitutes basic support for display of special dates. With this basic support, all special dates are shown with the same sign (viz. +) and the same highlight color. An enhancement would be to pick up the sign and the highlight color from the holidays file. (Also, I suspect management of buffer for the holidays file can be speeded up, perhaps by opening it only once, keeping it in the background and searching with warp-around flag ('w').)


Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.