    Close without prompting if close-tab button pressed with Shift or Control

diff -ur nedit_official nedit_mod
diff -ur nedit_official/source/window.c nedit_mod/source/window.c
--- nedit_official/source/window.c	2006-08-13 20:41:54.000000000 +0200
+++ nedit_mod/source/window.c	2006-08-25 15:10:30.359375000 +0200
@@ -158,7 +158,7 @@
 static Widget manageToolBars(Widget toolBarsForm);
 static void hideTearOffs(Widget menuPane);
 static void CloseDocumentWindow(Widget w, WindowInfo *window, XtPointer callData);
-static void closeTabCB(Widget w, Widget mainWin, caddr_t callData);
+static void closeTabCB(Widget w, Widget mainWin, XmAnyCallbackStruct *callData);
 static void raiseTabCB(Widget w, XtPointer clientData, XtPointer callData);
 static Widget createTextArea(Widget parent, WindowInfo *window, int rows,
         int cols, int emTabDist, char *delimiters, int wrapMargin,
@@ -4583,10 +4583,15 @@
     CloseFileAndWindow((WindowInfo*)clientData, PROMPT_SBC_DIALOG_RESPONSE);
 }
 
+static void closeTabNoSaveProc(XtPointer clientData, XtIntervalId *id)
+{
+    CloseFileAndWindow((WindowInfo*)clientData, NO_SBC_DIALOG_RESPONSE);
+}
+
 /*
 ** callback to close-tab button.
 */
-static void closeTabCB(Widget w, Widget mainWin, caddr_t callData)
+static void closeTabCB(Widget w, Widget mainWin, XmAnyCallbackStruct *callData)
 {
     /* FIXME: XtRemoveActionHook() related coredump
     
@@ -4605,8 +4610,15 @@
        While its actual mechanism is not well understood, we somehow 
        managed to workaround the bug by delaying the action of closing
        the tab. For now. */
+
+    XtTimerCallbackProc pCloseTabProc = closeTabProc;
+
+    /* don't prompt for save if the Ctrl or Shift key was pressed */
+    if (callData->event->xbutton.state & (ShiftMask | ControlMask))
+        pCloseTabProc = closeTabNoSaveProc;
+
     XtAppAddTimeOut(XtWidgetToApplicationContext(w), 0,
-    	    closeTabProc, GetTopDocument(mainWin));
+            pCloseTabProc, GetTopDocument(mainWin));
 }
 
 /*
