mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:32:46 +00:00 
			
		
		
		
	 0761926127
			
		
	
	
		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);
 | |
| }
 | |
| 
 | |
| }
 |