2012/11/8 Thomas Adam <tho...@xteddy.org>:
> Hi,
>
> On Tue, Nov 06, 2012 at 03:42:58PM +0900, Kazuhiko Sakaguchi wrote:
>> I created and moved a pane-maximize repository on GitHub.
>> https://github.com/pi8027/pane-maximize
>
> I took a look at this, since I'm quite keen to ensure that if this script or
> one like it is to replace the current "tmux-zoom.sh" script, that it
> actually works this time.
>
> I can't quite see how your script does work though, so I've got some
> questions:
>
>> #!/bin/bash
>
> #!/usr/bin/env bash
>
> (For those people on BSD where /bin/bash is not guaranteed.)
>
>> # By Kazuhiko Sakaguchi. Public domain.
>>
>> function usage_exit(){
>> cat <<EOT
>> Usage: $(echo $0 | sed "s/.*\///") [-adP] [-F format] [-t target-pane]
>
> Why not using "basename" here?
>
>> -a, -d, -P, -F format:   these options are passed to tmux new-window
>> -t target-pane:          specify target pane
>> EOT
>> exit $1
>
> I think you should just exit 1 here, and not worry about passing in some
> value for this.
>
> Note also though that most help information is sent to STDERR as good
> practice.  Hence:
>
> cat <<FOO >&2
> ...
> ...
> FOO
>
>> }
>>
>> paneid=$(tmux display-message -p '#{pane_id}')
>>
>> optflag_a=false
>> nwopts=
>>
>> while getopts adPF:t: OPT ; do
>>     case $OPT in
>>     t  ) paneid=$OPTARG ;;
>>     a  ) optflag_a=true ;;
>>     d|P) nwopts="-$OPT $nwopts" ;;
>>     F  ) nwopts="-F $OPTARG $nwopts" ;;
>>     *  ) usage_exit -1 ;;
>>     esac
>> done
>>
>> paneid=$(tmux display-message -t $paneid -p '#{pane_id}' || exit -1)
>
> Trampling paneid again here, probably isn't what you want to do.  The "exit
> -1" in the subshell here is a very odd thing to do in the case where there's
> no return value.  Indeed, if it is to have a value after being trampled,
> then it should be written like this:
>
> paneid=$(...)
> [ -z "$paneid" ] && {
>         echo "Oops, something went wrong" >&2
>         exit 1
> }
>
>> winid=$(tmux display-message -t $paneid -p '#{window_id}')
>> pmtable=$(tmux showenv pmtable | sed 's/^pmtable=//')
>
> When I get here, having run your script for the first time, I get an error
> from tmux that "pmtable" has no value.  This is indeed true, and in such
> cases when this happens, the rest of your script fails to run because the
> entirety of it assumes this "pmtable" value to have some value.
>
> Perhaps:
>
> pmtable=$(tmux showenv pmtable 2>/dev/null | sed 's/^pmtable=//')
>
>> $optflag_a && nwopts="-a -t $winid $nwopts"
>
> It is perhaps preferrable to not treat optflag_a as some literal boolean,
> but rather use something like:
>
> [ -n "$optflag_a" ] && nwopts="-a -t $winid $nwopts"
>
>
>> if target=$(echo $pmtable | tr : "\n" | \
>>         grep -E "(=|^)$paneid(=|$)" | head -n 1 | grep .) ; then
>
>
> Ugh.  :)  What is this trying to do?  (I know what it's doing, it's a
> rhetorical question).  At this point, the "if" condition is wholly
> incorrect.  I suggest this:
>
> target=$(echo $pmtable | tr : "\n" | \
>         grep -E "(=|^)$paneid(=|$)" | head -n 1 | grep .)
> if [ -n "$target" ]; then
>
>
>>     IFS== ; set -- $target ; IFS=' ' ; \
>
> Setting "IFS==" here makes no sense.
>
>>         tmux swap-pane -t $2 -s $1 \; \
>>              kill-pane -t $2 \; \
>>              setenv pmtable "$(echo $pmtable | sed "s/:$target//")"
>> elif [ $(tmux list-panes -t $winid -F '' | wc -l) != 1 ] ; then
>
> Why "-F ''"?
>
>>     tmux new-window $nwopts "\"$0-sub\" $paneid"
>> else
>>     tmux display-message "This pane is already maximized."
>> fi
>
> -- Thomas Adam

Hi,

Thanks! I fixed problems.
Please see https://github.com/pi8027/pane-maximize/blob/master/pane-maximize .

> target=$(echo $pmtable | tr : "\n" | \
>         grep -E "(=|^)$paneid(=|$)" | head -n 1 | grep .)
> if [ -n "$target" ]; then

In old code, "grep ." determine if input is empty.
In this code, [ determine it.  "grep ." is not needed.

------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to