]> git.neil.brown.name Git - wiggle.git/log
wiggle.git
13 years agovpatch: add mouse movement to merge_window.
NeilBrown [Thu, 15 Nov 2012 05:39:02 +0000 (16:39 +1100)]
vpatch: add mouse movement to merge_window.

If you click in the 'other' pane, just jump to that pane.
If you click in the same pane, go to the character.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: add mouse support for main window.
NeilBrown [Thu, 15 Nov 2012 05:09:13 +0000 (16:09 +1100)]
vpatch: add mouse support for main window.

Clicking on a line will cause that file or folder to be
opened.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoMan page updates.
NeilBrown [Thu, 15 Nov 2012 04:59:59 +0000 (15:59 +1100)]
Man page updates.

Various typo, recent changes, and more info about Browsing.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: allow control-C to disable --replace function.
NeilBrown [Thu, 15 Nov 2012 04:18:21 +0000 (15:18 +1100)]
vpatch: allow control-C to disable --replace function.

This requires 'raw' mode instead of just 'cbreak'.  I guess it is time.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: handle --replace option.
NeilBrown [Thu, 15 Nov 2012 04:13:28 +0000 (15:13 +1100)]
vpatch: handle --replace option.

If --replace if given, then we save without prompting.
Without --replace we only prompt of something has been changed or
saved manually.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: add X command to ignore all changes in the line.
NeilBrown [Thu, 15 Nov 2012 03:07:09 +0000 (14:07 +1100)]
vpatch: add X command to ignore all changes in the line.

'X' will toggle the ignoring of all Conflict and Changeds in
the current line.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: make sure render is stable when the merge is changed.
NeilBrown [Thu, 15 Nov 2012 02:46:33 +0000 (13:46 +1100)]
vpatch: make sure render is stable when the merge is changed.

If we are in the main window and pos suddenly is not 'visible',
we need to jump to the new, visible, pos.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: allow changes to be ignored as well as conflict.
NeilBrown [Thu, 15 Nov 2012 02:45:51 +0000 (13:45 +1100)]
vpatch: allow changes to be ignored as well as conflict.

Because sometimes a 'change' that is found is really a conflict.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: fix display for ignored conflicts.
NeilBrown [Thu, 15 Nov 2012 01:23:59 +0000 (12:23 +1100)]
vpatch: fix display for ignored conflicts.

We need to make sure we display the 'before' bit, not just
hide the 'after' bit.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: add "control-X-O" as a watch to change panes.
NeilBrown [Thu, 15 Nov 2012 00:10:23 +0000 (11:10 +1100)]
vpatch: add "control-X-O" as a watch to change panes.

My emacs-fingers want to do that, so let them.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: allow mode setting keys to toggle back to 'merge'.
NeilBrown [Wed, 14 Nov 2012 23:59:04 +0000 (10:59 +1100)]
vpatch: allow mode setting keys to toggle back to 'merge'.

When I set the mode to anything other than 'merge', I usually want to
then go straight back to 'merge'.  And if someone does it by mistake,
a toggle function is easier to guess.

So make all mode setting commands toggle between their mode, and
'merge'.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: change appearance of ignored conflicts.
NeilBrown [Wed, 14 Nov 2012 23:43:26 +0000 (10:43 +1100)]
vpatch: change appearance of ignored conflicts.

I'm not sure about this yet, but ignored conflicts should look
a bit different to normal ones, so remove some of the highlight.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: update status counters when we save a file.
NeilBrown [Wed, 14 Nov 2012 23:36:13 +0000 (10:36 +1100)]
vpatch: update status counters when we save a file.

So that 'conflicts', 'wiggles', and 'chunks' remain correct.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: add 'C' command to go to next conflicted hunk.
NeilBrown [Wed, 14 Nov 2012 23:23:59 +0000 (10:23 +1100)]
vpatch: add 'C' command to go to next conflicted hunk.

This makes it easy to find conflicts.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: highlight conflicts better.
NeilBrown [Wed, 14 Nov 2012 23:17:38 +0000 (10:17 +1100)]
vpatch: highlight conflicts better.

You can only tell the difference between a conflict and a
change by the conflict starting with '|', not '-'.
So make that '|' more visible, because conflicts are important.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: update display correctly when editing the merge.
NeilBrown [Wed, 14 Nov 2012 23:07:19 +0000 (10:07 +1100)]
vpatch: update display correctly when editing the merge.

If an edit changes the merge so that we don't need to show
two separate streams any more, then the display must be updated
to not show the stream.
And the reverse.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: conditionally auto-save unsaved files when aborting browser.
NeilBrown [Wed, 14 Nov 2012 05:38:54 +0000 (16:38 +1100)]
vpatch: conditionally auto-save unsaved files when aborting browser.

Maybe this should be conditional on a commandline switch.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: avoid repeated backups.
NeilBrown [Wed, 14 Nov 2012 05:10:15 +0000 (16:10 +1100)]
vpatch: avoid repeated backups.

If we have already saved a merge, taking a backup, then don't take further
backups - pointless and possibly distructive.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: prompt to save change if merge was editted.
NeilBrown [Wed, 14 Nov 2012 05:05:27 +0000 (16:05 +1100)]
vpatch: prompt to save change if merge was editted.

Not much editting is possible yet, but if it is done, we might
want to save, or discard, or continue editing.

The 'help' window is retasked to alternatively be a 'query' window.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: allow a save file to be restored.
NeilBrown [Wed, 14 Nov 2012 02:58:57 +0000 (13:58 +1100)]
vpatch: allow a save file to be restored.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: support saving of files.
NeilBrown [Wed, 14 Nov 2012 02:50:35 +0000 (13:50 +1100)]
vpatch: support saving of files.

'S' will save the current file.  If you try to enter
it again, it will be loaded as a 'merge'.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: Allow a message to be displayed in main folder.
NeilBrown [Wed, 14 Nov 2012 02:45:02 +0000 (13:45 +1100)]
vpatch: Allow a message to be displayed in main folder.

So when we act on a file, it won't be invisible.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoSeparate make_merger out from print_merge2
NeilBrown [Wed, 14 Nov 2012 01:45:23 +0000 (12:45 +1100)]
Separate make_merger out from print_merge2

Will want to print a 'merger' that we have modified.  So don't
call make_merger from print_merge, call it before hand and pass it in.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: remove lots of memory leaks.
NeilBrown [Tue, 13 Nov 2012 06:45:53 +0000 (17:45 +1100)]
vpatch: remove lots of memory leaks.

Thanks for valgrind for making it easy to find these.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: allow a file in list to be a 'merger' instead of a patched file.
NeilBrown [Tue, 13 Nov 2012 05:59:10 +0000 (16:59 +1100)]
vpatch: allow a file in list to be a 'merger' instead of a patched file.

This will be useful once we can save files - the result of a save is
a merger.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: allow conflict to be ignored with 'x'
NeilBrown [Tue, 13 Nov 2012 05:56:04 +0000 (16:56 +1100)]
vpatch: allow conflict to be ignored with 'x'

Patch still under development

13 years agovpatch: change args to visible()
NeilBrown [Tue, 13 Nov 2012 03:38:03 +0000 (14:38 +1100)]
vpatch: change args to visible()

The type and stream passed to visible() are always generate from
a merge and an mpos in the same way.  So pass the merge and mpos
instead.
This makes more information available to visible() which will be used
in a future patch.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: avoid extra blanks when cursor is in alternate pane.
NeilBrown [Tue, 13 Nov 2012 02:59:41 +0000 (13:59 +1100)]
vpatch: avoid extra blanks when cursor is in alternate pane.

When cursor is in the 'diff' pane of the 'merge' view, the line it is
on might not be visible in the main pane.  This can cause ugly a_void
lines to appear.
So make sure there point we refresh is a visible point.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: add 'space' and 'backspace' for page up/down.
NeilBrown [Tue, 13 Nov 2012 01:24:48 +0000 (12:24 +1100)]
vpatch: add 'space' and 'backspace' for page up/down.

Makes movement a bit easier.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: highlight spaces when they might be important.
NeilBrown [Tue, 13 Nov 2012 01:19:26 +0000 (12:19 +1100)]
vpatch: highlight spaces when they might be important.

If a wiggle is needed due to white-space issues, it is good
to show them.
So in cases where that might be happening - unmatches space or
extraneous space - highlight spaces as inverse-video and tabs as
underlines.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: make ctrl-G search-again-forward, not just search-again.
NeilBrown [Tue, 13 Nov 2012 00:39:33 +0000 (11:39 +1100)]
vpatch: make ctrl-G search-again-forward, not just search-again.

As ctrl-S doesn't work (as I haven't enabled 'raw' mode), you cannot
search forward during a reverse search.  So change ctrl-G to do that
rather than search-again-in-current-direction, which isn't really useful.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: fix check_line to stop at hunk headers.
NeilBrown [Tue, 13 Nov 2012 00:16:09 +0000 (11:16 +1100)]
vpatch: fix check_line to stop at hunk headers.

check_line() includes invisible bits because they could in some sense
be part of 'this' line.  It ignore hunk headers, but it really should stop
at them, because nothing before could be related to this line.

This fixes a problem where 'N' and 'P' would find hunk headers
which isn't really helpful.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: ensure searching for 'next change' works.
NeilBrown [Mon, 12 Nov 2012 23:57:45 +0000 (10:57 +1100)]
vpatch: ensure searching for 'next change' works.

Now that AlreadyApplied may not cause multiple streams  in the
merge window, we need to be more carefuly about searching for changes.
i.e. we need to check each line to see if it is at-or-near an
interesting change.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: revise the exact meaning of 'CHANGES'.
NeilBrown [Mon, 12 Nov 2012 23:33:40 +0000 (10:33 +1100)]
vpatch: revise the exact meaning of 'CHANGES'.

The 'CHANGES' flag now means that a change is visible at this point
in the merge.  i.e. two streams need to be displayed instead of just one.

In particular, this means that an AlreadyApplied line removal will not
appear at all in the 'merge' window, but will trigger the 'diff' subwindow
to be displayed.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch: remove CHANGED
NeilBrown [Mon, 12 Nov 2012 23:05:15 +0000 (10:05 +1100)]
vpatch: remove CHANGED

The 'CHANGED' flag is unused, so discard it to avoid confusion.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowse: ensure we erase all of old type name when updating position data.
NeilBrown [Sun, 11 Nov 2012 22:25:12 +0000 (09:25 +1100)]
Browse: ensure we erase all of old type name when updating position data.

Top-right of the merge window identifies the current location in
the merge.  It is variable length and right justified, so we need to make
sure we erase start of old value before writing new value.
Old code only allowed for a difference of three which didn't cope
with, for example, change from AlreadyApplied to Changed.
So be more thorough.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowse: git problem in rendering file list.
NeilBrown [Sun, 11 Nov 2012 21:21:34 +0000 (08:21 +1100)]
Browse: git problem in rendering file list.

Now that we display the last keystroke at the very end of the
first line it is wrong to 'clrtoeol' afterwards as that will
clear the next line.

So remove that, make sure we clear the spaces before the number
incase it becomes shorter, and tidy up the display for 'ESC...' too.

Reported-by: Manpreet Singh <junkblocker@yahoo.com>
Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoFreeBSD/*BSD build fixes for wiggle attached and a bug
Manpreet Singh [Sat, 6 Oct 2012 02:51:05 +0000 (19:51 -0700)]
FreeBSD/*BSD build fixes for wiggle attached and a bug

To build wiggle on FreeBSD/*BSD/Mac

 a) endian.h must be included from machine/endian.h.
 b) A small fix to dotest is needed to avoid an infinite loop.
 c) bash may not always be at /usr/bin/bash

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoFix some new compiler warnings.
Chris Peterson [Mon, 25 Jun 2012 13:29:37 +0000 (06:29 -0700)]
Fix some new compiler warnings.

hi Neil, I pulled wiggle's latest head from git and tried to compile on Mac
OS X. I ran into some problems when I tried to compile with -O3 without
-ggdb.

gcc -Werror treated some uninitialized variable warnings as errors. Some of
the warnings look like real bugs, but many were false positives. Compiling
with -O3 and -ggdb makes all the warnings "go away." :)

I've attached a patch to fix the following valid warnings:

cc1: warnings being treated as errors
parse.c: In function `parse_patch':
parse.c:268: warning: `c' may be used uninitialized in this function

vpatch.c: In function `next_melmnt':
vpatch.c:418: warning: `e.hash' may be used uninitialized in this function

vpatch.c: In function `prev_melmnt':
vpatch.c:472: warning: `e.hash' may be used uninitialized in this function

vpatch.c: In function `draw_mside':
vpatch.c:838: warning: `tag_attr' may be used uninitialized in this function
vpatch.c:837: warning: `tag' may be used uninitialized in this function

vpatch.c:1334: warning: `e' may be used uninitialized in this function

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agovpatch - use 'cols' in main window.
NeilBrown [Thu, 17 May 2012 07:26:13 +0000 (17:26 +1000)]
vpatch - use 'cols' in main window.

We currently don't use 'cols' - which causes a warning because
it is set by an assignment inside a macro..

The trick to quiet to warning causes different warnings on other
compilers.

We could just do
   rows = getmaxy()
but that is 'legacy' so I'd rather not.

So just find somewhere to use cols..

Reported-by: "P. Martin" <mrsmiley98@lycos.com>
Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoconfig.h: include different endian file for OS/X
NeilBrown [Thu, 17 May 2012 07:20:07 +0000 (17:20 +1000)]
config.h: include different endian file for OS/X

It seems that some OS/X users don't need any endian file, and
others need machine/endian.h
Odd, but we can satisfy both, so do so.

Patch-from: "P. Martin" <mrsmiley98@lycos.com>
Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoextract: removed unused variable: lineno
NeilBrown [Thu, 17 May 2012 07:14:44 +0000 (17:14 +1000)]
extract: removed unused variable: lineno

lineno isn't used, isn't initialised, but is incremented.
So some compilers ignore it completely and others complain
that it is no initialised.

Just remove it.

Reported-by: "P. Martin" <mrsmiley98@lycos.com>
Signed-off-by: NeilBrown <neilb@suse.de>
13 years agomerge: make some conflicts less conflicting.
NeilBrown [Tue, 15 May 2012 12:04:03 +0000 (22:04 +1000)]
merge: make some conflicts less conflicting.

If a 'conflict' has an empty 'before' section, then it is probably
to separate things - and insertion in the original (unmatched) and
and insertion in the result.
So split it into those two, but leave the result marked as a Conflict
as the order of the insertions is not clear.

For now this mostly affects -B which can display the conflict
more effectively.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: fix in_conflict detection while browsing.
NeilBrown [Tue, 15 May 2012 09:31:47 +0000 (19:31 +1000)]
Browser: fix in_conflict detection while browsing.

I forget to consider 'hi' and 'lo'.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoRelease 0.9 v0.9
Neil Brown [Mon, 14 May 2012 11:42:09 +0000 (21:42 +1000)]
Release 0.9

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoman page: add documentation for browse mode
Neil Brown [Mon, 14 May 2012 11:39:01 +0000 (21:39 +1000)]
man page: add documentation for browse mode

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: add a bit of colour to the file-list page.
Neil Brown [Mon, 14 May 2012 01:01:13 +0000 (11:01 +1000)]
Browser: add a bit of colour to the file-list page.

Set the colour of each file depending on whether it has
conflicts or wiggles or not.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoMerge: allow merging a multi-patch patchfile.
Neil Brown [Mon, 14 May 2012 01:01:11 +0000 (11:01 +1000)]
Merge: allow merging a multi-patch patchfile.

If
  wiggle -p -r patchfilename
is given, multiple patches - each identifying the target
file - are read from patchfilename and each is applied to the
relevant file.  Note that '-r' is required with this usage of
-p.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agomain: only pass training args to extract/do_diff/do_merge.
Neil Brown [Sun, 13 May 2012 23:17:35 +0000 (09:17 +1000)]
main: only pass training args to extract/do_diff/do_merge.

subtract/add optind to argc/argv before passing along.  That way
sub-functions don't need to access optind directly, and it will allow
us to pass other arg strings that are independent of optind.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoMove parse_patch and related to new parse.c
Neil Brown [Sun, 13 May 2012 23:17:32 +0000 (09:17 +1000)]
Move parse_patch and related to new parse.c

... so we can use it from wiggle.c

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoAllow load_file to load segments too.
Neil Brown [Sat, 12 May 2012 06:22:49 +0000 (16:22 +1000)]
Allow load_file to load segments too.

This will make it easier to process multi-file patches in
normal 'browse' mode.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoMinor man-page fixes.
Neil Brown [Sat, 12 May 2012 05:59:19 +0000 (15:59 +1000)]
Minor man-page fixes.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoImprove make clean
Neil Brown [Sat, 12 May 2012 05:38:13 +0000 (15:38 +1000)]
Improve make clean

"make clean" was leaving some generated file around.
Better remove them.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoAdd endian.h back to config.h
Neil Brown [Sat, 12 May 2012 05:37:08 +0000 (15:37 +1000)]
Add endian.h back to config.h

It turns out we do need it after all - but only include it if we
really do need it.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: improve decision on when to split window for merger view.
Neil Brown [Fri, 11 May 2012 09:42:24 +0000 (19:42 +1000)]
Browser: improve decision on when to split window for merger view.

Now that we are tracking in_conflict in the broswer we "know" when
we are in a conflict and so can only display the split window then,
rather than keeping some hysteresis until we leave any changes behind.
This makes large jumps ('N' 'P') display better.
Also don't allow hunk headers to look like a 'wiggled' section, because
they aren't really.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: improve rendering of conflicts in the the 'merge' view.
Neil Brown [Fri, 11 May 2012 09:30:22 +0000 (19:30 +1000)]
Browser: improve rendering of conflicts in the the 'merge' view.

I was ignoring the in_conflict value, so the 'original' side
of a conflict wasn't properly displayed, and so looked confusing.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowse: don't use background colors for added/deleted.
Neil Brown [Fri, 11 May 2012 03:48:00 +0000 (13:48 +1000)]
Browse: don't use background colors for added/deleted.

Coloured backgrounds are too loud.
So for added and deleted use red and green text.

Need to find a way to highlight lone spaces..

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowse: avoid display problems when changing view-mode.
Neil Brown [Fri, 11 May 2012 03:36:37 +0000 (13:36 +1000)]
Browse: avoid display problems when changing view-mode.

If we change mode so that the current end-of-line is no longer
visible, the display gets confused and add extra lines.  So when mode
changes, move backward then forward to ensure we are on a visibile
line.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoisolate_conflicts: don't look for eol that cannot be there.
Neil Brown [Thu, 10 May 2012 07:09:52 +0000 (17:09 +1000)]
isolate_conflicts: don't look for eol that cannot be there.

When looking for 'wiggles' we need to track whole lines
in the original file.  But when looking for an end-of-line
we shouldn't look at an merge-item that doesn't even
exist in the original file.

Reported-by: Chris Peterson <cpeterso@cpeterso.com>
Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoDon't include endian.h
Neil Brown [Thu, 10 May 2012 07:03:15 +0000 (17:03 +1000)]
Don't include endian.h

It turns out it isn't needed, and OS/X doesn't have it.

Reported-by: Chris Peterson <cpeterso@cpeterso.com>
Signed-off-by: NeilBrown <neilb@suse.de>
13 years agobrowser: display the type of the merge-node under the cursor.
Neil Brown [Thu, 10 May 2012 06:44:10 +0000 (16:44 +1000)]
browser: display the type of the merge-node under the cursor.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: allow cursor to be displayed in alternate pane.
Neil Brown [Thu, 10 May 2012 06:44:10 +0000 (16:44 +1000)]
Browser: allow cursor to be displayed in alternate pane.

This allows us to navigate all of the merge.
When in the alternate pane, movement is based on visibility there.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agobrowse/search: support selectively ignoring case.
Neil Brown [Thu, 10 May 2012 06:44:10 +0000 (16:44 +1000)]
browse/search: support selectively ignoring case.

We ignore case only if no upper chars.
Leave possiblity for explicit request for case-match later.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agobrowse/search: don't match strings in the hunk-header.
Neil Brown [Thu, 10 May 2012 06:44:10 +0000 (16:44 +1000)]
browse/search: don't match strings in the hunk-header.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: Support searching-again within the same line.
Neil Brown [Thu, 10 May 2012 06:44:10 +0000 (16:44 +1000)]
Browser: Support searching-again within the same line.

This requires mcontains to know which direction we are searching in,
and whether we want a new match, or whether the old one will do.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: change searchdir to -1 or +1
Neil Brown [Thu, 10 May 2012 06:44:10 +0000 (16:44 +1000)]
Browser: change searchdir to -1 or +1

instead of 1 or 0.  It is less confusing that way.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: Extend proper cursor tracking to search.
Neil Brown [Thu, 10 May 2012 06:44:10 +0000 (16:44 +1000)]
Browser: Extend proper cursor tracking to search.

Record the cursor in search anchors so we can go back to the
right location.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: Use KEY_BACKSPACE to recognise a backspace.
Neil Brown [Thu, 10 May 2012 06:44:10 +0000 (16:44 +1000)]
Browser: Use KEY_BACKSPACE to recognise a backspace.

It isn't always control-H

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBrowser: add a more effective cursor.
Neil Brown [Thu, 10 May 2012 06:44:07 +0000 (16:44 +1000)]
Browser: add a more effective cursor.

Create a proper cursor structure to track where on the screen we are.
Record the width of the current symbol so 'backward' works better.
Allow movement master start and end of line by going to previous or
next line.
Allow 'search' to locate the actual string, not just the line.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agobrowse: fix buffer underflow when closing directories.
Neil Brown [Wed, 9 May 2012 03:10:03 +0000 (13:10 +1000)]
browse: fix buffer underflow when closing directories.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoAdd another regression-test
Neil Brown [Wed, 9 May 2012 02:51:27 +0000 (12:51 +1000)]
Add another regression-test

This is the test case that lead to the recent context improvements
and others.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoInitial all of 'End' merger.
Neil Brown [Tue, 8 May 2012 10:29:57 +0000 (20:29 +1000)]
Initial all of 'End' merger.

This avoids invalid mem access when checking for ends_line at End.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoAvoid buffer overflow when checking for hunk header
Neil Brown [Tue, 8 May 2012 10:28:56 +0000 (20:28 +1000)]
Avoid buffer overflow when checking for hunk header

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agomerge: avoid including large Unmatched sections in a conflict.
Neil Brown [Tue, 8 May 2012 09:56:38 +0000 (19:56 +1000)]
merge: avoid including large Unmatched sections in a conflict.

A large Unmatched section can just distract from the real conflict
and doesn't give useful information.
So if we can close the conflict before a big Unmatched,
do so.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoEncourage more context into conflict reports.
Neil Brown [Tue, 8 May 2012 08:54:11 +0000 (18:54 +1000)]
Encourage more context into conflict reports.

Conflict reports currently don't contain much surrounding
'Extraneous' text.  When the patch didn't really apply at all,
this context is very useful.
So encourage at least 3 lines of context from Extraneous or
Unchanged texts.
If it mostly comes from Unchanged text it isn't quite so useful,
so reduce the requirement.

Update self-tests to match.  In most cases these are an improvement.
In a couple of case we maybe get a bit more context than really
necessary, but that is better than not enough.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agomerge: factor out is_cutpoint.
Neil Brown [Tue, 8 May 2012 07:09:23 +0000 (17:09 +1000)]
merge: factor out is_cutpoint.

We perform the same test several times, so make a function for it.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoImprove handling of hunk-header when merging.
Neil Brown [Tue, 8 May 2012 07:09:07 +0000 (17:09 +1000)]
Improve handling of hunk-header when merging.

If we are merging a patch, the patch will contain a number of
hunk-headers (essentially the @@ NN,MM @@) lines.

These should never appear in the merge, and must always line up with
end-of-line in the original as they represent a number of lines having
been deleted.

So:
  Cause these to each create a simple Extraneous merger, never
    combined with adjacent texts

  exclude them from any conflicts in isolate_conflict, so they
    can never appear in a merge

  Ensure that a preceeding 'Unmatched' finishes on an end-of-line.

Also update lots of self tests with improved results.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoEnsure that a hunk-header never appears in the middle of an Extraneous range.
Neil Brown [Tue, 8 May 2012 06:18:31 +0000 (16:18 +1000)]
Ensure that a hunk-header never appears in the middle of an Extraneous range.

A hunk header is always Extraneous.  However Extraneous text before it is
quite separate and is best kept separate.
Start a new Extraneous merger with each hunk header will make it easier
to detect hunk headers and handle them better.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agobrowser: clear the end of the split-window when needed.
Neil Brown [Mon, 7 May 2012 21:59:27 +0000 (07:59 +1000)]
browser: clear the end of the split-window when needed.

We would get some garbage when near the end of the diff.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoAdd --show-wiggle flag.
Neil Brown [Mon, 7 May 2012 21:59:27 +0000 (07:59 +1000)]
Add --show-wiggle flag.

--show-wiggle modifies --merge so that chunks which need to be
wiggled into place are presented as full conflicts with an
extra stanza which shows what the resulting wiggle would look like.

Suggested-by: Alessandro Salvatori <sandr8@gmail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoHandle some errors better in Browse mode.
Neil Brown [Mon, 7 May 2012 21:59:27 +0000 (07:59 +1000)]
Handle some errors better in Browse mode.

If the target file is missing or the patch is corrupt,
we really don't want to just crash.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoMake tracing code a bit cleaner and more organised.
Neil Brown [Mon, 7 May 2012 21:59:27 +0000 (07:59 +1000)]
Make tracing code a bit cleaner and more organised.

 WIGGLE_TRACE=1 ./wiggle ....

will turn on tracing.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoIntroduce xmalloc and use it.
Neil Brown [Mon, 7 May 2012 21:59:27 +0000 (07:59 +1000)]
Introduce xmalloc and use it.

Instead of sometimes calling die() when malloc fails and
sometimes not, introduce xmalloc() which always reports a message
and dies, and use it uniformly.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoRefactor do_diff slightly
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Refactor do_diff slightly

Combine come code that is common to 'word' and 'line' branches.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoBetter error message if split_patch fails for --extract
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Better error message if split_patch fails for --extract

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoSplit do_diff_words and do_diff_lines out from do_diff
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Split do_diff_words and do_diff_lines out from do_diff

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoMinor cleaning up in man page wiggle.1
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Minor cleaning up in man page wiggle.1

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoRemove extraction of base-name of command.
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Remove extraction of base-name of command.

We don't use this any more (as use of the name 'vpatch' was discarded)
so don't bother to extract it.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoSplit do_merge out from main() as a separate function.
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Split do_merge out from main() as a separate function.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoSplit do_diff() out from main()
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Split do_diff() out from main()

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agosplit 'extact' out of 'main' into a separate function.
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
split 'extact' out of 'main' into a separate function.

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoReplace hash.h with better hash function from CCAN
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Replace hash.h with better hash function from CCAN

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoFix 'make version'
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
Fix 'make version'

Since I change the format for the version string, this hasn't worked.

NeilBrown <neilb@suse.de>

13 years ago.gitignore updates
Neil Brown [Mon, 7 May 2012 21:59:26 +0000 (07:59 +1000)]
.gitignore updates

Signed-off-by: NeilBrown <neilb@suse.de>
13 years agoGeneral cleanups
Neil Brown [Mon, 7 May 2012 21:59:21 +0000 (07:59 +1000)]
General cleanups

- spelling fixes
- remove ifdefed-out code
- white space adjustments
- etc

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoChangeLog-typo
Barak A. Pearlmutter [Sun, 19 Feb 2012 03:29:07 +0000 (14:29 +1100)]
ChangeLog-typo

option --quite should read --quiet

14 years agoTest condition was being ignored
Alexandre Carmel-Veilleux [Thu, 8 Dec 2011 02:46:56 +0000 (21:46 -0500)]
Test condition was being ignored

Signed-off-by: Neil Brown <neilb@suse.de>
14 years agoSilences warnings about set-but-not-used variables.
Neil Brown [Wed, 7 Dec 2011 23:22:46 +0000 (10:22 +1100)]
Silences warnings about set-but-not-used variables.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoRemoved malloc.h, fixed off-by-one in bestmatch.c, it was silent in Linux and deadly...
Alexandre Carmel-Veilleux [Fri, 2 Dec 2011 13:55:08 +0000 (08:55 -0500)]
Removed malloc.h, fixed off-by-one in bestmatch.c, it was silent in Linux and deadly on Mac OS X.

Signed-off-by: Neil Brown <neilb@suse.de>
14 years agoStuff from months ago that I forget why
Neil Brown [Wed, 7 Dec 2011 23:13:16 +0000 (10:13 +1100)]
Stuff from months ago that I forget why

But it looks ok

Signed-off-by: NeilBrown <neilb@suse.de>