Browse Source

"Code Completion when a character is typed" can now be turned off in the options.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2534 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
a8993567c1
  1. 6
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs
  2. 78
      src/Main/Base/Project/Resources/CodeCompletionOptionPanel.xfrm
  3. 45
      src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs
  4. 2
      src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/CodeCompletionPanel.cs
  5. 1
      src/Main/Base/Test/CSharpExpressionFinderTests.cs
  6. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs

6
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs

@ -98,8 +98,10 @@ namespace CSharpBinding
TryDeclarationTypeInference(editor, curLine); TryDeclarationTypeInference(editor, curLine);
} }
if (char.IsLetter(ch) || ch == '_') { if ((char.IsLetter(ch) || ch == '_') && CodeCompletionOptions.CompleteWhenTyping) {
if (cursor > 1 && !char.IsLetterOrDigit(editor.Document.GetCharAt(cursor - 1))) { if (cursor > 1 && !char.IsLetterOrDigit(editor.Document.GetCharAt(cursor - 1))
&& !IsInComment(editor))
{
ExpressionResult result = ef.FindExpression(editor.Text, cursor - 1); ExpressionResult result = ef.FindExpression(editor.Text, cursor - 1);
LoggingService.Debug("CC: Beginning to type a word, result=" + result); LoggingService.Debug("CC: Beginning to type a word, result=" + result);
if (result.Context != ExpressionContext.IdentifierExpected) { if (result.Context != ExpressionContext.IdentifierExpected) {

78
src/Main/Base/Project/Resources/CodeCompletionOptionPanel.xfrm

@ -5,125 +5,133 @@
<Controls> <Controls>
<System.Windows.Forms.GroupBox> <System.Windows.Forms.GroupBox>
<Name value="groupBox" /> <Name value="groupBox" />
<Location value="{X=4,Y=55}" /> <Location value="4, 55" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.DetailSettings}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.DetailSettings}" />
<Size value="{Width=369, Height=286}" />
<TabIndex value="2" />
<Anchor value="Top, Bottom, Left, Right" /> <Anchor value="Top, Bottom, Left, Right" />
<Size value="369, 286" />
<TabIndex value="2" />
<Controls> <Controls>
<System.Windows.Forms.CheckBox> <System.Windows.Forms.CheckBox>
<Name value="refreshInsightOnCommaCheckBox" /> <Name value="refreshInsightOnCommaCheckBox" />
<Location value="{X=31,Y=186}" /> <Location value="31, 216" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.RefreshInsightOnComma}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.RefreshInsightOnComma}" />
<TabIndex value="10" /> <TabIndex value="11" />
<Size value="{Width=332, Height=24}" /> <Size value="332, 32" />
<Anchor value="Top, Left, Right" /> <Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox> </System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox> <System.Windows.Forms.CheckBox>
<Name value="useDebugTooltipsOnlyCheckBox" /> <Name value="useDebugTooltipsOnlyCheckBox" />
<Location value="{X=31,Y=85}" /> <Location value="31, 85" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseDebugTooltipsOnly}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseDebugTooltipsOnly}" />
<TabIndex value="6" /> <TabIndex value="6" />
<Size value="{Width=332, Height=24}" /> <Size value="332, 24" />
<Anchor value="Top, Left, Right" /> <Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox> </System.Windows.Forms.CheckBox>
<System.Windows.Forms.Button> <System.Windows.Forms.Button>
<Name value="clearDataUseCacheButton" /> <Name value="clearDataUseCacheButton" />
<Location value="{X=225,Y=40}" /> <Location value="225, 40" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.ClearCache}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.ClearCache}" />
<Size value="{Width=101, Height=23}" /> <Size value="101, 23" />
<TabIndex value="4" /> <TabIndex value="4" />
</System.Windows.Forms.Button> </System.Windows.Forms.Button>
<System.Windows.Forms.CheckBox> <System.Windows.Forms.CheckBox>
<Name value="useTooltipsCheckBox" /> <Name value="useTooltipsCheckBox" />
<Location value="{X=12,Y=66}" /> <Location value="12, 66" />
<Checked value="True" /> <Checked value="True" />
<CheckState value="Checked" /> <CheckState value="Checked" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseTooltips}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseTooltips}" />
<TabIndex value="5" /> <TabIndex value="5" />
<Size value="{Width=351, Height=24}" /> <Size value="351, 24" />
<Anchor value="Top, Left, Right" /> <Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox> </System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox> <System.Windows.Forms.CheckBox>
<Name value="useInsightCheckBox" /> <Name value="useInsightCheckBox" />
<Location value="{X=12,Y=167}" /> <Location value="12, 197" />
<Checked value="True" /> <Checked value="True" />
<CheckState value="Checked" /> <CheckState value="Checked" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseInsight}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseInsight}" />
<TabIndex value="9" /> <TabIndex value="10" />
<Size value="{Width=351, Height=24}" /> <Size value="351, 24" />
<Anchor value="Top, Left, Right" /> <Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox> </System.Windows.Forms.CheckBox>
<System.Windows.Forms.Label> <System.Windows.Forms.Label>
<Name value="label4" /> <Name value="label4" />
<Location value="{X=6,Y=112}" /> <Location value="6, 112" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend}" />
<Size value="{Width=357, Height=31}" />
<TabIndex value="7" />
<Anchor value="Top, Left, Right" /> <Anchor value="Top, Left, Right" />
<Size value="357, 31" />
<TabIndex value="7" />
</System.Windows.Forms.Label> </System.Windows.Forms.Label>
<System.Windows.Forms.CheckBox>
<Name value="completeWhenTypingCheckBox" />
<Location value="12, 155" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.CompleteWhenTyping}" />
<TabIndex value="8" />
<Size value="351, 24" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox> <System.Windows.Forms.CheckBox>
<Name value="useKeywordCompletionCheckBox" /> <Name value="useKeywordCompletionCheckBox" />
<Location value="{X=12,Y=146}" /> <Location value="12, 176" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseKeywordCompletion}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseKeywordCompletion}" />
<TabIndex value="8" /> <TabIndex value="9" />
<Size value="{Width=351, Height=24}" /> <Size value="351, 24" />
<Anchor value="Top, Left, Right" /> <Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox> </System.Windows.Forms.CheckBox>
<System.Windows.Forms.Label> <System.Windows.Forms.Label>
<Name value="dataUsageCacheLabel2" /> <Name value="dataUsageCacheLabel2" />
<Location value="{X=154,Y=42}" /> <Location value="154, 42" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountAfterNumber}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountAfterNumber}" />
<TextAlign value="MiddleLeft" /> <TextAlign value="MiddleLeft" />
<Size value="{Width=65, Height=23}" /> <Size value="65, 23" />
<TabIndex value="3" /> <TabIndex value="3" />
</System.Windows.Forms.Label> </System.Windows.Forms.Label>
<System.Windows.Forms.NumericUpDown> <System.Windows.Forms.NumericUpDown>
<Name value="dataUsageCacheItemCountNumericUpDown" /> <Name value="dataUsageCacheItemCountNumericUpDown" />
<Value value="50" /> <Value value="50" />
<TabIndex value="2" /> <TabIndex value="2" />
<Maximum value="10000" />
<Minimum value="50" /> <Minimum value="50" />
<Increment value="50" /> <Increment value="50" />
<TextAlign value="Right" /> <TextAlign value="Right" />
<Size value="{Width=68, Height=21}" /> <Maximum value="10000" />
<Location value="{X=80,Y=42}" /> <Size value="68, 20" />
<Location value="80, 42" />
</System.Windows.Forms.NumericUpDown> </System.Windows.Forms.NumericUpDown>
<System.Windows.Forms.Label> <System.Windows.Forms.Label>
<Name value="dataUsageCacheLabel1" /> <Name value="dataUsageCacheLabel1" />
<Location value="{X=18,Y=42}" /> <Location value="18, 42" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber}" />
<TextAlign value="MiddleRight" /> <TextAlign value="MiddleRight" />
<Size value="{Width=56, Height=21}" /> <Size value="56, 21" />
<TabIndex value="1" /> <TabIndex value="1" />
</System.Windows.Forms.Label> </System.Windows.Forms.Label>
<System.Windows.Forms.CheckBox> <System.Windows.Forms.CheckBox>
<Name value="useDataUsageCacheCheckBox" /> <Name value="useDataUsageCacheCheckBox" />
<Location value="{X=12,Y=20}" /> <Location value="12, 20" />
<Checked value="True" /> <Checked value="True" />
<CheckState value="Checked" /> <CheckState value="Checked" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache}" />
<TabIndex value="0" /> <TabIndex value="0" />
<Size value="{Width=351, Height=24}" /> <Size value="351, 24" />
<Anchor value="Top, Left, Right" /> <Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox> </System.Windows.Forms.CheckBox>
</Controls> </Controls>
</System.Windows.Forms.GroupBox> </System.Windows.Forms.GroupBox>
<System.Windows.Forms.Label> <System.Windows.Forms.Label>
<Name value="label1" /> <Name value="label1" />
<Location value="{X=8,Y=8}" /> <Location value="8, 8" />
<Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.MainOption}" /> <Text value="${res:Dialog.Options.IDEOptions.CodeCompletion.MainOption}" />
<Anchor value="Top, Left, Right" />
<TextAlign value="MiddleLeft" /> <TextAlign value="MiddleLeft" />
<Size value="{Width=365, Height=22}" /> <Size value="365, 22" />
<TabIndex value="0" /> <TabIndex value="0" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.Label> </System.Windows.Forms.Label>
<System.Windows.Forms.CheckBox> <System.Windows.Forms.CheckBox>
<Name value="codeCompletionEnabledCheckBox" /> <Name value="codeCompletionEnabledCheckBox" />
<Location value="{X=16,Y=25}" /> <Location value="16, 25" />
<Text value="${res:Dialog.Options.IDEOptions.TextEditor.General.CodeCompletionCheckBox}" /> <Text value="${res:Dialog.Options.IDEOptions.TextEditor.General.CodeCompletionCheckBox}" />
<TabIndex value="1" /> <TabIndex value="1" />
<Size value="{Width=357, Height=24}" /> <Size value="357, 24" />
<Anchor value="Top, Left, Right" /> <Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox> </System.Windows.Forms.CheckBox>
</Controls> </Controls>

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

@ -51,48 +51,33 @@ namespace ICSharpCode.SharpDevelop
} }
public static bool TooltipsEnabled { public static bool TooltipsEnabled {
get { get { return properties.Get("TooltipsEnabled", true); }
return properties.Get("TooltipsEnabled", true); set { properties.Set("TooltipsEnabled", value); }
}
set {
properties.Set("TooltipsEnabled", value);
}
} }
public static bool TooltipsOnlyWhenDebugging { public static bool TooltipsOnlyWhenDebugging {
get { get { return properties.Get("TooltipsOnlyWhenDebugging", false); }
return properties.Get("TooltipsOnlyWhenDebugging", false); set { properties.Set("TooltipsOnlyWhenDebugging", value); }
}
set {
properties.Set("TooltipsOnlyWhenDebugging", value);
}
} }
public static bool KeywordCompletionEnabled { public static bool KeywordCompletionEnabled {
get { get { return properties.Get("KeywordCompletionEnabled", true); }
return properties.Get("KeywordCompletionEnabled", true); set { properties.Set("KeywordCompletionEnabled", value); }
} }
set {
properties.Set("KeywordCompletionEnabled", value); public static bool CompleteWhenTyping {
} get { return properties.Get("CompleteWhenTyping", true); }
set { properties.Set("CompleteWhenTyping", value); }
} }
public static bool InsightEnabled { public static bool InsightEnabled {
get { get { return properties.Get("InsightEnabled", true); }
return properties.Get("InsightEnabled", true); set { properties.Set("InsightEnabled", value); }
}
set {
properties.Set("InsightEnabled", value);
}
} }
public static bool InsightRefreshOnComma { public static bool InsightRefreshOnComma {
get { get { return properties.Get("InsightRefreshOnComma", true); }
return properties.Get("InsightRefreshOnComma", true); set { properties.Set("InsightRefreshOnComma", value); }
}
set {
properties.Set("InsightRefreshOnComma", value);
}
} }
} }
} }

2
src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/CodeCompletionPanel.cs

@ -43,6 +43,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels
Get<CheckBox>("useDebugTooltipsOnly").Checked = CodeCompletionOptions.TooltipsOnlyWhenDebugging; Get<CheckBox>("useDebugTooltipsOnly").Checked = CodeCompletionOptions.TooltipsOnlyWhenDebugging;
Get<CheckBox>("completeWhenTyping").Checked = CodeCompletionOptions.CompleteWhenTyping;
Get<CheckBox>("useKeywordCompletion").Checked = CodeCompletionOptions.KeywordCompletionEnabled; Get<CheckBox>("useKeywordCompletion").Checked = CodeCompletionOptions.KeywordCompletionEnabled;
Get<CheckBox>("useInsight").CheckedChanged += delegate(object sender, EventArgs e) { Get<CheckBox>("useInsight").CheckedChanged += delegate(object sender, EventArgs e) {
@ -60,6 +61,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels
CodeCompletionOptions.DataUsageCacheItemCount = (int)Get<NumericUpDown>("dataUsageCacheItemCount").Value; CodeCompletionOptions.DataUsageCacheItemCount = (int)Get<NumericUpDown>("dataUsageCacheItemCount").Value;
CodeCompletionOptions.TooltipsEnabled = Get<CheckBox>("useTooltips").Checked; CodeCompletionOptions.TooltipsEnabled = Get<CheckBox>("useTooltips").Checked;
CodeCompletionOptions.TooltipsOnlyWhenDebugging = Get<CheckBox>("useDebugTooltipsOnly").Checked; CodeCompletionOptions.TooltipsOnlyWhenDebugging = Get<CheckBox>("useDebugTooltipsOnly").Checked;
CodeCompletionOptions.CompleteWhenTyping = Get<CheckBox>("completeWhenTyping").Checked;
CodeCompletionOptions.KeywordCompletionEnabled = Get<CheckBox>("useKeywordCompletion").Checked; CodeCompletionOptions.KeywordCompletionEnabled = Get<CheckBox>("useKeywordCompletion").Checked;
CodeCompletionOptions.InsightEnabled = Get<CheckBox>("useInsight").Checked; CodeCompletionOptions.InsightEnabled = Get<CheckBox>("useInsight").Checked;
CodeCompletionOptions.InsightRefreshOnComma = Get<CheckBox>("refreshInsightOnComma").Checked; CodeCompletionOptions.InsightRefreshOnComma = Get<CheckBox>("refreshInsightOnComma").Checked;

1
src/Main/Base/Test/CSharpExpressionFinderTests.cs

@ -137,7 +137,6 @@ class Main {
} }
[Test] [Test]
[Ignore("Context inside methods not yet implemented")]
public void IdentifierBeforeKeyword() public void IdentifierBeforeKeyword()
{ {
FindFull(program2, "arName", "varName", ExpressionContext.IdentifierExpected); FindFull(program2, "arName", "varName", ExpressionContext.IdentifierExpected);

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs

@ -419,7 +419,9 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
frame.childType = FrameType.Property; frame.childType = FrameType.Property;
} }
frame.SetContext(ExpressionContext.IdentifierExpected); frame.SetContext(ExpressionContext.IdentifierExpected);
} else if (frame.type == FrameType.ParameterList) { } else if (frame.type == FrameType.ParameterList
|| frame.type == FrameType.Statements)
{
frame.SetContext(ExpressionContext.IdentifierExpected); frame.SetContext(ExpressionContext.IdentifierExpected);
} }
} }

Loading…
Cancel
Save