Index: src/src/main.cpp
===================================================================
--- src/src/main.cpp	(Revision 2976)
+++ src/src/main.cpp	(Arbeitskopie)
@@ -173,6 +173,30 @@
 int idEditEncodingUnicode16LE = XRCID("idEditEncodingUnicode16LE");
 int idEditEncodingUnicode32BE = XRCID("idEditEncodingUnicode32BE");
 int idEditEncodingUnicode32LE = XRCID("idEditEncodingUnicode32LE");
+int idEditSpecialCommands = XRCID("idEditSpecialCommands");
+int idEditSpecialCommandsMovement = XRCID("idEditSpecialCommandsMovement");
+int idEditParaUp = XRCID("idEditParaUp");
+int idEditParaUpExtend = XRCID("idEditParaUpExtend");
+int idEditParaDown = XRCID("idEditParaDown");
+int idEditParaDownExtend = XRCID("idEditParaDownExtend");
+int idEditWordPartLeft = XRCID("idEditWordPartLeft");
+int idEditWordPartLeftExtend = XRCID("idEditWordPartLeftExtend");
+int idEditWordPartRight = XRCID("idEditWordPartRight");
+int idEditWordPartRightExtend = XRCID("idEditWordPartRightExtend");
+int idEditSpecialCommandsZoom = XRCID("idEditSpecialCommandsZoom");
+int idEditZoomIn = XRCID("idEditZoomIn");
+int idEditZoomOut = XRCID("idEditZoomOut");
+int idEditZoomReset = XRCID("idEditZoomReset");
+int idEditSpecialCommandsLine = XRCID("idEditSpecialCommandsLine");
+int idEditLineCut = XRCID("idEditLineCut");
+int idEditLineDelete = XRCID("idEditLineDelete");
+int idEditLineDuplicate = XRCID("idEditLineDuplicate");
+int idEditLineTranspose = XRCID("idEditLineTranspose");
+int idEditLineCopy = XRCID("idEditLineCopy");
+int idEditLinePaste = XRCID("idEditLinePaste");
+int idEditSpecialCommandsCase = XRCID("idEditSpecialCommandsCase");
+int idEditUpperCase = XRCID("idEditUpperCase");
+int idEditLowerCase = XRCID("idEditLowerCase");
 int idEditSelectAll = XRCID("idEditSelectAll");
 int idEditCommentSelected = XRCID("idEditCommentSelected");
 int idEditUncommentSelected = XRCID("idEditUncommentSelected");
@@ -351,6 +375,25 @@
     EVT_MENU(idEditEncodingUnicode16LE,  MainFrame::OnEditEncoding)
     EVT_MENU(idEditEncodingUnicode32BE,  MainFrame::OnEditEncoding)
     EVT_MENU(idEditEncodingUnicode32LE,  MainFrame::OnEditEncoding)
+    EVT_MENU(idEditParaUp,  MainFrame::OnEditParaUp)
+    EVT_MENU(idEditParaUpExtend,  MainFrame::OnEditParaUpExtend)
+    EVT_MENU(idEditParaDown,  MainFrame::OnEditParaDown)
+    EVT_MENU(idEditParaDownExtend,  MainFrame::OnEditParaDownExtend)
+    EVT_MENU(idEditWordPartLeft,  MainFrame::OnEditWordPartLeft)
+    EVT_MENU(idEditWordPartLeftExtend,  MainFrame::OnEditWordPartLeftExtend)
+    EVT_MENU(idEditWordPartRight,  MainFrame::OnEditWordPartRight)
+    EVT_MENU(idEditWordPartRightExtend,  MainFrame::OnEditWordPartRightExtend)
+    EVT_MENU(idEditZoomIn,  MainFrame::OnEditZoomIn)
+    EVT_MENU(idEditZoomOut,  MainFrame::OnEditZoomOut)
+    EVT_MENU(idEditZoomReset,  MainFrame::OnEditZoomReset)
+    EVT_MENU(idEditLineCut,  MainFrame::OnEditLineCut)
+    EVT_MENU(idEditLineDelete,  MainFrame::OnEditLineDelete)
+    EVT_MENU(idEditLineDuplicate,  MainFrame::OnEditLineDuplicate)
+    EVT_MENU(idEditLineTranspose,  MainFrame::OnEditLineTranspose)
+    EVT_MENU(idEditLineCopy,  MainFrame::OnEditLineCopy)
+    EVT_MENU(idEditLinePaste,  MainFrame::OnEditLinePaste)
+    EVT_MENU(idEditUpperCase,  MainFrame::OnEditUpperCase)
+    EVT_MENU(idEditLowerCase,  MainFrame::OnEditLowerCase)
     EVT_MENU(idEditSelectAll,  MainFrame::OnEditSelectAll)
     EVT_MENU(idEditBookmarksToggle,  MainFrame::OnEditBookmarksToggle)
     EVT_MENU(idEditBookmarksNext,  MainFrame::OnEditBookmarksNext)
@@ -2302,6 +2345,168 @@
         ed->Paste();
 }
 
+void MainFrame::OnEditParaUp(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        ed->GetControl()->ParaUp();
+    }
+}
+
+void MainFrame::OnEditParaUpExtend(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        ed->GetControl()->ParaUpExtend();
+    }
+}
+
+void MainFrame::OnEditParaDown(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        ed->GetControl()->ParaDown();
+    }
+}
+
+void MainFrame::OnEditParaDownExtend(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        ed->GetControl()->ParaDownExtend();
+    }
+}
+
+void MainFrame::OnEditWordPartLeft(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        ed->GetControl()->WordPartLeft();
+    }
+}
+
+void MainFrame::OnEditWordPartLeftExtend(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        ed->GetControl()->WordPartLeftExtend();
+    }
+}
+
+void MainFrame::OnEditWordPartRight(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        ed->GetControl()->WordPartRight();
+    }
+}
+
+void MainFrame::OnEditWordPartRightExtend(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        ed->GetControl()->WordPartRightExtend();
+    }
+}
+
+void MainFrame::OnEditZoomIn(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->ZoomIn();
+}
+
+void MainFrame::OnEditZoomOut(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->ZoomOut();
+}
+
+void MainFrame::OnEditZoomReset(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->SetZoom(0);
+}
+
+void MainFrame::OnEditLineCut(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->LineCut();
+}
+
+void MainFrame::OnEditLineDelete(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->LineDelete();
+}
+
+void MainFrame::OnEditLineDuplicate(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->LineDuplicate();
+}
+
+void MainFrame::OnEditLineTranspose(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->LineTranspose();
+}
+
+void MainFrame::OnEditLineCopy(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->LineCopy();
+}
+
+void MainFrame::OnEditLinePaste(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+    {
+        //We want to undo all in one step
+        ed->GetControl()->BeginUndoAction();
+        
+        int pos = ed->GetControl()->GetCurrentPos();
+        int line = ed->GetControl()->LineFromPosition(pos);
+        ed->GetControl()->GotoLine(line);
+        int column = pos - ed->GetControl()->GetCurrentPos();
+        ed->GetControl()->Paste();
+        pos = ed->GetControl()->GetCurrentPos();
+        ed->GetControl()->GotoPos(pos+column);
+        
+        ed->GetControl()->EndUndoAction();
+    }
+}
+
+void MainFrame::OnEditUpperCase(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->UpperCase();
+}
+
+void MainFrame::OnEditLowerCase(wxCommandEvent& event)
+{
+    cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
+    if (ed)
+        ed->GetControl()->LowerCase();
+}
+
 void MainFrame::OnEditSelectAll(wxCommandEvent& event)
 {
     cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
@@ -2813,6 +3018,7 @@
     mbar->Enable(idEditFolding, ed);
     mbar->Enable(idEditEOLMode, ed);
     mbar->Enable(idEditEncoding, ed);
+    mbar->Enable(idEditSpecialCommands, ed);
     mbar->Enable(idEditCommentSelected, ed);
     mbar->Enable(idEditAutoComplete, ed);
     mbar->Enable(idEditUncommentSelected, ed);
Index: src/src/main.h
===================================================================
--- src/src/main.h	(Revision 2976)
+++ src/src/main.h	(Arbeitskopie)
@@ -97,6 +97,25 @@
         void OnEditToggleFoldBlock(wxCommandEvent& event);
         void OnEditEOLMode(wxCommandEvent& event);
         void OnEditEncoding(wxCommandEvent& event);
+        void OnEditParaUp(wxCommandEvent& event);
+        void OnEditParaUpExtend(wxCommandEvent& event);
+        void OnEditParaDown(wxCommandEvent& event);
+        void OnEditParaDownExtend(wxCommandEvent& event);
+        void OnEditWordPartLeft(wxCommandEvent& event);
+        void OnEditWordPartLeftExtend(wxCommandEvent& event);
+        void OnEditWordPartRight(wxCommandEvent& event);
+        void OnEditWordPartRightExtend(wxCommandEvent& event);
+        void OnEditZoomIn(wxCommandEvent& event);
+        void OnEditZoomOut(wxCommandEvent& event);
+        void OnEditZoomReset(wxCommandEvent& event);
+        void OnEditLineCut(wxCommandEvent& event);
+        void OnEditLineDelete(wxCommandEvent& event);
+        void OnEditLineDuplicate(wxCommandEvent& event);
+        void OnEditLineTranspose(wxCommandEvent& event);
+        void OnEditLineCopy(wxCommandEvent& event);
+        void OnEditLinePaste(wxCommandEvent& event);
+        void OnEditUpperCase(wxCommandEvent& event);
+        void OnEditLowerCase(wxCommandEvent& event);
         void OnEditSelectAll(wxCommandEvent& event);
         void OnEditCommentSelected(wxCommandEvent& event);
         void OnEditUncommentSelected(wxCommandEvent& event);
Index: src/src/resources/main_menu.xrc
===================================================================
--- src/src/resources/main_menu.xrc	(Revision 2976)
+++ src/src/resources/main_menu.xrc	(Arbeitskopie)
@@ -349,6 +349,99 @@
           <checkable>1</checkable>
         </object>
       </object>
+      <object class="wxMenu" name="idEditSpecialCommands">
+        <label>Special commands</label>
+        <help>Commands to edit more efficiently, should be bound to hotkeys</help>
+        <object class="wxMenu" name="idEditSpecialCommandsMovement">
+          <label>Movement</label>
+          <object class="wxMenuItem" name="idEditParaUp">
+            <label>Paragraph up</label>
+            <help>Move caret one paragraph up</help>
+          </object>
+          <object class="wxMenuItem" name="idEditParaUpExtend">
+            <label>Paragraph up, extending selection</label>
+            <help>Move caret one paragraph up and extend the selection</help>
+          </object>
+          <object class="wxMenuItem" name="idEditParaDown">
+            <label>Paragraph down</label>
+            <help>Move caret one paragraph down</help>
+          </object>
+          <object class="wxMenuItem" name="idEditParaDownExtend">
+            <label>Paragraph down, extending selection</label>
+            <help>Move caret one paragraph down while extend the selection</help>
+          </object>
+          <object class="separator"/>
+          <object class="wxMenuItem" name="idEditWordPartLeft">
+            <label>Wordpart left</label>
+            <help>Move caret one wordpart to the left</help>
+          </object>
+          <object class="wxMenuItem" name="idEditWordPartLeftExtend">
+            <label>Wordpart left, extending selection</label>
+            <help>Move caret one wordpart to the left and extend the selection</help>
+          </object>
+          <object class="wxMenuItem" name="idEditWordPartRight">
+            <label>Wordpart right</label>
+            <help>Move caret one wordpart to the right</help>
+          </object>
+          <object class="wxMenuItem" name="idEditWordPartRightExtend">
+            <label>Wordpart right, extending selection</label>
+            <help>Move caret one wordpart to the right and extend the selection</help>
+          </object>
+        </object>
+        <object class="wxMenu" name="idEditSpecialCommandsZoom">
+          <label>Zoom</label>
+          <object class="wxMenuItem" name="idEditZoomIn">
+            <label>In</label>
+            <help>Increase font size</help>
+          </object>
+          <object class="wxMenuItem" name="idEditZoomOut">
+            <label>Out</label>
+            <help>Decrease font size</help>
+          </object>
+          <object class="wxMenuItem" name="idEditZoomReset">
+            <label>Reset</label>
+            <help>Set default font size</help>
+          </object>
+        </object>
+        <object class="wxMenu" name="idEditSpecialCommandsLine">
+          <label>Line</label>
+          <object class="wxMenuItem" name="idEditLineDuplicate">
+            <label>Duplicate</label>
+            <help>Duplicate current line</help>
+          </object>
+          <object class="wxMenuItem" name="idEditLineCut">
+            <label>Cut</label>
+            <help>Cut current line</help>
+          </object>
+          <object class="wxMenuItem" name="idEditLineDelete">
+            <label>Delete</label>
+            <help>Delete current line</help>
+          </object>
+          <object class="wxMenuItem" name="idEditLineTranspose">
+            <label>Transpose</label>
+            <help>Transpose current line with previous line</help>
+          </object>
+          <object class="wxMenuItem" name="idEditLineCopy">
+            <label>Copy</label>
+            <help>Copy current line</help>
+          </object>
+          <object class="wxMenuItem" name="idEditLinePaste">
+            <label>Paste</label>
+            <help>Paste before current line</help>
+          </object>
+        </object>
+        <object class="wxMenu" name="idEditSpecialCommandsCase">
+          <label>Case</label>
+          <object class="wxMenuItem" name="idEditUpperCase">
+            <label>Uppercase</label>
+            <help>Make selection uppercase</help>
+          </object>
+          <object class="wxMenuItem" name="idEditLowerCase">
+            <label>Lowercase</label>
+            <help>Make selection lowercase</help>
+          </object>
+        </object>
+      </object>
       <object class="separator"/>
       <object class="wxMenuItem" name="idEditSelectAll">
         <label>Select &amp;all</label>
