diff --git a/src/Features/Core/Portable/Diagnostics/DiagnosticResultSerializer.cs b/src/Features/Core/Portable/Diagnostics/DiagnosticResultSerializer.cs index 6ddbf328195f811cdfc4a829da00981072e2a2ff..7c9cb1664d3b6e541531e3baf869e9e2c855e5a6 100644 --- a/src/Features/Core/Portable/Diagnostics/DiagnosticResultSerializer.cs +++ b/src/Features/Core/Portable/Diagnostics/DiagnosticResultSerializer.cs @@ -5,8 +5,8 @@ using System.Collections.Immutable; using System.Runtime.CompilerServices; using System.Threading; -using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.CodeAnalysis.Diagnostics.Telemetry; +using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.Shared.Extensions; using Microsoft.CodeAnalysis.Workspaces.Diagnostics; using Roslyn.Utilities; @@ -77,7 +77,7 @@ internal static class DiagnosticResultSerializer var others = diagnosticDataSerializer.ReadFrom(reader, project, cancellationToken); var analysisResult = DiagnosticAnalysisResult.CreateFromSerialization( - project.Id, + project, version, syntaxLocalMap, semanticLocalMap, @@ -143,7 +143,16 @@ internal static class DiagnosticResultSerializer for (var i = 0; i < count; i++) { var documentId = DocumentId.ReadFrom(reader); - var diagnostics = serializer.ReadFrom(reader, project.GetDocument(documentId), cancellationToken); + var document = project.GetDocument(documentId); + + var diagnostics = serializer.ReadFrom(reader, document, cancellationToken); + + if (document?.SupportsDiagnostics() == false) + { + // drop diagnostics for document that doesn't support + // diagnostics + continue; + } map.Add(documentId, GetOrDefault(diagnostics)); } diff --git a/src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.ProjectState.cs b/src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.ProjectState.cs index 06357fbf68c8bfe421aa502ca12f419b952af811..5e167378da38b09d485e0af86a5e055190d138f3 100644 --- a/src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.ProjectState.cs +++ b/src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.ProjectState.cs @@ -7,6 +7,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Experimentation; +using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.Shared.Options; using Microsoft.CodeAnalysis.Workspaces.Diagnostics; using Roslyn.Utilities; @@ -82,7 +83,7 @@ public async Task GetAnalysisDataAsync(Project project // loading data can be cancelled any time. var serializer = new DiagnosticDataSerializer(_owner.AnalyzerVersion, lastResult.Version); - var builder = new Builder(project.Id, lastResult.Version, lastResult.DocumentIds); + var builder = new Builder(project, lastResult.Version, lastResult.DocumentIds); foreach (var documentId in lastResult.DocumentIds) { @@ -141,7 +142,7 @@ public async Task GetAnalysisDataAsync(Document docume // loading data can be cancelled any time. var serializer = new DiagnosticDataSerializer(_owner.AnalyzerVersion, lastResult.Version); - var builder = new Builder(document.Project.Id, lastResult.Version); + var builder = new Builder(document.Project, lastResult.Version); if (!await TryDeserializeDocumentAsync(serializer, document, builder, cancellationToken).ConfigureAwait(false)) { @@ -182,7 +183,7 @@ public async Task GetProjectAnalysisDataAsync(Project // loading data can be cancelled any time. var serializer = new DiagnosticDataSerializer(_owner.AnalyzerVersion, lastResult.Version); - var builder = new Builder(project.Id, lastResult.Version); + var builder = new Builder(project, lastResult.Version); if (!await TryDeserializeAsync(serializer, project, project.Id, _owner.NonLocalStateName, s_addOthers, builder, cancellationToken).ConfigureAwait(false)) { @@ -300,7 +301,7 @@ private async Task LoadInitialAnalysisDataAsync(Projec // loading data can be cancelled any time. var version = await GetDiagnosticVersionAsync(project, cancellationToken).ConfigureAwait(false); var serializer = new DiagnosticDataSerializer(_owner.AnalyzerVersion, version); - var builder = new Builder(project.Id, version); + var builder = new Builder(project, version); foreach (var document in project.Documents) { @@ -327,7 +328,7 @@ private async Task LoadInitialAnalysisDataAsync(Docume var version = await GetDiagnosticVersionAsync(project, cancellationToken).ConfigureAwait(false); var serializer = new DiagnosticDataSerializer(_owner.AnalyzerVersion, version); - var builder = new Builder(project.Id, version); + var builder = new Builder(project, version); if (!await TryDeserializeDocumentAsync(serializer, document, builder, cancellationToken).ConfigureAwait(false)) { @@ -342,7 +343,7 @@ private async Task LoadInitialProjectAnalysisDataAsync // loading data can be cancelled any time. var version = await GetDiagnosticVersionAsync(project, cancellationToken).ConfigureAwait(false); var serializer = new DiagnosticDataSerializer(_owner.AnalyzerVersion, version); - var builder = new Builder(project.Id, version); + var builder = new Builder(project, version); if (!await TryDeserializeAsync(serializer, project, project.Id, _owner.NonLocalStateName, s_addOthers, builder, cancellationToken).ConfigureAwait(false)) { @@ -458,7 +459,7 @@ private bool IsEmpty(DiagnosticAnalysisResult result, DocumentId documentId) // we have this builder to avoid allocating collections unnecessarily. private class Builder { - private readonly ProjectId _projectId; + private readonly Project _project; private readonly VersionStamp _version; private readonly ImmutableHashSet _documentIds; @@ -467,9 +468,9 @@ private class Builder private ImmutableDictionary>.Builder _nonLocals; private ImmutableArray _others; - public Builder(ProjectId projectId, VersionStamp version, ImmutableHashSet documentIds = null) + public Builder(Project project, VersionStamp version, ImmutableHashSet documentIds = null) { - _projectId = projectId; + _project = project; _version = version; _documentIds = documentIds; } @@ -496,13 +497,18 @@ public void AddOthers(ProjectId unused, ImmutableArray diagnosti private void Add(ref ImmutableDictionary>.Builder locals, DocumentId documentId, ImmutableArray diagnostics) { + if (_project.GetDocument(documentId)?.SupportsDiagnostics() == false) + { + return; + } + locals = locals ?? ImmutableDictionary.CreateBuilder>(); locals.Add(documentId, diagnostics); } public DiagnosticAnalysisResult ToResult() { - return DiagnosticAnalysisResult.CreateFromSerialization(_projectId, _version, + return DiagnosticAnalysisResult.CreateFromSerialization(_project, _version, _syntaxLocals?.ToImmutable() ?? ImmutableDictionary>.Empty, _semanticLocals?.ToImmutable() ?? ImmutableDictionary>.Empty, _nonLocals?.ToImmutable() ?? ImmutableDictionary>.Empty, diff --git a/src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer_IncrementalAnalyzer.cs b/src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer_IncrementalAnalyzer.cs index 8485b7563bd85d5326488506ee1def653717e186..11b22342e8577bd9ca80c672eaa8fb0a49e8fdc5 100644 --- a/src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer_IncrementalAnalyzer.cs +++ b/src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer_IncrementalAnalyzer.cs @@ -8,6 +8,7 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Diagnostics.Telemetry; using Microsoft.CodeAnalysis.ErrorReporting; +using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.Internal.Log; using Microsoft.CodeAnalysis.Remote; using Microsoft.CodeAnalysis.Shared.Extensions; @@ -227,7 +228,7 @@ private static bool AnalysisEnabled(Document document) { // change it to check active file (or visible files), not open files if active file tracking is enabled. // otherwise, use open file. - return document.IsOpen(); + return document.IsOpen() && document.SupportsDiagnostics(); } private IEnumerable GetStateSetsForFullSolutionAnalysis(IEnumerable stateSets, Project project) diff --git a/src/VisualStudio/Core/Def/Implementation/ProjectSystem/VisualStudioWorkspaceImpl.cs b/src/VisualStudio/Core/Def/Implementation/ProjectSystem/VisualStudioWorkspaceImpl.cs index 37ec06a84073fc2ace707e1b2e81216609109d1e..88d6478f8a492ad3aa045ff61174dc7c809bc388 100644 --- a/src/VisualStudio/Core/Def/Implementation/ProjectSystem/VisualStudioWorkspaceImpl.cs +++ b/src/VisualStudio/Core/Def/Implementation/ProjectSystem/VisualStudioWorkspaceImpl.cs @@ -233,7 +233,9 @@ internal IVisualStudioHostDocument GetHostDocument(DocumentId documentId) throw new InvalidOperationException(ServicesVSResources.VisualStudioWorkspace_TryApplyChanges_cannot_be_called_from_a_background_thread); } - var projectChanges = newSolution.GetChanges(this.CurrentSolution).GetProjectChanges().ToList(); + var currentSolution = this.CurrentSolution; + var projectChanges = newSolution.GetChanges(currentSolution).GetProjectChanges().ToList(); + var projectsToLoad = new HashSet(); foreach (var pc in projectChanges) { @@ -267,13 +269,25 @@ internal IVisualStudioHostDocument GetHostDocument(DocumentId documentId) } // first make sure we can edit the document we will be updating (check them out from source control, etc) - var changedDocs = projectChanges.SelectMany(pd => pd.GetChangedDocuments(true).Concat(pd.GetChangedAdditionalDocuments())).ToList(); + var changedDocs = projectChanges.SelectMany(pd => pd.GetChangedDocuments(true).Concat(pd.GetChangedAdditionalDocuments())).Where(CanApplyChange).ToList(); if (changedDocs.Count > 0) { this.EnsureEditableDocuments(changedDocs); } return base.TryApplyChanges(newSolution, progressTracker); + + bool CanApplyChange(DocumentId documentId) + { + var document = newSolution.GetDocument(documentId) ?? currentSolution.GetDocument(documentId); + if (document == null) + { + // we can have null if documentId is for additional files + return true; + } + + return document.CanApplyChange(); + } } public override bool CanOpenDocuments @@ -1149,6 +1163,8 @@ public void EnsureEditableDocuments(IEnumerable documents) { var queryEdit = (IVsQueryEditQuerySave2)ServiceProvider.GlobalProvider.GetService(typeof(SVsQueryEditQuerySave)); + // make sure given document id actually exist in current solution and the file is marked as supporting modifications + // and actually has non null file path var fileNames = documents.Select(GetFilePath).ToArray(); // TODO: meditate about the flags we can pass to this and decide what is most appropriate for Roslyn diff --git a/src/Workspaces/Core/Portable/Diagnostics/DiagnosticAnalysisResult.cs b/src/Workspaces/Core/Portable/Diagnostics/DiagnosticAnalysisResult.cs index a1b2b1e44c796c6df3429c2f8d6854cbece7aa47..5aed70414415956b9234a749614cac37dfa168cc 100644 --- a/src/Workspaces/Core/Portable/Diagnostics/DiagnosticAnalysisResult.cs +++ b/src/Workspaces/Core/Portable/Diagnostics/DiagnosticAnalysisResult.cs @@ -1,8 +1,10 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Immutable; +using System.Diagnostics; using System.Linq; using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Host; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.Workspaces.Diagnostics @@ -100,8 +102,9 @@ public static DiagnosticAnalysisResult CreateFromBuild(Project project, Immutabl // so we put everything in as semantic local with default version. this lets us to replace those to live diagnostics when needed easily. var version = VersionStamp.Default; - // filter out any document that doesn't support diagnostics - var group = diagnostics.GroupBy(d => d.DocumentId); + // filter out any document that doesn't support diagnostics. + // g.Key == null means diagnostics on the project which assigned to "others" error category + var group = diagnostics.GroupBy(d => d.DocumentId).Where(g => g.Key == null || project.GetDocument(g.Key).SupportsDiagnostics()).ToList(); var result = new DiagnosticAnalysisResult( project.Id, @@ -117,7 +120,7 @@ public static DiagnosticAnalysisResult CreateFromBuild(Project project, Immutabl } public static DiagnosticAnalysisResult CreateFromSerialization( - ProjectId projectId, + Project project, VersionStamp version, ImmutableDictionary> syntaxLocalMap, ImmutableDictionary> semanticLocalMap, @@ -125,8 +128,12 @@ public static DiagnosticAnalysisResult CreateFromBuild(Project project, Immutabl ImmutableArray others, ImmutableHashSet documentIds = null) { + VerifyDocumentMap(project, syntaxLocalMap); + VerifyDocumentMap(project, semanticLocalMap); + VerifyDocumentMap(project, nonLocalMap); + return new DiagnosticAnalysisResult( - projectId, + project.Id, version, syntaxLocalMap, semanticLocalMap, @@ -139,7 +146,7 @@ public static DiagnosticAnalysisResult CreateFromBuild(Project project, Immutabl public static DiagnosticAnalysisResult CreateFromBuilder(DiagnosticAnalysisResultBuilder builder) { return CreateFromSerialization( - builder.Project.Id, + builder.Project, builder.Version, builder.SyntaxLocals, builder.SemanticLocals, @@ -233,5 +240,14 @@ private ImmutableHashSet CreateDocumentIds() return ImmutableHashSet.CreateRange(documents); } + + [Conditional("DEBUG")] + private static void VerifyDocumentMap(Project project, ImmutableDictionary> map) + { + foreach (var documentId in map.Keys) + { + Debug.Assert(project.GetDocument(documentId)?.SupportsDiagnostics() == true); + } + } } } diff --git a/src/Workspaces/Core/Portable/Diagnostics/DiagnosticAnalysisResultBuilder.cs b/src/Workspaces/Core/Portable/Diagnostics/DiagnosticAnalysisResultBuilder.cs index 7b66ef6190483a757a8ceca8cd2fa7e22bc60bc2..6b949703b2c8ea67a1825842d7f4a8e22f3d0a4c 100644 --- a/src/Workspaces/Core/Portable/Diagnostics/DiagnosticAnalysisResultBuilder.cs +++ b/src/Workspaces/Core/Portable/Diagnostics/DiagnosticAnalysisResultBuilder.cs @@ -5,6 +5,7 @@ using System.Diagnostics; using System.Linq; using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Host; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.Workspaces.Diagnostics @@ -112,7 +113,7 @@ public void AddExternalSemanticDiagnostics(DocumentId documentId, IEnumerable> map, Document documentOpt, Diagnostic diagnostic) { - if (documentOpt is null) + if (documentOpt?.SupportsDiagnostics() == false) { return; } diff --git a/src/Workspaces/Core/Portable/Workspace/Host/DocumentService/Extensions.cs b/src/Workspaces/Core/Portable/Workspace/Host/DocumentService/Extensions.cs new file mode 100644 index 0000000000000000000000000000000000000000..95941722e15b2e41762b3190456f03ef7f80ab72 --- /dev/null +++ b/src/Workspaces/Core/Portable/Workspace/Host/DocumentService/Extensions.cs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.CodeAnalysis.Host +{ + internal static class Extensions + { + public static bool CanApplyChange(this TextDocument document) + { + return document?.State.CanApplyChange() ?? false; + } + + public static bool CanApplyChange(this TextDocumentState document) + { + return document?.Services.GetService().CanApplyChange ?? false; + } + + public static bool SupportsDiagnostics(this TextDocument document) + { + return document?.State.SupportsDiagnostics() ?? false; + } + + public static bool SupportsDiagnostics(this TextDocumentState document) + { + return document?.Services.GetService().SupportDiagnostics ?? false; + } + } +} diff --git a/src/Workspaces/Core/Portable/Workspace/Host/DocumentService/IDocumentOperationService.cs b/src/Workspaces/Core/Portable/Workspace/Host/DocumentService/IDocumentOperationService.cs new file mode 100644 index 0000000000000000000000000000000000000000..1d664edeb475dc7c206ed4bd30e6f64d9959163a --- /dev/null +++ b/src/Workspaces/Core/Portable/Workspace/Host/DocumentService/IDocumentOperationService.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.CodeAnalysis.Host +{ + /// + /// provide various operations for this document + /// + /// I followed name from EditorOperation for now. + /// + internal interface IDocumentOperationService : IDocumentService + { + /// + /// document version of + /// + bool CanApplyChange { get; } + + /// + /// indicates whether this document supports diagnostics or not + /// + bool SupportDiagnostics { get; } + } +} diff --git a/src/Workspaces/Core/Portable/Workspace/Solution/DefaultTextDocumentServiceProvider.cs b/src/Workspaces/Core/Portable/Workspace/Solution/DefaultTextDocumentServiceProvider.cs index c429c18b40d50dad4bee0dd8b4297d45fec2b109..4248ad8852b4510ff1b2a55d90a43b4490feca90 100644 --- a/src/Workspaces/Core/Portable/Workspace/Solution/DefaultTextDocumentServiceProvider.cs +++ b/src/Workspaces/Core/Portable/Workspace/Solution/DefaultTextDocumentServiceProvider.cs @@ -15,7 +15,32 @@ internal sealed class DefaultTextDocumentServiceProvider : IDocumentServiceProvi public TService GetService() where TService : class, IDocumentService { + // right now, it doesn't implement much services but we expect it to implements all + // document services in future so that we can remove all if branches in feature code + // but just delegate work to default document services. + if (DocumentOperationService.Instance is TService service) + { + return service; + } + return default; } + + private class DocumentOperationService : IDocumentOperationService + { + public static readonly DocumentOperationService Instance = new DocumentOperationService(); + + // right now, we return CanApplyChange for all C# documents, but we probably want to return + // false for generated files such as resx files or winform designer files. + // right now, we have a bug where if user renames Resource.[ResourceName] we actually do the rename + // but not actually change resx files which in turn, break code since generated file go back to + // original next time someone changes resx files but reference left as renamed. + // with this, we now should be able to say no text changes for such files so that rename fails + // in those cases. if resx people adapt IDocumentService pattern, then they should be able to + // even support rename through IDynamicFileInfoProvider pattern once we address that in next + // iteration for razor. for now, we keep existing behavior + public bool CanApplyChange => true; + public bool SupportDiagnostics => true; + } } } diff --git a/src/Workspaces/Core/Portable/Workspace/Workspace.cs b/src/Workspaces/Core/Portable/Workspace/Workspace.cs index 62a463f8d69c1904be766471cf80b8ad171113fb..307ebc9a605116f7b91fca672e84852d4c60291c 100644 --- a/src/Workspaces/Core/Portable/Workspace/Workspace.cs +++ b/src/Workspaces/Core/Portable/Workspace/Workspace.cs @@ -1216,7 +1216,7 @@ private void CheckAllowedProjectChanges(ProjectChanges projectChanges) } if (!this.CanApplyChange(ApplyChangesKind.ChangeDocument) - && projectChanges.GetChangedDocuments(true).Any()) + && projectChanges.GetChangedDocuments(onlyGetDocumentsWithTextChanges: true).Any()) { throw new NotSupportedException(WorkspacesResources.Changing_documents_is_not_supported); } @@ -1265,6 +1265,15 @@ private void CheckAllowedProjectChanges(ProjectChanges projectChanges) { throw new NotSupportedException(WorkspacesResources.Removing_analyzer_references_is_not_supported); } + + foreach (var documentId in projectChanges.GetChangedDocuments()) + { + var document = projectChanges.OldProject.GetDocumentState(documentId) ?? projectChanges.NewProject.GetDocumentState(documentId); + if (!document.CanApplyChange()) + { + throw new NotSupportedException(string.Format(WorkspacesResources.Changing_document_0_is_not_supported, document.FilePath ?? document.Name)); + } + } } protected virtual bool CanApplyParseOptionChange(ParseOptions oldOptions, ParseOptions newOptions, Project project) diff --git a/src/Workspaces/Core/Portable/WorkspacesResources.Designer.cs b/src/Workspaces/Core/Portable/WorkspacesResources.Designer.cs index 18d212219703933e1114fc46bac39e4bef50eec6..b5b40fd258a29ae2b4f9e5ca4b3ae3788318eb0b 100644 --- a/src/Workspaces/Core/Portable/WorkspacesResources.Designer.cs +++ b/src/Workspaces/Core/Portable/WorkspacesResources.Designer.cs @@ -503,6 +503,15 @@ internal class WorkspacesResources { } } + /// + /// Looks up a localized string similar to Changing document '{0}' is not supported.. + /// + internal static string Changing_document_0_is_not_supported { + get { + return ResourceManager.GetString("Changing_document_0_is_not_supported", resourceCulture); + } + } + /// /// Looks up a localized string similar to Changing document properties is not supported. /// diff --git a/src/Workspaces/Core/Portable/WorkspacesResources.resx b/src/Workspaces/Core/Portable/WorkspacesResources.resx index 8005877c9a5c8ed0eb1ef539030af16639423731..a9b0d0985c7ec3f29622f3bf0ff68235d3f0230d 100644 --- a/src/Workspaces/Core/Portable/WorkspacesResources.resx +++ b/src/Workspaces/Core/Portable/WorkspacesResources.resx @@ -789,4 +789,7 @@ Visual Basic files + + Changing document '{0}' is not supported. + \ No newline at end of file diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.cs.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.cs.xlf index a375ded264d0ee1b2321a3b34af3ae488d1401b2..b490b9f13841cdd12d47f1eee093eccd77485392 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.cs.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.cs.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.de.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.de.xlf index 47d0b888791e2ee3bfda0144a59d12636fb61169..11728d96da57c7a71d664cf62914cc5d7358c4fc 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.de.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.de.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.es.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.es.xlf index 7fbc56fef90e041d7de85f8995f31b65d17827eb..eb9f990bef72ddece7fd6cc00363744ab96ba910 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.es.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.es.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.fr.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.fr.xlf index 34334e26c819bbce4325b327707d75379c06fe05..52d9170668c4788540afce9ce6a04349444c73b8 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.fr.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.fr.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.it.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.it.xlf index 23512604ed78bcbe950e4ea4999a5d9c13fd2bc4..3e989e6b41852de57abdc74757d465fc070732a9 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.it.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.it.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ja.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ja.xlf index cc6d75b74993e941aac6079b2bd3e1afed0922a7..a17b5074fe2d4c41e1a727f5d7fcb73b6afda9ba 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ja.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ja.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ko.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ko.xlf index 7565165dc5a672ea65a36d622060e0e51b06ab2f..675724221da2eb7ee733194f79d2d09a23a1b298 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ko.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ko.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.pl.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.pl.xlf index d1dfe9ecc3501ecfd6edb6470b23c032b7ec1d04..f990b11ff82d40bff1d3961e376231d1d00cb22c 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.pl.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.pl.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.pt-BR.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.pt-BR.xlf index 5a54c042e836763a59d97bf29fd86a763c76c23d..4cacac5518981dbdc9529eb28f07b1a8cabc2050 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.pt-BR.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.pt-BR.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ru.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ru.xlf index 301006b377d6238b71e205e6d615a0ff52c17ccb..46ca6ede59b7992a18c55f2b7420b334643b2307 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ru.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.ru.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.tr.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.tr.xlf index 4d0f4ce38b501337857f5507c1c653a4469b0165..7f227bdc3cc459741dc0c479a508243a513be90b 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.tr.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.tr.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.zh-Hans.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.zh-Hans.xlf index c67400e51e295c5e76d3b96bcaebe29918dd10a6..6aa4cddf701a4713e2a19c86227f7d3007afc452 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.zh-Hans.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.zh-Hans.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options diff --git a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.zh-Hant.xlf b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.zh-Hant.xlf index c36d2959d08f8225805e8223ffa9cbf869692fcb..b3a2c8fe1285ff5b7978ded60db15dea710682fb 100644 --- a/src/Workspaces/Core/Portable/xlf/WorkspacesResources.zh-Hant.xlf +++ b/src/Workspaces/Core/Portable/xlf/WorkspacesResources.zh-Hant.xlf @@ -12,6 +12,11 @@ C# files + + Changing document '{0}' is not supported. + Changing document '{0}' is not supported. + + Core EditorConfig Options Core EditorConfig Options