Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 3288019

Browse files
fix #527: Code Completion Options broken in 5.0
fix #151: Add option "Complete only when pressing Return/Tab"
1 parent 3fe3e66 commit 3288019

8 files changed

Lines changed: 65 additions & 117 deletions

File tree

data/resources/StringResources.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8192,4 +8192,13 @@ Error while starting:
81928192
<value>This resource is not being used. Its purpose is to test the translation database and has
81938193
a line break</value>
81948194
</data>
8195+
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLabel" xml:space="preserve">
8196+
<value>Tooltip settings</value>
8197+
</data>
8198+
<data name="Dialog.Options.IDEOptions.CodeCompletion.CommitOnCharacters" xml:space="preserve">
8199+
<value>Insert selected code completion entry by typing the following characters:</value>
8200+
</data>
8201+
<data name="Dialog.Options.IDEOptions.CodeCompletion.CommitOnTabEnterOnly" xml:space="preserve">
8202+
<value>Only insert selected code completion entry by typing &lt;Tab&gt; or &lt;Enter&gt;.</value>
8203+
</data>
81958204
</root>

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,14 @@ string ICompletionItem.Text {
7878
public IImage Image { get; set; }
7979

8080
public virtual double Priority {
81-
get { return 0; }
81+
get { return CodeCompletionDataUsageCache.GetPriority(DisplayText, true); }
8282
}
8383

8484
public virtual void Complete(CompletionContext context)
8585
{
8686
context.Editor.Document.Replace(context.StartOffset, context.Length, this.CompletionText);
8787
context.EndOffset = context.StartOffset + this.CompletionText.Length;
88+
CodeCompletionDataUsageCache.IncrementUsage(DisplayText);
8889
}
8990

9091
object fancyContent;

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ public SnippetCompletionItem(ITextEditor textEditor, CodeSnippet codeSnippet)
4949
if (textArea == null)
5050
throw new ArgumentException("textEditor must be an AvalonEdit text editor");
5151
this.codeSnippet = codeSnippet;
52-
53-
//this.Priority = CodeCompletionDataUsageCache.GetPriority("snippet" + codeSnippet.Name, true);
52+
this.Priority = CodeCompletionDataUsageCache.GetPriority("snippet" + codeSnippet.Name, true);
5453
}
5554

5655
public bool AlwaysInsertSnippet { get; set; }

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,10 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20-
using System.Diagnostics;
2120
using System.Windows;
2221
using System.Windows.Controls;
2322
using System.Windows.Controls.Primitives;
24-
using System.Windows.Data;
2523
using System.Windows.Input;
26-
using System.Windows.Threading;
2724
using ICSharpCode.AvalonEdit.Document;
2825
using ICSharpCode.AvalonEdit.Editing;
2926

@@ -67,6 +64,8 @@ public CompletionWindow(TextArea textArea) : base(textArea)
6764
}
6865

6966
#region ToolTip handling
67+
public bool ShowDocumentationTooltips { get; set; }
68+
7069
void toolTip_Closed(object sender, RoutedEventArgs e)
7170
{
7271
// Clear content after tooltip is closed.
@@ -78,6 +77,11 @@ void toolTip_Closed(object sender, RoutedEventArgs e)
7877

7978
void completionList_SelectionChanged(object sender, SelectionChangedEventArgs e)
8079
{
80+
if (!ShowDocumentationTooltips) {
81+
toolTip.IsOpen = false;
82+
return;
83+
}
84+
8185
var item = completionList.SelectedItem;
8286
if (item == null)
8387
return;

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

Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,17 @@
66
xmlns:sd="clr-namespace:ICSharpCode.SharpDevelop"
77
xmlns:widgets="clr-namespace:ICSharpCode.SharpDevelop.Widgets;assembly=ICSharpCode.SharpDevelop.Widgets">
88
<widgets:StackPanelWithSpacing SpaceBetweenItems="5">
9-
<TextBlock
10-
Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.MainOption}"
11-
TextWrapping="Wrap"
12-
VerticalAlignment="Center" />
13-
14-
<CheckBox
15-
VerticalAlignment="Center"
16-
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.General.CodeCompletionCheckBox}"
17-
IsChecked="{Binding EnableCodeCompletion}" />
18-
199
<GroupBox
20-
Margin="5"
21-
Header="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.DetailSettings}"
22-
IsEnabled="{Binding EnableCodeCompletion}">
10+
Margin="5">
11+
<GroupBox.Header>
12+
<CheckBox
13+
VerticalAlignment="Center"
14+
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.General.CodeCompletionCheckBox}"
15+
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.EnableCodeCompletion}"
16+
x:Name="checkEnableCodeCompletion" />
17+
</GroupBox.Header>
2318

24-
<widgets:StackPanelWithSpacing SpaceBetweenItems="10">
19+
<widgets:StackPanelWithSpacing SpaceBetweenItems="10" IsEnabled="{Binding IsChecked, ElementName=checkEnableCodeCompletion}">
2520
<TextBlock
2621
Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend}"
2722
TextWrapping="Wrap"/>
@@ -33,34 +28,59 @@
3328
<CheckBox
3429
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.CommitOnTabEnterOnly}"
3530
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.CommitOnTabEnterOnly}"/>
31+
32+
<TextBlock
33+
Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.CommitOnCharacters}"
34+
TextWrapping="Wrap"/>
35+
36+
<TextBox
37+
Text="{core:OptionBinding sd:CodeCompletionOptions.CompletionCharList}"/>
38+
39+
<CheckBox Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache}"
40+
x:Name="checkUseDataUsageCache"
41+
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.DataUsageCacheEnabled}"/>
42+
43+
<widgets:StackPanelWithSpacing SpaceBetweenItems="4" Margin="30,0,0,0"
44+
Orientation="Horizontal" IsEnabled="{Binding IsChecked, ElementName=checkUseDataUsageCache}">
45+
46+
<Label Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber}"/>
47+
48+
<widgets:NumericUpDown MinWidth="50"
49+
Minimum="50" Maximum="10000" SmallChange="50"
50+
Value="{core:OptionBinding sd:CodeCompletionOptions.DataUsageCacheItemCount}"/>
51+
52+
<Label Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountAfterNumber}"/>
53+
54+
<Button
55+
Style="{x:Static core:GlobalStyles.ButtonStyle}"
56+
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.ClearCache}"
57+
Click="Button_Click"/>
58+
59+
</widgets:StackPanelWithSpacing>
3660
</widgets:StackPanelWithSpacing>
3761
</GroupBox>
3862

3963
<GroupBox Header="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.TooltipLabel}" Margin="5">
4064
<widgets:StackPanelWithSpacing SpaceBetweenItems="10">
4165
<CheckBox
4266
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseTooltips}"
43-
IsChecked="{Binding UseTooltips}" />
67+
x:Name="checkUseTooltips"
68+
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.TooltipsEnabled}" />
4469

4570
<CheckBox
4671
Margin="30,0,0,0"
4772
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.TooltipsOnlyWhenDebugging}"
4873
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseDebugTooltipsOnly}"
49-
IsEnabled="{Binding UseTooltips}" />
74+
IsEnabled="{Binding IsChecked, ElementName=checkUseTooltips}" />
5075

5176
<CheckBox
5277
VerticalAlignment="Center"
78+
x:Name="checkUseInsight"
5379
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseInsight}"
54-
IsChecked="{Binding UseInsight}" />
55-
56-
<CheckBox
57-
Margin="30,0,0,0"
58-
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.InsightRefreshOnComma}"
59-
Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.RefreshInsightOnComma}"
60-
IsEnabled="{Binding UseInsight}" />
80+
IsChecked="{core:OptionBinding sd:CodeCompletionOptions.InsightEnabled}" />
6181

6282
<StackPanel Grid.Row="9" Orientation="Horizontal" Margin="0,10">
63-
<TextBlock Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget}" Margin="0,2,2,0" />
83+
<TextBlock Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget}" Margin="0,2,5,0" />
6484

6585
<ComboBox
6686
sd:EnumBinding.EnumType="{x:Type sd:TooltipLinkTarget}"

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

Lines changed: 0 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -33,87 +33,6 @@ public CodeCompletionOptionPanel()
3333
this.DataContext = this;
3434
}
3535

36-
#region overrides
37-
38-
public override void LoadOptions()
39-
{
40-
base.LoadOptions();
41-
this.EnableCodeCompletion = CodeCompletionOptions.EnableCodeCompletion;
42-
this.UseDataUsageCache = CodeCompletionOptions.DataUsageCacheEnabled;
43-
DataUsageCacheItemCount = CodeCompletionOptions.DataUsageCacheItemCount;
44-
UseTooltips = CodeCompletionOptions.TooltipsEnabled;
45-
UseInsight = CodeCompletionOptions.InsightEnabled;
46-
}
47-
48-
49-
public override bool SaveOptions()
50-
{
51-
CodeCompletionOptions.EnableCodeCompletion = this.EnableCodeCompletion;
52-
CodeCompletionOptions.DataUsageCacheEnabled = this.UseDataUsageCache;
53-
CodeCompletionOptions.DataUsageCacheItemCount = DataUsageCacheItemCount;
54-
CodeCompletionOptions.TooltipsEnabled = UseTooltips;
55-
CodeCompletionOptions.InsightEnabled = UseInsight;
56-
return base.SaveOptions();
57-
}
58-
59-
#endregion
60-
61-
#region Properties
62-
63-
private bool enableCodeCompletion;
64-
65-
public bool EnableCodeCompletion {
66-
get { return enableCodeCompletion; }
67-
set {
68-
enableCodeCompletion = value;
69-
base.RaisePropertyChanged(() => EnableCodeCompletion);
70-
}
71-
}
72-
73-
74-
private bool useDataUsageCache;
75-
76-
public bool UseDataUsageCache {
77-
get { return useDataUsageCache; }
78-
set {
79-
useDataUsageCache = value;
80-
base.RaisePropertyChanged(() => UseDataUsageCache);
81-
}
82-
}
83-
84-
private int dataUsageCacheItemCount;
85-
86-
public int DataUsageCacheItemCount {
87-
get { return dataUsageCacheItemCount; }
88-
set {
89-
dataUsageCacheItemCount = value;
90-
base.RaisePropertyChanged(() => DataUsageCacheItemCount);
91-
}
92-
}
93-
94-
private bool useTooltips;
95-
96-
public bool UseTooltips {
97-
get { return useTooltips; }
98-
set {
99-
useTooltips = value;
100-
base.RaisePropertyChanged(() => UseTooltips);
101-
}
102-
}
103-
104-
private bool useInsight;
105-
106-
public bool UseInsight {
107-
get { return useInsight; }
108-
set {
109-
useInsight = value;
110-
base.RaisePropertyChanged(() => UseInsight);
111-
}
112-
}
113-
114-
#endregion
115-
116-
11736
void Button_Click(object sender, RoutedEventArgs e)
11837
{
11938
CodeCompletionDataUsageCache.ResetCache();

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,12 @@ public class DefaultCompletionItem : ICompletionItem
6161
public virtual string Description { get; set; }
6262
public virtual IImage Image { get; set; }
6363

64-
public virtual double Priority { get { return 0; } }
64+
public virtual double Priority { get; protected set; }
6565

6666
public DefaultCompletionItem(string text)
6767
{
6868
this.Text = text;
69+
Priority = CodeCompletionDataUsageCache.GetPriority(Text, true);
6970
}
7071

7172
public virtual void Complete(CompletionContext context)

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,6 @@ public static bool InsightEnabled {
7878
set { properties.Set("InsightEnabled", value); }
7979
}
8080

81-
public static bool InsightRefreshOnComma {
82-
get { return properties.Get("InsightRefreshOnComma", true); }
83-
set { properties.Set("InsightRefreshOnComma", value); }
84-
}
85-
8681
public static TooltipLinkTarget TooltipLinkTarget {
8782
get { return properties.Get("TooltipLinkTarget", TooltipLinkTarget.Documentation); }
8883
set { properties.Set("TooltipLinkTarget", value); }

0 commit comments

Comments
 (0)