mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:07:34 +00:00
LanguageServers: Rename AutoCompleteEngine => CodeComprehensionEngine
This feels like a better name since the "autocomplete engine" can, in addition to providing autocomplete suggestions, also find declarations of symbols and report back the symbols that are defined in a document. Also, Cpp/ParserAutoComplete has been renamed to CppComprehensionEngine and Shell/AutoComplete has been renamed to ShellComprehensionEngine.
This commit is contained in:
parent
b1531b78f6
commit
400d3ddb08
13 changed files with 82 additions and 82 deletions
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright (c) 2020, the SerenityOS developers.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <DevTools/HackStudio/LanguageServers/CodeComprehensionEngine.h>
|
||||
#include <Shell/Shell.h>
|
||||
|
||||
namespace LanguageServers::Shell {
|
||||
|
||||
class ShellComprehensionEngine : public CodeComprehensionEngine {
|
||||
public:
|
||||
ShellComprehensionEngine(const FileDB& filedb);
|
||||
virtual Vector<GUI::AutocompleteProvider::Entry> get_suggestions(const String& file, const GUI::TextPosition& position) override;
|
||||
virtual void on_edit(const String& file) override;
|
||||
virtual void file_opened([[maybe_unused]] const String& file) override;
|
||||
virtual Optional<GUI::AutocompleteProvider::ProjectLocation> find_declaration_of(const String& filename, const GUI::TextPosition& identifier_position) override;
|
||||
|
||||
private:
|
||||
struct DocumentData {
|
||||
DocumentData(String&& text, String filename);
|
||||
String filename;
|
||||
String text;
|
||||
NonnullRefPtr<::Shell::AST::Node> node;
|
||||
|
||||
const Vector<String>& sourced_paths() const;
|
||||
|
||||
private:
|
||||
NonnullRefPtr<::Shell::AST::Node> parse() const;
|
||||
|
||||
mutable Optional<Vector<String>> all_sourced_paths {};
|
||||
};
|
||||
|
||||
const DocumentData& get_document_data(const String& file) const;
|
||||
const DocumentData& get_or_create_document_data(const String& file);
|
||||
void set_document_data(const String& file, OwnPtr<DocumentData>&& data);
|
||||
|
||||
OwnPtr<DocumentData> create_document_data_for(const String& file);
|
||||
String document_path_from_include_path(const StringView& include_path) const;
|
||||
void update_declared_symbols(const DocumentData&);
|
||||
|
||||
static size_t resolve(const ShellComprehensionEngine::DocumentData& document, const GUI::TextPosition& position);
|
||||
|
||||
::Shell::Shell& shell()
|
||||
{
|
||||
if (s_shell)
|
||||
return *s_shell;
|
||||
s_shell = ::Shell::Shell::construct();
|
||||
return *s_shell;
|
||||
}
|
||||
|
||||
HashMap<String, OwnPtr<DocumentData>> m_documents;
|
||||
static RefPtr<::Shell::Shell> s_shell;
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue