Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
d41ac7fe
Commit
d41ac7fe
authored
Mar 04, 2014
by
Markus Faerevaag
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated wd plugin to v0.3.0
parent
6b3c9537
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
82 additions
and
67 deletions
+82
-67
_wd.sh
plugins/wd/_wd.sh
+58
-38
wd.plugin.zsh
plugins/wd/wd.plugin.zsh
+3
-1
wd.sh
plugins/wd/wd.sh
+21
-28
No files found.
plugins/wd/_wd.sh
View file @
d41ac7fe
#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'
#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
command
)
compadd
"
$@
"
add
rm ls
show
_describe
-t
warp-points
'Warp points:'
point
s
&&
ret
=
0
first_arg
)
_describe
-t
warp_points
"Warp points"
warp_points
&&
ret
=
0
_describe
-t
commands
"Commands"
command
s
&&
ret
=
0
;;
argument
)
second_arg
)
case
$words
[
2]
in
rm
|
add!
)
_describe
-t
warp-points
'warp points'
points
&&
ret
=
0
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 @
d41ac7fe
...
...
@@ -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 @
d41ac7fe
...
...
@@ -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
' alre
dy exists. Use 'add!' to overwrite."
wd_print_msg
$YELLOW
"Warp point '
$
2
' alrea
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
]]
...
...
@@ -164,45 +166,36 @@ else
case
"
$i
"
in
-a
|
--add
|
add
)
wd_add
$2
false
shift
shift
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
break
;;
-l
|
--list
|
ls
)
wd_list_all
shift
break
;;
-h
|
--help
|
help
)
wd_print_usage
shift
break
;;
-s
|
--show
|
show
)
wd_show
shift
break
;;
*
)
wd_warp
$i
shift
break
;;
--
)
shift
;
break
;;
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