Package: mgdiff Version: 1.0-28 Severity: wishlist Tags: patch
When using mgdiff to assist in applying patches it is useful to be able to reload the diff to see the progress. Currently this requires either restarting, or using the menu to reopen files. This patch provides a new menu item "Reload Both" (bound to Meta-R), which will simply rerun the diff on the currently viewed files. -- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.15.4 Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Versions of packages mgdiff depends on: ii debianutils 2.16.1 Miscellaneous utilities specific t ii file 4.17-1 Determines file type using "magic" ii lesstif2 1:0.94.4-2 OSF/Motif 2.1 implementation relea ii libc6 2.3.6-13 GNU C Library: Shared libraries ii libice6 1:1.0.0-3 X11 Inter-Client Exchange library ii libsm6 1:1.0.0-4 X11 Session Management library ii libx11-6 2:1.0.0-8 X11 client-side library ii libxext6 1:1.0.0-4 X11 miscellaneous extension librar ii libxt6 1:1.0.0-5 X11 toolkit intrinsics library ii mawk 1.3.3-11 a pattern scanning and text proces mgdiff recommends no packages.
--- mgdiff-1.0/mgdiff.c 2006-10-22 13:34:10.000000000 +1000 +++ mgdiff-1.0.benno/mgdiff.c 2006-10-22 14:46:32.361502267 +1000 @@ -112,6 +112,7 @@ static Boolean all_selected (void); static Dimension get_preferred_width (Widget w); static char *mgdiff_basename (char *name); +static void reload_both (void); enum { WIDGET_LEFT = 0x10000000, @@ -567,14 +568,17 @@ set_cursor (toplevel); open_right_file (toplevel, str_fnamer); break; - case 3: /* save as */ + case 3: /* refresh */ + reload_both(); + break; + case 4: /* save as */ if (all_selected () == False) { if (modal_question (toplevel, "Mgdiff Save", unselected_text_msg) == False) break; } save_file (toplevel, di->first, str_fnamel); break; - case 4: /* save as left */ + case 5: /* save as left */ if (all_selected () == False) { if (modal_question (toplevel, "Mgdiff Save", unselected_text_msg) == False) break; @@ -583,7 +587,7 @@ save_as_filename (toplevel, di->first, str_fnamel); reset_cursor (toplevel); break; - case 5: /* save as right */ + case 6: /* save as right */ if (all_selected () == False) { if (modal_question (toplevel, "Mgdiff Save", unselected_text_msg) == False) break; @@ -593,7 +597,7 @@ reset_cursor (toplevel); break; - case 6: /* exit */ + case 7: /* exit */ exit_cb (w, NULL, NULL); break; default: @@ -1263,6 +1267,7 @@ XmVaSEPARATOR, XmVaPUSHBUTTON, NULL, NULL, NULL, NULL, XmVaPUSHBUTTON, NULL, NULL, NULL, NULL, + XmVaPUSHBUTTON, NULL, NULL, NULL, NULL, XmVaSEPARATOR, XmVaPUSHBUTTON, NULL, NULL, NULL, NULL, NULL); @@ -2081,6 +2086,42 @@ newss.findex[RIGHT] = value; } +/* Re-run diff on the current files and update the display */ +void reload_both(void) +{ + DiffInfo *newdi; + + set_cursor (toplevel); + + if (no_files_flag == True) { + /* Currently there are no files, + so don't do anything */ + return; + } + + newdi = build_diff_info (diffcmd, diffargs, str_fnamel, str_fnamer); + + free_diff_info (di); + di = newdi; + if (di->status == 2) { + no_files_flag = True; + toggle_openlr_sensitive (False); + toggle_saveas_sensitive (False, False, False); + free (str_fnamel); + free (str_snamel); + free (str_fnamer); + free (str_snamer); + str_snamel = strdup ("(no file)"); + str_snamer = strdup ("(no file)"); + str_fnamel = str_fnamer = NULL; + } + refresh (); + fake_adjust_label (fnamel); + reset_cursor (toplevel); + + handle_diff_errors (di); +} + void process_both_files (char *file1, char *name1, char *file2, char *name2) { DiffInfo *newdi; @@ -2246,9 +2287,9 @@ static void toggle_saveas_sensitive (Boolean saveas, Boolean save_left, Boolean save_right) { - XtSetSensitive (XtNameToWidget (file_menu, "button_3"), saveas); - XtSetSensitive (XtNameToWidget (file_menu, "button_4"), save_left); - XtSetSensitive (XtNameToWidget (file_menu, "button_5"), save_right); + XtSetSensitive (XtNameToWidget (file_menu, "button_4"), saveas); + XtSetSensitive (XtNameToWidget (file_menu, "button_5"), save_left); + XtSetSensitive (XtNameToWidget (file_menu, "button_6"), save_right); } /* --- mgdiff-1.0/Mgdiff.ad 2006-10-22 13:34:10.000000000 +1000 +++ mgdiff-1.0.benno/Mgdiff.ad 2006-10-22 14:40:46.759755210 +1000 @@ -210,18 +210,22 @@ *file_menu*button_2.Accelerator: Ctrl<Key>r *file_menu*button_2.AcceleratorText: Ctrl+R -*file_menu*button_3.XmString: Save As... -*file_menu*button_3.Mnemonic: S -*file_menu*button_3.Accelerator: Ctrl<Key>s -*file_menu*button_3.AcceleratorText: Ctrl+S - -*file_menu*button_4.XmString: Save As Left... -*file_menu*button_5.XmString: Save As Right... - -*file_menu*button_6.XmString: Exit -*file_menu*button_6.Mnemonic: E -*file_menu*button_6.Accelerator: Ctrl<Key>c -*file_menu*button_6.AcceleratorText: Ctrl+C +*file_menu*button_3.XmString: Reload Both +*file_menu*button_3.Accelerator: Meta<Key>r +*file_menu*button_3.AcceleratorText: Meta+R + +*file_menu*button_4.XmString: Save As... +*file_menu*button_4.Mnemonic: S +*file_menu*button_4.Accelerator: Ctrl<Key>s +*file_menu*button_4.AcceleratorText: Ctrl+S + +*file_menu*button_5.XmString: Save As Left... +*file_menu*button_6.XmString: Save As Right... + +*file_menu*button_7.XmString: Exit +*file_menu*button_7.Mnemonic: E +*file_menu*button_7.Accelerator: Ctrl<Key>c +*file_menu*button_7.AcceleratorText: Ctrl+C ! ! --- mgdiff-1.0/mgdiff.man 2006-10-22 13:34:10.000000000 +1000 +++ mgdiff-1.0.benno/mgdiff.man 2006-10-22 14:37:42.908442126 +1000 @@ -177,6 +177,10 @@ Brings up the "Open File" FileSelectionDialog to allow the user to specify a file to open and compare with the already opened left\-hand file. +.IP "\fBReload Both\fP" \n(XYP +.B Meta+R +.LP +Re-runs diff on both the currently opened files. .IP "\fBSave As...\fP" \n(XYP .B Ctrl+S .LP @@ -364,11 +368,12 @@ XmPushButtonGadget button_1 XmPushButtonGadget button_2 XmPushButtonGadget button_3 - XmSeparatorGadget separator_0 XmPushButtonGadget button_4 + XmSeparatorGadget separator_0 XmPushButtonGadget button_5 - XmSeparatorGadget separator_1 XmPushButtonGadget button_6 + XmSeparatorGadget separator_1 + XmPushButtonGadget button_7 XmRowColumn options_menu XmToggleButtonGadget button_0 XmToggleButtonGadget button_1