On Tuesday, July 11, 2017 at 1:35:06 AM UTC-4, Nazri wrote: > On Tue, Jul 11, 2017 at 1:28 AM, Robert <[email protected]> wrote: > > I have a specific tag "due:YYYY-MM-DD" in my files. > > > > Is it possible for a function to compare all the matches it finds to today's > > date and if the "due:" is is past, to highlight it? > > Your question can be simplified to "How do I highlight dates that are > not today?" > > Vim regex supports what is known as "look behind" pattern - it is a pattern > that tells the regex engine to register as positive match if the previous > sequence of characters matches or does not match a given pattern. > > The following search pattern will match all the text "due:YYYY-MM-DD" in your > file (not quite what you want, yet): > > due:[0-9]\{4}-[0-9][0-9]-[0-9][0-9] > > To tell the regex engine to exclude today's date use the negative look > behind pattern \@!: > > due:\(2017-07-11\)\@![0-9]\{4}-[0-9][0-9]-[0-9][0-9] > > If you do a search using the above regex it will find all "due:" lines > with dates that doesn't match 2017-07-11. > > To highlight the pattern you can put this in your .vimrc: > > syn match nottoday 'due:\(2017-07-11\)\@![0-9]\{4}-[0-9][0-9]-[0-9][0-9]' > hi nottoday ctermfg=yellow guifg=yellow > > The next step is to automate the "today's date" part so that if you open the > file again tomorrow it would exclude tomorrow's date, something like this > should > do it: > > function HighlightNotToday() > exe "syn match nottoday 'due:\\(" . strftime("%Y-%m-%d") . > "\\)\\@![0-9]\\{4}-[0-9][0-9]-[0-9][0-9]'" > hi nottoday ctermfg=yellow guifg=yellow > endfun > nmap <f4> :call HighlightNotToday()<cr> > > nazri
Thanks Nazri, I'll give it shot. Bob -- -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_use" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
