diff --git a/server/Oraide.LanguageServer/LanguageServerProtocolHandlers/TextDocument/TextDocumentDefinitionHandler.cs b/server/Oraide.LanguageServer/LanguageServerProtocolHandlers/TextDocument/TextDocumentDefinitionHandler.cs index 959de93..6ed7340 100644 --- a/server/Oraide.LanguageServer/LanguageServerProtocolHandlers/TextDocument/TextDocumentDefinitionHandler.cs +++ b/server/Oraide.LanguageServer/LanguageServerProtocolHandlers/TextDocument/TextDocumentDefinitionHandler.cs @@ -157,6 +157,7 @@ protected override IEnumerable HandleRulesValue(CursorTarget cursorTar actorDefinitions = actorDefinitions.Union(mapSymbols.ActorDefinitions[cursorTarget.TargetString]); weaponDefinitions = weaponDefinitions.Union(mapSymbols.WeaponDefinitions[cursorTarget.TargetString]); conditionDefinitions = conditionDefinitions.Union(mapSymbols.ConditionDefinitions[cursorTarget.TargetString]); + paletteDefinitions = paletteDefinitions.Union(mapSymbols.PaletteDefinitions[cursorTarget.TargetString]); spriteSequenceImageDefinitions = spriteSequenceImageDefinitions .SelectMany(x => x) diff --git a/server/Oraide.LanguageServer/LanguageServerProtocolHandlers/TextDocument/TextDocumentHoverHandler.cs b/server/Oraide.LanguageServer/LanguageServerProtocolHandlers/TextDocument/TextDocumentHoverHandler.cs index 62ce130..9fc16e6 100644 --- a/server/Oraide.LanguageServer/LanguageServerProtocolHandlers/TextDocument/TextDocumentHoverHandler.cs +++ b/server/Oraide.LanguageServer/LanguageServerProtocolHandlers/TextDocument/TextDocumentHoverHandler.cs @@ -181,7 +181,7 @@ protected override Hover HandleRulesValue(CursorTarget cursorTarget) var weaponDefinitions = modSymbols.WeaponDefinitions.Select(x => x.Key); var conditionDefinitions = modSymbols.ConditionDefinitions.Select(x => x.Key); var cursorDefinitions = modSymbols.CursorDefinitions.Select(x => x.Key); - var paletteDefinitions = modSymbols.PaletteDefinitions.Select(x => x.Key); + var paletteDefinitions = modSymbols.PaletteDefinitions; var spriteSequenceImageDefinitions = modSymbols.SpriteSequenceImageDefinitions; MapManifest mapManifest = default; @@ -195,6 +195,12 @@ protected override Hover HandleRulesValue(CursorTarget cursorTarget) actorDefinitions = actorDefinitions.Union(mapSymbols.ActorDefinitions.Select(x => x.Key)); weaponDefinitions = weaponDefinitions.Union(mapSymbols.WeaponDefinitions.Select(x => x.Key)); conditionDefinitions = conditionDefinitions.Union(mapSymbols.ConditionDefinitions.Select(x => x.Key)); + + // Merge mod symbols with map symbols. + paletteDefinitions = paletteDefinitions + .SelectMany(x => x) + .Union(mapSymbols.PaletteDefinitions.SelectMany(x => x)) + .ToLookup(x => x.Name, y => y); spriteSequenceImageDefinitions = spriteSequenceImageDefinitions .SelectMany(x => x) .Union(mapSymbols.SpriteSequenceImageDefinitions.SelectMany(x => x)) @@ -223,7 +229,7 @@ protected override Hover HandleRulesValue(CursorTarget cursorTarget) if (fieldInfo.OtherAttributes.Any(x => x.Name == "PaletteReference") && paletteDefinitions.Contains(cursorTarget.TargetString)) { - var palette = modSymbols.PaletteDefinitions[cursorTarget.TargetString].First(); + var palette = paletteDefinitions[cursorTarget.TargetString].First(); return HoverFromHoverInfo(palette.ToMarkdownInfoString(), range); }