载入中...
搜索中...
未找到
LanguageIndex.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4
5#include <cstddef>
6#include <cstdint>
7#include <memory>
8#include <optional>
9#include <string>
10#include <string_view>
11#include <vector>
12
13namespace eve::dev::lsp {
14
16struct Position {
17 size_t line = 0;
18 size_t character = 0;
19};
20
26
28struct Location {
29 std::string uri;
31};
32
34struct TextEdit {
36 std::string newText;
37};
38
40namespace SemanticTypes {
41constexpr uint32_t Namespace = 0;
42constexpr uint32_t Class = 1;
43constexpr uint32_t Function = 2;
44constexpr uint32_t Method = 3;
45constexpr uint32_t Variable = 4;
46constexpr uint32_t Parameter = 5;
47constexpr uint32_t Property = 6;
48constexpr uint32_t Keyword = 7;
49} // namespace SemanticTypes
50
52namespace SemanticMods {
53constexpr uint32_t Declaration = 1u << 0;
54constexpr uint32_t Readonly = 1u << 1;
55constexpr uint32_t DefaultLibrary = 1u << 2;
56} // namespace SemanticMods
57
61 size_t length = 0;
63 uint32_t modifiers = 0;
64 std::string name;
65};
66
69public:
76
78 void update(std::string canonicalUri, std::string clientUri, std::string source);
80 void remove(std::string_view canonicalUri);
82 std::optional<Location> definition(std::string_view canonicalUri, Position position) const;
84 std::vector<Location> references(std::string_view canonicalUri, Position position, bool includeDeclaration) const;
86 std::optional<std::vector<TextEdit>> rename(std::string_view canonicalUri, Position position,
87 std::string_view newName) const;
89 std::vector<SemanticToken> semanticTokens(std::string_view canonicalUri) const;
90
91private:
92 struct Unit;
93 struct Target;
94 struct Impl;
95
96 const Unit* unit(std::string_view canonicalUri) const;
97 std::optional<Target> targetAt(const Unit& unit, Position position) const;
98 std::optional<Location> targetDefinition(const Target& target) const;
99 std::vector<Location> targetReferences(const Target& target, bool includeDeclaration) const;
100 std::unique_ptr<Impl> impl_;
101};
102
103} // namespace eve::dev::lsp
LogicalId target
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
std::array< float, 3 > position
TacticalUnit * unit
LogicalId definition
const UnitySourceAsset & source
Cross-file semantic index for EveScript source modules.
~WorkspaceIndex()
Workspace index.
WorkspaceIndex(const WorkspaceIndex &)=delete
WorkspaceIndex & operator=(const WorkspaceIndex &)=delete
constexpr uint32_t Readonly
constexpr uint32_t Declaration
constexpr uint32_t DefaultLibrary
constexpr uint32_t Variable
constexpr uint32_t Method
constexpr uint32_t Namespace
constexpr uint32_t Parameter
constexpr uint32_t Keyword
constexpr uint32_t Function
constexpr uint32_t Property
Location public API.
Position public API.
Range public API.
One identifier classified for editor semantic highlighting.
TextEdit public API.