private void txtFind_TextChanged(object sender, EventArgs e) { txtFind.BackColor = SystemColors.Window; if (txtFind.Text == string.Empty) { return; } if (_scintilla == null) { return; } int pos = Math.Min(_scintilla.CurrentPosition, _scintilla.AnchorPosition); ScintillaNET_FindReplaceDialog.CharacterRange r = _findReplace.Find(pos, _scintilla.TextLength, txtFind.Text, _findReplace.Window.GetSearchFlags()); if (r.cpMin == r.cpMax) { r = _findReplace.Find(0, pos, txtFind.Text, _findReplace.Window.GetSearchFlags()); } if (r.cpMin != r.cpMax) { _scintilla.SetSel(r.cpMin, r.cpMax); } else { txtFind.BackColor = Color.Tomato; } MoveFormAwayFromSelection(); }
private void findPrevious() { if (txtFind.Text == string.Empty) { return; } if (_scintilla == null) { return; } ScintillaNET_FindReplaceDialog.CharacterRange r = _findReplace.FindPrevious(txtFind.Text, true, _findReplace.Window.GetSearchFlags()); if (r.cpMin != r.cpMax) { _scintilla.SetSel(r.cpMin, r.cpMax); } MoveFormAwayFromSelection(); }
public CharacterRange FindPrevious(string searchString, bool wrap, SearchFlags flags, CharacterRange searchRange) { int caret = _scintilla.CurrentPosition; if (!(caret >= searchRange.cpMin && caret <= searchRange.cpMax)) { return(Find(searchRange.cpMax, searchRange.cpMin, searchString, flags)); } int anchor = _scintilla.AnchorPosition; if (!(anchor >= searchRange.cpMin && anchor <= searchRange.cpMax)) { anchor = caret; } CharacterRange r = Find(anchor, searchRange.cpMin, searchString, flags); if (r.cpMin != r.cpMax) { return(r); } else if (wrap) { return(Find(searchRange.cpMax, anchor, searchString, flags)); } else { return(new CharacterRange()); } }
public List <CharacterRange> FindAll(CharacterRange rangeToSearch, string searchString, SearchFlags flags, bool Mark, bool Highlight) { return(FindAll(rangeToSearch.cpMin, rangeToSearch.cpMax, searchString, _flags, Mark, Highlight)); }
public CharacterRange FindNext(string searchString, bool wrap, SearchFlags flags, CharacterRange searchRange) { int caret = _scintilla.CurrentPosition; if (!(caret >= searchRange.cpMin && caret <= searchRange.cpMax)) { return(Find(searchRange.cpMin, searchRange.cpMax, searchString, flags)); } CharacterRange r = Find(caret, searchRange.cpMax, searchString, flags); if (r.cpMin != r.cpMax) { return(r); } else if (wrap) { return(Find(searchRange.cpMin, caret, searchString, flags)); } else { return(new CharacterRange()); } }
public CharacterRange Find(CharacterRange r, Regex findExpression) { return(Find(r, findExpression, false)); }
public CharacterRange Find(CharacterRange rangeToSearch, string searchString, SearchFlags searchflags) { return(Find(rangeToSearch.cpMin, rangeToSearch.cpMax, searchString, searchflags)); }
private void btnReplaceAll_Click(object sender, EventArgs e) { if (txtFindR.Text == string.Empty) { return; } AddReplaceMru(); lblStatus.Text = string.Empty; int foundCount = 0; #region RegEx if (rdoRegexR.Checked) { Regex rr = null; try { rr = new Regex(txtFindR.Text, GetRegexOptions()); } catch (ArgumentException ex) { lblStatus.Text = "Error in Regular Expression: " + ex.Message; return; } if (chkSearchSelectionR.Checked) { if (_searchRange.cpMin == _searchRange.cpMax) { _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End); } foundCount = FindReplace.ReplaceAll(_searchRange, rr, txtReplace.Text, false, false); } else { _searchRange = new CharacterRange(); foundCount = FindReplace.ReplaceAll(rr, txtReplace.Text, false, false); } } #endregion #region Non-RegEx if (!rdoRegexR.Checked) { if (chkSearchSelectionR.Checked) { if (_searchRange.cpMin == _searchRange.cpMax) { _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End); } string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text; string textToReplace = rdoExtendedR.Checked ? FindReplace.Transform(txtReplace.Text) : txtReplace.Text; foundCount = FindReplace.ReplaceAll(_searchRange, textToFind, textToReplace, GetSearchFlags(), false, false); } else { _searchRange = new CharacterRange(); string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text; string textToReplace = rdoExtendedR.Checked ? FindReplace.Transform(txtReplace.Text) : txtReplace.Text; foundCount = FindReplace.ReplaceAll(textToFind, textToReplace, GetSearchFlags(), false, false); } } #endregion lblStatus.Text = "Total Replaced: " + foundCount.ToString(); }
private void btnFindAll_Click(object sender, EventArgs e) { if (txtFindF.Text == string.Empty) { return; } AddFindMru(); lblStatus.Text = string.Empty; btnClear_Click(null, null); int foundCount = 0; #region RegEx if (rdoRegexF.Checked) { Regex rr = null; try { rr = new Regex(txtFindF.Text, GetRegexOptions()); } catch (ArgumentException ex) { lblStatus.Text = "Error in Regular Expression: " + ex.Message; return; } if (chkSearchSelectionF.Checked) { if (_searchRange.cpMin == _searchRange.cpMax) { _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End); } foundCount = FindReplace.FindAll(_searchRange, rr, chkMarkLine.Checked, chkHighlightMatches.Checked).Count; } else { _searchRange = new CharacterRange(); foundCount = FindReplace.FindAll(rr, chkMarkLine.Checked, chkHighlightMatches.Checked).Count; } } #endregion #region Non-RegEx if (!rdoRegexF.Checked) { if (chkSearchSelectionF.Checked) { if (_searchRange.cpMin == _searchRange.cpMax) { _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End); } string textToFind = rdoExtendedF.Checked ? FindReplace.Transform(txtFindF.Text) : txtFindF.Text; foundCount = FindReplace.FindAll(_searchRange, textToFind, GetSearchFlags(), chkMarkLine.Checked, chkHighlightMatches.Checked).Count; } else { _searchRange = new CharacterRange(); string textToFind = rdoExtendedF.Checked ? FindReplace.Transform(txtFindF.Text) : txtFindF.Text; foundCount = FindReplace.FindAll(textToFind, GetSearchFlags(), chkMarkLine.Checked, chkHighlightMatches.Checked).Count; } } #endregion lblStatus.Text = "Total found: " + foundCount.ToString(); }
private CharacterRange ReplaceNext(bool searchUp) { Regex rr = null; CharacterRange selRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End); // We only do the actual replacement if the current selection exactly // matches the find. if (selRange.cpMax - selRange.cpMin > 0) { if (rdoRegexR.Checked) { rr = new Regex(txtFindR.Text, GetRegexOptions()); string selRangeText = Scintilla.GetTextRange(selRange.cpMin, selRange.cpMax - selRange.cpMin + 1); if (selRange.Equals(FindReplace.Find(selRange, rr, false))) { // If searching up we do the replacement using the range object. // Otherwise we use the selection object. The reason being if // we use the range the caret is positioned before the replaced // text. Conversely if we use the selection object the caret will // be positioned after the replaced text. This is very important // becuase we don't want the new text to be potentially matched // in the next search. if (searchUp) { _scintilla.SelectionStart = selRange.cpMin; _scintilla.SelectionEnd = selRange.cpMax; _scintilla.ReplaceSelection(rr.Replace(selRangeText, txtReplace.Text)); _scintilla.GotoPosition(selRange.cpMin); } else { Scintilla.ReplaceSelection(rr.Replace(selRangeText, txtReplace.Text)); } } } else { string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text; if (selRange.Equals(FindReplace.Find(selRange, textToFind, false))) { // If searching up we do the replacement using the range object. // Otherwise we use the selection object. The reason being if // we use the range the caret is positioned before the replaced // text. Conversely if we use the selection object the caret will // be positioned after the replaced text. This is very important // becuase we don't want the new text to be potentially matched // in the next search. if (searchUp) { string textToReplace = rdoExtendedR.Checked ? FindReplace.Transform(txtReplace.Text) : txtReplace.Text; _scintilla.SelectionStart = selRange.cpMin; _scintilla.SelectionEnd = selRange.cpMax; _scintilla.ReplaceSelection(textToReplace); _scintilla.GotoPosition(selRange.cpMin); } else { string textToReplace = rdoExtendedR.Checked ? FindReplace.Transform(txtReplace.Text) : txtReplace.Text; Scintilla.ReplaceSelection(textToReplace); } } } } return(FindNextR(searchUp, ref rr)); }
private CharacterRange FindNextR(bool searchUp, ref Regex rr) { CharacterRange foundRange; if (rdoRegexR.Checked) { if (rr == null) { rr = new Regex(txtFindR.Text, GetRegexOptions()); } if (chkSearchSelectionR.Checked) { if (_searchRange.cpMin == _searchRange.cpMax) { _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End); } if (searchUp) { foundRange = FindReplace.FindPrevious(rr, chkWrapR.Checked, _searchRange); } else { foundRange = FindReplace.FindNext(rr, chkWrapR.Checked, _searchRange); } } else { _searchRange = new CharacterRange(); if (searchUp) { foundRange = FindReplace.FindPrevious(rr, chkWrapR.Checked); } else { foundRange = FindReplace.FindNext(rr, chkWrapR.Checked); } } } else { if (chkSearchSelectionF.Checked) { if (_searchRange.cpMin == _searchRange.cpMax) { _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End); } if (searchUp) { string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text; foundRange = FindReplace.FindPrevious(textToFind, chkWrapR.Checked, GetSearchFlags(), _searchRange); } else { string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text; foundRange = FindReplace.FindNext(textToFind, chkWrapR.Checked, GetSearchFlags(), _searchRange); } } else { _searchRange = new CharacterRange(); if (searchUp) { string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text; foundRange = FindReplace.FindPrevious(textToFind, chkWrapF.Checked, GetSearchFlags()); } else { string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text; foundRange = FindReplace.FindNext(textToFind, chkWrapF.Checked, GetSearchFlags()); } } } return(foundRange); }
public int ReplaceAll(CharacterRange rangeToSearch, string searchString, string replaceString, SearchFlags flags, bool Mark, bool Highlight) { return(ReplaceAll(rangeToSearch.cpMin, rangeToSearch.cpMax, searchString, replaceString, _flags, Mark, Highlight)); }