* PATCH: completion for ruby env variables
@ 2005-07-02 12:10 Doug Kearns
2005-07-12 14:49 ` Doug Kearns
0 siblings, 1 reply; 2+ messages in thread
From: Doug Kearns @ 2005-07-02 12:10 UTC (permalink / raw)
To: zsh-workers
This adds completion for RUBYOPT, RUBYPATH, and RUBYLIB
Regards,
Doug
Index: Completion/Unix/Command/_ruby
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_ruby,v
retrieving revision 1.4
diff -u -r1.4 _ruby
--- Completion/Unix/Command/_ruby 21 Jan 2004 13:53:29 -0000 1.4
+++ Completion/Unix/Command/_ruby 2 Jul 2005 12:08:06 -0000
@@ -1,13 +1,30 @@
-#compdef ruby
+#compdef ruby -P -value-,RUBY(LIB|OPT|PATH),-default-
# ruby 1.8.0 (2003-08-14) [i686-linux]
-local expl curcontext="$curcontext" line state ret=1
+local curcontext="$curcontext" state line expl ret=1
typeset -A opt_args
-local dirs
+
+local -a args
+args=(
+ '(-)1:script file:->script'
+ '*::script argument: _normal'
+)
+
+case "$service" in
+ *RUBY(LIB|PATH)*)
+ _dir_list && return 0
+ ;;
+ *RUBYOPT*)
+ compset -q
+ words=( fake "$words[@]" )
+ (( CURRENT++ ))
+ args=()
+ ;;
+esac
_arguments -C -s -S \
- '-0-[specify record separator]:input record separator in octal (default\: \0):' \
+ '-0-[specify record separator]:input record separator in octal (default \0):' \
'-a[autosplit mode with -n or -p (splits $_ into $F)]' \
'-c[check syntax only]' \
'-C+[cd to directory, before executing your script]:directory:_files -/' \
@@ -23,20 +40,20 @@
'*-r+[require the library, before executing your script]:library name:->library' \
'-s[enable some switch parsing for switches after script name]' \
'-S[look for the script using PATH environment variable]' \
- '-T-[turn on tainting checks]:taint level (default\: 0):((0\:strings\ from\ streams/environment/ARGV\ are\ tainted 1\:no\ dangerous\ operation\ by\ tainted\ value 2\:process/file\ operations\ prohibited 3\:all\ generated\ objects\ are\ tainted 4\:no\ global\ \(non-tainted\)\ variable\ modification/no\ direct\ output))' \
+ '-T-[turn on tainting checks]:taint level (default 0):((0\:strings\ from\ streams/environment/ARGV\ are\ tainted 1\:no\ dangerous\ operation\ by\ tainted\ value 2\:process/file\ operations\ prohibited 3\:all\ generated\ objects\ are\ tainted 4\:no\ global\ \(non-tainted\)\ variable\ modification/no\ direct\ output))' \
'(-v --verbose)'{-v,--verbose}'[print version number, then turn on verbose mode]' \
'-w[turn warnings on for your script]' \
- '-W-[set warning level]:warning level (default\: 2):((0\:silent 1\:medium 2\:verbose))' \
+ '-W-[set warning level]:warning level (default 2):((0\:silent 1\:medium 2\:verbose))' \
'(-y --yydebug)'{-y,--yydebug}'[enable yacc debugging in the parser]' \
'-x-[strip off text before #!ruby line and perhaps cd to directory]:directory:_files -/' \
'(1 * -)--copyright[print the copyright]' \
'(1 * -)'{-h,--help}'[print help message]' \
'(1 * -)--version[print the version]' \
- '(-)1:script file:_files -g "*.rb(-.)"' \
- '*:script argument:_files' && ret=0
+ "$args[@]" && ret=0
case $state in
library)
+ local -a dirs
dirs=($(_call_program directories $words[1] -e 'puts\ \$:'))
_wanted directories expl library _path_files -W dirs && ret=0
;;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: PATCH: completion for ruby env variables
2005-07-02 12:10 PATCH: completion for ruby env variables Doug Kearns
@ 2005-07-12 14:49 ` Doug Kearns
0 siblings, 0 replies; 2+ messages in thread
From: Doug Kearns @ 2005-07-12 14:49 UTC (permalink / raw)
To: zsh-workers
On Sat, Jul 02, 2005 at 10:10:46PM +1000, Doug Kearns wrote:
> This adds completion for RUBYOPT, RUBYPATH, and RUBYLIB
Apparently only -[IdvwrK] are allowed to be specified by RUBYOPT.
Regards,
Doug
Index: Completion/Unix/Command/_ruby
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_ruby,v
retrieving revision 1.6
diff -u -r1.6 _ruby
--- Completion/Unix/Command/_ruby 11 Jul 2005 10:21:57 -0000 1.6
+++ Completion/Unix/Command/_ruby 12 Jul 2005 14:42:56 -0000
@@ -1,16 +1,45 @@
#compdef ruby -P -value-,RUBY(LIB|OPT|PATH),-default-
-# ruby 1.8.0 (2003-08-14) [i686-linux]
+# ruby 1.8.2 (2004-12-25) [i686-linux]
local curcontext="$curcontext" state line expl ret=1
typeset -A opt_args
-local -a args
+local -a args opts
+
args=(
'(-)1:script file:_files -g "*.rb(-.)"'
'*::script argument: _normal'
)
+opts=(
+ '-0-[specify record separator]:input record separator in octal (default \0):'
+ '-a[autosplit mode with -n or -p (splits $_ into $F)]'
+ '-c[check syntax only]'
+ '-C+[cd to directory, before executing your script]:directory:_files -/'
+ '(-d --debug)'{-d,--debug}'[set debugging flags (set $DEBUG to true)]'
+ "(1)*-e+[one line of script (several -e's allowed, omit program file)]:one line of script:"
+ '-F-[split() pattern for autosplit (-a)]:input field separator:'
+ '-i-[edit ARGV files in place (make backup if extension supplied)]:suffix for in-place-edit mode:(.bak)'
+ '*-I+[specify $LOAD_PATH directory (may be used more than once)]:library directory:_files -/'
+ '-K-[specifies KANJI (Japanese) code-set]:KANJI encoding:((e\:EUC-JP s\:Shift_JIS u\:UTF-8 N\:None))'
+ "-l[assume 'while gets(); ... end' loop around your script]"
+ "(-p)-n[assume 'while gets(); ... end' loop around your script]"
+ '(-n)-p[assume loop like -n but print line also like sed]'
+ '*-r+[require the library, before executing your script]:library name:->library'
+ '-s[enable some switch parsing for switches after script name]'
+ '-S[look for the script using PATH environment variable]'
+ '-T-[turn on tainting checks]:taint level (default 0):((0\:strings\ from\ streams/environment/ARGV\ are\ tainted 1\:no\ dangerous\ operation\ by\ tainted\ value 2\:process/file\ operations\ prohibited 3\:all\ generated\ objects\ are\ tainted 4\:no\ global\ \(non-tainted\)\ variable\ modification/no\ direct\ output))'
+ '(-v --verbose)'{-v,--verbose}'[print version number, then turn on verbose mode]'
+ '-w[turn warnings on for your script]'
+ '-W-[set warning level]:warning level (default 2):((0\:silent 1\:medium 2\:verbose))'
+ '(-y --yydebug)'{-y,--yydebug}'[enable yacc debugging in the parser]'
+ '-x-[strip off text before #!ruby line and perhaps cd to directory]:directory:_files -/'
+ '(1 * -)--copyright[print the copyright]'
+ '(1 * -)'{-h,--help}'[print help message]'
+ '(1 * -)--version[print the version]'
+)
+
case "$service" in
*RUBY(LIB|PATH)*)
_dir_list && return 0
@@ -19,43 +48,24 @@
compset -q
words=( fake "$words[@]" )
(( CURRENT++ ))
- args=()
+ _arguments -C -s : "${(@M)opts:#*-[IdvwrK](|[-+])\[*}" && ret=0
+ ;;
+ ruby)
+ _arguments -C -s -S : "$opts[@]" "$args[@]" && ret=0
;;
esac
-_arguments -C -s -S \
- '-0-[specify record separator]:input record separator in octal (default \0):' \
- '-a[autosplit mode with -n or -p (splits $_ into $F)]' \
- '-c[check syntax only]' \
- '-C+[cd to directory, before executing your script]:directory:_files -/' \
- '(-d --debug)'{-d,--debug}'[set debugging flags (set $DEBUG to true)]' \
- "(1)*-e+[one line of script (several -e's allowed, omit program file)]:one line of script:" \
- '-F-[split() pattern for autosplit (-a)]:input field separator:' \
- '-i-[edit ARGV files in place (make backup if extension supplied)]:suffix for in-place-edit mode:(.bak)' \
- '*-I+[specify $LOAD_PATH directory (may be used more than once)]:library directory:_files -/' \
- '-K-[specifies KANJI (Japanese) code-set]:KANJI encoding:((e\:EUC-JP s\:Shift_JIS u\:UTF-8 N\:None))' \
- "-l[assume 'while gets(); ... end' loop around your script]" \
- "(-p)-n[assume 'while gets(); ... end' loop around your script]" \
- '(-n)-p[assume loop like -n but print line also like sed]' \
- '*-r+[require the library, before executing your script]:library name:->library' \
- '-s[enable some switch parsing for switches after script name]' \
- '-S[look for the script using PATH environment variable]' \
- '-T-[turn on tainting checks]:taint level (default 0):((0\:strings\ from\ streams/environment/ARGV\ are\ tainted 1\:no\ dangerous\ operation\ by\ tainted\ value 2\:process/file\ operations\ prohibited 3\:all\ generated\ objects\ are\ tainted 4\:no\ global\ \(non-tainted\)\ variable\ modification/no\ direct\ output))' \
- '(-v --verbose)'{-v,--verbose}'[print version number, then turn on verbose mode]' \
- '-w[turn warnings on for your script]' \
- '-W-[set warning level]:warning level (default 2):((0\:silent 1\:medium 2\:verbose))' \
- '(-y --yydebug)'{-y,--yydebug}'[enable yacc debugging in the parser]' \
- '-x-[strip off text before #!ruby line and perhaps cd to directory]:directory:_files -/' \
- '(1 * -)--copyright[print the copyright]' \
- '(1 * -)'{-h,--help}'[print help message]' \
- '(1 * -)--version[print the version]' \
- "$args[@]" && ret=0
-
-case $state in
+case "$state" in
library)
local -a dirs
- dirs=($(_call_program directories $words[1] -e 'puts\ \$:'))
- _wanted directories expl library _path_files -W dirs && ret=0
+ local cmd
+ if [[ "$service" = *RUBYOPT* ]]; then
+ cmd=ruby
+ else
+ cmd=$words[1]
+ fi
+ dirs=( $(_call_program directories $cmd -e 'puts\ \$:' 2>/dev/null) ${(s.:.)opt_args[-I]} )
+ _wanted libraries expl library _path_files -W dirs && ret=0
;;
esac
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-07-12 14:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-02 12:10 PATCH: completion for ruby env variables Doug Kearns
2005-07-12 14:49 ` Doug Kearns
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).