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