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
diff options
context:
space:
mode:
authorMike Krüger <mikkrg@microsoft.com>2019-03-05 12:03:18 +0300
committerMike Krüger <mikkrg@microsoft.com>2019-03-07 13:30:24 +0300
commit905a2f17073f709812607cd21039667711cd85e6 (patch)
tree19d9472688f12f6c7d0f8042687524d00dd47004 /main
parentea5afd016ef4420b8d93ad9e47269580f0996b52 (diff)
Fixes VSTS Bug 807807: Tab width not respected
https://devdiv.visualstudio.com/DevDiv/_workitems/edit/807807 The former implementation did not only respect the Indent/TabSize setting correcttly - it did overwrite configuration properties with policy style settings.
Diffstat (limited to 'main')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs59
1 files changed, 50 insertions, 9 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs
index 20d0e8cbfc..165949e0ce 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs
@@ -288,14 +288,15 @@ namespace MonoDevelop.Ide.Editor
this.OnChanged (EventArgs.Empty);
}
+ TextStylePolicy currentPolicy;
internal void UpdateStylePolicy (MonoDevelop.Ide.Gui.Content.TextStylePolicy currentPolicy)
{
- DefaultEolMarker = TextStylePolicy.GetEolMarker (currentPolicy.EolMarker);
- TabsToSpaces = currentPolicy.TabsToSpaces; // PropertyService.Get ("TabsToSpaces", false);
- TabSize = currentPolicy.TabWidth; //PropertyService.Get ("TabIndent", 4);
- rulerColumn = currentPolicy.FileWidth; //PropertyService.Get ("RulerColumn", 80);
+ if (currentPolicy == this.currentPolicy)
+ return;
+ this.currentPolicy = currentPolicy;
+ rulerColumn = currentPolicy.FileWidth; //PropertyService.Get ("RulerColumn", 80);
allowTabsAfterNonTabs = !currentPolicy.NoTabsAfterNonTabs; //PropertyService.Get ("AllowTabsAfterNonTabs", true);
- RemoveTrailingWhitespaces = currentPolicy.RemoveTrailingWhitespace; //PropertyService.Get ("RemoveTrailingWhitespaces", true);
+ OnChanged (EventArgs.Empty);
}
internal DefaultSourceEditorOptions Create ()
@@ -554,13 +555,21 @@ namespace MonoDevelop.Ide.Editor
#region ITextEditorOptions
ConfigurationProperty<string> defaultEolMarker = IdeApp.Preferences.Editor.NewLineCharacter;
string defaultEolMarkerFromContext = null;
+ string overrridenDefaultEolMarker = null;
// TODO: This isn't surfaced in properties, only policies. We have no UI for it.
public string DefaultEolMarker {
get {
- return defaultEolMarkerFromContext ?? defaultEolMarker;
+ if (overrridenDefaultEolMarker != null)
+ return overrridenDefaultEolMarker;
+ if (defaultEolMarkerFromContext != null)
+ return defaultEolMarkerFromContext;
+ if (currentPolicy != null)
+ return TextStylePolicy.GetEolMarker (currentPolicy.EolMarker);
+ return defaultEolMarker;
}
set {
+ overrridenDefaultEolMarker = value;
if (defaultEolMarker.Set (value))
OnChanged (EventArgs.Empty);
}
@@ -609,11 +618,19 @@ namespace MonoDevelop.Ide.Editor
ConfigurationProperty<bool> tabsToSpaces = IdeApp.Preferences.Editor.ConvertTabsToSpaces;
bool? tabsToSpacesFromContext;
+ bool? overriddenTabsToSpaces;
public bool TabsToSpaces {
get {
- return tabsToSpacesFromContext ?? tabsToSpaces;
+ if (overriddenTabsToSpaces.HasValue)
+ return overriddenTabsToSpaces.Value;
+ if (tabsToSpacesFromContext.HasValue)
+ return tabsToSpacesFromContext.Value;
+ if (currentPolicy != null)
+ return currentPolicy.TabsToSpaces;
+ return tabsToSpaces;
}
set {
+ overriddenTabsToSpaces = value;
if (tabsToSpaces.Set (value))
OnChanged (EventArgs.Empty);
}
@@ -621,11 +638,19 @@ namespace MonoDevelop.Ide.Editor
ConfigurationProperty<int> indentationSize = IdeApp.Preferences.Editor.IndentSize;
int? indentationSizeFromContext;
+ int? overriddenIndentationSize;
public int IndentationSize {
get {
+ if (overriddenIndentationSize.HasValue)
+ return overriddenIndentationSize.Value;
+ if (indentationSizeFromContext.HasValue)
+ return indentationSizeFromContext.Value;
+ if (currentPolicy != null)
+ return currentPolicy.IndentWidth; //PropertyService.Get ("IndentWidth", 4);
return indentationSizeFromContext ?? indentationSize;
}
set {
+ overriddenIndentationSize = value;
if (indentationSize.Set (value))
OnChanged (EventArgs.Empty);
}
@@ -639,11 +664,19 @@ namespace MonoDevelop.Ide.Editor
ConfigurationProperty<int> tabSize = IdeApp.Preferences.Editor.TabSize;
int? tabSizeFromContext;
+ int? overriddenTabSize;
public int TabSize {
get {
- return tabSizeFromContext ?? IndentationSize;
+ if (overriddenTabSize.HasValue)
+ return overriddenTabSize.Value;
+ if (tabSizeFromContext.HasValue)
+ return tabSizeFromContext.Value;
+ if (currentPolicy != null)
+ return currentPolicy.TabWidth; //PropertyService.Get ("IndentWidth", 4);
+ return tabSize;
}
set {
+ overriddenTabSize = value;
if (tabSize.Set (value))
OnChanged (EventArgs.Empty);
}
@@ -651,12 +684,20 @@ namespace MonoDevelop.Ide.Editor
ConfigurationProperty<bool> trimTrailingWhitespace = IdeApp.Preferences.Editor.TrimTrailingWhitespace;
bool? removeTrailingWhitespacesFromContext;
+ bool? overriddenRemoveTrailingWhitespacesFromContext;
public bool RemoveTrailingWhitespaces {
get {
- return removeTrailingWhitespacesFromContext ?? trimTrailingWhitespace;
+ if (overriddenRemoveTrailingWhitespacesFromContext.HasValue)
+ return overriddenRemoveTrailingWhitespacesFromContext.Value;
+ if (removeTrailingWhitespacesFromContext.HasValue)
+ return removeTrailingWhitespacesFromContext.Value;
+ if (currentPolicy != null)
+ return currentPolicy.RemoveTrailingWhitespace;
+ return trimTrailingWhitespace;
}
set {
+ overriddenRemoveTrailingWhitespacesFromContext = value;
if (trimTrailingWhitespace.Set(value))
OnChanged (EventArgs.Empty);
}