Developer forums (C::B DEVELOPMENT STRICTLY!) > Development

Events

<< < (5/6) > >>

Alpha:
Here is an initial patch to show functionality.  It currently has no settings; pressing any of:
' " ( ) [ ] < > { }
will trigger it (the final position of the caret is determined by the direction of the brace).

Currently, the altered text is deselected after activating.  Does anyone like the idea of leaving " selected (but not the others) so that, for example, a user can select something and type:
"(wxT
to wrap it like:
wxT("sample text")

When creating a string with ", would it be expected behavior to escape any double quotes in between, or should I leave it as it currently is?

Because of the way wxWidgets implements the EVT_KEY_DOWN event, I am fairly certain it will not function properly on other keyboard layouts.  I am working on a method of portablizing this.

When I get to creating the option of choosing between using keyboard shortcuts or the current method of activation (and, of course, disabling it completely), is there of set of six shortcuts (it could be fewer if only certain features are wanted) available that works on all keyboard layouts?


--- Code: ---Index: src/sdk/cbstyledtextctrl.cpp
===================================================================
--- src/sdk/cbstyledtextctrl.cpp (revision 7568)
+++ src/sdk/cbstyledtextctrl.cpp (working copy)
@@ -123,6 +123,148 @@
 
 void cbStyledTextCtrl::OnKeyDown(wxKeyEvent& event)
 {
+    wxString selectedText = GetSelectedText();
+    if (selectedText != wxEmptyString && !(event.AltDown() || event.ControlDown()))
+    {
+        switch (event.GetKeyCode())
+        {
+            case _T('\''):  // ' "
+            {
+                BeginUndoAction();
+                DeleteBack();
+                if (event.ShiftDown())
+                {
+                    InsertText(GetCurrentPos(), wxT("\"") + selectedText + wxT("\""));
+                }
+                else
+                {
+                    InsertText(GetCurrentPos(), wxT("'") + selectedText + wxT("'"));
+                }
+                SetEmptySelection(GetCurrentPos() + selectedText.Length() + 2);
+                EndUndoAction();
+                return;
+            }
+#ifdef __WXMSW__
+            case _T('9'):   // ( for wxMSW
+            {
+                if (!event.ShiftDown())
+                {
+                    break;
+                }
+            }
+#else
+            case _T('('):   // ( for wxGTK
+#endif
+            {
+                BeginUndoAction();
+                DeleteBack();
+                InsertText(GetCurrentPos(), wxT("(") + selectedText + wxT(")"));
+                EndUndoAction();
+                return;
+            }
+#ifdef __WXMSW__
+            case _T('0'):   // ) for wxMSW
+            {
+                if (!event.ShiftDown())
+                {
+                    break;
+                }
+            }
+#else
+            case _T(')'):   // ) for wxGTK
+#endif
+            {
+                BeginUndoAction();
+                DeleteBack();
+                InsertText(GetCurrentPos(), wxT("(") + selectedText + wxT(")"));
+                SetEmptySelection(GetCurrentPos() + selectedText.Length() + 2);
+                EndUndoAction();
+                return;
+            }
+            case _T(','):   // <
+            {
+                if (!event.ShiftDown())
+                {
+                    break;
+                }
+                BeginUndoAction();
+                DeleteBack();
+                InsertText(GetCurrentPos(), wxT("<") + selectedText + wxT(">"));
+                EndUndoAction();
+                return;
+            }
+            case _T('.'):   // >
+            {
+                if (!event.ShiftDown())
+                {
+                    break;
+                }
+                BeginUndoAction();
+                DeleteBack();
+                InsertText(GetCurrentPos(), wxT("<") + selectedText + wxT(">"));
+                SetEmptySelection(GetCurrentPos() + selectedText.Length() + 2);
+                EndUndoAction();
+                return;
+            }
+            case _T('['):   // [ {
+            {
+                BeginUndoAction();
+                if (event.ShiftDown())
+                {
+                    int startLine = LineFromPosition(GetSelectionStart());
+                    int endLine = LineFromPosition(GetSelectionEnd());
+                    if(startLine == endLine)
+                    {
+                        Home();
+                    }
+                    Tab();
+                    SetEmptySelection(GetLineEndPosition(endLine));
+                    NewLine();
+                    BackTab();
+                    InsertText(GetCurrentPos(), wxT("}"));
+                    SetEmptySelection(GetLineEndPosition(startLine - 1));
+                    NewLine();
+                    InsertText(GetCurrentPos(), wxT("{"));
+                }
+                else
+                {
+                    DeleteBack();
+                    InsertText(GetCurrentPos(), wxT("[") + selectedText + wxT("]"));
+                }
+                EndUndoAction();
+                return;
+            }
+            case _T(']'):   // ] }
+            {
+                BeginUndoAction();
+                if (event.ShiftDown())
+                {
+                    int startLine = LineFromPosition(GetSelectionStart());
+                    int endLine = LineFromPosition(GetSelectionEnd());
+                    if(startLine == endLine)
+                    {
+                        Home();
+                    }
+                    Tab();
+                    SetEmptySelection(GetLineEndPosition(startLine - 1));
+                    NewLine();
+                    InsertText(GetCurrentPos(), wxT("{"));
+                    SetEmptySelection(GetLineEndPosition(endLine + 1));
+                    NewLine();
+                    BackTab();
+                    InsertText(GetCurrentPos(), wxT("}"));
+                }
+                else
+                {
+                    DeleteBack();
+                    InsertText(GetCurrentPos(), wxT("[") + selectedText + wxT("]"));
+                    SetEmptySelection(GetCurrentPos() + selectedText.Length() + 2);
+                }
+                EndUndoAction();
+                return;
+            }
+        }
+    }
     switch (event.GetKeyCode())
     {
         case WXK_TAB:


--- End code ---

Awaiting reports of functionality (or failure)...

Alpha:
Changes in this patch:

* Works regardless of keyboard layout (I think)
* Undo is now two steps; the first step will revert it to what would normally happen (without this patch's modification)
* When creating a string, the relevant symbols are escaped
* Strings remain selected

--- Code: ---Index: src/sdk/cbeditor.cpp
===================================================================
--- src/sdk/cbeditor.cpp (revision 7582)
+++ src/sdk/cbeditor.cpp (working copy)
@@ -3022,6 +3022,134 @@
     static int autoUnIndentValue = -1;
     static int autoUnIndentLine = -1;
 
+    if (!control->GetLastSelectedText().IsEmpty())
+    {
+        wxString selectedText = control->GetLastSelectedText();
+        switch (ch)
+        {
+            case _T('\''):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                selectedText.Replace(wxT("\\'"), wxT("'"));
+                selectedText.Replace(wxT("'"), wxT("\\'"));
+                control->InsertText(pos - 1, wxT("'") + selectedText + wxT("'"));
+                control->SetEmptySelection(pos + selectedText.Length() + 1);
+                control->EndUndoAction();
+                return;
+            }
+            case _T('"'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                selectedText.Replace(wxT("\\\""), wxT("\""));
+                selectedText.Replace(wxT("\""), wxT("\\\""));
+                control->InsertText(pos - 1, wxT("\"") + selectedText + wxT("\""));
+                control->SetCurrentPos(pos + selectedText.Length() + 1);
+                control->EndUndoAction();
+                return;
+            }
+            case _T('('):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("(") + selectedText + wxT(")"));
+                control->EndUndoAction();
+                return;
+            }
+            case _T(')'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("(") + selectedText + wxT(")"));
+                control->SetEmptySelection(pos + selectedText.Length() + 1);
+                control->EndUndoAction();
+                return;
+            }
+            case _T('['):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("[") + selectedText + wxT("]"));
+                control->EndUndoAction();
+                return;
+            }
+            case _T(']'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("[") + selectedText + wxT("]"));
+                control->SetEmptySelection(pos + selectedText.Length() + 1);
+                control->EndUndoAction();
+                return;
+            }
+            case _T('<'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("<") + selectedText + wxT(">"));
+                control->EndUndoAction();
+                return;
+            }
+            case _T('>'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("<") + selectedText + wxT(">"));
+                control->SetEmptySelection(pos + selectedText.Length() + 1);
+                control->EndUndoAction();
+                return;
+            }
+            case _T('{'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, selectedText);
+                control->SetSelectionVoid(pos - 1, pos + selectedText.Length() - 1);
+                int startLine = control->LineFromPosition(control->GetSelectionStart());
+                int endLine = control->LineFromPosition(control->GetSelectionEnd());
+                if(startLine == endLine)
+                {
+                    control->Home();
+                }
+                control->Tab();
+                control->SetEmptySelection(control->GetLineEndPosition(endLine));
+                control->NewLine();
+                control->BackTab();
+                control->InsertText(control->GetCurrentPos(), wxT("}"));
+                control->SetEmptySelection(control->GetLineEndPosition(startLine - 1));
+                control->NewLine();
+                control->InsertText(control->GetCurrentPos(), wxT("{"));
+                control->EndUndoAction();
+                return;
+            }
+            case _T('}'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, selectedText);
+                control->SetSelectionVoid(pos - 1, pos + selectedText.Length() - 1);
+                int startLine = control->LineFromPosition(control->GetSelectionStart());
+                int endLine = control->LineFromPosition(control->GetSelectionEnd());
+                if(startLine == endLine)
+                {
+                    control->Home();
+                }
+                control->Tab();
+                control->SetEmptySelection(control->GetLineEndPosition(startLine - 1));
+                control->NewLine();
+                control->InsertText(control->GetCurrentPos(), wxT("{"));
+                control->SetEmptySelection(control->GetLineEndPosition(endLine + 1));
+                control->NewLine();
+                control->BackTab();
+                control->InsertText(control->GetCurrentPos(), wxT("}"));
+                control->CharRight();
+                control->EndUndoAction();
+                return;
+            }
+        }
+    }
+
     // indent
     if (ch == _T('\n'))
     {
Index: src/sdk/cbstyledtextctrl.cpp
===================================================================
--- src/sdk/cbstyledtextctrl.cpp (revision 7582)
+++ src/sdk/cbstyledtextctrl.cpp (working copy)
@@ -123,6 +123,8 @@
 
 void cbStyledTextCtrl::OnKeyDown(wxKeyEvent& event)
 {
+    m_lastSelectedText = GetSelectedText();
+
     switch (event.GetKeyCode())
     {
         case WXK_TAB:
Index: src/include/cbstyledtextctrl.h
===================================================================
--- src/include/cbstyledtextctrl.h (revision 7582)
+++ src/include/cbstyledtextctrl.h (working copy)
@@ -22,6 +22,7 @@
         cbStyledTextCtrl(wxWindow* pParent, int id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0);
         virtual ~cbStyledTextCtrl();
         wxDateTime GetLastFocusTime() const {return m_lastFocusTime;}
+        wxString GetLastSelectedText() const {return m_lastSelectedText;}
 
         void EnableTabSmartJump(bool enable = true);
         bool IsCharacter(int style);
@@ -52,6 +53,7 @@
         int m_bracePosition;
         int m_lastPosition;
         bool m_tabSmartJump;
+        wxString m_lastSelectedText;
 
         static std::map<int, std::set<int> > CharacterLexerStyles, StringLexerStyles, PreprocessorLexerStyles, CommentLexerStyles;
 

--- End code ---

Alpha:
Changes in this patch:

* Activation is now controlled by an option (Settings->Editor... "Selection brace completion")
* Removed a bit of redundant code

--- Code: ---Index: src/sdk/editorconfigurationdlg.cpp
===================================================================
--- src/sdk/editorconfigurationdlg.cpp (revision 7582)
+++ src/sdk/editorconfigurationdlg.cpp (working copy)
@@ -20,7 +20,7 @@
     #include <wx/stattext.h>
     #include <wx/textdlg.h>
     #include <wx/xrc/xmlres.h>
-   
+
     #include "manager.h"
     #include "configmanager.h"
     #include "pluginmanager.h"
@@ -118,6 +118,7 @@
     XRCCTRL(*this, "chkUseChangebar", wxCheckBox)->SetValue(m_EnableChangebar);
     XRCCTRL(*this, "chkShowIndentGuides", wxCheckBox)->SetValue(cfg->ReadBool(_T("/show_indent_guides"), false));
     XRCCTRL(*this, "chkBraceSmartIndent", wxCheckBox)->SetValue(cfg->ReadBool(_T("/brace_smart_indent"), true));
+    XRCCTRL(*this, "chkSelectionBraceCompletion", wxCheckBox)->SetValue(cfg->ReadBool(_T("/selection_brace_completion"), false));
     XRCCTRL(*this, "chkTabIndents", wxCheckBox)->SetValue(cfg->ReadBool(_T("/tab_indents"), true));
     XRCCTRL(*this, "chkBackspaceUnindents", wxCheckBox)->SetValue(cfg->ReadBool(_T("/backspace_unindents"), true));
     XRCCTRL(*this, "chkWordWrap", wxCheckBox)->SetValue(cfg->ReadBool(_T("/word_wrap"), false));
@@ -795,6 +796,7 @@
         cfg->Write(_T("/use_tab"),                             XRCCTRL(*this, "chkUseTab", wxCheckBox)->GetValue());
         cfg->Write(_T("/show_indent_guides"),                  XRCCTRL(*this, "chkShowIndentGuides", wxCheckBox)->GetValue());
         cfg->Write(_T("/brace_smart_indent"),                  XRCCTRL(*this, "chkBraceSmartIndent", wxCheckBox)->GetValue());
+        cfg->Write(_T("/selection_brace_completion"),          XRCCTRL(*this, "chkSelectionBraceCompletion", wxCheckBox)->GetValue());
         cfg->Write(_T("/tab_indents"),                         XRCCTRL(*this, "chkTabIndents", wxCheckBox)->GetValue());
         cfg->Write(_T("/backspace_unindents"),                 XRCCTRL(*this, "chkBackspaceUnindents", wxCheckBox)->GetValue());
         cfg->Write(_T("/word_wrap"),                           XRCCTRL(*this, "chkWordWrap", wxCheckBox)->GetValue());
Index: src/sdk/cbeditor.cpp
===================================================================
--- src/sdk/cbeditor.cpp (revision 7582)
+++ src/sdk/cbeditor.cpp (working copy)
@@ -2897,7 +2897,7 @@
             wxTreeItemId sel = Manager::Get()->GetProjectManager()->GetTreeSelection();
             if (sel.IsOk())
                 tree->SelectItem(sel, false);
-           
+
             const wxTreeItemId &itemId = m_pProjectFile->GetTreeItemId();
             if (itemId.IsOk())
             {
@@ -3022,6 +3022,104 @@
     static int autoUnIndentValue = -1;
     static int autoUnIndentLine = -1;
 
+    bool SelectionBraceCompletion = Manager::Get()->GetConfigManager(_T("editor"))->ReadBool(_T("/selection_brace_completion"), false);
+    if (SelectionBraceCompletion && !control->GetLastSelectedText().IsEmpty())
+    {
+        wxString selectedText = control->GetLastSelectedText();
+        switch (ch)
+        {
+            case _T('\''):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                selectedText.Replace(wxT("\\'"), wxT("'"));
+                selectedText.Replace(wxT("'"), wxT("\\'"));
+                control->InsertText(pos - 1, wxT("'") + selectedText + wxT("'"));
+                control->SetEmptySelection(pos + selectedText.Length() + 1);
+                control->EndUndoAction();
+                return;
+            }
+            case _T('"'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                selectedText.Replace(wxT("\\\""), wxT("\""));
+                selectedText.Replace(wxT("\""), wxT("\\\""));
+                control->InsertText(pos - 1, wxT("\"") + selectedText + wxT("\""));
+                control->SetCurrentPos(pos + selectedText.Length() + 1);
+                control->EndUndoAction();
+                return;
+            }
+            case _T('('):
+            case _T(')'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("(") + selectedText + wxT(")"));
+                if(ch == _T(')'))
+                {
+                    control->SetEmptySelection(pos + selectedText.Length() + 1);
+                }
+                control->EndUndoAction();
+                return;
+            }
+            case _T('['):
+            case _T(']'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("[") + selectedText + wxT("]"));
+                if(ch == _T(']'))
+                {
+                    control->SetEmptySelection(pos + selectedText.Length() + 1);
+                }
+                control->EndUndoAction();
+                return;
+            }
+            case _T('<'):
+            case _T('>'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, wxT("<") + selectedText + wxT(">"));
+                if(ch == _T('>'))
+                {
+                    control->SetEmptySelection(pos + selectedText.Length() + 1);
+                }
+                control->EndUndoAction();
+                return;
+            }
+            case _T('{'):
+            case _T('}'):
+            {
+                control->BeginUndoAction();
+                control->DeleteBack();
+                control->InsertText(pos - 1, selectedText);
+                control->SetSelectionVoid(pos - 1, pos + selectedText.Length() - 1);
+                int startLine = control->LineFromPosition(control->GetSelectionStart());
+                int endLine = control->LineFromPosition(control->GetSelectionEnd());
+                if(startLine == endLine)
+                {
+                    control->Home();
+                }
+                control->Tab();
+                control->SetEmptySelection(control->GetLineEndPosition(endLine));
+                control->NewLine();
+                control->BackTab();
+                control->InsertText(control->GetCurrentPos(), wxT("}"));
+                control->SetEmptySelection(control->GetLineEndPosition(startLine - 1));
+                control->NewLine();
+                control->InsertText(control->GetCurrentPos(), wxT("{"));
+                if(ch == _T('}'))
+                {
+                    control->SetEmptySelection(control->GetLineEndPosition(endLine + 2));
+                }
+                control->EndUndoAction();
+                return;
+            }
+        }
+    }
+
     // indent
     if (ch == _T('\n'))
     {
Index: src/sdk/cbstyledtextctrl.cpp
===================================================================
--- src/sdk/cbstyledtextctrl.cpp (revision 7582)
+++ src/sdk/cbstyledtextctrl.cpp (working copy)
@@ -123,6 +123,8 @@
 
 void cbStyledTextCtrl::OnKeyDown(wxKeyEvent& event)
 {
+    m_lastSelectedText = GetSelectedText();
+
     switch (event.GetKeyCode())
     {
         case WXK_TAB:
Index: src/sdk/resources/editor_configuration.xrc
===================================================================
--- src/sdk/resources/editor_configuration.xrc (revision 7582)
+++ src/sdk/resources/editor_configuration.xrc (working copy)
@@ -154,7 +154,7 @@
  </object>
  <object class="sizeritem">
  <object class="wxStaticBoxSizer">
- <label>End-of-line options</label>
+ <label>Highlight occurrences</label>
  <orient>wxVERTICAL</orient>
  <object class="sizeritem">
  <object class="wxFlexGridSizer">
@@ -162,64 +162,54 @@
  <vgap>4</vgap>
  <hgap>4</hgap>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkShowEOL">
- <label>Show end-of-line chars</label>
+ <object class="wxCheckBox" name="chkHighlightOccurrences">
+ <label>Highlight occurrences</label>
+ <checked>1</checked>
  </object>
  <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
  </object>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkStripTrailings">
- <label>Strip trailing blanks</label>
+ <object class="wxCheckBox" name="chkHighlightOccurrencesCaseSensitive">
+ <label>Case sensitive</label>
  <checked>1</checked>
  </object>
- <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <flag>wxLEFT|wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <border>10</border>
  </object>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkEnsureFinalEOL">
- <label>End files with blank line</label>
+ <object class="wxCheckBox" name="chkHighlightOccurrencesWholeWord">
+ <label>Whole words only</label>
+ <checked>1</checked>
  </object>
- <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <flag>wxLEFT|wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <border>10</border>
  </object>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkEnsureConsistentEOL">
- <label>Ensure consistent EOLs</label>
- </object>
- <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
- </object>
- <object class="sizeritem">
  <object class="wxBoxSizer">
  <object class="sizeritem">
- <object class="wxStaticText" name="ID_STATICTEXT2">
- <label>End-of-line mode:</label>
+ <object class="wxStaticText" name="stHighlightColour">
+ <label>Highlight colour</label>
  </object>
- <flag>wxTOP|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
- <border>4</border>
+ <flag>wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
  </object>
  <object class="sizeritem">
- <object class="wxComboBox" name="cmbEOLMode">
- <content>
- <item>CR LF</item>
- <item>CR</item>
- <item>LF</item>
- </content>
- <style>wxCB_READONLY</style>
+ <object class="wxButton" name="btnHighlightColour">
+ <label>...</label>
+ <bg>#FF0000</bg>
  </object>
- <flag>wxLEFT|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
- <border>16</border>
- <option>1</option>
+ <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
  </object>
  </object>
- <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
- <option>1</option>
+ <flag>wxLEFT|wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <border>10</border>
  </object>
  </object>
  <flag>wxALL|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
  <border>4</border>
- <option>1</option>
  </object>
  </object>
  <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
- <border>4</border>
  <option>1</option>
  </object>
  <object class="sizeritem">
@@ -260,17 +250,23 @@
  <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
  </object>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkShowIndentGuides">
- <label>Show indentation guides</label>
+ <object class="wxCheckBox" name="chkBraceSmartIndent">
+ <label>Brace Smart Indent</label>
  </object>
  <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
  </object>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkBraceSmartIndent">
- <label>Brace Smart Indent</label>
+ <object class="wxCheckBox" name="chkSelectionBraceCompletion">
+ <label>Selection brace completion</label>
  </object>
  <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
  </object>
+ <object class="sizeritem">
+ <object class="wxCheckBox" name="chkShowIndentGuides">
+ <label>Show indentation guides</label>
+ </object>
+ <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
+ </object>
  </object>
  <flag>wxALL|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
  <border>4</border>
@@ -281,7 +277,7 @@
  </object>
  <object class="sizeritem">
  <object class="wxStaticBoxSizer">
- <label>Highlight occurrences</label>
+ <label>End-of-line options</label>
  <orient>wxVERTICAL</orient>
  <object class="sizeritem">
  <object class="wxFlexGridSizer">
@@ -289,54 +285,64 @@
  <vgap>4</vgap>
  <hgap>4</hgap>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkHighlightOccurrences">
- <label>Highlight occurrences</label>
- <checked>1</checked>
+ <object class="wxCheckBox" name="chkShowEOL">
+ <label>Show end-of-line chars</label>
  </object>
  <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
  </object>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkHighlightOccurrencesCaseSensitive">
- <label>Case sensitive</label>
+ <object class="wxCheckBox" name="chkStripTrailings">
+ <label>Strip trailing blanks</label>
  <checked>1</checked>
  </object>
- <flag>wxLEFT|wxALIGN_LEFT|wxALIGN_TOP</flag>
- <border>10</border>
+ <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
  </object>
  <object class="sizeritem">
- <object class="wxCheckBox" name="chkHighlightOccurrencesWholeWord">
- <label>Whole words only</label>
- <checked>1</checked>
+ <object class="wxCheckBox" name="chkEnsureFinalEOL">
+ <label>End files with blank line</label>
  </object>
- <flag>wxLEFT|wxALIGN_LEFT|wxALIGN_TOP</flag>
- <border>10</border>
+ <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
  </object>
  <object class="sizeritem">
+ <object class="wxCheckBox" name="chkEnsureConsistentEOL">
+ <label>Ensure consistent EOLs</label>
+ </object>
+ <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
+ </object>
+ <object class="sizeritem">
  <object class="wxBoxSizer">
  <object class="sizeritem">
- <object class="wxStaticText" name="stHighlightColour">
- <label>Highlight colour</label>
+ <object class="wxStaticText" name="ID_STATICTEXT2">
+ <label>End-of-line mode:</label>
  </object>
- <flag>wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
- <border>5</border>
+ <flag>wxTOP|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <border>4</border>
  </object>
  <object class="sizeritem">
- <object class="wxButton" name="btnHighlightColour">
- <label>...</label>
- <bg>#FF0000</bg>
+ <object class="wxComboBox" name="cmbEOLMode">
+ <content>
+ <item>CR LF</item>
+ <item>CR</item>
+ <item>LF</item>
+ </content>
+ <style>wxCB_READONLY</style>
  </object>
- <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <flag>wxLEFT|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <border>16</border>
+ <option>1</option>
  </object>
  </object>
- <flag>wxLEFT|wxALIGN_LEFT|wxALIGN_TOP</flag>
- <border>10</border>
+ <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <option>1</option>
  </object>
  </object>
  <flag>wxALL|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
  <border>4</border>
+ <option>1</option>
  </object>
  </object>
  <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
+ <border>4</border>
  <option>1</option>
  </object>
  </object>


--- End code ---

Alpha:
Out of curiosity, has anyone had the chance to try this?

Any comments or suggestions?

(Also, I am also still unsure of what keyboard shortcut(s) to (optionally) bind these functions to.  Of the vi documentation I read (assuming I understood correctly), it would require a key combination that does not correspond to any normal keyboard shortcuts.)

MortenMacFly:

--- Quote from: Alpha on November 18, 2011, 12:17:16 am ---Out of curiosity, has anyone had the chance to try this?

--- End quote ---
Its on my ToDo list, but I'm afraid I didn't find the time yet...

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version