コード例 #1
0
        private void UpdateParserLibs(NitraClient client)
        {
            try {
                RemoveDuplicates(ParserLibs, pl => ToFullSuitePath(pl.Path));

                var libsArray = ParserLibs.Select(vm => ToFullSuitePath(vm.Path)).ToImmutableArray();

                client.Send(new ClientMessage.GetLibsMetadata(libsArray));
                var libsMetadata = client.Receive <ServerMessage.LibsMetadata>().metadatas;

                client.Send(new ClientMessage.GetLibsSyntaxModules(libsArray));
                var libsSyntaxModules = client.Receive <ServerMessage.LibsSyntaxModules>().modules;

                client.Send(new ClientMessage.GetLibsProjectSupports(libsArray));
                var libsProjectSupports = client.Receive <ServerMessage.LibsProjectSupports>().libs;

                Languages.Clear();
                DynamicExtensions.Clear();
                ProjectSupports.Clear();

                for (int i = 0; i < libsMetadata.Length; i++)
                {
                    var languages       = libsMetadata[i].Languages;
                    var syntaxModules   = libsSyntaxModules[i].Modules;
                    var projectSupports = libsProjectSupports[i].ProjectSupports;

                    foreach (var language in languages)
                    {
                        Languages.Add(language);
                    }

                    if (!Languages.IsEmpty)
                    {
                        SelectedLanguage = Languages[0];
                    }

                    foreach (var syntaxModule in syntaxModules)
                    {
                        DynamicExtensions.Add(new DynamicExtensionViewModel(syntaxModule));
                    }

                    foreach (var projectSupport in projectSupports)
                    {
                        ProjectSupports.Add(new ProjectSupportViewModel(projectSupport.Caption, projectSupport.Path, projectSupport));
                    }
                }
            } catch (Exception e) {
                Debug.WriteLine("Failed to update parser lib metadata" + Environment.NewLine + e);
            }
        }
コード例 #2
0
        public ServerModel(StringManager stringManager, Ide.Config config, IServiceProvider serviceProvider)
        {
            Contract.Requires(stringManager != null);
            Contract.Requires(config != null);
            Contract.Requires(serviceProvider != null);

            ServiceProvider = serviceProvider;

            var client = new NitraClient(stringManager);

            client.Send(new ClientMessage.CheckVersion(M.Constants.AssemblyVersionGuid));
            var responseMap = client.ResponseMap;

            responseMap[-1] = Response;
            _config         = config;
            Client          = client;

            var builder = ImmutableHashSet.CreateBuilder <string>(StringComparer.OrdinalIgnoreCase);

            foreach (var lang in config.Languages)
            {
                builder.UnionWith(lang.Extensions);
            }
            Extensions = builder.ToImmutable();
        }
コード例 #3
0
ファイル: Server.cs プロジェクト: rsdn/nitra
    public Server(StringManager stringManager, Ide.Config config, IServiceProvider serviceProvider)
    {
      Contract.Requires(ServiceProvider != null);

      ServiceProvider = serviceProvider;

      var client = new NitraClient(stringManager);
      client.Send(new ClientMessage.CheckVersion(M.Constants.AssemblyVersionGuid));
      var responseMap = client.ResponseMap;
      responseMap[-1] = Response;
      _config = config;
      Client = client;
    }
コード例 #4
0
ファイル: Server.cs プロジェクト: JetBrains/Nitra
    public Server(StringManager stringManager, Ide.Config config, IServiceProvider serviceProvider)
    {
      Contract.Requires(ServiceProvider != null);

      ServiceProvider = serviceProvider;

      var client = new NitraClient(stringManager);
      client.Send(new ClientMessage.CheckVersion(M.Constants.AssemblyVersionGuid));
      var responseMap = client.ResponseMap;
      responseMap[-1] = Response;
      _config = config;
      Client = client;

      var builder = ImmutableHashSet.CreateBuilder<string>(StringComparer.OrdinalIgnoreCase);
      foreach (var lang in config.Languages)
        builder.UnionWith(lang.Extensions);
      Extensions = builder.ToImmutable();
    }