Hi,

This diff fixes the completion for tmux and add completion 
for pfctl.

Tested on @macppc.

Comments ?

Regards,

-- 
Pierre-Emmanuel André <pea at raveland.org>
GPG key: 0x7AE329DC
Index: Makefile
===================================================================
RCS file: /cvs/ports/shells/zsh/Makefile,v
retrieving revision 1.51
diff -u -p -r1.51 Makefile
--- Makefile    13 Nov 2009 12:26:40 -0000      1.51
+++ Makefile    10 Dec 2009 16:53:43 -0000
@@ -4,7 +4,7 @@ COMMENT=        Z shell, Bourne shell-compatibl
 
 V=             4.3.10
 DISTNAME=      zsh-$V
-PKGNAME=       ${DISTNAME}p0
+PKGNAME=       ${DISTNAME}p1
 CATEGORIES=    shells
 
 MAINTAINER=    Pierre-Emmanuel Andre <[email protected]>
Index: patches/patch-Completion_BSD_Command__pfctl
===================================================================
RCS file: patches/patch-Completion_BSD_Command__pfctl
diff -N patches/patch-Completion_BSD_Command__pfctl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-Completion_BSD_Command__pfctl 10 Dec 2009 16:53:43 -0000
@@ -0,0 +1,100 @@
+$OpenBSD$
+--- Completion/BSD/Command/_pfctl.orig Thu Dec 10 17:36:31 2009
++++ Completion/BSD/Command/_pfctl      Thu Dec 10 17:36:44 2009
+@@ -0,0 +1,96 @@
++#compdef pfctl
++
++local pfctl_flush_modifiers pfctl_optimizer_level pfctl_show_modifiers 
pfctl_tables_command pfctl_debug_level
++
++pfctl_flush_modifiers=(
++    'all:Flush all'
++    'info:Flush the filter information'
++    'nat:Flush the NAT rules'
++    'osfp:Flush the passive operating system fingerprints'
++    'queue:Flush the queue rules'
++    'rules:Flush the filter rules'
++    'state:Flush the stable table'
++    'Sources:Flush the source tracking table'
++    'Tables:Flush the tables'
++)
++
++pfctl_show_modifiers=(
++    'nat:Show the currently loaded NAT rules'
++    'queue:Show the currently loaded queue rules'
++    'rules:Show the currently loaded filter rules'
++    'Anchors:Show the currently loaded anchors directly attached to the main 
ruleset'
++    'state:Show the contents of the state table'
++    'Sources:Show the contents of the source tracking table'
++    'info:Show filter information'
++    'labels:Show per-rule statistics of filter rules with labels'
++    'timeouts:Show the current global timeouts'
++    'memory:Show the current pool memory hard limits'
++    'Tables:Show the list of tables'
++    'osfp:Show the list of operating system fingerprints'
++    'Interfaces:Show the list of interfaces and interface drivers available 
to PF'
++    'all:Show all except for the lists of interfaces and operating system 
fingerprints'
++)
++
++pfctl_optimizer_level=(
++    'none:Disable the ruleset optimizer'
++    'basic:Enable basic ruleset optimizations'
++    'profile:Enable basic ruleset optimizations with profiling'
++)
++pfctl_tables_command=(
++    'kill:Kill a table'
++    'flush:Flush all addresses of a table'
++    'add:Add one or more addresses in a table'
++    'delete:Delete one or more addresses from a table'
++    'expire:Delete addresses which had their statistics cleared more than 
number seconds ago'
++    'replace:Replace the addresses of the table'
++    'show:Show the content (addresses) of a table'
++    'test:Test if the given addresses match a table'
++    'zero:Clear all the statistics of a table'
++    'load:Load only the table definitions from pf.conf(5)'
++)
++pfctl_debug_level=(
++    "none:Don\'t generate debug messages" 
++    'urgent:Generate debug messages only for serious errors' 
++    'misc:Generate debug messages for various errors' 
++    'loud:Generate debug messages for common conditions'
++)
++_iface() {
++    local pfctl_iface
++    pfctl_iface=($(pfctl -s Interfaces))
++    compadd $pfctl_iface
++}
++_tables() {
++    local pfctl_tables
++    pfctl_tables=($(pfctl -s Tables))
++     compadd $pfctl_tables
++}
++# TODO:
++# Missing -a
++#
++_arguments -s \
++    '-F[Flush the filter parameters specified by 
modifier]:modifier:(($pfctl_flush_modifiers))' \
++    '-A[Load only the queue rules present in the rule file]' \
++    '-D[Define macro to be set to value]:macro:' \
++    '-d[Disable the packet filter]' \
++    '-e[Enable the packet filter]' \
++    '-f[Load the rules contained in a file]:configuration file:_files' \
++    '-g[Include output helpful for debugging]' \
++    '-h[Help]' \
++    '-i[Restrict the operation to the given interface]:interface:_iface' \
++    '-K[Kill all of the source tracking entries originating from the 
specified host or network]:host or network:_hosts' \
++    '-k[Kill all of the state entries originating from the specified host or 
network]:host or network:_hosts' \
++    '-m[Merge in explicitly given options]' \
++    '-N[Load only the NAT rules present in the rule file]' \
++    '-n[Do not actually load rules, just parse them]' \
++    '-O[Load only the options present in the rule file]' \
++    '-o[Control the ruleset optimizer]:level:(($pfctl_optimizer_level))' \
++    '-p[Use the device file device instead of the default 
/dev/pf]:device:_files' \
++    '-q[Only print errors and warnings]' \
++    '-R[Load only the filter rules present in the rule file]' \
++    '-r[Perform reverse DNS lookups on states when displaying them]' \
++    '-s[Show the filter parameters specified by 
modifier]:modifier:(($pfctl_show_modifiers ))' \
++    '-T[Specify the command to apply to the 
table]:command:(($pfctl_tables_command))' \
++    '-t[Specify the name of the table]:table:_tables' \
++    '-v[Produce more verbose output]' \
++    '-x[Set the debug level]:debug level:(($pfctl_debug_level))' \
++    '-z[Clear per-rule statistics]'
Index: patches/patch-Completion_Unix_Command__tmux
===================================================================
RCS file: /cvs/ports/shells/zsh/patches/patch-Completion_Unix_Command__tmux,v
retrieving revision 1.1
diff -u -p -r1.1 patch-Completion_Unix_Command__tmux
--- patches/patch-Completion_Unix_Command__tmux 13 Nov 2009 12:26:40 -0000      
1.1
+++ patches/patch-Completion_Unix_Command__tmux 10 Dec 2009 16:53:43 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-Completion_Unix_Command__tmux,v 1.1 2009/11/13 12:26:40 pea 
Exp $
---- Completion/Unix/Command/_tmux.orig Fri Nov 13 10:56:08 2009
-+++ Completion/Unix/Command/_tmux      Fri Nov 13 10:57:05 2009
-@@ -0,0 +1,1461 @@
+--- Completion/Unix/Command/_tmux.orig Thu Dec 10 17:25:18 2009
++++ Completion/Unix/Command/_tmux      Thu Dec 10 17:27:19 2009
+@@ -0,0 +1,1491 @@
 +#compdef tmux
 +
 +# tmux <http://tmux.sf.net> completion for zsh <http://zsh.sf.net>.
@@ -61,6 +61,7 @@ $OpenBSD: patch-Completion_Unix_Command_
 +    new         new-session
 +    refresh     refresh-client
 +    rename      rename-session
++    showmsgs    show-messages
 +    source      source-file
 +    start       start-server
 +    suspendc    suspend-client
@@ -68,6 +69,7 @@ $OpenBSD: patch-Completion_Unix_Command_
 +
 +    # windows and panes
 +    breakp      break-pane
++    capturep    capture-pane
 +    displayp    display-panes
 +    downp       down-pane
 +    findw       find-window
@@ -109,7 +111,8 @@ $OpenBSD: patch-Completion_Unix_Command_
 +    showw       show-window-options
 +
 +    # environment
-+    #no aliases so far in this category
++    setenv      set-environment
++    showenv     show-environment
 +
 +    # status line
 +    confirm     confirm-before
@@ -193,6 +196,16 @@ $OpenBSD: patch-Completion_Unix_Command_
 +    _arguments ${args}
 +}
 +
++function _tmux-capture-pane() {
++    [[ -n ${tmux_describe} ]] && print "Capture the contents of a pane to a 
buffer" && return
++    local -a args
++    args=(
++        '-b[Choose target buffer]:target buffer:__tmux-buffers'
++        '-t[Choose source pane]:source pane:__tmux-panes'
++    )
++    _arguments ${args}
++}
++
 +function _tmux-choose-client() {
 +    [[ -n ${tmux_describe} ]] && print "Put a window into client choice mode" 
&& return
 +    __tmux-choose-stuff
@@ -338,6 +351,7 @@ $OpenBSD: patch-Completion_Unix_Command_
 +    [[ -n ${tmux_describe} ]] && print "Display a message in the status line" 
&& return
 +    local -a args
 +    args=(
++        '-p[Print message to stdout]'
 +        '-t[Choose a target client]:clients:__tmux-clients'
 +        '*:: :->msg'
 +    )
@@ -838,27 +852,19 @@ $OpenBSD: patch-Completion_Unix_Command_
 +
 +function _tmux-set-option() {
 +    [[ -n ${tmux_describe} ]] && print "Set a session option" && return
++    local mode
 +    local -a args
 +    args=(
 +        '-a[Append to string options]'
 +        '-g[Set a global session option]'
 +        '-u[Unset a non-global option]'
++        '-w[Change window (not session) options]'
 +        '-t[Choose a target session]:target session:__tmux-sessions'
 +        '*:: :->name_or_value'
 +    )
++    __tmux-got-option-already -w && mode=window || mode=session
 +    _arguments -C ${args}
-+
-+    case ${state} in
-+        name_or_value)
-+            if (( CURRENT == 1 )); then
-+                __tmux-options
-+            elif (( CURRENT == 2 )); then
-+                __tmux-option-guard 'session' ${words[1]}
-+            else
-+                __tmux-nothing-else
-+            fi
-+            ;;
-+    esac
++    __tmux-options-complete ${mode} ${state}
 +}
 +
 +function _tmux-set-window-option() {
@@ -872,18 +878,7 @@ $OpenBSD: patch-Completion_Unix_Command_
 +        '*:: :->name_or_value'
 +    )
 +    _arguments -C ${args}
-+
-+    case ${state} in
-+        name_or_value)
-+            if (( CURRENT == 1 )); then
-+                __tmux-window-options
-+            elif (( CURRENT == 2 )); then
-+                __tmux-option-guard 'window' ${words[1]}
-+            else
-+                __tmux-nothing-else
-+            fi
-+            ;;
-+    esac
++    __tmux-options-complete window ${state}
 +}
 +
 +function _tmux-show-buffer() {
@@ -927,6 +922,12 @@ $OpenBSD: patch-Completion_Unix_Command_
 +    _arguments ${args}
 +}
 +
++function _tmux-show-messages() {
++    [[ -n ${tmux_describe} ]] && print "Show client"\'"s message log" && 
return
++    args=('-t[Choose target client]:client:__tmux-clients')
++    _arguments ${args}
++}
++
 +function _tmux-show-options() {
 +    [[ -n ${tmux_describe} ]] && print "Show session options" && return
 +    local -a args
@@ -1006,8 +1007,8 @@ $OpenBSD: patch-Completion_Unix_Command_
 +    [[ -n ${tmux_describe} ]] && print "Switch the client to another session" 
&& return
 +    local -a args
 +    args=(
-+        '-c[Choose a target client]:client:__tmux-key-clients'
-+        '-t[Choose a target window]:window:__tmux-key-windows'
++        '-c[Choose a target client]:client:__tmux-clients'
++        '-t[Choose a target window]:window:__tmux-windows'
 +    )
 +    _arguments ${args}
 +}
@@ -1128,6 +1129,11 @@ $OpenBSD: patch-Completion_Unix_Command_
 +    done
 +}
 +
++function __tmux-got-option-already() {
++    [[ -n ${(M)words:#$1} ]] && return 0
++    return 1
++}
++
 +function __tmux-key-tables() {
 +    local expl
 +    local -a tables
@@ -1182,6 +1188,7 @@ $OpenBSD: patch-Completion_Unix_Command_
 +            'message-attr:__tmux-attributes'
 +            'message-bg:__tmux-colours'
 +            'message-fg:__tmux-colours'
++            'message-limit:'${int_guard}
 +            'mouse-select-pane:DESC:on off'
 +            'prefix:MSG:comma-seperated key list'
 +            'repeat-time:'${int_guard}
@@ -1237,7 +1244,9 @@ $OpenBSD: patch-Completion_Unix_Command_
 +            'window-status-current-attr:__tmux-attributes'
 +            'window-status-current-bg:__tmux-colours'
 +            'window-status-current-fg:__tmux-colours'
++            'window-status-current-format:MSG:status format string'
 +            'window-status-fg:__tmux-colours'
++            'window-status-format:MSG:status format string'
 +            'xterm-keys:DESC:on off'
 +        )
 +    fi
@@ -1284,6 +1293,7 @@ $OpenBSD: patch-Completion_Unix_Command_
 +        'message-attr:Set status line message attributes'
 +        'message-bg:Set status line message background colour'
 +        'message-fg:Set status line message foreground colour'
++        'message-limit:Set size of message log per client'
 +        'mouse-select-pane:Make mouse clicks select window panes'
 +        'prefix:Comma seperated line of keys accepted as prefix key'
 +        'repeat-time:Time for multiple commands without prefix-key presses'
@@ -1317,6 +1327,24 @@ $OpenBSD: patch-Completion_Unix_Command_
 +    _describe -t tmux-options 'tmux option' tmux_options
 +}
 +
++function __tmux-options-complete() {
++    local mode="$1" state="$2"
++
++    case ${state} in
++        name_or_value)
++            if (( CURRENT == 1 )) && [[ ${mode} == 'session' ]]; then
++                __tmux-options
++            elif (( CURRENT == 1 )) && [[ ${mode} == 'window' ]]; then
++                __tmux-window-options
++            elif (( CURRENT == 2 )); then
++                __tmux-option-guard ${mode} ${words[1]}
++            else
++                __tmux-nothing-else
++            fi
++            ;;
++    esac
++}
++
 +function __tmux-panes() {
 +    local expl line
 +    local -i num
@@ -1380,7 +1408,9 @@ $OpenBSD: patch-Completion_Unix_Command_
 +        'window-status-current-attr:Set status line attributes for active 
window'
 +        'window-status-current-bg:Set status line background for active 
window'
 +        'window-status-current-fg:Set status line foreground for active 
window'
++        'window-status-current-format:Set status line format for active 
window'
 +        'window-status-fg:Set status line foreground for a window'
++        'window-status-format:Set status line format for all but the active 
window'
 +        'xterm-keys:Generate xterm-style function key sequences'
 +    )
 +    _describe -t tmux-window-options 'tmux window option' tmux_window_options
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/shells/zsh/pkg/PLIST,v
retrieving revision 1.28
diff -u -p -r1.28 PLIST
--- pkg/PLIST   13 Nov 2009 12:26:40 -0000      1.28
+++ pkg/PLIST   10 Dec 2009 16:53:43 -0000
@@ -393,6 +393,8 @@ share/zsh/${V}/functions/_perl
 share/zsh/${V}/functions/_perl_basepods
 share/zsh/${V}/functions/_perl_modules
 share/zsh/${V}/functions/_perldoc
+share/zsh/${V}/functions/_pfctl
+...@comment share/zsh/${V}/functions/_pfctl.orig
 share/zsh/${V}/functions/_pfexec
 share/zsh/${V}/functions/_php
 share/zsh/${V}/functions/_physical_volumes

Reply via email to