Serenity Operating System
at master 44 lines 1.8 kB view raw
1/* 2 * Copyright (c) 2021, Itamar S. <itamar8910@gmail.com> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/DeprecatedString.h> 10#include <AK/HashMap.h> 11#include <AK/NonnullRefPtr.h> 12#include <LibCodeComprehension/FileDB.h> 13#include <LibGUI/TextDocument.h> 14 15namespace LanguageServers { 16 17class FileDB final : public CodeComprehension::FileDB { 18public: 19 FileDB() = default; 20 virtual Optional<DeprecatedString> get_or_read_from_filesystem(StringView filename) const override; 21 22 RefPtr<const GUI::TextDocument> get_document(DeprecatedString const& filename) const; 23 RefPtr<GUI::TextDocument> get_document(DeprecatedString const& filename); 24 25 bool add(DeprecatedString const& filename, int fd); 26 bool add(DeprecatedString const& filename, DeprecatedString const& content); 27 28 void on_file_edit_insert_text(DeprecatedString const& filename, DeprecatedString const& inserted_text, size_t start_line, size_t start_column); 29 void on_file_edit_remove_text(DeprecatedString const& filename, size_t start_line, size_t start_column, size_t end_line, size_t end_column); 30 DeprecatedString to_absolute_path(DeprecatedString const& filename) const; 31 bool is_open(DeprecatedString const& filename) const; 32 33private: 34 ErrorOr<NonnullRefPtr<GUI::TextDocument>> create_from_filesystem(DeprecatedString const& filename) const; 35 ErrorOr<NonnullRefPtr<GUI::TextDocument>> create_from_fd(int fd) const; 36 ErrorOr<NonnullRefPtr<GUI::TextDocument>> create_from_file(NonnullOwnPtr<Core::File>) const; 37 static RefPtr<GUI::TextDocument> create_with_content(DeprecatedString const&); 38 39private: 40 HashMap<DeprecatedString, NonnullRefPtr<GUI::TextDocument>> m_open_files; 41 DeprecatedString m_project_root; 42}; 43 44}