Browse Source

fix #527: Code Completion Options broken in 5.0

fix #151: Add option "Complete only when pressing Return/Tab"
pull/505/merge
Siegfried Pammer 11 years ago
parent
commit
3288019d73
  1. 9
      data/resources/StringResources.resx
  2. 3
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs
  3. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Snippets/SnippetCompletionItem.cs
  4. 10
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs
  5. 68
      src/Main/Base/Project/Editor/CodeCompletion/CodeCompletionOptionPanel.xaml
  6. 81
      src/Main/Base/Project/Editor/CodeCompletion/CodeCompletionOptionPanel.xaml.cs
  7. 3
      src/Main/Base/Project/Editor/CodeCompletion/ICompletionItem.cs
  8. 5
      src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs

9
data/resources/StringResources.resx

@ -8192,4 +8192,13 @@ Error while starting: @@ -8192,4 +8192,13 @@ Error while starting:
<value>This resource is not being used. Its purpose is to test the translation database and has
a line break</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLabel" xml:space="preserve">
<value>Tooltip settings</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.CommitOnCharacters" xml:space="preserve">
<value>Insert selected code completion entry by typing the following characters:</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.CommitOnTabEnterOnly" xml:space="preserve">
<value>Only insert selected code completion entry by typing &lt;Tab&gt; or &lt;Enter&gt;.</value>
</data>
</root>

3
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs

@ -78,13 +78,14 @@ namespace CSharpBinding.Completion @@ -78,13 +78,14 @@ namespace CSharpBinding.Completion
public IImage Image { get; set; }
public virtual double Priority {
get { return 0; }
get { return CodeCompletionDataUsageCache.GetPriority(DisplayText, true); }
}
public virtual void Complete(CompletionContext context)
{
context.Editor.Document.Replace(context.StartOffset, context.Length, this.CompletionText);
context.EndOffset = context.StartOffset + this.CompletionText.Length;
CodeCompletionDataUsageCache.IncrementUsage(DisplayText);
}
object fancyContent;

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Snippets/SnippetCompletionItem.cs

@ -49,8 +49,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -49,8 +49,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
if (textArea == null)
throw new ArgumentException("textEditor must be an AvalonEdit text editor");
this.codeSnippet = codeSnippet;
//this.Priority = CodeCompletionDataUsageCache.GetPriority("snippet" + codeSnippet.Name, true);
this.Priority = CodeCompletionDataUsageCache.GetPriority("snippet" + codeSnippet.Name, true);
}
public bool AlwaysInsertSnippet { get; set; }

10
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs

@ -17,13 +17,10 @@ @@ -17,13 +17,10 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Threading;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing;
@ -67,6 +64,8 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion @@ -67,6 +64,8 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
}
#region ToolTip handling
public bool ShowDocumentationTooltips { get; set; }
void toolTip_Closed(object sender, RoutedEventArgs e)
{
// Clear content after tooltip is closed.
@ -78,6 +77,11 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion @@ -78,6 +77,11 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
void completionList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!ShowDocumentationTooltips) {
toolTip.IsOpen = false;
return;
}
var item = completionList.SelectedItem;
if (item == null)
return;

68
src/Main/Base/Project/Editor/CodeCompletion/CodeCompletionOptionPanel.xaml

@ -6,22 +6,17 @@ @@ -6,22 +6,17 @@
xmlns:sd="clr-namespace:ICSharpCode.SharpDevelop"
xmlns:widgets="clr-namespace:ICSharpCode.SharpDevelop.Widgets;assembly=ICSharpCode.SharpDevelop.Widgets">
<widgets:StackPanelWithSpacing SpaceBetweenItems="5">
<TextBlock
Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.MainOption}"
TextWrapping="Wrap"
VerticalAlignment="Center" />
<CheckBox
VerticalAlignment="Center"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.General.CodeCompletionCheckBox}"
IsChecked="{Binding EnableCodeCompletion}" />
<GroupBox
Margin="5"
Header="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.DetailSettings}"
IsEnabled="{Binding EnableCodeCompletion}">
Margin="5">
<GroupBox.Header>
<CheckBox
VerticalAlignment="Center"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.General.CodeCompletionCheckBox}"
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.EnableCodeCompletion}"
x:Name="checkEnableCodeCompletion" />
</GroupBox.Header>
<widgets:StackPanelWithSpacing SpaceBetweenItems="10">
<widgets:StackPanelWithSpacing SpaceBetweenItems="10" IsEnabled="{Binding IsChecked, ElementName=checkEnableCodeCompletion}">
<TextBlock
Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend}"
TextWrapping="Wrap"/>
@ -33,6 +28,35 @@ @@ -33,6 +28,35 @@
<CheckBox
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.CommitOnTabEnterOnly}"
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.CommitOnTabEnterOnly}"/>
<TextBlock
Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.CommitOnCharacters}"
TextWrapping="Wrap"/>
<TextBox
Text="{core:OptionBinding sd:CodeCompletionOptions.CompletionCharList}"/>
<CheckBox Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache}"
x:Name="checkUseDataUsageCache"
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.DataUsageCacheEnabled}"/>
<widgets:StackPanelWithSpacing SpaceBetweenItems="4" Margin="30,0,0,0"
Orientation="Horizontal" IsEnabled="{Binding IsChecked, ElementName=checkUseDataUsageCache}">
<Label Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber}"/>
<widgets:NumericUpDown MinWidth="50"
Minimum="50" Maximum="10000" SmallChange="50"
Value="{core:OptionBinding sd:CodeCompletionOptions.DataUsageCacheItemCount}"/>
<Label Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountAfterNumber}"/>
<Button
Style="{x:Static core:GlobalStyles.ButtonStyle}"
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.ClearCache}"
Click="Button_Click"/>
</widgets:StackPanelWithSpacing>
</widgets:StackPanelWithSpacing>
</GroupBox>
@ -40,27 +64,23 @@ @@ -40,27 +64,23 @@
<widgets:StackPanelWithSpacing SpaceBetweenItems="10">
<CheckBox
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseTooltips}"
IsChecked="{Binding UseTooltips}" />
x:Name="checkUseTooltips"
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.TooltipsEnabled}" />
<CheckBox
Margin="30,0,0,0"
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.TooltipsOnlyWhenDebugging}"
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseDebugTooltipsOnly}"
IsEnabled="{Binding UseTooltips}" />
IsEnabled="{Binding IsChecked, ElementName=checkUseTooltips}" />
<CheckBox
VerticalAlignment="Center"
x:Name="checkUseInsight"
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseInsight}"
IsChecked="{Binding UseInsight}" />
<CheckBox
Margin="30,0,0,0"
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.InsightRefreshOnComma}"
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.RefreshInsightOnComma}"
IsEnabled="{Binding UseInsight}" />
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.InsightEnabled}" />
<StackPanel Grid.Row="9" Orientation="Horizontal" Margin="0,10">
<TextBlock Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget}" Margin="0,2,2,0" />
<TextBlock Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget}" Margin="0,2,5,0" />
<ComboBox
sd:EnumBinding.EnumType="{x:Type sd:TooltipLinkTarget}"

81
src/Main/Base/Project/Editor/CodeCompletion/CodeCompletionOptionPanel.xaml.cs

@ -33,87 +33,6 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -33,87 +33,6 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
this.DataContext = this;
}
#region overrides
public override void LoadOptions()
{
base.LoadOptions();
this.EnableCodeCompletion = CodeCompletionOptions.EnableCodeCompletion;
this.UseDataUsageCache = CodeCompletionOptions.DataUsageCacheEnabled;
DataUsageCacheItemCount = CodeCompletionOptions.DataUsageCacheItemCount;
UseTooltips = CodeCompletionOptions.TooltipsEnabled;
UseInsight = CodeCompletionOptions.InsightEnabled;
}
public override bool SaveOptions()
{
CodeCompletionOptions.EnableCodeCompletion = this.EnableCodeCompletion;
CodeCompletionOptions.DataUsageCacheEnabled = this.UseDataUsageCache;
CodeCompletionOptions.DataUsageCacheItemCount = DataUsageCacheItemCount;
CodeCompletionOptions.TooltipsEnabled = UseTooltips;
CodeCompletionOptions.InsightEnabled = UseInsight;
return base.SaveOptions();
}
#endregion
#region Properties
private bool enableCodeCompletion;
public bool EnableCodeCompletion {
get { return enableCodeCompletion; }
set {
enableCodeCompletion = value;
base.RaisePropertyChanged(() => EnableCodeCompletion);
}
}
private bool useDataUsageCache;
public bool UseDataUsageCache {
get { return useDataUsageCache; }
set {
useDataUsageCache = value;
base.RaisePropertyChanged(() => UseDataUsageCache);
}
}
private int dataUsageCacheItemCount;
public int DataUsageCacheItemCount {
get { return dataUsageCacheItemCount; }
set {
dataUsageCacheItemCount = value;
base.RaisePropertyChanged(() => DataUsageCacheItemCount);
}
}
private bool useTooltips;
public bool UseTooltips {
get { return useTooltips; }
set {
useTooltips = value;
base.RaisePropertyChanged(() => UseTooltips);
}
}
private bool useInsight;
public bool UseInsight {
get { return useInsight; }
set {
useInsight = value;
base.RaisePropertyChanged(() => UseInsight);
}
}
#endregion
void Button_Click(object sender, RoutedEventArgs e)
{
CodeCompletionDataUsageCache.ResetCache();

3
src/Main/Base/Project/Editor/CodeCompletion/ICompletionItem.cs

@ -61,11 +61,12 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -61,11 +61,12 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
public virtual string Description { get; set; }
public virtual IImage Image { get; set; }
public virtual double Priority { get { return 0; } }
public virtual double Priority { get; protected set; }
public DefaultCompletionItem(string text)
{
this.Text = text;
Priority = CodeCompletionDataUsageCache.GetPriority(Text, true);
}
public virtual void Complete(CompletionContext context)

5
src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs

@ -78,11 +78,6 @@ namespace ICSharpCode.SharpDevelop @@ -78,11 +78,6 @@ namespace ICSharpCode.SharpDevelop
set { properties.Set("InsightEnabled", value); }
}
public static bool InsightRefreshOnComma {
get { return properties.Get("InsightRefreshOnComma", true); }
set { properties.Set("InsightRefreshOnComma", value); }
}
public static TooltipLinkTarget TooltipLinkTarget {
get { return properties.Get("TooltipLinkTarget", TooltipLinkTarget.Documentation); }
set { properties.Set("TooltipLinkTarget", value); }

Loading…
Cancel
Save