Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
7b7c5fd1
Commit
7b7c5fd1
authored
Mar 08, 2014
by
Robby Russell
Browse files
Merge pull request #2579 from mfaerevaag/master
Updated wd plugin to v0.3.0
parents
0018969b
d41ac7fe
Changes
3
Hide whitespace changes
Inline
Side-by-side
plugins/wd/_wd.sh
View file @
7b7c5fd1
#compdef wd.sh
zstyle
":completion:*:descriptions"
format
"%B%d%b"
CONFIG
=
$HOME
/.warprc
local
-a
main_commands
main_commands
=(
add:
'Adds the current working directory to your warp points'
#add'\!':'Overwrites existing warp point' # TODO: Fix
rm
:
'Removes the given warp point'
ls
:
'Outputs all stored warp points'
show:
'Outputs warp points to current directory'
)
local
-a
points
while
read
line
do
points+
=
$(
awk
"{ gsub(/
\/
Users
\/
$USER
|
\/
home
\/
$USER
/,
\"
~
\"
); print }"
<<<
$line
)
done
<
$CONFIG
_wd
()
{
# init variables
local
curcontext
=
"
$curcontext
"
state line
typeset
-A
opt_args
# init state
_arguments
\
'1: :->command'
\
'2: :->argument'
case
$state
in
command
)
compadd
"
$@
"
add
rm ls
show
_describe
-t
warp-points
'Warp points:'
points
&&
ret
=
0
;;
argument
)
case
$words
[
2]
in
rm
|
add!
)
_describe
-t
warp-points
'warp points'
points
&&
ret
=
0
;;
*
)
esac
esac
#compdef wd
zstyle
':completion:*:descriptions'
format
'%B%d%b'
zstyle
':completion::complete:wd:*:commands'
group-name commands
zstyle
':completion::complete:wd:*:warp_points'
group-name warp_points
zstyle
':completion::complete:wd::'
list-grouped
# Call `_wd()` when when trying to complete the command `wd`
zmodload zsh/mapfile
function
_wd
()
{
local
ret
=
1
local
CONFIG
=
$HOME
/.warprc
# Stolen from
# http://stackoverflow.com/questions/9000698/completion-when-program-has-sub-commands
# local curcontext="$curcontext" state line
# typeset -A opt_args
local
-a
commands
local
-a
warp_points
warp_points
=(
"
${
(f)mapfile[
$CONFIG
]
}
"
)
# LIST="${mapfile[$FNAME]}" # Not required unless stuff uses it
commands
=(
'add:Adds the current working directory to your warp points'
'add!:Overwrites existing warp point'
'rm:Removes the given warp point'
'ls:Outputs all stored warp points'
'show:Outputs all warp points that point to the current directory'
'help:Show this extremely helpful text'
'..:Go back to last directory'
)
_arguments
-C
\
'1: :->first_arg'
\
'2: :->second_arg'
&&
ret
=
0
case
$state
in
first_arg
)
_describe
-t
warp_points
"Warp points"
warp_points
&&
ret
=
0
_describe
-t
commands
"Commands"
commands
&&
ret
=
0
;;
second_arg
)
case
$words
[
2]
in
add
\!
|
rm
)
_describe
-t
points
"Warp points"
warp_points
&&
ret
=
0
;;
add
)
_message
'Write the name of your warp point'
&&
ret
=
0
;;
esac
;;
esac
return
$ret
}
_wd
"
$@
"
# Local Variables:
# mode: Shell-Script
# sh-indentation: 2
# indent-tabs-mode: nil
# sh-basic-offset: 2
# End:
# vim: ft=zsh sw=2 ts=2 et
plugins/wd/wd.plugin.zsh
View file @
7b7c5fd1
...
...
@@ -6,4 +6,6 @@
#
# @github.com/mfaerevaag/wd
alias
wd
=
'. $ZSH/plugins/wd/wd.sh'
wd
()
{
.
$ZSH
/plugins/wd/wd.sh
}
plugins/wd/wd.sh
View file @
7b7c5fd1
...
...
@@ -50,12 +50,12 @@ wd_warp()
wd_print_msg
$YELLOW
"Warping to current directory?"
else
((
n
=
$#1
- 1
))
wd_print_msg
$BLUE
"Warping..."
#
wd_print_msg $BLUE "Warping..."
cd
-
$n
>
/dev/null
fi
elif
[[
${
points
[
$1
]
}
!=
""
]]
then
wd_print_msg
$BLUE
"Warping..."
#
wd_print_msg $BLUE "Warping..."
cd
${
points
[
$1
]
}
else
wd_print_msg
$RED
"Unkown warp point '
$1
'"
...
...
@@ -64,16 +64,16 @@ wd_warp()
wd_add
()
{
if
[[
$
1
=
~
"^
\.
+$"
]]
if
[[
$
2
=
~
"^
\.
+$"
||
$2
=
~
"^
\s
*$"
]]
then
wd_print_msg
$RED
"Ille
a
gal warp point (see README)."
elif
[[
${
points
[
$
1
]
}
==
""
]]
||
$
2
wd_print_msg
$RED
"Illegal warp point (see README)."
elif
[[
${
points
[
$
2
]
}
==
""
]]
||
$
1
then
wd_remove
$
1
>
/dev/null
print
"
$
1
:
$PWD
"
>>
$CONFIG
wd_remove
$
2
>
/dev/null
print
"
$
2
:
$PWD
"
>>
$CONFIG
wd_print_msg
$GREEN
"Warp point added"
else
wd_print_msg
$YELLOW
"Warp point '
$
1
' alredy exists. Use 'add!' to overwrite."
wd_print_msg
$YELLOW
"Warp point '
$
2
' alre
a
dy exists. Use 'add!' to overwrite."
fi
}
...
...
@@ -83,7 +83,9 @@ wd_remove()
then
if
wd_tmp
=
`
sed
"/^
$1
:/d"
$CONFIG
`
then
echo
$wd_tmp
>
$CONFIG
# `>!` forces overwrite
# we need this if people use `setopt NO_CLOBBER`
echo
$wd_tmp
>!
$CONFIG
wd_print_msg
$GREEN
"Warp point removed"
else
wd_print_msg
$RED
"Warp point unsuccessfully removed. Sorry!"
...
...
@@ -131,9 +133,9 @@ wd_print_usage()
print
"
\n
Commands:"
print
"
\t
add
\t
Adds the current working directory to your warp points"
print
"
\t
add!
\t
Overwrites existing warp point"
print
"
\t
r
emove
Removes the given warp point"
print
"
\t
r
m
\t
Removes the given warp point"
print
"
\t
show
\t
Outputs warp points to current directory"
print
"
\t
l
ist
\t
Outputs all stored warp points"
print
"
\t
l
s
\t
Outputs all stored warp points"
print
"
\t
help
\t
Show this extremely helpful text"
}
...
...
@@ -141,7 +143,7 @@ wd_print_usage()
## run
# get opts
args
=
`
getopt
-o
a:r:lhs
-l
add:,r
emove:,list
,help,show
--
$*
`
args
=
`
getopt
-o
a:r:lhs
-l
add:,r
m:,ls
,help,show
--
$*
`
# check if no arguments were given
if
[[
$?
-ne
0
||
$#*
-eq
0
]]
...
...
@@ -161,49 +163,40 @@ else
for
i
do
case
"
$i
"
in
-a
|
--add
|
add
)
wd_add
$2
false
shift
shift
case
"
$i
"
in
-a
|
--add
|
add
)
wd_add
false
$2
break
;;
-a
!
|
--add
!
|
add!
)
wd_add
$2
true
shift
shift
wd_add
true
$2
break
;;
-r
|
--remove
|
rm
)
wd_remove
$2
shift
shift
-r
|
--remove
|
rm
)
wd_remove
$2
break
;;
-l
|
--list
|
ls
)
wd_list_all
shift
-l
|
--list
|
ls
)
wd_list_all
break
;;
-h
|
--help
|
help
)
wd_print_usage
shift
-h
|
--help
|
help
)
wd_print_usage
break
;;
-s
|
--show
|
show
)
wd_show
shift
-s
|
--show
|
show
)
wd_show
break
;;
*
)
wd_warp
$i
shift
break
;;
--
)
shift
;
break
;;
esac
--
)
break
;;
esac
done
fi
...
...
@@ -211,6 +204,6 @@ fi
## garbage collection
# if not, next time warp will pick up variables from this run
# remember, there's no sub shell
points
=
""
args
=
""
un
hash
-d
val &> /dev/null
# fixes issue #1
unset
points
unset
args
un
set
val &> /dev/null
# fixes issue #1
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment