diff --git a/Userland/DevTools/HackStudio/Editor.cpp b/Userland/DevTools/HackStudio/Editor.cpp index a8b2b2f190..a742c58731 100644 --- a/Userland/DevTools/HackStudio/Editor.cpp +++ b/Userland/DevTools/HackStudio/Editor.cpp @@ -658,10 +658,10 @@ void Editor::set_language_client_for(const CodeDocument& document) return; if (document.language() == Language::Cpp) - m_language_client = get_language_client(project().root_path()); + m_language_client = get_language_client(project().root_path()); if (document.language() == Language::Shell) - m_language_client = get_language_client(project().root_path()); + m_language_client = get_language_client(project().root_path()); if (m_language_client) { m_language_client->on_tokens_info_result = [this](Vector const& tokens_info) { diff --git a/Userland/DevTools/HackStudio/HackStudio.h b/Userland/DevTools/HackStudio/HackStudio.h index 16392de9f8..68924f5523 100644 --- a/Userland/DevTools/HackStudio/HackStudio.h +++ b/Userland/DevTools/HackStudio/HackStudio.h @@ -7,7 +7,7 @@ #pragma once #include "EditorWrapper.h" -#include "LanguageClients/ServerConnections.h" +#include "LanguageClients/ConnectionsToServer.h" #include "Project.h" #include #include diff --git a/Userland/DevTools/HackStudio/LanguageClient.cpp b/Userland/DevTools/HackStudio/LanguageClient.cpp index 53b5632b34..75833bbc2d 100644 --- a/Userland/DevTools/HackStudio/LanguageClient.cpp +++ b/Userland/DevTools/HackStudio/LanguageClient.cpp @@ -14,7 +14,7 @@ namespace HackStudio { -void ServerConnection::auto_complete_suggestions(const Vector& suggestions) +void ConnectionToServer::auto_complete_suggestions(const Vector& suggestions) { if (!m_current_language_client) { dbgln("Language Server connection has no attached language client"); @@ -23,7 +23,7 @@ void ServerConnection::auto_complete_suggestions(const Vectorprovide_autocomplete_suggestions(suggestions); } -void ServerConnection::declaration_location(const GUI::AutocompleteProvider::ProjectLocation& location) +void ConnectionToServer::declaration_location(const GUI::AutocompleteProvider::ProjectLocation& location) { if (!m_current_language_client) { dbgln("Language Server connection has no attached language client"); @@ -32,7 +32,7 @@ void ServerConnection::declaration_location(const GUI::AutocompleteProvider::Pro m_current_language_client->declaration_found(location.file, location.line, location.column); } -void ServerConnection::parameters_hint_result(Vector const& params, int argument_index) +void ConnectionToServer::parameters_hint_result(Vector const& params, int argument_index) { if (!m_current_language_client) { dbgln("Language Server connection has no attached language client"); @@ -43,7 +43,7 @@ void ServerConnection::parameters_hint_result(Vector const& params, int m_current_language_client->parameters_hint_result(params, static_cast(argument_index)); } -void ServerConnection::tokens_info_result(Vector const& tokens_info) +void ConnectionToServer::tokens_info_result(Vector const& tokens_info) { if (!m_current_language_client) { dbgln("Language Server connection has no attached language client"); @@ -53,7 +53,7 @@ void ServerConnection::tokens_info_result(Vectoron_tokens_info_result(tokens_info); } -void ServerConnection::die() +void ConnectionToServer::die() { VERIFY(m_wrapper); // Wrapper destructs us here @@ -118,14 +118,14 @@ bool LanguageClient::is_active_client() const return m_connection_wrapper.connection()->active_client() == this; } -HashMap> ServerConnectionInstances::s_instance_for_language; +HashMap> ConnectionToServerInstances::s_instance_for_language; -void ServerConnection::declarations_in_document(const String& filename, const Vector& declarations) +void ConnectionToServer::declarations_in_document(const String& filename, const Vector& declarations) { ProjectDeclarations::the().set_declared_symbols(filename, declarations); } -void ServerConnection::todo_entries_in_document(String const& filename, Vector const& todo_entries) +void ConnectionToServer::todo_entries_in_document(String const& filename, Vector const& todo_entries) { ToDoEntries::the().set_entries(filename, move(todo_entries)); } @@ -172,25 +172,25 @@ void LanguageClient::parameters_hint_result(Vector const& params, size_t on_function_parameters_hint_result(params, argument_index); } -void ServerConnectionInstances::set_instance_for_language(const String& language_name, NonnullOwnPtr&& connection_wrapper) +void ConnectionToServerInstances::set_instance_for_language(const String& language_name, NonnullOwnPtr&& connection_wrapper) { s_instance_for_language.set(language_name, move(connection_wrapper)); } -void ServerConnectionInstances::remove_instance_for_language(const String& language_name) +void ConnectionToServerInstances::remove_instance_for_language(const String& language_name) { s_instance_for_language.remove(language_name); } -ServerConnectionWrapper* ServerConnectionInstances::get_instance_wrapper(const String& language_name) +ConnectionToServerWrapper* ConnectionToServerInstances::get_instance_wrapper(const String& language_name) { if (auto instance = s_instance_for_language.get(language_name); instance.has_value()) { - return const_cast(instance.value()); + return const_cast(instance.value()); } return nullptr; } -void ServerConnectionWrapper::on_crash() +void ConnectionToServerWrapper::on_crash() { show_crash_notification(); m_connection.clear(); @@ -206,7 +206,7 @@ void ServerConnectionWrapper::on_crash() try_respawn_connection(); } } -void ServerConnectionWrapper::show_frequent_crashes_notification() const +void ConnectionToServerWrapper::show_frequent_crashes_notification() const { auto notification = GUI::Notification::construct(); notification->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/32x32/app-hack-studio.png").release_value_but_fixme_should_propagate_errors()); @@ -214,7 +214,7 @@ void ServerConnectionWrapper::show_frequent_crashes_notification() const notification->set_text("LanguageServer aided features will not be available in this session"); notification->show(); } -void ServerConnectionWrapper::show_crash_notification() const +void ConnectionToServerWrapper::show_crash_notification() const { auto notification = GUI::Notification::construct(); notification->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/32x32/app-hack-studio.png").release_value_but_fixme_should_propagate_errors()); @@ -223,41 +223,41 @@ void ServerConnectionWrapper::show_crash_notification() const notification->show(); } -ServerConnectionWrapper::ServerConnectionWrapper(const String& language_name, Function()> connection_creator) +ConnectionToServerWrapper::ConnectionToServerWrapper(const String& language_name, Function()> connection_creator) : m_language(language_from_name(language_name)) , m_connection_creator(move(connection_creator)) { create_connection(); } -void ServerConnectionWrapper::create_connection() +void ConnectionToServerWrapper::create_connection() { VERIFY(m_connection.is_null()); m_connection = m_connection_creator(); m_connection->set_wrapper(*this); } -ServerConnection* ServerConnectionWrapper::connection() +ConnectionToServer* ConnectionToServerWrapper::connection() { return m_connection.ptr(); } -void ServerConnectionWrapper::attach(LanguageClient& client) +void ConnectionToServerWrapper::attach(LanguageClient& client) { m_connection->m_current_language_client = &client; } -void ServerConnectionWrapper::detach() +void ConnectionToServerWrapper::detach() { m_connection->m_current_language_client.clear(); } -void ServerConnectionWrapper::set_active_client(LanguageClient& client) +void ConnectionToServerWrapper::set_active_client(LanguageClient& client) { m_connection->m_current_language_client = &client; } -void ServerConnectionWrapper::try_respawn_connection() +void ConnectionToServerWrapper::try_respawn_connection() { if (!m_respawn_allowed) return; diff --git a/Userland/DevTools/HackStudio/LanguageClient.h b/Userland/DevTools/HackStudio/LanguageClient.h index 2151ae3d25..e8a6600c73 100644 --- a/Userland/DevTools/HackStudio/LanguageClient.h +++ b/Userland/DevTools/HackStudio/LanguageClient.h @@ -23,15 +23,15 @@ namespace HackStudio { class LanguageClient; -class ServerConnectionWrapper; +class ConnectionToServerWrapper; -class ServerConnection +class ConnectionToServer : public IPC::ConnectionToServer , public LanguageClientEndpoint { - friend class ServerConnectionWrapper; + friend class ConnectionToServerWrapper; public: - ServerConnection(NonnullOwnPtr socket, const String& project_path) + ConnectionToServer(NonnullOwnPtr socket, const String& project_path) : IPC::ConnectionToServer(*this, move(socket)) { m_project_path = project_path; @@ -52,25 +52,25 @@ protected: virtual void todo_entries_in_document(String const&, Vector const&) override; virtual void parameters_hint_result(Vector const&, int index) override; virtual void tokens_info_result(Vector const&) override; - void set_wrapper(ServerConnectionWrapper& wrapper) { m_wrapper = &wrapper; } + void set_wrapper(ConnectionToServerWrapper& wrapper) { m_wrapper = &wrapper; } String m_project_path; WeakPtr m_current_language_client; - ServerConnectionWrapper* m_wrapper { nullptr }; + ConnectionToServerWrapper* m_wrapper { nullptr }; }; -class ServerConnectionWrapper { - AK_MAKE_NONCOPYABLE(ServerConnectionWrapper); +class ConnectionToServerWrapper { + AK_MAKE_NONCOPYABLE(ConnectionToServerWrapper); public: - explicit ServerConnectionWrapper(const String& language_name, Function()> connection_creator); - ~ServerConnectionWrapper() = default; + explicit ConnectionToServerWrapper(const String& language_name, Function()> connection_creator); + ~ConnectionToServerWrapper() = default; template - static ServerConnectionWrapper& get_or_create(const String& project_path); + static ConnectionToServerWrapper& get_or_create(const String& project_path); Language language() const { return m_language; } - ServerConnection* connection(); + ConnectionToServer* connection(); void on_crash(); void try_respawn_connection(); @@ -84,27 +84,27 @@ private: void show_frequent_crashes_notification() const; Language m_language; - Function()> m_connection_creator; - RefPtr m_connection; + Function()> m_connection_creator; + RefPtr m_connection; Core::ElapsedTimer m_last_crash_timer; bool m_respawn_allowed { true }; }; -class ServerConnectionInstances { +class ConnectionToServerInstances { public: - static void set_instance_for_language(const String& language_name, NonnullOwnPtr&& connection_wrapper); + static void set_instance_for_language(const String& language_name, NonnullOwnPtr&& connection_wrapper); static void remove_instance_for_language(const String& language_name); - static ServerConnectionWrapper* get_instance_wrapper(const String& language_name); + static ConnectionToServerWrapper* get_instance_wrapper(const String& language_name); private: - static HashMap> s_instance_for_language; + static HashMap> s_instance_for_language; }; class LanguageClient : public Weakable { public: - explicit LanguageClient(ServerConnectionWrapper& connection_wrapper) + explicit LanguageClient(ConnectionToServerWrapper& connection_wrapper) : m_connection_wrapper(connection_wrapper) { if (m_connection_wrapper.connection()) { @@ -148,26 +148,26 @@ public: Function const&)> on_tokens_info_result; private: - ServerConnectionWrapper& m_connection_wrapper; + ConnectionToServerWrapper& m_connection_wrapper; WeakPtr m_previous_client; }; -template +template static inline NonnullOwnPtr get_language_client(const String& project_path) { - return make(ServerConnectionWrapper::get_or_create(project_path)); + return make(ConnectionToServerWrapper::get_or_create(project_path)); } template -ServerConnectionWrapper& ServerConnectionWrapper::get_or_create(const String& project_path) +ConnectionToServerWrapper& ConnectionToServerWrapper::get_or_create(const String& project_path) { - auto* wrapper = ServerConnectionInstances::get_instance_wrapper(LanguageServerType::language_name()); + auto* wrapper = ConnectionToServerInstances::get_instance_wrapper(LanguageServerType::language_name()); if (wrapper) return *wrapper; - auto connection_wrapper_ptr = make(LanguageServerType::language_name(), [project_path]() { return LanguageServerType::try_create(project_path).release_value_but_fixme_should_propagate_errors(); }); + auto connection_wrapper_ptr = make(LanguageServerType::language_name(), [project_path]() { return LanguageServerType::try_create(project_path).release_value_but_fixme_should_propagate_errors(); }); auto& connection_wrapper = *connection_wrapper_ptr; - ServerConnectionInstances::set_instance_for_language(LanguageServerType::language_name(), move(connection_wrapper_ptr)); + ConnectionToServerInstances::set_instance_for_language(LanguageServerType::language_name(), move(connection_wrapper_ptr)); return connection_wrapper; } diff --git a/Userland/DevTools/HackStudio/LanguageClients/ServerConnections.h b/Userland/DevTools/HackStudio/LanguageClients/ConnectionsToServer.h similarity index 56% rename from Userland/DevTools/HackStudio/LanguageClients/ServerConnections.h rename to Userland/DevTools/HackStudio/LanguageClients/ConnectionsToServer.h index a5e1496d28..ad430f6eca 100644 --- a/Userland/DevTools/HackStudio/LanguageClients/ServerConnections.h +++ b/Userland/DevTools/HackStudio/LanguageClients/ConnectionsToServer.h @@ -12,19 +12,19 @@ #include #include -#define LANGUAGE_CLIENT(language_name_, socket_name) \ - namespace language_name_ { \ - class ServerConnection final : public HackStudio::ServerConnection { \ - IPC_CLIENT_CONNECTION(ServerConnection, "/tmp/portal/language/" #socket_name) \ - public: \ - static const char* language_name() { return #language_name_; } \ - \ - private: \ - ServerConnection(NonnullOwnPtr socket, const String& project_path) \ - : HackStudio::ServerConnection(move(socket), project_path) \ - { \ - } \ - }; \ +#define LANGUAGE_CLIENT(language_name_, socket_name) \ + namespace language_name_ { \ + class ConnectionToServer final : public HackStudio::ConnectionToServer { \ + IPC_CLIENT_CONNECTION(ConnectionToServer, "/tmp/portal/language/" #socket_name) \ + public: \ + static const char* language_name() { return #language_name_; } \ + \ + private: \ + ConnectionToServer(NonnullOwnPtr socket, const String& project_path) \ + : HackStudio::ConnectionToServer(move(socket), project_path) \ + { \ + } \ + }; \ } namespace LanguageClients {