diff -urNad nedit-5.6~cvs20081118~/source/menu.c nedit-5.6~cvs20081118/source/menu.c
--- nedit-5.6~cvs20081118~/source/menu.c	2014-02-02 14:59:38.000000000 +1100
+++ nedit-5.6~cvs20081118/source/menu.c	2020-01-03 04:47:50.328075777 +1100
@@ -107,6 +107,10 @@
 static void pasteColCB(Widget w, XtPointer clientData, XtPointer callData); 
 static void shiftLeftCB(Widget w, XtPointer clientData, XtPointer callData);
 static void shiftRightCB(Widget w, XtPointer clientData, XtPointer callData);
+#ifdef TAB_SELECT_SHIFT_TEXT_PATCH
+static void shiftLeftShiftCB(Widget w, XtPointer clientData, XtPointer callData);
+static void shiftRightShiftCB(Widget w, XtPointer clientData, XtPointer callData);
+#endif
 static void findCB(Widget w, XtPointer clientData, XtPointer callData);
 static void findSameCB(Widget w, XtPointer clientData, XtPointer callData);
 static void findSelCB(Widget w, XtPointer clientData, XtPointer callData);
@@ -741,10 +745,18 @@
     createMenuSeparator(menuPane, "sep2", SHORT);
     createMenuItem(menuPane, "shiftLeft", "Shift Left", 'L',
     	    shiftLeftCB, window, SHORT);
+#ifdef TAB_SELECT_SHIFT_TEXT_PATCH 
+    createFakeMenuItem(menuPane, "shiftLeftShift", shiftLeftShiftCB, window);
+#else
     createFakeMenuItem(menuPane, "shiftLeftShift", shiftLeftCB, window);
+#endif
     createMenuItem(menuPane, "shiftRight", "Shift Right", 'g',
     	    shiftRightCB, window, SHORT);
+#ifdef TAB_SELECT_SHIFT_TEXT_PATCH 
+    createFakeMenuItem(menuPane, "shiftRightShift", shiftRightShiftCB, window);
+#else
     createFakeMenuItem(menuPane, "shiftRightShift", shiftRightCB, window);
+#endif
     window->lowerItem=createMenuItem(menuPane, "lowerCase", "Lower-case", 'w',
     	    doActionCB, "lowercase", SHORT);
     window->upperItem=createMenuItem(menuPane, "upperCase", "Upper-case", 'e',
@@ -1413,6 +1425,40 @@
     	    ((XmAnyCallbackStruct *)callData)->event, NULL, 0);
 }
 
+#ifdef TAB_SELECT_SHIFT_TEXT_PATCH
+static void shiftLeftShiftCB(Widget w, XtPointer clientData, XtPointer callData)
+{	
+    HidePointerOnKeyedEvent(WidgetToWindow(MENU_WIDGET(w))->lastFocus,
+            ((XmAnyCallbackStruct *)callData)->event);
+    XtCallActionProc(WidgetToWindow(MENU_WIDGET(w))->lastFocus,
+    	    "shift_left_by_tab",
+    	    ((XmAnyCallbackStruct *)callData)->event, NULL, 0);
+}
+
+static void shiftRightShiftCB(Widget w, XtPointer clientData, XtPointer callData)
+{
+    WindowInfo *window = WidgetToWindow(MENU_WIDGET(w));
+    if(window->buffer->primary.selected)
+    {
+        HidePointerOnKeyedEvent(WidgetToWindow(MENU_WIDGET(w))->lastFocus,
+                ((XmAnyCallbackStruct *)callData)->event);
+        XtCallActionProc(WidgetToWindow(MENU_WIDGET(w))->lastFocus,
+        	    "shift_right_by_tab",
+        	    ((XmAnyCallbackStruct *)callData)->event, NULL, 0);    
+    }
+    else
+    {
+    	/*just add the 'tab' character as normal*/
+	XEvent *event = ((XmAnyCallbackStruct *)callData)->event;
+	/*
+	tw->text.autoWrapPastedText
+	*/
+	Widget tw = window->textArea;
+	TextInsertAtCursor(tw, "\t", event, True, True);
+    }
+}
+#endif
+
 static void findCB(Widget w, XtPointer clientData, XtPointer callData)
 {
     HidePointerOnKeyedEvent(WidgetToWindow(MENU_WIDGET(w))->lastFocus,
diff -urNad nedit-5.6~cvs20081118~/source/nedit.c nedit-5.6~cvs20081118/source/nedit.c
--- nedit-5.6~cvs20081118~/source/nedit.c	2014-02-02 14:59:38.000000000 +1100
+++ nedit-5.6~cvs20081118/source/nedit.c	2020-01-03 04:45:31.484077710 +1100
@@ -266,12 +266,21 @@
     "*editMenu.delete.acceleratorText: Del",
     "*editMenu.selectAll.accelerator: Ctrl<Key>a",
     "*editMenu.selectAll.acceleratorText: Ctrl+A",
+    #ifdef TAB_SELECT_SHIFT_TEXT_PATCH
+    "*editMenu.shiftLeft.accelerator: Ctrl<Key>9",
+    "*editMenu.shiftLeft.acceleratorText: Shift Tab",
+    "*editMenu.shiftLeftShift.accelerator: Shift<Key>Tab",
+    "*editMenu.shiftRight.accelerator: Ctrl<Key>0",
+    "*editMenu.shiftRight.acceleratorText: Tab",
+    "*editMenu.shiftRightShift.accelerator: <Key>Tab",
+    #else
     "*editMenu.shiftLeft.accelerator: Ctrl<Key>9",
     "*editMenu.shiftLeft.acceleratorText: [Shift]Ctrl+9",
     "*editMenu.shiftLeftShift.accelerator: Shift Ctrl<Key>9",
     "*editMenu.shiftRight.accelerator: Ctrl<Key>0",
     "*editMenu.shiftRight.acceleratorText: [Shift]Ctrl+0",
     "*editMenu.shiftRightShift.accelerator: Shift Ctrl<Key>0",
+    #endif
     "*editMenu.upperCase.accelerator: Ctrl<Key>6",
     "*editMenu.upperCase.acceleratorText: Ctrl+6",
     "*editMenu.lowerCase.accelerator: Shift Ctrl<Key>6",
diff -urNad nedit-5.6~cvs20081118~/source/nedit.h nedit-5.6~cvs20081118/source/nedit.h
--- nedit-5.6~cvs20081118~/source/nedit.h	2014-02-02 14:59:38.000000000 +1100
+++ nedit-5.6~cvs20081118/source/nedit.h	2020-01-03 04:44:38.524078447 +1100
@@ -45,6 +45,8 @@
 #define NEDIT_VERSION           5
 #define NEDIT_REVISION          5
 
+#define TAB_SELECT_SHIFT_TEXT_PATCH
+
 /* Some default colors */
 #define NEDIT_DEFAULT_FG        "black"
 #define NEDIT_DEFAULT_TEXT_BG   "rgb:e5/e5/e5"
