Provided by: wily_0.13.41-10_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)