From 49f0a670a6ecaf7c229fc29aad2b33f5f4b4779b Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Sat, 2 Feb 2019 21:21:48 +0100
Subject: [PATCH] tv vim: add TODO ft

---
 tv/2configs/vim.nix | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix
index fe1482817..de843a30f 100644
--- a/tv/2configs/vim.nix
+++ b/tv/2configs/vim.nix
@@ -141,6 +141,43 @@ let {
 
         setlocal iskeyword+='
       '';
+      #
+      # TODO
+      #
+      "/ftdetect/todo.vim".text = ''
+        au BufRead,BufNewFile TODO set ft=todo
+      '';
+      "/ftplugin/todo.vim".text = ''
+        setlocal foldmethod=syntax
+      '';
+      "/syntax/todo.vim".text = ''
+        syn match Comment /#.*/
+
+        syn match todoDate /^[1-9]\S*/
+          \ nextgroup=todoSummary
+
+        syn region todoSummary
+          \ contained
+          \ contains=todoTag
+          \ start="." end="$\n"
+          \ nextgroup=todoBlock
+
+        syn match todoTag /\[[a-z]\+\]/hs=s+1,he=e-1
+          \ contained
+
+        syn region todoBlock
+          \ contained
+          \ contains=Comment
+          \ fold
+          \ start="^[^1-9]" end="^[1-9]"re=s-1,he=s-1,me=s-1
+
+        syn sync minlines=1000
+
+        hi todoDate ctermfg=255
+        hi todoSummary ctermfg=229
+        hi todoBlock ctermfg=248
+        hi todoTag ctermfg=217
+      '';
     }))
     ((rtp: rtp // { inherit rtp; }) (pkgs.write "vim-syntax-nix-nested" {
       "/syntax/haskell.vim".text = ''