HackStudio: Don't take LexicalPath as argument
Also make use of LexicalPath::has_extension() in one place.
This commit is contained in:
parent
4befc2c282
commit
d410449d87
Notes:
sideshowbarker
2024-07-19 00:49:14 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/d410449d879
4 changed files with 19 additions and 17 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Reference in a new issue