mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-23 18:02:05 -05:00
0761926127
As part of this, the CodeDocument now keeps track of the kind of difference for each line. Previously, we iterated every hunk every time the editor was painted, but now we do that once whenever the diff changes, and then save the type of difference for each line.
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
/*
|
|
* Copyright (c) 2020, Itamar S. <itamar8910@gmail.com>
|
|
* Copyright (c) 2022, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include "CodeDocument.h"
|
|
|
|
namespace HackStudio {
|
|
|
|
NonnullRefPtr<CodeDocument> CodeDocument::create(DeprecatedString const& file_path, Client* client)
|
|
{
|
|
return adopt_ref(*new CodeDocument(file_path, client));
|
|
}
|
|
|
|
NonnullRefPtr<CodeDocument> CodeDocument::create(Client* client)
|
|
{
|
|
return adopt_ref(*new CodeDocument(client));
|
|
}
|
|
|
|
CodeDocument::CodeDocument(DeprecatedString const& file_path, Client* client)
|
|
: TextDocument(client)
|
|
, m_file_path(file_path)
|
|
{
|
|
auto lexical_path = LexicalPath(file_path);
|
|
m_language = Syntax::language_from_filename(lexical_path);
|
|
}
|
|
|
|
CodeDocument::CodeDocument(Client* client)
|
|
: TextDocument(client)
|
|
{
|
|
}
|
|
|
|
CodeDocument::DiffType CodeDocument::line_difference(size_t line) const
|
|
{
|
|
return m_line_differences[line];
|
|
}
|
|
|
|
void CodeDocument::set_line_differences(Badge<HackStudio::Editor>, Vector<HackStudio::CodeDocument::DiffType> line_differences)
|
|
{
|
|
m_line_differences = move(line_differences);
|
|
}
|
|
|
|
}
|