diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsContainer.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsContainer.cs
index 86b3d37b6d..23ed4a23bb 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsContainer.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsContainer.cs
@@ -55,6 +55,12 @@ namespace CSharpBinding.FormattingStrategy
cachedOptions = CreateCachedOptions();
}
+ public string DefaultText
+ {
+ get;
+ set;
+ }
+
public CSharpFormattingOptionsContainer Parent
{
get {
@@ -69,7 +75,7 @@ namespace CSharpBinding.FormattingStrategy
public void Reset(CSharpFormattingOptions options = null)
{
activeOptions.Clear();
- cachedOptions = options ?? FormattingOptionsFactory.CreateEmpty();
+ cachedOptions = options ?? CreateCachedOptions();
if ((options != null) || (parent == null)) {
// Activate all options
foreach (var property in typeof(CSharpFormattingOptions).GetProperties()) {
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsPersistence.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsPersistence.cs
index 50a9e0c66a..85e380ee58 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsPersistence.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsPersistence.cs
@@ -47,7 +47,10 @@ namespace CSharpBinding.FormattingStrategy
// Load global settings
GlobalOptions = new CSharpFormattingOptionsPersistence(
- SD.PropertyService.MainPropertiesContainer, new CSharpFormattingOptionsContainer());
+ SD.PropertyService.MainPropertiesContainer, new CSharpFormattingOptionsContainer()
+ {
+ DefaultText = "(global)" // TODO Localize!
+ });
GlobalOptions.Load();
// Handlers for solution loading/unloading
@@ -76,7 +79,10 @@ namespace CSharpBinding.FormattingStrategy
// Lazily create options container for project
projectOptions[key] = new CSharpFormattingOptionsPersistence(
csproject.ExtensionProperties,
- new CSharpFormattingOptionsContainer((SolutionOptions ?? GlobalOptions).OptionsContainer));
+ new CSharpFormattingOptionsContainer((SolutionOptions ?? GlobalOptions).OptionsContainer)
+ {
+ DefaultText = "(project)" // TODO Localize!
+ });
}
return projectOptions[key];
@@ -84,13 +90,16 @@ namespace CSharpBinding.FormattingStrategy
return SolutionOptions ?? GlobalOptions;
}
-
+
static void SolutionOpened(object sender, SolutionEventArgs e)
{
// Load solution settings
SolutionOptions = new CSharpFormattingOptionsPersistence(
e.Solution.GlobalPreferences,
- new CSharpFormattingOptionsContainer(GlobalOptions.OptionsContainer));
+ new CSharpFormattingOptionsContainer(GlobalOptions.OptionsContainer)
+ {
+ DefaultText = "(solution)" // TODO Localize!
+ });
}
static void SolutionClosed(object sender, SolutionEventArgs e)
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
index 7683fd0076..e517efe38e 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
@@ -425,6 +425,18 @@ namespace CSharpBinding.FormattingStrategy
}
}
return;
+
+ case (char) 0:
+ // In any other case: Simply format selection or whole document
+ var formattingOptions = CSharpFormattingOptionsPersistence.GetProjectOptions(SD.ProjectService.CurrentProject);
+ int formattedTextOffset = 0;
+ int formattedTextLength = textArea.Document.TextLength;
+ if (textArea.SelectionLength != 0) {
+ formattedTextOffset = textArea.SelectionStart;
+ formattedTextLength = textArea.SelectionLength;
+ }
+ CSharpFormatterHelper.Format(textArea, formattedTextOffset, formattedTextLength, formattingOptions.OptionsContainer);
+ break;
}
}
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/FormattingOptionBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/FormattingOptionBinding.cs
index d82f1db7ea..132a2b3405 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/FormattingOptionBinding.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/FormattingOptionBinding.cs
@@ -68,7 +68,10 @@ namespace CSharpBinding.FormattingStrategy
if (container.Parent != null) {
// Add "default" entry in ComboBox
// TODO Add located resource, maybe context-bound, like "(solution)" or "(global)"!
- comboBox.Items.Add(new ComboBoxItem { Content = "(default)", Tag = null });
+ comboBox.Items.Add(new ComboBoxItem {
+ Content = (container.Parent ?? container).DefaultText,
+ Tag = null
+ });
comboBox.SelectedIndex = 0;
}
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml.cs
index 3ad4bd0fd1..7f8047a914 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml.cs
@@ -146,7 +146,7 @@ namespace CSharpBinding.OptionPanels
private void FillPresetList(CSharpFormattingOptionsContainer container)
{
- presets["Default"] = () => null;
+ presets["(default)"] = () => null;
presets["Empty"] = FormattingOptionsFactory.CreateEmpty;
presets["SharpDevelop"] = FormattingOptionsFactory.CreateSharpDevelop;
presets["Mono"] = FormattingOptionsFactory.CreateMono;
@@ -158,7 +158,7 @@ namespace CSharpBinding.OptionPanels
// TODO Localize!
if (container.Parent != null) {
// Add a "default" preset
- presetItems.Add(new ComboBoxItem { Content = "Default", Tag = "Default" });
+ presetItems.Add(new ComboBoxItem { Content = (container.Parent ?? container).DefaultText, Tag = "(default)" });
}
presetItems.Add(new ComboBoxItem { Content = "Empty", Tag = "Empty" });
presetItems.Add(new ComboBoxItem { Content = "SharpDevelop", Tag = "SharpDevelop" });
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
index 21a6d78a89..1f97464944 100755
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
@@ -2078,6 +2078,10 @@
label = "${res:XML.TextAreaContextMenu.Indent}"
shortcut = "Control|I"
class = "ICSharpCode.SharpDevelop.Editor.Commands.IndentSelection" />
+
@@ -2122,6 +2126,7 @@
+
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index b787a60c6d..49367a8245 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -229,6 +229,7 @@
+
diff --git a/src/Main/Base/Project/Src/Editor/Commands/ReformatSelection.cs b/src/Main/Base/Project/Src/Editor/Commands/ReformatSelection.cs
new file mode 100644
index 0000000000..74c24593b5
--- /dev/null
+++ b/src/Main/Base/Project/Src/Editor/Commands/ReformatSelection.cs
@@ -0,0 +1,41 @@
+// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+// software and associated documentation files (the "Software"), to deal in the Software
+// without restriction, including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER 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.
+
+using System;
+using ICSharpCode.Core;
+
+namespace ICSharpCode.SharpDevelop.Editor.Commands
+{
+ ///
+ /// Menu command to reformat selected code or whole document according to formatter settings.
+ ///
+ public class ReformatSelection : AbstractMenuCommand
+ {
+ ///
+ /// Starts the command.
+ ///
+ public override void Run()
+ {
+ ITextEditor editor = SD.GetActiveViewContentService();
+ if (editor == null)
+ return;
+
+ editor.Language.FormattingStrategy.FormatLine(editor, (char) 0);
+ }
+ }
+}