public void Handle(Guid clientID, CommandMessage message) { if (message.Arguments.Count != 1) return; var position = new OpenIDE.Core.CommandBuilding.FilePosition(message.Arguments[0]); var extension = Path.GetExtension(position.Fullpath); var language = new PluginFinder(_cache).FindLanguage(extension); if (language == null) return; var plugin = _pluginLocator.Locate() .FirstOrDefault(x => x.GetLanguage() == language); if (plugin == null) return; var signature = plugin.SignatureFromPosition(position); if (signature == null) return; var codeRef = _cache.AllSignatures() .FirstOrDefault(x => x.Signature == signature.Signature && x.File == signature.File); if (codeRef == null) return; _endpoint.Editor.Send( string.Format("goto \"{0}|{1}|{2}\"", codeRef.File, codeRef.Line, codeRef.Column)); }
public void Handle(Guid clientID, CommandMessage message) { Logger.Write("Handling go to definition"); if (message.Arguments.Count != 1) { return; } var position = new OpenIDE.Core.CommandBuilding.FilePosition(message.Arguments[0]); var extension = Path.GetExtension(position.Fullpath); var language = new PluginFinder(_cache).FindLanguage(extension); if (language == null) { return; } var plugin = _pluginLocator.Locate() .FirstOrDefault(x => x.GetLanguage() == language); if (plugin == null) { return; } var signature = plugin.SignatureFromPosition(position); if (signature == null) { return; } var codeRef = _cache.AllSignatures() .FirstOrDefault(x => x.Signature == signature.Signature && x.File == signature.File); if (codeRef == null) { return; } _endpoint.Editor.Send( string.Format("goto \"{0}|{1}|{2}\"", codeRef.File, codeRef.Line, codeRef.Column)); }