diff --git a/DevTools/HackStudio/CodeDocument.cpp b/DevTools/HackStudio/CodeDocument.cpp index cddbcb4ae30..58b3b570352 100644 --- a/DevTools/HackStudio/CodeDocument.cpp +++ b/DevTools/HackStudio/CodeDocument.cpp @@ -28,7 +28,7 @@ namespace HackStudio { -NonnullRefPtr CodeDocument::create(const LexicalPath& file_path, Client* client) +NonnullRefPtr CodeDocument::create(const String& file_path, Client* client) { return adopt(*new CodeDocument(file_path, client)); } @@ -38,17 +38,19 @@ NonnullRefPtr CodeDocument::create(Client* client) return adopt(*new CodeDocument(client)); } -CodeDocument::CodeDocument(const LexicalPath& file_path, Client* client) +CodeDocument::CodeDocument(const String& file_path, Client* client) : TextDocument(client) , m_file_path(file_path) { - if (file_path.basename().ends_with(".cpp") || file_path.basename().ends_with(".h")) + LexicalPath lexical_path(file_path); + + if (lexical_path.has_extension(".cpp") || lexical_path.has_extension(".h")) m_language = Language::Cpp; - else if (file_path.basename().ends_with(".js")) + else if (lexical_path.has_extension(".js")) m_language = Language::JavaScript; - else if (file_path.basename().ends_with(".ini")) + else if (lexical_path.has_extension(".ini")) m_language = Language::Ini; - else if (file_path.basename().ends_with(".sh")) + else if (lexical_path.has_extension(".sh")) m_language = Language::Shell; } diff --git a/DevTools/HackStudio/CodeDocument.h b/DevTools/HackStudio/CodeDocument.h index a044d3592cc..a0e2f3136fe 100644 --- a/DevTools/HackStudio/CodeDocument.h +++ b/DevTools/HackStudio/CodeDocument.h @@ -35,7 +35,7 @@ namespace HackStudio { class CodeDocument final : public GUI::TextDocument { public: virtual ~CodeDocument() override; - static NonnullRefPtr create(const LexicalPath& file_path, Client* client = nullptr); + static NonnullRefPtr create(const String& file_path, Client* client = nullptr); static NonnullRefPtr create(Client* client = nullptr); const Vector& breakpoint_lines() const { return m_breakpoint_lines; } @@ -43,16 +43,16 @@ public: Optional execution_position() const { return m_execution_position; } void set_execution_position(size_t line) { m_execution_position = line; } void clear_execution_position() { m_execution_position.clear(); } - const LexicalPath& file_path() const { return m_file_path; } + const String& file_path() const { return m_file_path; } Language language() const { return m_language; } virtual bool is_code_document() const override final { return true; } private: - explicit CodeDocument(const LexicalPath& file_path, Client* client = nullptr); + explicit CodeDocument(const String& file_path, Client* client = nullptr); explicit CodeDocument(Client* client = nullptr); - LexicalPath m_file_path; + String m_file_path; Language m_language { Language::Unknown }; Vector m_breakpoint_lines; Optional m_execution_position; diff --git a/DevTools/HackStudio/Editor.cpp b/DevTools/HackStudio/Editor.cpp index 660ff1c5a21..901d1d054a3 100644 --- a/DevTools/HackStudio/Editor.cpp +++ b/DevTools/HackStudio/Editor.cpp @@ -483,12 +483,12 @@ void Editor::set_document(GUI::TextDocument& doc) if (m_language_client) { dbgln("Opening {}", code_document.file_path()); - int fd = open(code_document.file_path().string().characters(), O_RDONLY | O_NOCTTY); + int fd = open(code_document.file_path().characters(), O_RDONLY | O_NOCTTY); if (fd < 0) { perror("open"); return; } - m_language_client->open_file(code_document.file_path().string(), fd); + m_language_client->open_file(code_document.file_path(), fd); close(fd); } } @@ -519,7 +519,7 @@ void Editor::update_autocomplete(const AutoCompleteRequestData& data) }; m_language_client->request_autocomplete( - code_document().file_path().string(), + code_document().file_path(), data.position.line(), data.position.column()); } @@ -544,7 +544,7 @@ void Editor::on_edit_action(const GUI::Command& command) if (command.is_insert_text()) { const GUI::InsertTextCommand& insert_command = static_cast(command); m_language_client->insert_text( - code_document().file_path().string(), + code_document().file_path(), insert_command.text(), insert_command.range().start().line(), insert_command.range().start().column()); @@ -554,7 +554,7 @@ void Editor::on_edit_action(const GUI::Command& command) if (command.is_remove_text()) { const GUI::RemoveTextCommand& remove_command = static_cast(command); m_language_client->remove_text( - code_document().file_path().string(), + code_document().file_path(), remove_command.range().start().line(), remove_command.range().start().column(), remove_command.range().end().line(), @@ -583,7 +583,7 @@ void Editor::flush_file_content_to_langauge_server() return; m_language_client->set_file_content( - code_document().file_path().string(), + code_document().file_path(), document().text()); } } diff --git a/DevTools/HackStudio/ProjectFile.cpp b/DevTools/HackStudio/ProjectFile.cpp index b8748c4f13c..989632b480b 100644 --- a/DevTools/HackStudio/ProjectFile.cpp +++ b/DevTools/HackStudio/ProjectFile.cpp @@ -38,7 +38,7 @@ ProjectFile::ProjectFile(const String& name) GUI::TextDocument& ProjectFile::document() const { if (!m_document) { - m_document = CodeDocument::create(LexicalPath(m_name)); + m_document = CodeDocument::create(m_name); auto file_or_error = Core::File::open(m_name, Core::File::ReadOnly); if (file_or_error.is_error()) { warnln("Couldn't open '{}': {}", m_name, file_or_error.error());