HackStudio: Don't take LexicalPath as argument

Also make use of LexicalPath::has_extension() in one place.
This commit is contained in:
Andreas Kling 2020-12-15 11:58:28 +01:00
parent 4befc2c282
commit d410449d87
Notes: sideshowbarker 2024-07-19 00:49:14 +09:00
4 changed files with 19 additions and 17 deletions

View file

@ -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;
}

View file

@ -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;

View file

@ -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());
}
}

View file

@ -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());