Example #1
0
 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);
 }
Example #2
0
        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;
        }
Example #3
0
        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) => {});
 }
Example #7
0
 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");
 }
Example #8
0
 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();
 }
Example #9
0
 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 {
     }
 }
Example #10
0
 public void Handle(CrawlHandler cacheHandler)
 {
     if (FilesToHandle.Count == 0)
         return;
     cacheHandler.SetLanguage(Plugin.GetLanguage());
     Plugin.Crawl(FilesToHandle, (line) => cacheHandler.Handle(line));
     FilesToHandle.Clear();
 }
Example #11
0
 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();
 }