From 6e1bcc0e1a6ced10ae7732a5bae5ceca2d5afa98 Mon Sep 17 00:00:00 2001 From: Guilherme Victal Date: Sun, 24 Jan 2016 16:57:01 -0200 Subject: [PATCH] Overdue date syntax highlight --- .gitmodules | 3 +++ python/dateregex | 1 + python/todo.py | 25 +++++++++++++++++++++++++ syntax/todo.vim | 1 + 4 files changed, 30 insertions(+) create mode 100644 .gitmodules create mode 160000 python/dateregex create mode 100644 python/todo.py diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..448d7bf --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "python/dateregex"] + path = python/dateregex + url = git@github.com:victal/dateregex.git diff --git a/python/dateregex b/python/dateregex new file mode 160000 index 0000000..7db2e6c --- /dev/null +++ b/python/dateregex @@ -0,0 +1 @@ +Subproject commit 7db2e6ca018b579e5964566d0aa6dad4f97cea9d diff --git a/python/todo.py b/python/todo.py new file mode 100644 index 0000000..c6251b2 --- /dev/null +++ b/python/todo.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +import vim +import os +import sys +from datetime import date + +dateregex_dir = os.path.join(vim.eval('s:script_dir'), 'dateregex') +if os.path.isdir(dateregex_dir): + sys.path.insert(0, dateregex_dir) + +def add_due_date_syntax_highlight(): + try: + from dateregex import regex_date_before + except ImportError: + print("dateregex module not found. Overdue dates won't be highlighted") + return + + regex = regex_date_before(date.today()) + regex = r'(^|<)due:%s(>|$)' % regex + + vim.command("syntax match OverDueDate '\\v%s'" % regex) + vim.command("highlight default link OverDueDate Error") + +add_due_date_syntax_highlight() diff --git a/syntax/todo.vim b/syntax/todo.vim index eed08c8..4b48bc2 100644 --- a/syntax/todo.vim +++ b/syntax/todo.vim @@ -52,6 +52,7 @@ highlight default link TodoContext Special if has('python') let b:curdir = expand(':p:h') + let s:script_dir = b:curdir . "/../python/" execute "pyfile " . b:curdir . "/../python/todo.py" else echom "Your version of vim has no python support. Overdue dates won't be highlighted"