_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>
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_eselect_env() {
 | 
			
		||||
    if (( $words[(I)(update)] )); then
 | 
			
		||||
        _values 'update options' \
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +74,7 @@ _eselect_kernel () {
 | 
			
		|||
            kernellist=(${${${(M)${(f)"$(eselect --no-color kernel list)"}## *}// \**/}//(  \[*\]   |  \[*\]  )/})
 | 
			
		||||
            _values 'available kernel version' $kernellist[@] && return 0
 | 
			
		||||
        fi
 | 
			
		||||
        _values 'kenrel options' $stdopts[@] \
 | 
			
		||||
        _values 'kernel options' $stdopts[@] \
 | 
			
		||||
            'list[List available kernel symlink targets]' \
 | 
			
		||||
            'show[Show the current kernel symlink]' \
 | 
			
		||||
            'set[Set a new kernel symlink target]' && return 0
 | 
			
		||||
| 
						 | 
				
			
			@ -147,6 +146,45 @@ _eselect_vi () {
 | 
			
		|||
            'show[Show the current vi implementation]' \
 | 
			
		||||
            '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() {
 | 
			
		||||
    local globopts sedcmd modnames modopts
 | 
			
		||||
    local stdopts
 | 
			
		||||
| 
						 | 
				
			
			@ -169,10 +207,10 @@ _eselect () {
 | 
			
		|||
            _arguments -s \
 | 
			
		||||
                "*:portage:_values 'eselect modules' \$modnames[@]" && return 0
 | 
			
		||||
        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] "$@"
 | 
			
		||||
            else
 | 
			
		||||
                modopts=(${${${(M)${(f)"$(eselect --no-color $words[2] usage)"}## *}//   */}//  /})
 | 
			
		||||
                modopts=(${${${${(M)${(f)"$(eselect --no-color $words[2] usage)"}## *}//   */}//  /}// */})
 | 
			
		||||
                _arguments -s \
 | 
			
		||||
                    "*:portage:_values 'eselect $words[2] options' \$modopts[@]" && return 0
 | 
			
		||||
            fi
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +218,7 @@ _eselect () {
 | 
			
		|||
    elif ((CURRENT >= 4)); then
 | 
			
		||||
        if (( $words[(I)(--no-color|--no-colour)] )); 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] "$@"
 | 
			
		||||
                else
 | 
			
		||||
                    modopts=(${${${${(M)${(f)"$(eselect --no-color $words[3] usage)"}## *}//   */}//  /}// *})
 | 
			
		||||
| 
						 | 
				
			
			@ -190,7 +228,7 @@ _eselect () {
 | 
			
		|||
            fi
 | 
			
		||||
        else
 | 
			
		||||
            if (( $modnames[(I)$words[2]] )); then
 | 
			
		||||
                _eselect_$words[2] "$@"
 | 
			
		||||
                (whence _eselect_$words[2] &>/dev/null) && _eselect_$words[2] "$@"
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue