mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 03:57:43 +00:00
HackStudio: Start adding a "find in files" function
Projects now contain a set of TextDocument objects. Each TextDocument represents a member file in the project. TextDocuments may not have their file contents loaded at all times, but they will be loaded on demand when calling TextDocument::contents(). "Find in files" works by iterating over the documents in the project and calling find(needle) on each one. The return value from find() is a vector of line numbers where the needle was found. This is obviously going to need a bunch more work. :^)
This commit is contained in:
parent
41289e652f
commit
d3e81d2ba8
6 changed files with 209 additions and 38 deletions
|
@ -1,6 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include "TextDocument.h"
|
||||
#include <AK/Noncopyable.h>
|
||||
#include <AK/NonnullRefPtrVector.h>
|
||||
#include <AK/OwnPtr.h>
|
||||
#include <LibGUI/GModel.h>
|
||||
|
||||
|
@ -12,10 +14,18 @@ public:
|
|||
|
||||
GModel& model() { return *m_model; }
|
||||
|
||||
template<typename Callback>
|
||||
void for_each_text_file(Callback callback) const
|
||||
{
|
||||
for (auto& file : m_files) {
|
||||
callback(file);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
friend class ProjectModel;
|
||||
explicit Project(Vector<String>&& files);
|
||||
|
||||
RefPtr<GModel> m_model;
|
||||
Vector<String> m_files;
|
||||
NonnullRefPtrVector<TextDocument> m_files;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue