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

Reply via email to