Packaging
- This is the structure that the OSX package requires. Note that the task binary is 'represented' by an empty file. - With more time, this could possibly be converted to a tree of symlinks, but I'm not sure whether PackageManager deals with them as expected.
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
# bash completion support for task
|
||||
#
|
||||
# Copyright 2009 Federico Hernandez
|
||||
# All rights reserved.
|
||||
#
|
||||
# This script is part of the task project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; either version 2 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# this program; if not, write to the
|
||||
#
|
||||
# Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA
|
||||
# 02110-1301
|
||||
# USA
|
||||
#
|
||||
# The routines will do completion of:
|
||||
#
|
||||
# *) task subcommands
|
||||
# *) project names
|
||||
# *) tag names
|
||||
#
|
||||
# To use these routines:
|
||||
#
|
||||
# 1) Copy this file to somewhere (e.g. ~/.bash_completion.d/.task_completion.sh).
|
||||
# 2) Added the following line to your .bashrc:
|
||||
# source ~/.bash_completion.d/task_completion.sh
|
||||
#
|
||||
# OR
|
||||
#
|
||||
# 3) Copy the file to /etc/bash_complettion.d
|
||||
# 4) source /etc/bash_completion
|
||||
#
|
||||
# To submit patches/bug reports:
|
||||
#
|
||||
# *) Go to the projects website at
|
||||
#
|
||||
# http://taskwarrior.org
|
||||
#
|
||||
|
||||
_task_get_tags() {
|
||||
task _tags
|
||||
}
|
||||
|
||||
_task_get_config() {
|
||||
task _config
|
||||
}
|
||||
|
||||
_task_offer_projects() {
|
||||
COMPREPLY=( $(compgen -W "$(task _projects)" -- ${cur/*:/}) )
|
||||
}
|
||||
|
||||
_task()
|
||||
{
|
||||
local cur prev opts base
|
||||
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
if [ ${#COMP_WORDS[*]} -gt 2 ]
|
||||
then
|
||||
prev2="${COMP_WORDS[COMP_CWORD-2]}"
|
||||
else
|
||||
prev2=""
|
||||
fi
|
||||
# echo -e "\ncur='$cur'"
|
||||
# echo "prev='$prev'"
|
||||
# echo "prev2='$prev2'"
|
||||
|
||||
opts="$(task _commands) $(task _ids)"
|
||||
|
||||
case "${prev}" in
|
||||
:)
|
||||
case "${prev2}" in
|
||||
pro*)
|
||||
_task_offer_projects
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
case "${cur}" in
|
||||
pro*:*)
|
||||
_task_offer_projects
|
||||
return 0
|
||||
;;
|
||||
:)
|
||||
case "${prev}" in
|
||||
pro*)
|
||||
_task_offer_projects
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
+*)
|
||||
local tags=$(_task_get_tags | sed 's/^/+/')
|
||||
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
-*)
|
||||
local tags=$(_task_get_tags | sed 's/^/-/')
|
||||
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
rc.*)
|
||||
local config=$(_task_get_config | sed -e 's/^/rc\./' -e 's/$/:/')
|
||||
COMPREPLY=( $(compgen -W "${config}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||
return 0
|
||||
}
|
||||
complete -o nospace -F _task task
|
||||
@@ -0,0 +1,57 @@
|
||||
|
||||
Configure VIM for Syntax Highlighting of Task Data
|
||||
|
||||
|
||||
The task data files (pending.data, completed.data and undo.data) as well as
|
||||
edits made via commands like "task 1 edit" can be color-highlighted if you
|
||||
happen to use VIM as your preferred text editor. Eventually this will happen
|
||||
automatically in newer versions of VIM, but for now you have to do a little
|
||||
bit of file shuffling.
|
||||
|
||||
|
||||
Prerequisites
|
||||
|
||||
For this to work, you need to first have syntax highlighting enabled when you
|
||||
use VIM. This happens to be the default for most VIM installations, but it is
|
||||
usually quite simple if that doesn't happen to be so in your case. Rather than
|
||||
repeat the excellent VIM documentation here, please see the appropriate VIM
|
||||
documentation itself. Generally this can be made seen by starting vim/gvim and
|
||||
issuing the following command:
|
||||
|
||||
:help syntax
|
||||
|
||||
You may prefer instead to read the help online at:
|
||||
http://vimdoc.sourceforge.net/htmldoc/syntax.html#syntax
|
||||
|
||||
|
||||
Configuring VIM to Understand Task Data
|
||||
|
||||
Once you have VIM's syntax highlighting enabled and working with other file
|
||||
types properly, configuring it for use with task is simple. You simply need to
|
||||
copy some files that came with task into your home directory so that you have:
|
||||
|
||||
~/.vim/ftdetect/task.vim
|
||||
~/.vim/syntax/taskdata.vim
|
||||
~/.vim/syntax/taskedit.vim
|
||||
|
||||
The source of these files varies depending on how you installed task. If you
|
||||
installed task via a regular package (rpm or deb) you can find these files in
|
||||
/usr/share/doc/task-VERSION/scripts/vim/. If you built task yourself from the
|
||||
tarball (using the default configure options), these will be in
|
||||
/usr/local/share/doc/task-VERSION/scripts/vim/ instead. So you should be able
|
||||
to do one of the following:
|
||||
|
||||
cp -av /usr/share/doc/task-VERSION/scripts/vim/* ~/.vim/
|
||||
|
||||
or
|
||||
|
||||
cp -av /usr/local/share/doc/task-VERSION/scripts/vim/* ~/.vim/
|
||||
|
||||
You should then be ready to go.
|
||||
---
|
||||
All three above mentioned files are
|
||||
|
||||
Copyright 2009 John Florian
|
||||
|
||||
and are available under the GNU Public License version 2 or later.
|
||||
For the full text of this license, see COPYING.
|
||||
@@ -0,0 +1,18 @@
|
||||
" Vim support file to detect task data files and single task edits
|
||||
"
|
||||
" Maintainer: John Florian <jflorian@doubledog.org>
|
||||
" Updated: Wed Jul 8 19:45:55 EDT 2009
|
||||
"
|
||||
" Copyright 2009 John Florian
|
||||
"
|
||||
" This file is available under the GNU Public License version 2 or later.
|
||||
" For the full text of this license, see COPYING.
|
||||
|
||||
|
||||
" for the raw data files
|
||||
au BufRead,BufNewFile {pending,completed,undo}.data set filetype=taskdata
|
||||
|
||||
" for 'task 42 edit'
|
||||
au BufRead,BufNewFile *.task set filetype=taskedit
|
||||
|
||||
" vim:noexpandtab
|
||||
@@ -0,0 +1,48 @@
|
||||
" Vim syntax file
|
||||
" Language: task data
|
||||
" Maintainer: John Florian <jflorian@doubledog.org>
|
||||
" Updated: Wed Jul 8 19:46:20 EDT 2009
|
||||
"
|
||||
" Copyright 2009 John Florian
|
||||
"
|
||||
" This file is available under the GNU Public License version 2 or later.
|
||||
" For the full text of this license, see COPYING.
|
||||
|
||||
|
||||
" For version 5.x: Clear all syntax items.
|
||||
" For version 6.x: Quit when a syntax file was already loaded.
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Key Names for values.
|
||||
syn keyword taskdataKey description due end entry imask mask parent
|
||||
syn keyword taskdataKey priority project recur start status tags uuid
|
||||
syn match taskdataKey "annotation_\d\+"
|
||||
syn match taskdataUndo "^time.*$"
|
||||
syn match taskdataUndo "^\(old \|new \|---\)"
|
||||
|
||||
" Values associated with key names.
|
||||
"
|
||||
" Strings
|
||||
syn region taskdataString matchgroup=Normal start=+"+ end=+"+
|
||||
\ contains=taskdataEncoded,taskdataUUID,@Spell
|
||||
"
|
||||
" Special Embedded Characters (e.g., ",")
|
||||
syn match taskdataEncoded "&\a\+;" contained
|
||||
" UUIDs
|
||||
syn match taskdataUUID "\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained
|
||||
|
||||
|
||||
" The default methods for highlighting. Can be overridden later.
|
||||
hi def link taskdataEncoded Function
|
||||
hi def link taskdataKey Statement
|
||||
hi def link taskdataString String
|
||||
hi def link taskdataUUID Special
|
||||
hi def link taskdataUndo Type
|
||||
|
||||
let b:current_syntax = "taskdata"
|
||||
|
||||
" vim:noexpandtab
|
||||
@@ -0,0 +1,40 @@
|
||||
" Vim syntax file
|
||||
" Language: support for 'task 42 edit'
|
||||
" Maintainer: John Florian <jflorian@doubledog.org>
|
||||
" Updated: Wed Jul 8 19:46:32 EDT 2009
|
||||
"
|
||||
" Copyright 2009 John Florian
|
||||
"
|
||||
" This file is available under the GNU Public License version 2 or later.
|
||||
" For the full text of this license, see COPYING.
|
||||
|
||||
|
||||
" For version 5.x: Clear all syntax items.
|
||||
" For version 6.x: Quit when a syntax file was already loaded.
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match taskeditHeading "^\s*#\s*Name\s\+Editable details\s*$" contained
|
||||
syn match taskeditHeading "^\s*#\s*-\+\s\+-\+\s*$" contained
|
||||
syn match taskeditReadOnly "^\s*#\s*\(UU\)\?ID:.*$" contained
|
||||
syn match taskeditReadOnly "^\s*#\s*Status:.*$" contained
|
||||
syn match taskeditReadOnly "^\s*#\s*i\?Mask:.*$" contained
|
||||
syn match taskeditKey "^ *.\{-}:" nextgroup=taskeditString
|
||||
syn match taskeditComment "^\s*#.*$"
|
||||
\ contains=taskeditReadOnly,taskeditHeading
|
||||
syn match taskeditString ".*$" contained contains=@Spell
|
||||
|
||||
|
||||
" The default methods for highlighting. Can be overridden later.
|
||||
hi def link taskeditComment Comment
|
||||
hi def link taskeditHeading Function
|
||||
hi def link taskeditKey Statement
|
||||
hi def link taskeditReadOnly Special
|
||||
hi def link taskeditString String
|
||||
|
||||
let b:current_syntax = "taskedit"
|
||||
|
||||
" vim:noexpandtab
|
||||
@@ -0,0 +1,58 @@
|
||||
#compdef task
|
||||
# zsh completion for task
|
||||
#
|
||||
# Copyright 2009 P.C. Shyamshankar
|
||||
# All rights reserved.
|
||||
#
|
||||
# This script is part of the task project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; either version 2 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# this program; if not, write to the
|
||||
#
|
||||
# Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA
|
||||
# 02110-1301
|
||||
# USA
|
||||
#
|
||||
|
||||
typeset -g _task_cmds
|
||||
_task_cmds=($(task rubbish-command | sed -n -e 's/^\s\+task \(\w\+\) .*/\1/p' | grep -v ID))
|
||||
|
||||
# As of task 1.7.0,
|
||||
# _task_cmds=(add append annotate completed edit duplicate delete undelete info start stop done undo projects tags summary timesheet history ghistory next calendar active overdue stats import export color version help list long ls newest oldest)
|
||||
|
||||
_task() {
|
||||
_arguments -s -S \
|
||||
"*::task command:_task_commands"
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
(( $+functions[_task_commands] )) ||
|
||||
_task_commands() {
|
||||
local cmd ret=1
|
||||
if (( CURRENT == 1 )); then
|
||||
_describe -t commands 'task command' _task_cmds
|
||||
else
|
||||
local curcontext="${curcontext}"
|
||||
cmd="${_task_cmds[(r)$words[1]:*]%%:*}"
|
||||
if (( $#cmd )); then
|
||||
curcontext="${curcontext%:*:*}:task-${cmd}"
|
||||
_call_function ret _task_${cmd} || _message "No command remaining."
|
||||
else
|
||||
_message "Unknown subcommand ${cmd}"
|
||||
fi
|
||||
return ret
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user