# $ K + Contents
The following Help Topics are available:

Invoking Windiff from the command line 
File menu 
Edit Menu 
View menu 
Expand menu 
Expanded mode display 
Options menu 
Mark menu 
Zebra Stripes   

For Help on Help, Press F1

Windiff compares directories or files showing the results graphically.
This is to DIFF as graphs are to columns of numbers

# $ K + Invoking Windiff from the command line

Command line flags 

To invoke windiff so that you can then use menus to define the comparison, just enter
Windiff

Windiff can be invoked with one or two paths.  The second path, defaults to the current directory.  If both paths are (or are defaulted to) directories then it compares the whole directories.  If one path is a file then it compares that file with a file of the same name in the other directory.  If both paths are files then it compares the two files.  The most common cases are as follows.

To compare a file in another directory with a file of the same name in this directory enter
Windiff  path_to_other_file

To compare another whole directory with the current directory enter
Windiff  path_to_other_directory

To compare two directories (including subdirectories) enter
Windiff  path_to_first_directory  path_to_second_directory

To compare two files
Windiff  path_to_first_file   path_to_second_file

# $ K + Command line flags

Anywhere in the command line you can include any of the following to modify the behaviour of windiff
-D to compare one directory only (i.e. ignore subdirectories)
-O to force it to stay in outline mode.  The default is to expand single file comparisons.  This is useful for comparing very large files or binary files where the expansion can take a long time and is not very meaningful.
-N name to do a NET  SEND to name to announce the end of the comparison.  This can be useful for very long comparisons involving thousands of files. 
-S <saveopts> savefile to save the results of the comparison to savefile.  This saves the outline mode list.  This is only really useful for comparing directories.
<saveopts> are any combination of 
s to include files that are the same in both directories
l to include files that are only in the left hand (i.e. first) directory
r to include files that are only in the right hand (i.e. second) directory
d to include files that are different in the two directories
x to exit after the results have been saved.
-? to give immediate, context sensitive, syntax help for these command line flags (always worth a try)
You can use "/" instead of "-" to prefix flags and it means the same.

# $ K + Expanded mode display
Colours

Red background means left hand file.  
Yellow background means right hand file.
If Windiff was invoked as Windiff other_directory then red means the other_directory and yellow means the current directory.

White background means common to both files

Blue text means that the line is moved text
Black text means text that is the identical (white background) or different (coloured background).
Green text means that windiff thinks that there is a corresponding similar line in the other file (see Zebra Stripes)

# $ K + File menu
Compare files… leads to a file open dialog for each of two files to be compared
Compare directories…leads to dialog to allow entry of two directory names for comparison
Abort will be greyed unless an operation is in progress.  Then allows that operation to be terminated before completion.  When this is not greyed, there is also an Abort button at the top right of the window which has the same function.
Save File List allows the list of files which are (the same, different, only in left  or only in right) to be saved.  In addition, a checksum for each file can be saved.
Copy Files… leads to a dialog allowing you to write the files to a disk.  This can be useful if you are trying to synchronise two directories.
Print prints the current view (either outline or expanded)

# $ K + Edit Menu
Edit left file invokes an editor (the default is notepad) on the left hand file.  After editing the file is recompared.
Edit right file invokes an editor (the default is notepad) on the right hand file.  After editing the file is recompared.
Edit composite file invokes an editor (the default is notepad) on a file which is constructed to be a composite of the two files.  The first four columns of this file indicate the comparison status of each line. as follows:
!>  The line occurs in the right hand file
<!  The line occurs in the left hand file
<-  The line has been moved.  This shows its position in the left hand file
->  The line has been moved.  This shows the position in the right hand file.
    (four blanks) indicates the line was the same in the two files.  (white space may differ if the options allow that)
After editing the file is recompared.

Set editor allows you to select the editor of your choice by specifying a command line.  The string "%p" will be replaced by the name of the file to be edited and the string "%l" will be replaced by the line number.  The default is to invoke notepad with the line "notepad %p"  If you use the slick editor you might want to use "s %p -#%l"

# $ K + View menu
Outline showa the list of files with the status of each
Expand shows the detailed comparison of the selected file
Picture shows the comparison pictorially at the left (turning the picture off saves screen real estate).
Previous Change (F7) skips backwards to the previous point of difference between the files or in outline mode to the previous file with status "different"
Next change (F8) skips forwards to the next point of difference between the files or in outline mode to the next file with status "different"
Rescan selected file recompares the selected file.  If a file is unreadable for some reason (e.g. access denied because opened with DENY_READ by another process) then this allows you to try again for that file.  This can be useful for tidying up loose ends, especially when doing large comparisons involving thousands of files.

# $ K + Expand menu
Left file only shows only lines from left hand file (but coloured so as to highlight changed lines)
Right file only shows only lines from right hand file (but coloured so as to highlight changed lines)
Both files (default) shows a merge of both files. All the lines in the left hand file are shown in the order in which they occur in that file, likewise for the right hand file.  Moved lines occur twice, once in the position of the line in the left hand file, once in the position for the right hand file.
Left line numbers causes line numbers to be shown, based on the left hand file
Right line numbers causes line numbers to be shown, based on the right hand file
No line numbers turns line numbers off.  This saves some screen real estate.

# $ K + Options menu
Ignore blanks causes white space characters (space, tab, newline) to be ignored in the expanded view, so that lines which differ only in white space are shjown as identical.
Mono colours uses colours suitable for a monochrome display.

The next four options control which files (if any) are displayed in outline mode.
Show Identical Files Include files which are identical in each path
Show Left-Only Files Include files which occur only in the left hand path
Show Right-Only Files Include files which occur only in the right hand path
Show Different Files Include files which occur in both paths, but which are not the same.

# $ K + Mark menu
Marks are used to allow particular files to be included or excluded from the comparison
Mark file marks the selected file
Mark pattern… leads to a dialog which allows you to specify a substring or a regular expression and have all the files that match this pattern marked.
"$" means "end of string"
"\\" means "\"
"\." means "."  
Thus to mark all files with extension "obj" the expression should be "\.obj$".
Hide marked files removes from the displayed list all the marked files (and any future file as it becomes marked)
Toggle mark state marks all unmarked files and unmarks all marked files.  If you want to select the files that you wish to see, mark them, hide marked files (they will disappear) and toggle the mark state (they will reappear and the rest will disappear).

# $ K + Zebra Stripes
After matching such parts of the file that it can match, Windiff looks at the remaining parts.  Where there are sections which are different, but which correspond, in the sense that the part before and the part after match between the files, windiff has a choice between displaying the lines as blocks e.g.

or interleaved. e.g.

Windiff uses a heuristic to judge whether the lines from the two files are similar or not.  If it judges that they are similar it displays them interleaved, otherwise it displays them as blocks.  The heuristic is quick to execute rather than sophisticated and slow.  Sometimes one would wish that it had made the opposite choice.