// 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]); }
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("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); }
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); }
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"); }
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"); }
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"); }