diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index 0209940..c93f599 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -40,6 +40,7 @@ command! -range -nargs=* TaskWikiAnnotate :,py SelectedTasks().ann " Interactive commands command! -range TaskWikiChooseProject :,py ChooseSplitProjects("global").execute() +command! -range TaskWikiChooseTag :,py ChooseSplitTags("global").execute() " Meta commands command! TaskWikiInspect :py Meta().inspect_viewport() @@ -57,6 +58,7 @@ nmap tbd :TaskWikiBurndownDaily nmap tbw :TaskWikiBurndownWeekly nmap tbm :TaskWikiBurndownMonthly nmap tcp :TaskWikiChooseProject +nmap tct :TaskWikiChooseTag nmap tC :TaskWikiCalendar nmap td :TaskWikiDone nmap tD :TaskWikiDelete diff --git a/taskwiki/taskwiki.py b/taskwiki/taskwiki.py index a27556d..82187e7 100644 --- a/taskwiki/taskwiki.py +++ b/taskwiki/taskwiki.py @@ -479,6 +479,23 @@ class SplitTags(Split): vertical = True +class ChooseSplitTags(CallbackSplitMixin, SplitTags): + split_cursorline = True + + def get_selected_tag(self): + tag_re = re.compile(r'^(?P[^\s]+)\s+[0-9]+$') + match = tag_re.match(vim.current.line) + + if match: + return match.group('name') + else: + raise util.TaskWikiException("No tag selected.") + + def callback(self): + tag = self.get_selected_tag() + self.selected.modify("+{0}".format(tag)) + + if __name__ == '__main__': WholeBuffer.update_from_tw() Meta().integrate_tagbar()