Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[patch] Completion for _deborphan and _xrandr



Hi There,

I wrote a rudimentary completion script for deborphan (which probably
belongs with the Debian completion commands).

I also fixed the xrandr completion to separate outputs into two groups
(connected and disconnected). Patch, and whole file attached. If there
is a preferred way to submit this (e.g. by forking a git repository) let
me know and I would be happy to do so.

Best,

Gautam

-- 
Microsoft broke Volkswagen's world record: Volkswagen only made 22
million bugs!
diff --git a/Completion/X/Command/_xrandr b/Completion/X/Command/_xrandr
index b0851569e..26d8cd082 100644
--- a/Completion/X/Command/_xrandr
+++ b/Completion/X/Command/_xrandr
@@ -58,8 +58,11 @@ case $state in
     esac
   ;;
   outputs)
-    _wanted outputs expl output compadd \
-        ${(uo)${(M)${(f)"$(_call_program outputs xrandr)"}:#* connected*}%% *} && return 0
+    local -a xrandr_output=(${(f)"$(_call_program outputs xrandr)"})
+    _alternative \
+	'connected:connected outputs:('${(j: :)${(uo)${(M)xrandr_output:#* connected*}%% *}}')' \
+	'disconnected:disconnected outputs:('${(j: :)${(uo)${(M)xrandr_output:#* disconnected*}%% *}}')' \
+	&& return 0
   ;;
   modes)
     _wanted modes expl mode compadd \
#compdef deborphan

local keep=/var/lib/deborphan/keep
_arguments : \
  {--help,-h}'[help]' \
  {--status-file,-f}'[statusfile]:file:_files' \
  {--version,-v}'[version]' \
  {--show-deps,-d}'[show dependencies for packages that have them]' \
  {--show-priority,-P}'[show priority of packages found]' \
  {--show-section,-s}'[show the sections the packages are in]' \
  --no-show-section'[do not show sections]' \
  {--show-size,-z}'[show installed size of packages found]' \
  {--all-packages,-a}'[compare all packages, not just libs]' \
  {--exclude,-e}'[work as if packages in LIST were not installed]:LIST:' \
  {--force-hold,-H}'[Ignore hold flags.]' \
  {--nice-mode,-n}'[Disable checks for "recommends" and "suggests".]' \
  --ignore-recommends'[Disable checks for recommends.]' \
  --ignore-suggests'[Disable checks for "suggests".]' \
  {--priority,-p}'[PRIOR  Select only packages with priority >= PRIOR.]:PRIOR:' \
  --find-config'[Find "orphaned" configuration files.]' \
  --libdevel'[Search in libdevel in addition to libs and oldlibs.]' \
  {--add-keep,-A}'[PKGS.. Never report PKGS.]:*:package:_deb_packages installed' \
  {--keep-file,-k}'[Use FILE to get/store info about kept packages.]:file:_files' \
  {--list-keep,-L}'[List the packages that are never reported.]' \
  {--del-keep,-R}"[PKGS.. Remove PKGS from the 'keep' file.]:*:package:_values package $(< $keep)" \
  {--zero-keep,-Z}'[Remove all packages from the "keep" file.]' \
  --guess-common'[Try to report common packages.]' \
  --guess-data'[Try to report data packages.]' \
  --guess-debug'[Try to report debugging libraries.]' \
  --guess-dev'[Try to report development packages.]' \
  --guess-doc'[Try to report documentation packages.]' \
  --guess-dummy'[Try to report dummy packages.]' \
  --guess-kernel'[Try to report kernel modules.]' \
  --guess-interpreters'[Try to report interpreter libraries.]' \
  --guess-mono'[Try to report mono libraries.]' \
  --guess-perl'[Try to report perl libraries.]' \
  --guess-pike'[Try to report pike libraries.]' \
  --guess-python'[Try to report python libraries.]' \
  --guess-ruby'[Try to report ruby libraries.]' \
  --guess-section'[Try to report libraries in wrong sections.]' \
  --guess-all'[Try all of the above.]' \
  --guess-only'[Use --guess options only.]'
#compdef xrandr

local curcontext="$curcontext" state line expl
typeset -A opt_args

_arguments -C \
  '(-d -display)'{-d,-display}':X display:_x_display' \
  '-help[display help]' \
  '(-o --orientation)'{-o,--orientation}':rotation:(normal inverted left right 0 1 2 3)' \
  '(-q --query)'{-q,--query}'[display current state]' \
  '(-s --size)'{-s,--size}':size:' \
  '(-r --rate --refresh)'{*-r,*--rate,*--refresh}':target refresh rate:' \
  '(-v --version)'{-v,--version}'[display version]' \
  '-x[reflect across X axis]' \
  '-y[reflect across Y axis]' \
  '--screen:X screen number' \
  '--verbose[be more verbose]' \
  '--dryrun' \
  '--nograb' \
  '(--prop --properties)'{--prop,--properties}'[display the contents of properties for each output]' \
  '--fb:size:' \
  '--fbmm:size:' \
  '--dpi:dpi:' \
  "*--output:output to reconfigure:->outputs" \
  '*--auto' \
  "*--mode:mode:->modes" \
  '*--preferred' \
  '*--pos:position:' \
  '*--reflect:axes:(normal x y xy)' \
  '*--rotate:rotation:(normal inverted left right)' \
  "*--left-of:relative position to:->outputs" \
  "*--right-of:relative position to:->outputs" \
  "*--above:relative position to:->outputs" \
  "*--below:relative position to:->outputs" \
  "*--same-as:relative position to:->outputs" \
  '*--set:property:(Backlight scaling\ mode):value:->value' \
  '*--scale:output scaling:' \
  '*--transform:transformation matrix:' \
  '*--off[disable the output]' \
  '*--crtc:crtc to use:' \
  '*--panning:panning:' \
  '*--gamma:r\:g\:b:' \
  '*--primary' \
  '--noprimary' \
  '*--newmode:name: :clock MHz: :hdisp: :hsync-start: :hsync-end: :htotal: :vdisp: :vsync-start: :vsync-end: :vtotal:' \
  '*--rmmode:Mode name:' \
  "*--addmode:output:->outputs:name" \
  "*--delmode:output:->outputs:name" \
  && return 0

case $state in
  value)
    case $words[CURRENT-1] in
      (scaling*" mode")
	    _description value expl "output property 'scaling mode'"
	    compadd "$@" "$expl[@]" None Full Center Full\ aspect && return 0
	    ;;
    esac
  ;;
  outputs)
    local -a xrandr_output=(${(f)"$(_call_program outputs xrandr)"})
    _alternative \
	'connected:connected outputs:('${(j: :)${(uo)${(M)xrandr_output:#* connected*}%% *}}')' \
	'disconnected:disconnected outputs:('${(j: :)${(uo)${(M)xrandr_output:#* disconnected*}%% *}}')' \
	&& return 0
  ;;
  modes)
    _wanted modes expl mode compadd \
        ${(Mun)$(_call_program modes xrandr):#[0-9]##x[0-9]##} && return 0
  ;;
esac


Messages sorted by: Reverse Date, Date, Thread, Author