private void consoleSearch(Instance instance, string search) { var result = instance.FindTypes(search); var searchResult = new SearchResult(); var handler = new CrawlHandler(searchResult, (s) => {}); result .Split(new[] { Environment.NewLine }, StringSplitOptions.None) .ToList() .ForEach(x => handler.Handle(x)); for (int i = 0; i < searchResult.Signatures.Count; i++) Console.WriteLine("{0} - {1}", i + 1, searchResult.Signatures[i].Signature); if (searchResult.Signatures.Count == 0) return; var selection = Console.ReadLine(); int number; if (!int.TryParse(selection, out number)) return; if (number < 1 || number > (searchResult.Signatures.Count)) return; var signature = searchResult.Signatures[number - 1]; var editor = _editorEngineFactory.GetInstance(Environment.CurrentDirectory); if (editor == null) return; editor.GoTo(signature.File, signature.Line, signature.Column); }
public static CommandEndpoint GetEndpoint(string path, string[] enabledLanguages) { _path = path; _interpreters = new Interpreters(_path); ProcessExtensions.GetInterpreter = (file) => { var interpreters = _interpreters .GetInterpreterFor(Path.GetExtension(file)); return interpreters; }; _cache = new TypeCache(); _crawlHandler = new CrawlHandler(_cache, (s) => Logger.Write(s)); _pluginLocator = new PluginLocator( enabledLanguages, new ProfileLocator(_path), (msg) => {}); initPlugins(_pluginLocator, _crawlHandler); _eventEndpoint = new EventEndpoint(_path, _pluginLocator); _eventEndpoint.Start(); Logger.Write("Event endpoint listening on port: {0}", _eventEndpoint.Port); Logger.Write("Creating plugin file tracker"); _tracker = new PluginFileTracker(); Logger.Write("Starting plugin file tracker"); _tracker.Start( _path, _cache, _cache, _pluginLocator, _eventEndpoint); Logger.Write("Plugin file tracker started"); _endpoint = new CommandEndpoint(_path, _cache, _eventEndpoint); _endpoint.AddHandler(messageHandler); _handlers.AddRange(new IHandler[] { new GetProjectsHandler(_endpoint, _cache), new GetFilesHandler(_endpoint, _cache), new GetCodeRefsHandler(_endpoint, _cache), new GetSignatureRefsHandler(_endpoint, _cache), new GoToDefinitionHandler(_endpoint, _cache, _pluginLocator), new FindTypeHandler(_endpoint, _cache), new SnippetEditHandler(_endpoint, _cache, _path), new SnippetDeleteHandler(_cache, _path), new GetRScriptStateHandler(_endpoint, _eventEndpoint), // Make sure this handler is the last one since the command can be file extension or language name new LanguageCommandHandler(_endpoint, _cache, _pluginLocator) }); Logger.Write("Command endpoint started"); return _endpoint; }
public static CommandEndpoint GetEndpoint(string path, string[] enabledLanguages) { _path = path; Logger.Assign(new FileLogger()); _cache = new TypeCache(); var crawlHandler = new CrawlHandler(_cache, (s) => Logger.Write(s)); var pluginLocator = new PluginLocator( enabledLanguages, Path.GetDirectoryName(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)), (msg) => {}); initPlugins(pluginLocator, crawlHandler); _eventEndpoint = new EventEndpoint(_path, pluginLocator); _eventEndpoint.Start(); _tracker = new PluginFileTracker(); _tracker.Start( _path, _cache, _cache, pluginLocator, _eventEndpoint); _endpoint = new CommandEndpoint(_path, _cache, _eventEndpoint); _endpoint.AddHandler(messageHandler); _handlers.AddRange(new IHandler[] { new GetProjectsHandler(_endpoint, _cache), new GetFilesHandler(_endpoint, _cache), new GetCodeRefsHandler(_endpoint, _cache), new GetSignatureRefsHandler(_endpoint, _cache), new GoToDefinitionHandler(_endpoint, _cache, pluginLocator), new FindTypeHandler(_endpoint, _cache), new SnippetEditHandler(_endpoint, _cache, _path), new SnippetDeleteHandler(_cache, _path) }); return _endpoint; }
public void Handle(CrawlHandler cacheHandler) { if (FilesToHandle.Count == 0) return; try { cacheHandler.SetLanguage(Plugin.GetLanguage()); Plugin.Crawl(FilesToHandle, (line) => cacheHandler.Handle(line)); FilesToHandle.Clear(); } catch (Exception ex) { Logger.Write(ex); } }
private void handleChanges(Stack<Change> buffer) { var cacheHandler = new CrawlHandler(_crawlReader, (s) => Logger.Write(s)); var files = getChanges(buffer); files.ForEach(x => { _cache.Invalidate(x.Path); handle(x); }); foreach (var plugin in _plugins) plugin.Handle(cacheHandler); }
public void Setup() { _cache = new Fake_Cache(); _crawlHandler = new CrawlHandler(_cache, (s) => {}); }
private static void initPlugins(PluginLocator locator) { var plugins = locator.Locate(); foreach (var plugin in plugins) { try { plugin.Initialize(_path); plugin.GetCrawlFileTypes(); ThreadPool.QueueUserWorkItem( (o) => { try { var currentPlugin = (LanguagePlugin)o; var handler = new CrawlHandler(_cache, (s) => Logger.Write(s)); handler.SetLanguage(currentPlugin.GetLanguage()); currentPlugin.Crawl(new string[] { _path }, (line) => handler.Handle(line)); } catch (Exception ex) { Logger.Write(ex.ToString()); } }, plugin); } catch (Exception ex) { Logger.Write(ex.ToString()); } } Logger.Write("Plugins initialized"); }
public void Handle(CrawlHandler cacheHandler) { if (FilesToHandle.Count == 0) return; cacheHandler.SetLanguage(Plugin.GetLanguage()); foreach (var line in Plugin.Crawl(FilesToHandle)) cacheHandler.Handle(line); FilesToHandle.Clear(); }
private static void shutdownPlugins(PluginLocator locator, CrawlHandler handler) { try { var plugins = locator.Locate(); foreach (var plugin in plugins) { try { Logger.Write("Shutting down plugin " + plugin.GetLanguage()); plugin.Shutdown(); } catch (Exception ex) { Logger.Write(ex.ToString()); } } } catch { } }
public void Handle(CrawlHandler cacheHandler) { if (FilesToHandle.Count == 0) return; cacheHandler.SetLanguage(Plugin.GetLanguage()); Plugin.Crawl(FilesToHandle, (line) => cacheHandler.Handle(line)); FilesToHandle.Clear(); }
private static void initPlugins(PluginLocator locator, CrawlHandler handler) { new Thread(() => { locator.Locate().ToList() .ForEach(x => { try { handler.SetLanguage(x.GetLanguage()); foreach (var line in x.Crawl(new string[] { _path })) handler.Handle(line); } catch (Exception ex) { Logger.Write(ex.ToString()); } }); }).Start(); }