Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorSandy Armstrong <sandy@xamarin.com>2019-09-11 01:56:27 +0300
committerSandy Armstrong <sandy@xamarin.com>2019-09-18 19:23:09 +0300
commitfa0fac3a5eed1acc5fb1b903e273d3c85eb3526d (patch)
tree41f18222305a06827bcc4246e10e25b2ebd18cc2 /main/src
parente49d04ddf87aff0981165d7d3a6f14cb6442c697 (diff)
Fix: Remove support for BOTH editors
On Mac, remove legacy editor's display binding. Do all work through modern editor's display binding. Now "open with" submenu will only show "Source Code Editor", which will either be legacy or modern based on whatever's picked by the display binding. It is no longer possible to edit C# with legacy editor.
Diffstat (limited to 'main/src')
-rw-r--r--main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/LegacyEditorSupportExtensionNode.cs5
-rw-r--r--main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/Properties/MonoDevelop.TextEditor.addin.xml3
-rw-r--r--main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewDisplayBinding.cs51
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorDisplayBinding.cs9
4 files changed, 37 insertions, 31 deletions
diff --git a/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/LegacyEditorSupportExtensionNode.cs b/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/LegacyEditorSupportExtensionNode.cs
index bce9337a04..4cbeab9853 100644
--- a/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/LegacyEditorSupportExtensionNode.cs
+++ b/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/LegacyEditorSupportExtensionNode.cs
@@ -25,10 +25,7 @@ namespace MonoDevelop.TextEditor
{
sealed class LegacyEditorSupportExtensionNode : MatchingFileTypeExtensionNode
{
- [NodeAttribute ("legacyOnly", "Set this to true if modern editor is unsupported for files matching this node")]
- public bool IsLegacyOnly { get; private set; }
-
- [NodeAttribute("providerType", "Set this to an the type name for a MonoDevelop.TextEditor.ILegacyEditorSupportProvider implementation")]
+ [NodeAttribute("providerType", "Set this to the type name for a MonoDevelop.TextEditor.ILegacyEditorSupportProvider implementation, if more dynamic checking is required")]
public string ProviderType { get; private set; }
}
diff --git a/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/Properties/MonoDevelop.TextEditor.addin.xml b/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/Properties/MonoDevelop.TextEditor.addin.xml
index f62130077c..08b355ce44 100644
--- a/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/Properties/MonoDevelop.TextEditor.addin.xml
+++ b/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/Properties/MonoDevelop.TextEditor.addin.xml
@@ -63,9 +63,6 @@
<Assembly file="MonoDevelop.TextEditor.dll"/>
</Extension>
- <Extension path="/MonoDevelop/TextEditor/LegacyEditorSupport">
- <LegacyEditorSupport id="csharp" extensions=".cs,.csx" />
- </Extension>
<Extension path="/MonoDevelop/Core/FeatureConfiguration/FeatureSwitchChecks">
<Type id="CSharpEnableNewEditor" class="MonoDevelop.TextEditor.CSharpEnableNewEditorSwitchController" />
diff --git a/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewDisplayBinding.cs b/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewDisplayBinding.cs
index 5b37a3581d..686ab88e27 100644
--- a/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewDisplayBinding.cs
+++ b/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewDisplayBinding.cs
@@ -26,7 +26,6 @@ using System.Threading.Tasks;
using MonoDevelop.Core;
using MonoDevelop.Ide;
-using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.Gui.Documents;
using MonoDevelop.Projects;
using MonoDevelop.Core.FeatureConfiguration;
@@ -45,26 +44,21 @@ namespace MonoDevelop.TextEditor
protected override IEnumerable<DocumentControllerDescription> GetSupportedControllers (FileDescriptor modelDescriptor)
{
// First, check if legacy editor even has support for the file. If not, always use modern editor.
-
- var legacySupportEnabled = !DefaultSourceEditorOptions.Instance.EnableNewEditor;
var legacySupportNodes = Mono.Addins.AddinManager.GetExtensionNodes<LegacyEditorSupportExtensionNode> ("/MonoDevelop/TextEditor/LegacyEditorSupport");
-
var preferLegacy =
(
modelDescriptor.FilePath.IsNotNull
&& IdeServices.DesktopService.GetFileIsText (modelDescriptor.FilePath, modelDescriptor.MimeType)
- && legacySupportNodes.Any (n => (ExtensionMatch (n) && (n.IsLegacyOnly || legacySupportEnabled)) || ProviderPrefersLegacyEditor (n))
+ && legacySupportNodes.Any (n => ExtensionMatch (n) || PrefersLegacyEditor (n))
) || (
!string.IsNullOrEmpty (modelDescriptor.MimeType)
&& IdeServices.DesktopService.GetMimeTypeIsText (modelDescriptor.MimeType)
- && legacySupportNodes.Any (n => (MimeMatch (n) && (n.IsLegacyOnly || legacySupportEnabled)) || ProviderPrefersLegacyEditor (n))
+ && legacySupportNodes.Any (n => MimeMatch (n) || PrefersLegacyEditor (n))
);
// Next, check if there is an explicit directive to prefer the modern editor even if legacy is supported.
-
if (preferLegacy) {
var nodes = Mono.Addins.AddinManager.GetExtensionNodes<SupportedFileTypeExtensionNode> ("/MonoDevelop/TextEditor/SupportedFileTypes");
-
preferLegacy =
!((
modelDescriptor.FilePath.IsNotNull
@@ -77,9 +71,7 @@ namespace MonoDevelop.TextEditor
));
}
- if (!preferLegacy) {
- yield return new DocumentControllerDescription (GettextCatalog.GetString ("Modern Source Code Editor"), true, DocumentControllerRole.Source);
- }
+ yield return new EditorDocumentControllerDescription (GettextCatalog.GetString ("Source Code Editor"), true, DocumentControllerRole.Source, preferLegacy);
bool ExtensionMatch (MatchingFileTypeExtensionNode node) =>
node.Extensions != null
@@ -91,19 +83,20 @@ namespace MonoDevelop.TextEditor
mime => string.Equals (modelDescriptor.MimeType, mime, StringComparison.OrdinalIgnoreCase)
);
- bool ProviderPrefersLegacyEditor (LegacyEditorSupportExtensionNode node)
+ bool PrefersLegacyEditor (LegacyEditorSupportExtensionNode node)
{
- if (!string.IsNullOrEmpty (node.ProviderType)) {
- try {
- var key = (node.Addin.Id, node.ProviderType);
- if (!legacyEditorSupportProviders.TryGetValue (key, out var provider)) {
- provider = (ILegacyEditorSupportProvider)Activator.CreateInstance (node.Addin.GetType (node.ProviderType));
- legacyEditorSupportProviders [key] = provider;
- }
- return provider.PreferLegacyEditor (modelDescriptor);
- } catch (Exception e) {
- LoggingService.LogError ("Error loading legacy editor support provider", e);
+ if (string.IsNullOrEmpty (node.ProviderType))
+ return false;
+
+ try {
+ var key = (node.Addin.Id, node.ProviderType);
+ if (!legacyEditorSupportProviders.TryGetValue (key, out var provider)) {
+ provider = (ILegacyEditorSupportProvider)Activator.CreateInstance (node.Addin.GetType (node.ProviderType));
+ legacyEditorSupportProviders [key] = provider;
}
+ return provider.PreferLegacyEditor (modelDescriptor);
+ } catch (Exception e) {
+ LoggingService.LogError ("Error loading legacy editor support provider", e);
}
return false;
@@ -128,6 +121,9 @@ namespace MonoDevelop.TextEditor
public override Task<DocumentController> CreateController (FileDescriptor modelDescriptor, DocumentControllerDescription controllerDescription)
{
+ if (controllerDescription is EditorDocumentControllerDescription editorControllerDescription && editorControllerDescription.IsLegacy)
+ return Task.FromResult<DocumentController> (new Ide.Editor.TextEditorViewContent ());
+
var imports = Ide.Composition.CompositionManager.Instance.GetExportedValue<TImports> ();
if (themeToClassification == null)
themeToClassification = CreateThemeToClassification (imports.EditorFormatMapService);
@@ -144,5 +140,16 @@ namespace MonoDevelop.TextEditor
themeToClassification?.Dispose ();
themeToClassification = null;
}
+
+ class EditorDocumentControllerDescription : DocumentControllerDescription
+ {
+ public bool IsLegacy { get; }
+
+ public EditorDocumentControllerDescription (string name, bool canUseAsDefault = true, DocumentControllerRole role = DocumentControllerRole.Source, bool isLegacy = false)
+ : base (name, canUseAsDefault, role)
+ {
+ IsLegacy = isLegacy;
+ }
+ }
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorDisplayBinding.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorDisplayBinding.cs
index cf6ecf627e..9e46365e8a 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorDisplayBinding.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorDisplayBinding.cs
@@ -23,6 +23,9 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+
+#if !MAC
+
using System;
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui;
@@ -56,7 +59,7 @@ namespace MonoDevelop.Ide.Editor
}
return list.Add (new DocumentControllerDescription {
- Name = GettextCatalog.GetString ("Legacy Source Code Editor"),
+ Name = GettextCatalog.GetString ("Source Code Editor"),
Role = DocumentControllerRole.Source,
CanUseAsDefault = true
});
@@ -69,4 +72,6 @@ namespace MonoDevelop.Ide.Editor
public override string Id => "MonoDevelop.Ide.Editor.TextEditorDisplayBinding";
}
-} \ No newline at end of file
+}
+
+#endif \ No newline at end of file