tfun with applescript - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit 5645c4afff3bfd3f1a92d01a4d31b25c6e5b9d89
parent 8bead1099899437fd522244e9ba1c7a287a0cf7a
Author: rsc 
Date:   Tue, 11 Jan 2005 19:23:52 +0000

fun with applescript

Diffstat:
  M bin/9                               |       2 +-
  M bin/doctype                         |       2 +-
  A bin/man                             |     120 +++++++++++++++++++++++++++++++
  A bin/page                            |      53 ++++++++++++++++++++++++++++++
  M bin/web                             |      71 +++++++++++++++++++++++++++++--

5 files changed, 242 insertions(+), 6 deletions(-)
---
diff --git a/bin/9 b/bin/9
t@@ -1,6 +1,6 @@
 #!/bin/sh
 
-export PLAN9=/usr/local/plan9
+export PLAN9=/Users/rsc/plan9
 export PATH=$PLAN9/bin:$PATH
 
 case $# in
diff --git a/bin/doctype b/bin/doctype
t@@ -1,4 +1,4 @@
-#!/usr/bin/env $PLAN9/bin/rc
+#!/usr/bin/env rc
 # doctype:  synthesize proper command line for troff
 
 troff=troff
diff --git a/bin/man b/bin/man
t@@ -0,0 +1,120 @@
+#!/usr/bin/env rc
+
+. $PLAN9/man/fonts
+
+cmd=n
+sec=()
+S=$PLAN9/man
+d=0
+
+fn roff {
+        preproc=()
+        x=`{doctype $2}
+        if (~ $1 t) {
+                if(~ $x *grap*)
+                        preproc=($preproc grap)
+                if(~ $x *pic*)
+                        preproc=($preproc pic)
+                Nflag=-Tutf
+        }
+        if not {
+                Nflag=-N
+        }
+        if(~ $x *eqn*)
+                preproc=($preproc eqn)
+        if(~ $x *tbl*)
+                preproc=($preproc tbl)
+        switch($#preproc) {
+                case 0
+                        {echo -n $FONTS; cat $2< /dev/null} | troff $Nflag -$MAN 
+                case 1
+                        {echo -n $FONTS; cat $2< /dev/null} | $preproc | troff $Nflag -$MAN
+                case 2
+                        {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | troff $Nflag -$MAN
+                case 3
+                        {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | $preproc(3) | | troff $Nflag -$MAN
+                case *
+                        {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | $preproc(3) | | $preproc(4) | troff $Nflag -$MAN
+        }
+}
+
+fn page {
+        if(test -d /mnt/wsys/acme)
+                /bin/page -w
+        if not
+                /bin/page
+}
+
+
+while(~ $d 0) {
+        if(~ $#* 0) {
+                echo 'Usage: man [-ntp] [-s sec] [0-9] [0-9] ... name1 name2 ...' >[1=2]
+                exit
+        }
+        if(test -d $S/man$1){
+                sec=($sec $1)
+                shift
+        }
+        if not switch($1) {
+                case -t ; cmd=t ; shift
+                case -n ; cmd=n ; shift
+                case -p ; cmd=p ; shift
+                case -P ; cmd=P ; shift
+                case * ; d=1
+        }
+}
+if(~ $#sec 0) {
+        sec=`{ls -pd $S/man[0-9]* | sed 's/man//'}
+}
+ix=$S/man$sec/INDEX
+if(~ $#* 1) pat='^'^$1^' '
+if not pat='^('^`{echo $* | 9sed 's/ /|/g'}^') '
+fils=()
+for(i in $S/man$sec){
+        if(/bin/test -f $i/INDEX){
+                try=`{grep $pat $i/INDEX | 9sed 's/^[^ ]* //'}
+                if(! ~ $#try 0)
+                        fils=($fils $i/$try)
+        }
+}
+# bug: should also do following loop if not all pages found
+if(~ $#fils 0) {
+        # nothing in INDEX. try for file of given name
+        for(i) {
+                for(n in $sec) {
+                        try=$S/man$n/$i.$n*
+                        if (/bin/test -f $try)
+                                fils=($fils $try)
+                }
+        }
+        if(~ $#fils 0) {
+                echo 'man: no manual page' >[1=2]
+                exit 'no man'
+        }
+}
+for(i in $fils) {
+        if(! /bin/test -f $i)
+                echo need $i >[1=2]
+        if not {
+                switch($cmd) {
+                case t
+                        roff t $i
+
+                case p
+                        roff t $i | proof
+
+                case P
+                        roff t $i |tr2post |psfonts >/tmp/man.$pid.ps
+                        psv /tmp/man.$pid.ps
+                        rm -f /tmp/man.$pid.ps
+
+                case n
+                        roff n $i | 9sed '
+                                ${
+                                       /^$/p
+                                }
+                                //N
+                                /^\n$/D'
+                }
+        }
+}
diff --git a/bin/page b/bin/page
t@@ -0,0 +1,53 @@
+#!/bin/sh
+
+preview()
+{
+        list=""
+        pwd=`pwd`
+        for i in "$@"
+        do
+                if [ -n "$list" ]
+                then
+                        list="$list, "
+                fi
+                n=`cleanname -d $pwd $i | sed 's!/!:!g'`
+                list="$list\"$n\""
+        done
+        # echo run $list
+        echo 'tell application "Preview"
+                activate
+                open {'"$list"'}
+        end tell' | osascript
+}
+
+case $# in
+0)
+        cat >/var/tmp/page.$$.tmp
+        *="/var/tmp/page.$$.tmp"
+        ;;
+*)
+        ;;
+esac
+
+case `uname` in
+Darwin)
+        preview "$@"
+        ;;
+*)
+        case "`file $1`" in
+        *PDF*)
+                psv $1
+                ;;
+        *PS*)
+                psv $1
+                ;;
+        *PostScript*)
+                psv $1
+                ;;
+        *)
+                qiv "$@"
+                ;;
+        esac
+        ;;
+esac
+
diff --git a/bin/web b/bin/web
t@@ -1,8 +1,58 @@
 #!/bin/sh
 
-plumb1()
+plumbfirefox()
+{
+        echo '
+                tell application "Firefox"
+                activate
+                tell application "System Events"
+                tell process "firefox"
+                keystroke "t" using {command down}
+                end tell
+                end tell
+                Get URL "'$1'"
+                end tell
+        ' | osascript
+}
+
+plumbsafari()
+{
+        echo '
+                tell application "Safari"
+                activate
+                tell application "System Events"
+                tell process "safari"
+                keystroke "t" using {command down}
+                end tell
+                end tell
+                open location "'$1'"
+                end tell
+        ' | osascript
+}
+
+plumbapple()
 {
-        case x-$BROWSER in
+        case ${BROWSER:-none} in
+        firefox)
+                plumbfirefox "$@"
+                ;;
+        safari)
+                plumbsafari "$@"
+                ;;
+        none)
+                if [ -d /Applications/Firefox.app ]
+                then
+                        plumbfirefox "$@"
+                else
+                        plumbsafari "$@"
+                fi
+                ;;
+        esac
+}
+
+plumbunix()
+{
+        case ${BROWSER:-firefox} in
         # Other browsers here
         # ...
         *opera*)
t@@ -15,8 +65,8 @@ plumb1()
                 $BROWSER -remote 'openURL('$i',new-tab)'
                 ;;
         x-)
-                # run firefox as default!
-                firefox -remote 'openURL('$i',new-tab)'
+                BROWSER=firefox
+                $BROWSER -remote 'openURL('$i',new-tab)'
                 ;;
         *mozilla*)
                 $BROWSER -remote 'openURL('$i',new-tab)'
t@@ -27,6 +77,19 @@ plumb1()
         esac
 }
 
+plumb1()
+{
+        case `uname` in
+        Darwin)
+                plumbapple "$@"
+                ;;
+        *)
+                plumbunix "$@"
+                ;;
+        esac
+}
+
+
 if [ $# = 0 ]
 then
         plumb1 about:blank