From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 2 Jul 2009 18:23:23 +0400 From: "Alexey I. Froloff" To: ALT Linux Sisyphus discussion list Message-ID: <20090702142323.GA24738@altlinux.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="8GpibOaaTibBMecb" Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-23) Subject: [sisyphus] ztodo: command-line pwd-based todo list manager for zsh users X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Jul 2009 14:23:25 -0000 Archived-At: List-Archive: List-Post: --8GpibOaaTibBMecb Content-Type: multipart/mixed; boundary="nFreZHaLTZJo0R7j" Content-Disposition: inline --nFreZHaLTZJo0R7j Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: quoted-printable =F3=CE=C1=DE=C1=CC=C1 =D2=C1=D3=D3=CB=C1=D6=D5 =DA=C1=DE=C5=CD =D1 =DC=D4= =CF =D3=C4=C5=CC=C1=CC. =F3=CF=C2=C9=D2=C1=C0 Ruby 1.9.1. =F0=D2=CF=C3=C5=D3=D3 =DC=D4=CF=D4 =CE= =C5=C2=D9=D3=D4=D2=D9=CA, =D0=D2=CF=C9=D3=C8=CF=C4=C9=D4 =D7 N =D0=D2=C9=A3=CD=CF=D7. =F3=CE=C1=DE=C1=CC=C1 =D5=C2=C9=D2=C1=C0=D4=D3=D1 = =C1=CE=CD=C5=D4=D9 =C9 =D0=C1=CB=C5=D4 ruby =C7=C5=CE=C5=D2=C9=D4 =CE=C5=D3= =CB=CF=CC=D8=CB=CF (=C4=C5=D3=D1=D4=CB=CF=D7) compat =D0=C1=CB=C5=D4=CF=D7. =EE=C1 =D7=D4=CF= =D2=CF=CD =DB=C1=C7=C5 compat =D0=C1=CB=C5=D4=D9 =D5=C2=C9=D2=C1=C0=D4=D3=D1. =F0=CF=D0=D5=D4=CE=CF =CE=C1=C8=CF=C4=D1=D4= =D3=D1 =CD=C5=CC=CB=C9=C5 =CE=C5=C4=CF=C4=C5=CC=CB=C9, =CB=CF=D4=CF=D2=D9= =C5 =D7 =C4=C1=CE=CE=D9=CA =CD=CF=CD=C5=CE=D4 =C2=CF=CC=D8=DB=CF=C7=CF =D2=CF=D1=CC=D1 =CE=C5 =C9=C7= =D2=C1=C0=D4, =CE=CF =C9=C8 =C2=D9=CC=CF =C2=D9 =CE=C5=D0=CC=CF=C8=CF =D5= =D3=D4=D2=C1=CE=C9=D4=D8. =F0=CF=D3=CB=CF=CC=D8=CB=D5 =D0=CF=D3=CC=C5 =D0=C1=CB=C5=D4=C1 ruby =C9=C4= =A3=D4 =C4=CC=C9=CE=CE=C1=D1 =D0=D2=CF=D3=D4=D9=CE=D1 =C4=D2=D5=C7=C9=C8 = =D0=C1=CB=C5=D4=CF=D7, =D4=CF =D0=D2=C9 =CB=C1=CB=C9=C8-=D4=CF =C9=DA=CD=C5=CE=C5=CE=C9=D1=C8 =D7 = =D0=C1=CB=C5=D4=C5 ruby =CE=C1=C4=CF =D0=C5=D2=C5=D3=CF=C2=D2=C1=D4=D8 =C9 = =DC=D4=D5 =D0=D2=CF=D3=D4=D9=CE=C0, =D0=CF=DC=D4=CF=CD=D5 =CE=C5=D3=D5=DD=C5=D3=D4=D7= =C5=CE=CE=D9=C5 =C9=DA=CD=C5=CE=C5=CE=C9=D1 =CF=D4=CB=CC=C1=C4=D9=D7=C1=C0= =D4=D3=D1 "=CE=C1=D0=CF=D4=CF=CD". =E5=D3=D4=C5=D3=D4=D7=C5=CE=CE=CF, =D1 =CE=C5 =CD=CF=C7=D5 =D7=D3=C5=C7=CF = =DA=C1=D0=CF=CD=CE=C9=D4=D8. =E4=C5=D2=D6=C1=D4=D8 TODO =D7 =CB=C1=CB=C9= =C8-=D4=CF =C6=C1=CA=CC=C9=CB=C1=C8 =C9 =D0=C5=D2=C9=CF=C4=C9=DE=C5=D3=CB=C9 =D4=D5=C4= =C1 =DA=C1=C7=CC=D1=C4=D9=D7=C1=D4=D8 =CD=CE=C5 =CC=C5=CE=D8. =FA=CE=C1=DE= =C9=D4 =CE=C1=D0=CF=CD=C9=CE=C1=CC=CB=C1 =C4=CF=CC=D6=CE=C1 =CF=D2=C1=D4=D8 =CB=CF= =C7=C4=C1 =D1 =DA=C1=C8=CF=D6=D5 =D7 git =D2=C5=D0=CF=DA=C9=D4=C1=D2=C9=CA = ruby. =EB=CC=C1=C4=A3=CD =D0=D2=C9=C1=D4=D4=C1=DE=C5=CE=D9=CA =C6=C1=CA=CC=C9=CB = =D7 $fpath, =D7 ~/zshrc =C4=CF=C2=C1=D7=CC=D1=C5=CD: autoload -Uz ztodo chpwd() { ztodo } Usage: ztodo =F0=CF=CB=C1=DA=C1=D4=D8 summary. ztodo add =D4=C5=CB=D3=D4 =E4=CF=C2=C1=D7=C9=D4=D8 entry. ztodo list =F0=CF=CB=C1=DA=C1=D4=D8 =D3=D0=C9=D3=CF=CB. ztodo del =CE=CF=CD=C5=D2 =F5=C4=C1=CC=C9=D4=D8 entry. ztodo clear =EF=DE=C9=D3=D4=C9=D4=D8 =D3=D0=C9=D3=CF=CB. =F2=C1=C2=CF=D4=C1=C5=D4 =D3=CF =D3=D0=C9=D3=CB=CF=CD =C4=CC=D1 =D4=C5=CB= =D5=DD=C5=C7=CF =CB=C1=D4=C1=CC=CF=C7=C1. =F3=C1=CD =D3=D0=C9=D3=CF=CB =C8= =D2=C1=CE=C9=D4=D3=D1 =D7 =C6=C1=CA=CC=C5 ~/.ztodolist, =CE=C9=CB=C1=CB=CF=C7=CF =CD=D5=D3=CF=D2=C1 = =D7 =C4=D2=D5=C7=C9=C8 =CB=C1=D4=C1=CC=CF=C7=C1=C8! =EE=D5 =C9 =C4=CC=D1 =CE=C1=C7=CC=D1=C4=CE=CF=D3=D4=C9 =D3=CB=D2=C9=CE=DB= =CF=D4 =CE=C1=D0=CF=CD=C9=CE=C1=CE=C9=D1: raorn@centaurus:pts/8 ~ $ cd src=20 You have 3 things to do here. raorn@centaurus:pts/8 ~/src $ ztodo list 1: Collect underpants 2: ? 3: PROFIT! raorn@centaurus:pts/8 ~/src $=20 --=20 Regards, Sir Raorn. --nFreZHaLTZJo0R7j Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=ztodo # vim: set ft=zsh et sw=2 sts=2: emulate -L zsh setopt no_sh_word_split null_glob no_ksh_arrays typeset -gHA __ztodolist typeset -gH __ztodolaswrite local cachefile short_format list_format local tmp needupdate=0 local -a todos zstyle -s ':ztodo:*' cache-file cachefile || cachefile="~/.ztodolist" zstyle -s ':ztodo:*' short-format short_format || short_format="You have %n thing%1(n..s) to do here." zstyle -s ':ztodo:*' list-format list_format || list_format="%-2n: %e" tmp=(${~tmp::=$cachefile(ms-$(( ${(%)tmp::="%D{%s}"} - ${__ztodolaswrite:-0} )))}) (( $#tmp )) && . ${~cachefile} todos=( ${(ps:\0:)__ztodolist[$PWD]} ) if (( $# )); then case "$1" in (add) shift todos=( $todos "$*" ) needupdate=1 ;; (del) shift todos[$1]=() needupdate=1 ;; (clear) shift todos=() needupdate=1 ;; (list) shift local i for (( i = 1; i <= $#todos; i++ )); do zformat -f tmp $list_format n:$i e:"$todos[$i]" print -P "$tmp" done ;; esac else if [[ $#todos -gt 0 ]]; then zformat -f tmp $short_format n:$#todos print -P "$tmp" fi fi (( $#todos )) && __ztodolist[$PWD]=${(pj:\0:)todos} || unset "__ztodolist[$PWD]" (( needupdate )) && print -r "__ztodolist=( ${(kv@qq)^^__ztodolist} )" > ${~cachefile} __ztodolaswrite="${(%)tmp::="%D{%s}"}" --nFreZHaLTZJo0R7j-- --8GpibOaaTibBMecb Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkpMwtYACgkQVqT7+fkT8wrbuACfUKPvK5xoArRIkzHdR8v8vTun HoMAoIKzsLLUNWtY1fsLy7MtMWVMHOq7 =1LW8 -----END PGP SIGNATURE----- --8GpibOaaTibBMecb--