Example #1
0
 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));
 }
Example #2
0
        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));
        }