9fans.net/go@v0.0.7/cmd/acme/internal/ui/look1.go (about)

     1  // #include <u.h>
     2  // #include <libc.h>
     3  // #include <draw.h>
     4  // #include <thread.h>
     5  // #include <cursor.h>
     6  // #include <mouse.h>
     7  // #include <keyboard.h>
     8  // #include <frame.h>
     9  // #include <fcall.h>
    10  // #include <regexp.h>
    11  // #include <9pclient.h>
    12  // #include <plumb.h>
    13  // #include <libsec.h>
    14  // #include "dat.h"
    15  // #include "fns.h"
    16  
    17  package ui
    18  
    19  import (
    20  	"9fans.net/go/cmd/acme/internal/runes"
    21  	"9fans.net/go/cmd/acme/internal/wind"
    22  )
    23  
    24  func New(et, t, argt *wind.Text, flag1, flag2 bool, arg []rune) {
    25  	var a []rune
    26  	Getarg(argt, false, true, &a)
    27  	if a != nil {
    28  		New(et, t, nil, flag1, flag2, a)
    29  		if len(arg) == 0 {
    30  			return
    31  		}
    32  	}
    33  	// loop condition: *arg is not a blank
    34  	for ndone := 0; ; ndone++ {
    35  		a = runes.SkipNonBlank(arg)
    36  		if len(a) == len(arg) {
    37  			if ndone == 0 && et.Col != nil {
    38  				w := ColaddAndMouse(et.Col, nil, nil, -1)
    39  				wind.Winsettag(w)
    40  				OnNewWindow(w)
    41  			}
    42  			break
    43  		}
    44  		nf := len(arg) - len(a)
    45  		f := runes.Clone(arg[:nf])
    46  		rs := wind.Dirname(et, f)
    47  		var e Expand
    48  		e.Name = rs
    49  		e.Bname = string(rs)
    50  		e.Jump = true
    51  		Openfile(et, &e)
    52  		arg = runes.SkipBlank(a)
    53  	}
    54  }