// Handles complete-snippet command
 public void Handle(Guid clientID, CommandMessage message)
 {
     Logger.Write("Handling complete-snippet");
     var caret = _editor.GetCaret();
     if (caret == "")
         return;
     Logger.Write("caret is: " + caret);
     var lines = caret.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
     var position = new FilePosition(lines[0]);
     var line = lines[position.Line];
     var word = Word.Extract(line, position.Column);
     _editor.Send(string.Format(
         "remove \"{0}|{1}|{2}\" \"{3}|{4}\"",
         position.Fullpath,
         position.Line.ToString(),
         word.Column.ToString(),
         position.Line.ToString(),
         (word.Column + word.Content.Length).ToString()
     ));
     var whitespaces = getWhitespacePrefix(line);
     // Dispatch message to be handled by the handle method if not overridden by another
     // external handler
     _dispatch(string.Format(
         "snippet-complete \"{0}\" \"{1}\" \"{2}|{3}|{4}\" \"{5}\"",
         Path.GetExtension(position.Fullpath),
         word.Content,
         position.Fullpath,
         position.Line,
         word.Column,
         whitespaces
     ));
 }
 public void Handle(Guid clientID, CommandMessage message)
 {
     Logger.Write("Handling write output");
     if (message.Arguments.Count != 2)
         return;
     _endpoint.WriteOutput(message.Arguments[0], message.Arguments[1]);
 }
Example #3
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 #4
0
        public void Handle(Guid clientID, CommandMessage message)
        {
            Logger.Write("arg count is " + message.Arguments.Count.ToString());
            if (message.Arguments.Count > 2 || message.Arguments.Count == 0)
                return;
            if (clientID == Guid.Empty)
                return;
            var limit = 0;
            if (message.Arguments.Count == 2) {
                Logger.Write("arg is " + message.Arguments[1]);
                int limitParam;
                if (!int.TryParse(message.Arguments[1], out limitParam))
                    return;
                if (limitParam <= 0)
                    return;
                limit = limitParam;
            }
            var sb = new StringBuilder();
            sb.Append(message.CorrelationID);
            var formatter = new CacheFormatter();
            List<IGrouping<string, ICodeReference>> result;
            Logger.Write("Taking " + limit.ToString());
            if (limit > 0)
                result = _cache.Find(message.Arguments[0], limit).GroupBy(x => x.File).ToList();
            else
                result = _cache.Find(message.Arguments[0]).GroupBy(x => x.File).ToList();

            result.ForEach(x => {
                sb.AppendLine(formatter.FormatFile(x.Key));
                x.ToList()
                    .ForEach(y => sb.AppendLine(formatter.Format(y)));
            });
            _endpoint.Send(sb.ToString(), clientID);
        }
 public bool Handles(CommandMessage message)
 {
     return
         message.Command.Equals("get-token-endpoint") ||
         message.Command.Equals("get-token-event-endpoint") ||
         message.Command.Equals("get-token-output-endpoint") ||
         message.Command.Equals("get-token-editor-endpoint") ||
         message.Command.Equals("get-token-path");
 }
 public void Handle(Guid clientID, CommandMessage message)
 {
     if (clientID == Guid.Empty)
         return;
     if (message.Arguments.Count != 1)
         return;
     var scriptName = message.Arguments[0];
     var state = _eventEndpoint.GetScriptState(scriptName);
     _endpoint.Send(message.CorrelationID + state, clientID);
 }
 private Query getQuery(CommandMessage message)
 {
     var query = "";
     if (message.Arguments.Count > 0)
         query = message.Arguments[0];
     var queryArgs = new QueryArgumentParser().Parse(query);
     if (queryArgs == null)
         return null;
     return new Query()
         {
             File = getValue(queryArgs, "file")
         };
 }
 public void Handle(Guid clientID, CommandMessage message)
 {
     if (clientID == Guid.Empty)
         return;
     var query = getQuery(message);
     var sb = new StringBuilder();
     sb.Append(message.CorrelationID);
     var formatter = new CacheFormatter();
     _cache.AllProjects()
         .Where(x => filter(x, query)).ToList()
         .ForEach(x => sb.AppendLine(formatter.Format(x)));
     _endpoint.Send(sb.ToString(), clientID);
 }
        public void Handle(Guid clientID, CommandMessage message)
        {
            var arguments = message.Arguments.ToArray();
            if (arguments.Length < 2)
                return;
            var language = new PluginFinder(_cache).FindLanguage(arguments[0]);
            if (language == null)
                return;
            var file = getLocal(arguments);
            if (!File.Exists(file))
                file = getGlobal(arguments);

            if (!File.Exists(file))
                return;
            File.Delete(file);
        }
        public void Handle(Guid clientID, CommandMessage message)
        {
            var arguments = message.Arguments.ToArray();
            if (arguments.Length < 2)
                return;
            var language = new PluginFinder(_cache).FindLanguage(arguments[0]);
            if (language == null)
                return;
            var file = getLocal(arguments);
            if (!File.Exists(file))
                file = getGlobal(arguments);

            if (!File.Exists(file))
                return;
            _endpoint.Editor.Send(string.Format("goto \"{0}|0|0\"", file));
        }
        public void Handle(Guid clientID, Commands.CommandMessage message)
        {
            var response = new StringBuilder();

            if (message.CorrelationID != null)
            {
                response.Append(message.CorrelationID);
            }

            if (message.Arguments.Count < 2)
            {
                return;
            }

            var language = new PluginFinder(_cache).FindLanguage(message.Command);

            if (language == null)
            {
                return;
            }

            var plugin = _pluginLocator.Locate().FirstOrDefault(x => x.GetLanguage() == language);

            if (plugin == null)
            {
                return;
            }


            if (message.Arguments[0] == "command")
            {
                plugin.Run(message.Arguments.Skip(1).ToArray());
                return;
            }
            if (message.Arguments[0] == "query")
            {
                foreach (var line in plugin.Query(message.Arguments.Skip(1).ToArray()))
                {
                    response.AppendLine(line);
                }
                _endpoint.Send(response.ToString(), clientID);
            }
        }
 public void Handle(Guid clientID, CommandMessage message)
 {
     if (clientID == Guid.Empty)
         return;
     if (message.Arguments.Count != 1)
         return;
     var tokenHint = message.Arguments[0];
     var locator = new ProfileLocator(fixPath(tokenHint));
     var response = "not-running";
     var tokenPath = locator.GetLocalProfilesRoot();
     if (tokenPath != null) {
         tokenPath = Path.GetDirectoryName(tokenPath);
         switch (message.Command) {
             case "get-token-path":
                 response = tokenPath;
                 break;
             case "get-token-endpoint":
                 var instance = (new CodeEngineDispatcher(new FS())).GetInstances().FirstOrDefault(x => matchPath(tokenPath, x.Key));
                 if (instance != null)
                     response = string.Format("127.0.0.1:{0}", instance.Port);
                 break;
             case "get-token-event-endpoint":
                 var events = (new OpenIDE.Core.EventEndpointIntegrarion.EventClient(tokenPath)).GetInstance();
                 if (events != null)
                     response = string.Format("127.0.0.1:{0}", events.Port);
                 break;
             case "get-token-output-endpoint":
                 var output = (new OpenIDE.Core.OutputEndpointIntegration.OutputClient(tokenPath)).GetInstance();
                 if (output != null)
                     response = string.Format("127.0.0.1:{0}", output.Port);
                 break;
             case "get-token-editor-endpoint":
                 var editor = (new OpenIDE.Core.EditorEngineIntegration.EngineLocator(new FS()))
                     .GetInstances()
                     .FirstOrDefault(x => x.Key == tokenPath);
                 if (editor != null)
                     response = string.Format("127.0.0.1:{0}", editor.Port);
                 break;
         }
     }
     _endpoint.Send(message.CorrelationID + response, clientID);
 }
Example #13
0
        public static void Main(string[] args)
        {
            if (args.Length == 0)
                return;

            if (args[0] == "initialize") {
                if (args.Length != 2) {
                    Console.WriteLine("Usage: initialize KEY_PATH");
                }
                Logger.Write("Running C# plugin as daemon");
                var writer = new ConsoleResponseWriter();
                _keyPath = args[1];
                setupLogging(_keyPath);
                _cache = new OutputWriter(new NullResponseWriter());
                _dispatcher = new Dispatcher();
                configureHandlers(_dispatcher);

                writer.Write("initialized");
                while (true) {
                    var msg = CommandMessage.New(Console.ReadLine());
                    Logger.Write("Handling command " + msg);
                    if (msg.Command == "shutdown") {
                        writer.Write("end-of-conversation");
                        break;
                    }
                    handleMessage(msg, writer, false);
                    writer.Write("end-of-conversation");
                }
            } else {
                Logger.Write("Running C# plugin as comman-line app");
                _keyPath = Environment.CurrentDirectory;
                setupLogging(_keyPath);
                _cache = new OutputWriter(new NullResponseWriter());
                _dispatcher = new Dispatcher();
                configureHandlers(_dispatcher);

                var msg = new CommandMessage(args[0], null, getParameters(args));
                handleMessage(msg, new ConsoleResponseWriter(), false);
            }
            Logger.Write("Shutting down C# plugin");
        }
 public void Handle(Guid clientID, CommandMessage message)
 {
     if (clientID == Guid.Empty)
         return;
     var query = getQuery(message);
     var sb = new StringBuilder();
     sb.Append(message.CorrelationID);
     if (query != null) {
         var formatter = new CacheFormatter();
         var matcher = new Func<string,string,bool>((a,b) => a == b);
         if (isWildCard(query))
             matcher = wildcardmatch;
         _cache.AllReferences()
             .Where(x => filter(x, query, matcher))
             .GroupBy(x => x.File).ToList()
             .ForEach(x =>
                 {
                     sb.AppendLine(formatter.FormatFile(x.Key));
                     x.ToList()
                         .ForEach(y => sb.AppendLine(formatter.Format(y)));
                 });
     }
     _endpoint.Send(sb.ToString(), clientID);
 }
 public bool Handles(Commands.CommandMessage message)
 {
     return(new PluginFinder(_cache).FindLanguage(message.Command) != null);
 }
Example #16
0
 public bool Handles(CommandMessage message)
 {
     return message.Command.Equals("find-types");
 }
 public bool Handles(CommandMessage message)
 {
     return message.Command.Equals("write-output");
 }
 public bool Handles(CommandMessage message)
 {
     return message.Command.Equals("snippet-delete");
 }
Example #19
0
 public bool Handles(CommandMessage message)
 {
     return message.Command.Equals("goto-defiinition");
 }
 public bool Handles(CommandMessage message)
 {
     return message.Command.Equals("get-projects");
 }
 public bool Handles(CommandMessage message)
 {
     return message.Command.Equals("rscript-state");
 }
Example #22
0
 private static void handleMessage(CommandMessage msg, IResponseWriter writer, bool serverMode)
 {
     if (msg == null)
         return;
     Logger.Write("Handling message: " + msg);
     var handler = _dispatcher.GetHandler(msg.Command);
     if (handler == null) {
         writer.Write("error|" + msg.Command + " is not a valid C# plugin command. For a list of commands type oi.");
         return;
     }
     try {
         if (handler == null)
             return;
         handler.Execute(writer, msg.Arguments.ToArray());
     } catch (Exception ex) {
         var builder = new OutputWriter(writer);
         writeException(builder, ex);
     }
     Logger.Write("Done handling message");
 }
 public bool Handles(CommandMessage message)
 {
     return message.Command.Equals("get-signatures");
 }
 private Query getQuery(CommandMessage message)
 {
     var query = "";
     if (message.Arguments.Count > 0)
         query = message.Arguments[0];
     var queryArgs = new QueryArgumentParser().Parse(query);
     if (queryArgs == null)
         return null;
     return new Query()
         {
             Language = getValue(queryArgs, "language"),
             Type = getValue(queryArgs, "type"),
             File = getValue(queryArgs, "file"),
             Signature = getValue(queryArgs, "signature"),
             Name = getValue(queryArgs, "name"),
             Parent = getValue(queryArgs, "parent"),
             Custom = getValue(queryArgs, "custom")
         };
 }
 public bool Handles(CommandMessage message)
 {
     return message.Command.Equals("complete-snippet");
 }