소스 검색

HackStudio: Don't take LexicalPath as argument

Also make use of LexicalPath::has_extension() in one place.
Andreas Kling 4 년 전
부모
커밋
d410449d87
4개의 변경된 파일19개의 추가작업 그리고 17개의 파일을 삭제
  1. 8 6
      DevTools/HackStudio/CodeDocument.cpp
  2. 4 4
      DevTools/HackStudio/CodeDocument.h
  3. 6 6
      DevTools/HackStudio/Editor.cpp
  4. 1 1
      DevTools/HackStudio/ProjectFile.cpp

+ 8 - 6
DevTools/HackStudio/CodeDocument.cpp

@@ -28,7 +28,7 @@
 
 namespace HackStudio {
 
-NonnullRefPtr<CodeDocument> CodeDocument::create(const LexicalPath& file_path, Client* client)
+NonnullRefPtr<CodeDocument> CodeDocument::create(const String& file_path, Client* client)
 {
     return adopt(*new CodeDocument(file_path, client));
 }
@@ -38,17 +38,19 @@ NonnullRefPtr<CodeDocument> 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;
 }
 

+ 4 - 4
DevTools/HackStudio/CodeDocument.h

@@ -35,7 +35,7 @@ namespace HackStudio {
 class CodeDocument final : public GUI::TextDocument {
 public:
     virtual ~CodeDocument() override;
-    static NonnullRefPtr<CodeDocument> create(const LexicalPath& file_path, Client* client = nullptr);
+    static NonnullRefPtr<CodeDocument> create(const String& file_path, Client* client = nullptr);
     static NonnullRefPtr<CodeDocument> create(Client* client = nullptr);
 
     const Vector<size_t>& breakpoint_lines() const { return m_breakpoint_lines; }
@@ -43,16 +43,16 @@ public:
     Optional<size_t> 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<size_t> m_breakpoint_lines;
     Optional<size_t> m_execution_position;

+ 6 - 6
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<const GUI::InsertTextCommand&>(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<const GUI::RemoveTextCommand&>(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());
 }
 }

+ 1 - 1
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());