# https://www.taskpaper.com # ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ # Detection # ‾‾‾‾‾‾‾‾‾ hook global BufCreate .*\.taskpaper %{ set-option buffer filetype taskpaper } # Highlighters # ‾‾‾‾‾‾‾‾‾‾‾‾ add-highlighter shared/ group taskpaper add-highlighter shared/taskpaper regex ^\h*([^:\n]+):\h*\n 1:header add-highlighter shared/taskpaper regex \h@\w+(?:\(([^)]*)\))? 0:variable 1:value add-highlighter shared/taskpaper regex ^\h*([^-:\n]+)\n 1:+i add-highlighter shared/taskpaper regex ^\h*-\h+[^\n]*@done[^\n]* 0:+d add-highlighter shared/taskpaper regex (([a-z]+://\S+)|((mailto:)[\w+-]+@\S+)) 0:link # Commands # ‾‾‾‾‾‾‾‾ define-command -hidden taskpaper-indent-on-new-line %{ eval -draft -itersel %{ # preserve previous line indent try %{ exec -draft \;K } ## If the line above is a project indent with a tab try %{ exec -draft Z k ^\h*([^:\n]+): z i } # cleanup trailing white spaces on previous line try %{ exec -draft k s \h+$ d } } } # Initialization # ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ hook -group taskpaper-highlight global WinSetOption filetype=taskpaper %{ add-highlighter window ref taskpaper hook window InsertChar \n -group taskpaper-indent taskpaper-indent-on-new-line } hook -group taskpaper-highlight global WinSetOption filetype=(?!taskpaper).* %{ remove-highlighter window/taskpaper remove-hooks window taskpaper-indent }