Skip to content

Commit 26a7356

Browse files
guerinonilinusg
authored andcommitted
LanguageServers: Add function to collect TODO entries in a document
1 parent c397e03 commit 26a7356

12 files changed

+103
-0
lines changed

Userland/DevTools/HackStudio/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ set(SOURCES
4343
ProjectFile.cpp
4444
ProjectTemplate.cpp
4545
TerminalWrapper.cpp
46+
ToDoEntries.cpp
4647
main.cpp
4748
)
4849

Userland/DevTools/HackStudio/LanguageClient.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "LanguageClient.h"
88
#include "HackStudio.h"
99
#include "ProjectDeclarations.h"
10+
#include "ToDoEntries.h"
1011
#include <AK/String.h>
1112
#include <AK/Vector.h>
1213
#include <DevTools/HackStudio/LanguageServers/LanguageServerEndpoint.h>
@@ -98,6 +99,11 @@ void ServerConnection::declarations_in_document(const String& filename, const Ve
9899
ProjectDeclarations::the().set_declared_symbols(filename, declarations);
99100
}
100101

102+
void ServerConnection::todo_entries_in_document(const String& filename, const Vector<String>& todo_entries)
103+
{
104+
ToDoEntries::the().set_entries(filename, move(todo_entries));
105+
}
106+
101107
void LanguageClient::search_declaration(const String& path, size_t line, size_t column)
102108
{
103109
if (!m_connection_wrapper.connection())

Userland/DevTools/HackStudio/LanguageClient.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class ServerConnection
4646
virtual void auto_complete_suggestions(Vector<GUI::AutocompleteProvider::Entry> const&) override;
4747
virtual void declaration_location(GUI::AutocompleteProvider::ProjectLocation const&) override;
4848
virtual void declarations_in_document(String const&, Vector<GUI::AutocompleteProvider::Declaration> const&) override;
49+
virtual void todo_entries_in_document(String const&, Vector<String> const&) override;
4950
void set_wrapper(ServerConnectionWrapper& wrapper) { m_wrapper = &wrapper; }
5051

5152
String m_project_path;

Userland/DevTools/HackStudio/LanguageServers/CodeComprehensionEngine.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,11 @@ void CodeComprehensionEngine::set_declarations_of_document(const String& filenam
3131
m_all_declarations.set(filename, declarations);
3232
set_declarations_of_document_callback(filename, move(declarations));
3333
}
34+
35+
void CodeComprehensionEngine::set_todo_entries_of_document(const String& filename, Vector<String>&& todo_entries)
36+
{
37+
VERIFY(set_todo_entries_of_document_callback);
38+
set_todo_entries_of_document_callback(filename, move(todo_entries));
39+
}
40+
3441
}

Userland/DevTools/HackStudio/LanguageServers/CodeComprehensionEngine.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@ class CodeComprehensionEngine {
3030

3131
public:
3232
Function<void(const String&, Vector<GUI::AutocompleteProvider::Declaration>&&)> set_declarations_of_document_callback;
33+
Function<void(const String&, Vector<String>&&)> set_todo_entries_of_document_callback;
3334

3435
protected:
3536
const FileDB& filedb() const { return m_filedb; }
3637
void set_declarations_of_document(const String&, Vector<GUI::AutocompleteProvider::Declaration>&&);
38+
void set_todo_entries_of_document(const String&, Vector<String>&&);
3739
const HashMap<String, Vector<GUI::AutocompleteProvider::Declaration>>& all_declarations() const { return m_all_declarations; }
3840

3941
private:

Userland/DevTools/HackStudio/LanguageServers/Cpp/ClientConnection.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ class ClientConnection final : public LanguageServers::ClientConnection {
2222
m_autocomplete_engine->set_declarations_of_document_callback = [this](const String& filename, Vector<GUI::AutocompleteProvider::Declaration>&& declarations) {
2323
async_declarations_in_document(filename, move(declarations));
2424
};
25+
m_autocomplete_engine->set_todo_entries_of_document_callback = [this](const String& filename, Vector<String>&& todo_entries) {
26+
async_todo_entries_in_document(filename, move(todo_entries));
27+
};
2528
}
2629

2730
virtual ~ClientConnection() override = default;

Userland/DevTools/HackStudio/LanguageServers/Cpp/CppComprehensionEngine.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,11 @@ void CppComprehensionEngine::update_declared_symbols(DocumentData& document)
520520
set_declarations_of_document(document.filename(), move(declarations));
521521
}
522522

523+
void CppComprehensionEngine::update_todo_entries(DocumentData& document)
524+
{
525+
set_todo_entries_of_document(document.filename(), document.parser().get_todo_entries());
526+
}
527+
523528
GUI::AutocompleteProvider::DeclarationType CppComprehensionEngine::type_of_declaration(const Declaration& decl)
524529
{
525530
if (decl.is_struct())
@@ -574,6 +579,7 @@ OwnPtr<CppComprehensionEngine::DocumentData> CppComprehensionEngine::create_docu
574579
root->dump();
575580

576581
update_declared_symbols(*document_data);
582+
update_todo_entries(*document_data);
577583

578584
return document_data;
579585
}

Userland/DevTools/HackStudio/LanguageServers/Cpp/CppComprehensionEngine.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ class CppComprehensionEngine : public CodeComprehensionEngine {
121121
OwnPtr<DocumentData> create_document_data_for(const String& file);
122122
String document_path_from_include_path(const StringView& include_path) const;
123123
void update_declared_symbols(DocumentData&);
124+
void update_todo_entries(DocumentData&);
124125
GUI::AutocompleteProvider::DeclarationType type_of_declaration(const Declaration&);
125126
Vector<StringView> scope_of_node(const ASTNode&) const;
126127
Vector<StringView> scope_of_reference_to_symbol(const ASTNode&) const;

Userland/DevTools/HackStudio/LanguageServers/LanguageClient.ipc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ endpoint LanguageClient
33
auto_complete_suggestions(Vector<GUI::AutocompleteProvider::Entry> suggestions) =|
44
declaration_location(GUI::AutocompleteProvider::ProjectLocation location) =|
55
declarations_in_document(String filename, Vector<GUI::AutocompleteProvider::Declaration> declarations) =|
6+
todo_entries_in_document(String filename, Vector<String> todo_entries) =|
67
}

Userland/DevTools/HackStudio/LanguageServers/Shell/ClientConnection.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ class ClientConnection final : public LanguageServers::ClientConnection {
2121
m_autocomplete_engine->set_declarations_of_document_callback = [this](const String& filename, Vector<GUI::AutocompleteProvider::Declaration>&& declarations) {
2222
async_declarations_in_document(filename, move(declarations));
2323
};
24+
m_autocomplete_engine->set_todo_entries_of_document_callback = [this](const String& filename, Vector<String>&& todo_entries) {
25+
async_todo_entries_in_document(filename, move(todo_entries));
26+
};
2427
}
2528
virtual ~ClientConnection() override = default;
2629
};

0 commit comments

Comments
 (0)