Browse Source

add DebuggerDotCompletion to ConsolePad

pull/331/head
Siegfried Pammer 12 years ago
parent
commit
a1e199e12f
  1. 5
      src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
  2. 56
      src/AddIns/Debugger/Debugger.AddIn/Pads/ConsolePad.cs
  3. 9
      src/AddIns/Debugger/Debugger.AddIn/Pads/DebuggerDotCompletion.cs

5
src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs

@ -33,11 +33,6 @@ using ICSharpCode.SharpDevelop.Services; @@ -33,11 +33,6 @@ using ICSharpCode.SharpDevelop.Services;
namespace Debugger.AddIn
{
public enum SupportedLanguage
{
CSharp
}
public static class Extensions
{
public static ResolveResult ToResolveResult(this Value value, StackFrame context)

56
src/AddIns/Debugger/Debugger.AddIn/Pads/ConsolePad.cs

@ -26,25 +26,15 @@ using ICSharpCode.Core.Presentation; @@ -26,25 +26,15 @@ using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using Debugger.AddIn.Pads.Controls;
using ICSharpCode.SharpDevelop.Services;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
public class ConsolePad : AbstractConsolePad
{
SupportedLanguage language;
// NRefactoryResolver resolver;
const string debuggerConsoleToolBarTreePath = "/SharpDevelop/Pads/ConsolePad/ToolBar";
public SupportedLanguage SelectedLanguage {
get { return language; }
set {
this.language = value;
OnLanguageChanged();
}
}
protected override bool AcceptCommand(string command)
{
if (!string.IsNullOrEmpty(command)) {
@ -82,27 +72,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -82,27 +72,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
protected override void InitializeConsole()
{
base.InitializeConsole();
OnLanguageChanged();
}
void OnLanguageChanged()
{
#warning reimplement this!
// switch (SelectedLanguage) {
// case SupportedLanguage.CSharp:
// resolver = new NRefactoryResolver(LanguageProperties.CSharp);
// SetHighlighting("C#");
// break;
// case SupportedLanguage.VBNet:
// resolver = new NRefactoryResolver(LanguageProperties.VBNet);
// SetHighlighting("VBNET");
// break;
// }
}
public ConsolePad()
{
WindowsDebugger debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
@ -117,26 +86,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -117,26 +86,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void ShowDotCompletion(StackFrame frame, string currentText)
{
var seg = frame.NextStatement;
if (seg == null)
return;
#warning reimplement this!
// var expressionFinder = ParserService.GetExpressionFinder(seg.Filename);
// var info = ParserService.GetParseInformation(seg.Filename);
//
// string text = ParserService.GetParseableFileContent(seg.Filename).Text;
//
// int currentOffset = TextEditor.Caret.Offset - console.CommandOffset - 1;
//
// var expr = expressionFinder.FindExpression(currentText, currentOffset);
//
// expr.Region = new DomRegion(seg.StartLine, seg.StartColumn, seg.EndLine, seg.EndColumn);
//
// var rr = resolver.Resolve(expr, info, text);
//
// if (rr != null) {
// TextEditor.ShowCompletionWindow(new DotCodeCompletionItemProvider().GenerateCompletionListForResolveResult(rr, expr.Context));
// }
var binding = DebuggerDotCompletion.PrepareDotCompletion(currentText, frame);
if (binding == null) return;
binding.HandleKeyPressed(console.TextEditor, '.');
}
protected override ToolBar BuildToolBar()

9
src/AddIns/Debugger/Debugger.AddIn/Pads/DebuggerDotCompletion.cs

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Linq;
using System.Text;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
@ -31,6 +32,13 @@ namespace Debugger.AddIn.Pads.Controls @@ -31,6 +32,13 @@ namespace Debugger.AddIn.Pads.Controls
{
static class DebuggerDotCompletion
{
public static bool CheckSyntax(string expression)
{
var p = new CSharpParser();
p.ParseExpression(expression);
return !p.Errors.Any();
}
public static ICodeCompletionBinding PrepareDotCompletion(string expressionToComplete, StackFrame context)
{
var seq = context.NextStatement;
@ -42,6 +50,7 @@ namespace Debugger.AddIn.Pads.Controls @@ -42,6 +50,7 @@ namespace Debugger.AddIn.Pads.Controls
string content = GeneratePartialClassContextStub(fileName, currentLocation, context);
const string caretPoint = "$__Caret_Point__$;";
int caretOffset = content.IndexOf(caretPoint, StringComparison.Ordinal) + expressionToComplete.Length;
SD.Log.DebugFormatted("context used for dot completion: {0}", content.Replace(caretPoint, "$" + expressionToComplete + "|$"));
var doc = new ReadOnlyDocument(content.Replace(caretPoint, expressionToComplete));
return lang.CreateCompletionBinding(fileName, doc.GetLocation(caretOffset), doc.CreateSnapshot());
}

Loading…
Cancel
Save