Diffuse User's Manual

Derrick Moser

This manual describes version 0.2.13 of Diffuse.


Table of Contents

1. Introduction
About
Licence
Command Line Usage
Command Line Options
2. Comparing Text
3. Editing Text
4. Merging Text
5. Resources
General
Key Bindings
Menu Item Key Bindings
Line Editing Mode Key Bindings
Alignment Editing Mode Key Bindings
Character Editing Mode Key Bindings
Strings
Used String Resources
Colours
Used Colour Resources
Floating Point Values
Used Floating Point Resources
Syntax Highlighting

Chapter 1. Introduction

Diffuse is a graphical tool for merging and comparing text files. Diffuse is able to compare an arbitrary number of files side-by-side and gives users the ability to manually adjust line-matching and directly edit files. Diffuse can also retrieve revisions of files from bazaar, CVS, darcs, git, mercurial, monotone, and subversion repositories for comparison and merging.

About

Diffuse was written by Derrick Moser.

© 2006-2008 Derrick Moser. All Rights Reserved.

Licence

Diffuse is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the licence, or (at your option) any later version.

Diffuse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Diffuse. You may also obtain a copy of the GNU General Public License from the Free Software Foundation by visiting their web site or by writing to


          Free Software Foundation, Inc.
          51 Franklin St, Fifth Floor,
          BostonMA 02110-1301
          USA
        

Command Line Usage

diffuse [ -h | -? | --help | -v | --version ]

Display information about Diffuse.

diffuse [ [ option ]... [ file ]... ]...

Compare and merge files.

Command Line Options

-e, --encoding codec

Use codec to read and write files.

-h, -?, --help

Display usage information.

--no-rcfile

Do not read the system wide initialisation file /etc/diffuserc and personal initialisation file ~/.diffuse/diffuserc.

-r, --revision rev

Include revision rev of the next file named in the command line arguments in a file comparison tab.

--rcfile file

Read initialisation commands from file file instead of the system wide initialisation file /etc/diffuserc and personal initialisation file ~/.diffuse/diffuserc.

-s, --separate

Open all remaining files specified in the command line arguments in separate file comparison tabs.

-t, --tab label

Start a new tab called label for any remaining files named in the command line arguments.

-v, --version

Display version number and copyright information.

Chapter 2. Comparing Text

Diffuse displays files side-by-side inserting gaps to align similar lines of text. Differences are highlighted with a different background colour. The mouse pointer or keyboard can be used to manually align lines of text from neighbouring files. To aligning lines of text using the mouse pointer, select a line of text with the left mouse button, right click on a line of text from a neighbouring file, and choose "Align to Selection". To align lines of text using the keyboard, move the selection with the cursor keys, press the space bar to pick the current line of text, move the selection with the cursor keys to a line of text in a neighbouring file, and press the space bar to pick the target line of text. Pressing the escape key will cancel the operation.

Chapter 3. Editing Text

Press the enter key or double click on a text area to enter text editing mode. Diffuse will identify differences in neighbouring files during editing and highlight modified lines. Press the escape key or click on another file's text area using the left mouse button to leave editing mode.

Chapter 4. Merging Text

Use the difference buttons to navigate blocks of differences within a file. Use the merge buttons to copy blocks of text into the selected range of lines. The revert tool will undo all changes to the selected lines regardless of the order they were made.

Chapter 5. Resources

Diffuse reads commands from the system wide initialisation file /etc/diffuserc and personal initialisation file ~/.diffuse/diffuserc. A Bourne shell-like lexical analyser is used to parse initialisation commands. Comments and special characters can be embedded using the same method manner used in Bourne shell scripts.

General

import file

Processes initialisation commands from file. Initialisation files will only be processed once.

Key Bindings

keybinding context action key_combination

Binds a key combination to action when used in context. Specify Shift and Control modifiers by prepending Shift+ and Ctrl+ to key_combination respectively. Keys normally modified by the Shift key should be specified using their modified value if key_combination involves the Shift key. For example, Ctrl+g and Shift+Ctrl+G. Remove bindings for key_combination by specifying None for the action.

Menu Item Key Bindings

Use menu for the context to define key bindings for menu items. The following values are valid for action:

open_file

FileOpen File... menu item

reload_file

FileReload File menu item

save_file

FileSave File menu item

save_file_as

FileSave File As... menu item

new_2_way_file_merge

FileNew 2-Way File Merge menu item

new_3_way_file_merge

FileNew 3-Way File Merge menu item

quit

FileQuit menu item

undo

EditUndo menu item

redo

EditRedo menu item

cut

EditCut menu item

copy

EditCopy menu item

paste

EditPaste menu item

select_all

EditSelect All menu item

find

EditFind... menu item

find_next

EditFind Next menu item

find_previous

EditFind Previous menu item

no_syntax_highlighting

ViewSyntax HighlightingNone menu item

syntax_highlighting_syntax

ViewSyntax Highlightingsyntax menu item

previous_tab

ViewPrevious Tab menu item

next_tab

ViewNext Tab menu item

preferences

ViewPreferences menu item

realign_all

MergeRealign All menu item

first_difference

MergeFirst Difference menu item

previous_difference

MergePrevious Difference menu item

next_difference

MergeNext Difference menu item

last_difference

MergeLast Difference menu item

revent

MergeRevert menu item

merge_from_left

MergeMerge From Left menu item

merge_from_right

MergeMerge From Right menu item

isolate

MergeIsolate menu item

help_contents

HelpHelp Contents menu item

about

HelpAbout menu item

Line Editing Mode Key Bindings

Use line_mode for the context to define key bindings for line editing mode. The following values are valid for action:

enter_align_mode

enter alignment editing mode

enter_character_mode

enter character editing mode

up

move cursor up one line

extend_up

move cursor up one line, extending the selection

down

move cursor down one line

extend_down

move cursor down one line, extending the selection

left

move cursor left one file

extend_left

move cursor left one file, extending the selection

right

move cursor right one file

extend_right

move cursor right one file, extending the selection

page_up

move cursor up one page

extend_page_up

move cursor up one page, extending the selection

page_down

move cursor down one page

extend_page_down

move cursor down one page, extending the selection

delete_text

delete the selected text

merge_from_left

merge lines from file on the left

merge_from_right

merge lines from file on the right

first_difference

select the first difference

previous_difference

select the previous difference

next_difference

select the next difference

last_difference

select the last difference

isolate

isolate the selected lines

Alignment Editing Mode Key Bindings

Use align_mode for the context to define key bindings for alignment editing mode. The following values are valid for action:

enter_line_mode

enter line editing mode

enter_character_mode

enter character editing mode

up

move cursor up one line

down

move cursor down one line

left

move cursor left one file

right

move cursor right one file

page_up

move cursor up one page

page_down

move cursor down one page

align

align the selected line to the cursor position

Character Editing Mode Key Bindings

Use character_mode for the context to define key bindings for character editing mode. The following values are valid for action:

enter_line_mode

enter line editing mode

Strings

string name value

Declares a string resource called name with value value.

Used String Resources

The following string resources are used by Diffuse:

auto_detect_encodings

a list of encodings to try when attempting to identify a file's encoding

character_classes

describes mapping used to identify characters of a similar class for selection when double clicking

This resource is a series of range:value pairs. The range is either a single number or low-high corresponding to the code for the character or characters to be set. Neighbouring characters that map to the same value will be selected as a group when double clicking on a word.

bzr_bin

executable used to query bazaar repositories

bzr_default_revision

default revision to retrieve from bazaar repositories for comparison

cvs_bin

executable used to query CVS repositories

cvs_default_revision

default revision to retrieve from CVS repositories for comparison

darcs_bin

executable used to query darcs repositories

darcs_default_revision

default revision to retrieve from darcs repositories for comparison

difference_colours

a list of colour resources used to indicate differences

font

font used to render text

git_bin

executable used to query git repositories

git_default_revision

default revision to retrieve from git repositories for comparison

help_browser

executable used to browse help documentation

help_dir

directory containing the localised help documents

hg_bin

executable used to query mercurial repositories

hg_default_revision

default revision to retrieve from mercurial repositories for comparison

mtn_bin

executable used to query monotone repositories

mtn_default_revision

default revision to retrieve from monotone repositories for comparison

svn_bin

executable used to query subversion repositories

svn_default_revision

default revision to retrieve from subversion repositories for comparison

Colours

[ colour | color ] name red green blue

Declares a colour resource called name. Individual colour components should be expressed as a value between 0 and 1.

Used Colour Resources

The following colour resources are used by Diffuse:

align

colour used to indicate a line picked for manual alignment

char_selection

colour used to indicate selected characters

cursor

colour used for the cursor

difference_1

colour used to identify differences between the first pair of files

difference_2

colour used to identify differences between the second pair of files

difference_3

colour used to identify differences between the third pair of files

hatch

colour used for indicating alignment gaps

line_number

colour used for line numbers

line_number_background

colour of background in line number area

line_selection

colour used to indicate selected lines

modified

colour used to indicate modified lines

text

regular text colour

text_background

colour of background in text area

Floating Point Values

float name value

Declares a floating point resource called name with value value.

Used Floating Point Resources

The following floating point resources are used by Diffuse:

align_alpha

alpha value used when compositing the manual alignment colour

char_difference_alpha

alpha value used when compositing character difference colours

char_selection_alpha

alpha value used when compositing the character selection colour

line_difference_alpha

alpha value used when compositing line difference colours

line_selection_alpha

alpha value used when compositing the line selection colour

modified_alpha

alpha value used when compositing the modified line colour

Syntax Highlighting

syntax name initial_state default_tag

Declares a new syntax style called name. Syntax highlighting uses a simple state machine that transitions between states when certain patterns are matched. The initial state for the state machine will be initial_state. All characters not matched by a pattern will be tagged as default_tag for highlighting.

syntax_file name pattern

Specifies that files with a name matching pattern should be highlighted using the syntax style called name.

syntax_pattern name initial_state final_state tag pattern

Adds a pattern to the previously declared syntax style. The pattern will only be used to match characters if the state machine is in the state initial_state. The state machine will transition to final_state if the pattern defined by pattern is matched. All characters matched by the pattern will be tagged as tag for highlighting.