📄 searchreplaceinfilesmanager.cs
字号:
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision: 1267 $</version>
// </file>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.Core;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
namespace SearchAndReplace
{
public static class SearchInFilesManager
{
static Search find = new Search();
static string currentFileName = String.Empty;
static List<SearchAllFinishedEventArgs> lastSearches = new List<SearchAllFinishedEventArgs> ();
public static List<SearchAllFinishedEventArgs> LastSearches {
get {
return lastSearches;
}
}
static SearchInFilesManager()
{
find.TextIteratorBuilder = new ForwardTextIteratorBuilder();
}
static void SetSearchOptions()
{
find.SearchStrategy = SearchReplaceUtilities.CreateSearchStrategy(SearchOptions.SearchStrategyType);
find.DocumentIterator = SearchReplaceUtilities.CreateDocumentIterator(SearchOptions.DocumentIteratorType);
}
static bool InitializeSearchInFiles()
{
SetSearchOptions();
find.Reset();
if (!find.SearchStrategy.CompilePattern())
return false;
currentFileName = String.Empty;
return true;
}
static void FinishSearchInFiles(List<SearchResult> results)
{
ShowSearchResults(SearchOptions.FindPattern, results);
}
public static void ShowSearchResults(string pattern, List<SearchResult> results)
{
SearchAndReplace.SearchAllFinishedEventArgs e =
new SearchAllFinishedEventArgs(pattern, results);
OnSearchAllFinished(e);
PadDescriptor searchResultPanel = WorkbenchSingleton.Workbench.GetPad(typeof(SearchResultPanel));
if (searchResultPanel != null) {
searchResultPanel.BringPadToFront();
SearchResultPanel.Instance.ShowSearchResults(pattern, results);
} else {
MessageService.ShowError("SearchResultPanel can't be created.");
}
}
public static void FindAll()
{
if (!InitializeSearchInFiles()) {
return;
}
List<SearchResult> results = new List<SearchResult>();
while (true) {
SearchResult result = find.FindNext();
if (result == null) {
break;
}
results.Add(result);
}
FinishSearchInFiles(results);
}
public static void FindAll(int offset, int length)
{
if (!InitializeSearchInFiles()) {
return;
}
List<SearchResult> results = new List<SearchResult>();
while (true) {
SearchResult result = find.FindNext(offset, length);
if (result == null) {
break;
}
results.Add(result);
}
FinishSearchInFiles(results);
}
static void OnSearchAllFinished(SearchAllFinishedEventArgs e)
{
lastSearches.Insert(0, e);
if (SearchAllFinished != null) {
SearchAllFinished(null, e);
}
}
public static event SearchAllFinishedEventHandler SearchAllFinished;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -