Provided by: wily_0.13.42-3_amd64 bug

NAME

       wily, win, awd - interactive text windows

SYNOPSIS

       wily [ -f varfont ] [ -F fixfont ] [ -c ncol ]

       win [ command ]

       awd [ label ]

NOTE

       This manual page is out of date.  The original documentation is in /usr/share/doc/wily

DESCRIPTION

       Wily  manages  windows of text that may be edited interactively or by external programs.  The interactive
       interface uses a different interface.

       Any named files are read into wily windows before wily accepts  input.   Plain  files  display  as  text;
       directories display as columnated lists of the names of their components, as in ls -p directory|mc except
       that the names of subdirectories have a slash appended.

       The   -f   (-F)   option   sets   the   default   variable-pitch   (fixed-pitch)  font;  the  default  is
       /lib/font/bit/lucidasans/euro.8.font (.../lucm/unicode.9.font).  Tab intervals are set to  the  width  of
       4(8) numeral zeros in the variable-pitch font.

   Windows
       Wily windows are in two parts: a short tag above a multi-line body.  The body typically contains an image
       of a file, as in sam(1), or the output of a program, as in an (1) window.  The tag contains a number of
       blank-separated words, followed by a vertical bar character, followed by anything.  The first word is the
       name  of  the  window,  typically  the  name of the associated file or directory, and the other words are
       commands available in that window.  Any text may be added after the bar; examples are strings  to  search
       for or commands to execute in that window.

       If a window holds a directory, the name (first word of the tag) will end with a slash.

   Scrolling
       Each  window has a scroll bar to the left of the body.  The scroll bar behaves much as in sam(1) or (1)
       except that scrolling occurs when the button is pressed, rather than released, and continues as  long  as
       the  mouse  button  is  held  down in the scroll bar.  For example, to scroll slowly through a file, hold
       button 3 down near the top of the scroll bar.  Moving the mouse down the scroll bar speeds up the rate of
       scrolling.

   Layout
       Wily windows are arranged in columns.  By default, it creates two columns  when  starting;  this  can  be
       overridden  with  the  -c option.  Placement is automatic but may be adjusted using the layout box in the
       upper left corner of each window and column.  Pressing and holding any mouse button in the box drags  the
       associated  window  or  column.   For windows, just clicking in the layout box grows the window in place:
       button 1 grows it a little, button 2 grows it as much as it can, still leaving all  other  tags  in  that
       column  visible,  and  button 3 takes over the column completely, temporarily hiding other windows in the
       column.  (They will return en masse if any of them needs attention.)  The  layout  box  in  a  window  is
       normally  white; when it is black in the center, it records that the file is `dirty': Wily believes it is
       modified from its original contents.

       Tags exist at the top of each column and across the whole  display.   Wily  pre-loads  them  with  useful
       commands.  Also, the tag across the top maintains a list of executing long-running commands.

   Typing
       The  behavior  of  typed text is similar to that in (1) except that the characters are delivered to the
       tag or body under the mouse; there is no `click to type'.  The usual backspacing conventions  apply.   As
       in  sam(1)  but  not  ,  the  ESC  key  selects  the  text typed since the last mouse action, a feature
       particularly useful when executing commands.  A side effect is that typing ESC with text already selected
       is identical to a Cut command (q.v.).

       All text, including the names of windows, may be edited uniformly.

   Directory context
       Each window's tag names a directory: explicitly if the window holds a directory; implicitly if it holds a
       regular file (e.g. the directory /adm if the window holds /adm/users).  This directory provides a context
       for interpreting file names in that window.  For example, the string users in a window labeled  /adm/  or
       /adm/keys will be interpreted as the file name /adm/users.  The directory is defined purely textually, so
       it  can  be  a  non-existent  directory  or  a  real  directory associated with a non-existent file (e.g.
       /adm/not-a-file).  File names beginning with a slash are assumed to be absolute file names.

   Errors
       Windows whose names begin with - or +  conventionally  hold  diagnostics  and  other  data  not  directly
       associated  with  files.   A  window  labeled  +Errors  receives all diagnostics produced by wily itself.
       Diagnostics from commands run by wily appear in a  window  named  directory/+Errors  where  directory  is
       identified by the context of the command.  These error windows are created when needed.

   Mouse button 1
       Mouse button 1 selects text just as in sam(1) or (1), including the usual double-clicking conventions.

   Mouse button 2
       By  an  action  similar to selecting text with button 1, button 2 indicates text to execute as a command.
       If the indicated text has multiple white-space-separated words, the first is the  command  name  and  the
       second  and  subsequent are its arguments.  If button 2 is `clicked'—indicates a null string—wily expands
       the indicated text to find a command to run: if the click is within button-1-selected  text,  wily  takes
       that  selection  as  the  command;  otherwise  it  takes the largest string of valid file name characters
       containing the click.  Valid file name characters are alphanumerics and _ .  - +  /.   This  behavior  is
       similar  to double-clicking with button 1 but, because a null command is meaningless, only a single click
       is required.

       Some commands, all by convention starting with a capital letter, are built-ins that are executed directly
       by wily:

       Cut    Delete most recently selected text and place in snarf buffer.

       Del    Delete window.  If window is dirty, saves a backup of the file.

       Delcol Delete column and all its windows, after checking that windows are not dirty.

       Quit   Exit wily after checking that windows are not dirty.

       Font   With no arguments, change the font of  the  associated  window  or  column  from  fixed-spaced  to
              proportional-spaced  or  vice versa.  Given a font name argument, change the font of the window to
              the named font.  Other existing windows are unaffected.

       Get    Load file into window, replacing previous contents (after checking for dirtiness as in Del).  With
              no argument, use the existing file name of the window.  Given an argument, use that  file  but  do
              not change the window's file name.

       Kill   Send a kill note to wily-initiated commands named as arguments.

       Look   Search  in  body for occurrence of literal text indicated by the argument or, if none is given, by
              the selected text in the body.

       New    Make new window.  With arguments, load the named files into windows.

       Newcol Make new column.

       Paste  Replace most recently selected text with contents of snarf buffer.

       Put    Write window to the named file.  With no argument, write to the file  named  in  the  tag  of  the
              window.

       Putall Write all dirty windows whose names indicate existing regular files.

       Redo   Complement of Undo.

       Send   Append selected text or snarf buffer to end of body; used mainly with win.

       Snarf  Place selected text in snarf buffer.

       Sort   Arrange  the  windows  in  the  column  from top to bottom in lexicographical order based on their
              names.

       Split  Create a copy of the window containing most recently selected text.

       Undo   Undo last textual change or set of changes.

       A common place to store text for commands is in the tag;  in  fact  wily  maintains  a  set  of  commands
       appropriate to the state of the window to the left of the bar in the tag.

       If the text indicated with button 2 is not a recognized built-in, it is executed as a shell command.  For
       example, indicating date with button 2 runs date(1).  The standard and error outputs of commands are sent
       to  the  error window associated with the directory from which the command was run, which will be created
       if necessary.  For example, in a window /adm/users executing pwd  will  produce  the  output  /adm  in  a
       (possibly  newly-created)  window  labeled  /adm/+Errors;  in  a window containing /sys/src/cmd/sam/sam.c
       executing  make  will  run  make(1)  in  /sys/src/cmd/sam,  producing  output   in   a   window   labeled
       /sys/src/cmd/sam/+Errors.

   Mouse button 3
       Pointing  at  text  with button 3 instructs wily to locate or acquire the file, string, etc. described by
       the indicated text and its context.  This description follows the actions taken when button 3 is released
       after sweeping out some text.  In the description, text refers to the text of the original sweep  or,  if
       it was null, the result of applying similar expansion rules that apply to button 2 actions.

       If  the  text  names  an existing window, wily moves the mouse cursor to the selected text in the body of
       that window.  If the text names an existing file with no associated window, wily loads the  file  into  a
       new window and moves the mouse there.

       If the text begins with a colon, it is taken to be an address, in the style of sam(1), within the body of
       the  window containing the text.  The address is evaluated, the resulting text highlighted, and the mouse
       moved to it.  Thus, in wily, one must type :/regexp or :127 not just /regexp or 127.  (There is an easier
       way to locate literal text; see below.)

       If the text is a file name followed by a colon and an address, wily loads  the  file  and  evaluates  the
       address.  For example, clicking button 3 anywhere in the text file.c:27 will open file.c, select line 27,
       and  put the mouse at the beginning of the line.  The rules about Error files, directories, and so on all
       combine to make this an efficient way to investigate errors from compilers, etc.

       If the text is not an address or file, it is taken to be literal text, which is then searched for in  the
       body  of  the window in which button 3 was clicked.  If a match is found, it is selected and the mouse is
       moved there.  Thus, to search for occurrences of a word in a file, just  click  button  3  on  the  word.
       Because of the rule of using the selection as the button 3 action, subsequent clicks will find subsequent
       occurrences without moving the mouse.

       In  all  these  actions,  the  mouse  motion  is  not done if the text is a null string within a non-null
       selected string in the tag, so that (for example) complex regular expressions may be selected and applied
       repeatedly to the body by just clicking button 3 over them.

   Chords of mouse buttons
       Several operations are bound to multiple-button actions.  After selecting text, with button 1 still down,
       pressing button 2 executes Cut and button 3 executes Paste.  After clicking one button, the other  undoes
       the  first; thus (while holding down button 1) 2 followed by 3 is a Snarf that leaves the file undirtied;
       3 followed by 2 is a no-op.  These actions also apply to text selected  by  double-clicking  because  the
       double-click expansion is made when the second click starts, not when it ends.

       Commands may be given extra arguments by a mouse chord with buttons 2 and 1.  While holding down button 2
       on  text to be executed as a command, clicking button 1 appends the text last pointed to by button 1 as a
       distinct final argument.  For example, to search for literal text one may execute Look text with button 2
       or instead point at text with button 1 in any window, release  button  1,  then  execute  Look,  clicking
       button 1 while 2 is held down.

       When  an  external command (e.g.  echo(1)) is executed this way, the extra argument is passed as expected
       and an environment variable $wilyaddr is created that holds, in the form interpreted  by  button  3,  the
       fully-qualified address of the extra argument.

   Support programs
       Win  creates  a  new  wily  window  and  runs  a  command (default $SHELL) in it, turning the window into
       something analogous to an (1) window.  Executing text in a win window with button 2 is similar to using
       Send.

       Awd loads the tag line of its window with the directory in which it's running, suffixed  -label  (default
       rc); it is intended to be executed by a cd function for use in win windows.  An example definition is
            fn cd { builtin cd $1 && awd $sysname }

FILES

       $home/.wilybak
              default directory for backup files.

SEE ALSO

       wily(4)
       Rob Pike, Acme: A User Interface for Programmers.

BUGS

                                                                                                        WILY(1x)