_eselect news function rewriten. NB: todo mark inside. Fixes #186
Signed-off-by: Vadim A. Misbakh-Soloviov <mva@mva.name>
This commit is contained in:
parent
918b318cc5
commit
de603da79a
50
src/_eselect
50
src/_eselect
|
@ -46,7 +46,6 @@
|
||||||
#<app-admin/eselect-1.0.11>
|
#<app-admin/eselect-1.0.11>
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
_eselect_env() {
|
_eselect_env() {
|
||||||
if (( $words[(I)(update)] )); then
|
if (( $words[(I)(update)] )); then
|
||||||
_values 'update options' \
|
_values 'update options' \
|
||||||
|
@ -75,7 +74,7 @@ _eselect_kernel () {
|
||||||
kernellist=(${${${(M)${(f)"$(eselect --no-color kernel list)"}## *}// \**/}//( \[*\] | \[*\] )/})
|
kernellist=(${${${(M)${(f)"$(eselect --no-color kernel list)"}## *}// \**/}//( \[*\] | \[*\] )/})
|
||||||
_values 'available kernel version' $kernellist[@] && return 0
|
_values 'available kernel version' $kernellist[@] && return 0
|
||||||
fi
|
fi
|
||||||
_values 'kenrel options' $stdopts[@] \
|
_values 'kernel options' $stdopts[@] \
|
||||||
'list[List available kernel symlink targets]' \
|
'list[List available kernel symlink targets]' \
|
||||||
'show[Show the current kernel symlink]' \
|
'show[Show the current kernel symlink]' \
|
||||||
'set[Set a new kernel symlink target]' && return 0
|
'set[Set a new kernel symlink target]' && return 0
|
||||||
|
@ -147,6 +146,45 @@ _eselect_vi () {
|
||||||
'show[Show the current vi implementation]' \
|
'show[Show the current vi implementation]' \
|
||||||
'update[Automatically update the vi provider]' && return 0
|
'update[Automatically update the vi provider]' && return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_eselect_news() {
|
||||||
|
|
||||||
|
##
|
||||||
|
## TODO: Normal numeric sorting.
|
||||||
|
## I've spent all the day (12.11.2013) on trying to rewrite this
|
||||||
|
## function to normally sort (to DO NOT sort, actually) news,
|
||||||
|
## but it start to grow to very big size and going to be too
|
||||||
|
## complicated.
|
||||||
|
## So, I either need to help to do it normally, or to completely
|
||||||
|
## rewrite this compdef.
|
||||||
|
##
|
||||||
|
|
||||||
|
local -a newslist;
|
||||||
|
if ((CURRENT == 3)); then
|
||||||
|
_values 'news options' $stdopts[@] \
|
||||||
|
'list[List news items]' \
|
||||||
|
'count[Display number of news items]' \
|
||||||
|
'purge[Purge read news]' \
|
||||||
|
'read[Read news items]' \
|
||||||
|
'unread[Mark read news items as unread again]' && return 0
|
||||||
|
elif ((CURRENT == 4)); then
|
||||||
|
if (( $words[(I)(count)] )); then
|
||||||
|
_values -w 'news' 'new[Count only new news items]' 'all[Count all news items]' && return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
newslist=(${${${${${${${(M)${(f)"$(eselect --no-color news list)"}## *}// \**/}/ \[/}/\] ##/\[}/%/]}/ \[/ (}/\] /) })
|
||||||
|
|
||||||
|
if (( $words[(I)(read)] )); then
|
||||||
|
newslist+=( "new[Read unread news items (default)]" "all[Read all news items]" "--mbox[Output in mbox format]" "--quiet[Suppress output, only change status]" "--raw[Output in raw format]" )
|
||||||
|
fi;
|
||||||
|
|
||||||
|
if (( $words[(I)(unread)] )); then
|
||||||
|
newslist+=( "all[Unread all news items]" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
_values -w 'news' $newslist[@] && return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
_eselect() {
|
_eselect() {
|
||||||
local globopts sedcmd modnames modopts
|
local globopts sedcmd modnames modopts
|
||||||
local stdopts
|
local stdopts
|
||||||
|
@ -169,10 +207,10 @@ _eselect () {
|
||||||
_arguments -s \
|
_arguments -s \
|
||||||
"*:portage:_values 'eselect modules' \$modnames[@]" && return 0
|
"*:portage:_values 'eselect modules' \$modnames[@]" && return 0
|
||||||
elif (( $modnames[(I)$words[2]] )); then
|
elif (( $modnames[(I)$words[2]] )); then
|
||||||
if [[ "$words[2]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi) ]]; then
|
if [[ "$words[2]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi|news) ]]; then
|
||||||
_eselect_$words[2] "$@"
|
_eselect_$words[2] "$@"
|
||||||
else
|
else
|
||||||
modopts=(${${${(M)${(f)"$(eselect --no-color $words[2] usage)"}## *}// */}// /})
|
modopts=(${${${${(M)${(f)"$(eselect --no-color $words[2] usage)"}## *}// */}// /}// */})
|
||||||
_arguments -s \
|
_arguments -s \
|
||||||
"*:portage:_values 'eselect $words[2] options' \$modopts[@]" && return 0
|
"*:portage:_values 'eselect $words[2] options' \$modopts[@]" && return 0
|
||||||
fi
|
fi
|
||||||
|
@ -180,7 +218,7 @@ _eselect () {
|
||||||
elif ((CURRENT >= 4)); then
|
elif ((CURRENT >= 4)); then
|
||||||
if (( $words[(I)(--no-color|--no-colour)] )); then
|
if (( $words[(I)(--no-color|--no-colour)] )); then
|
||||||
if (( $modnames[(I)$words[3]] )); then
|
if (( $modnames[(I)$words[3]] )); then
|
||||||
if [[ "$words[3]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi) ]]; then
|
if [[ "$words[3]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi|news) ]]; then
|
||||||
_eselect_$words[3] "$@"
|
_eselect_$words[3] "$@"
|
||||||
else
|
else
|
||||||
modopts=(${${${${(M)${(f)"$(eselect --no-color $words[3] usage)"}## *}// */}// /}// *})
|
modopts=(${${${${(M)${(f)"$(eselect --no-color $words[3] usage)"}## *}// */}// /}// *})
|
||||||
|
@ -190,7 +228,7 @@ _eselect () {
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if (( $modnames[(I)$words[2]] )); then
|
if (( $modnames[(I)$words[2]] )); then
|
||||||
_eselect_$words[2] "$@"
|
(whence _eselect_$words[2] &>/dev/null) && _eselect_$words[2] "$@"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue