Browse Source

implemented basic code completion in Console pad

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6228 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 15 years ago
parent
commit
6f675509cd
  1. 57
      src/AddIns/Debugger/Debugger.AddIn/Pads/ConsolePad.cs
  2. 1
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
  3. 13
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditorControlService.cs
  4. 71
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeCompletionEditorAdapter.cs
  5. 90
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  6. 43
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs
  7. 58
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopTextEditor.cs
  8. 3
      src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionItemProvider.cs
  9. 70
      src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs

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

@ -5,17 +5,21 @@
// <version>$Revision$</version> // <version>$Revision$</version>
// </file> // </file>
using ICSharpCode.NRefactory.Visitors;
using System; using System;
using System.Collections; using System.Collections;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Input;
using Debugger; using Debugger;
using Debugger.AddIn; using Debugger.AddIn;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Visitors;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using ICSharpCode.SharpDevelop.Services; using ICSharpCode.SharpDevelop.Services;
namespace ICSharpCode.SharpDevelop.Gui.Pads namespace ICSharpCode.SharpDevelop.Gui.Pads
@ -23,6 +27,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public class ConsolePad : AbstractConsolePad public class ConsolePad : AbstractConsolePad
{ {
SupportedLanguage language; SupportedLanguage language;
NRefactoryResolver resolver;
const string debuggerConsoleToolBarTreePath = "/SharpDevelop/Pads/ConsolePad/ToolBar"; const string debuggerConsoleToolBarTreePath = "/SharpDevelop/Pads/ConsolePad/ToolBar";
@ -77,30 +82,25 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
protected override void InitializeConsole() protected override void InitializeConsole()
{ {
base.InitializeConsole(); base.InitializeConsole();
switch (SelectedLanguage) { OnLanguageChanged();
case SupportedLanguage.CSharp:
SetHighlighting("C#");
break;
case SupportedLanguage.VBNet:
SetHighlighting("VBNET");
break;
}
} }
void OnLanguageChanged() void OnLanguageChanged()
{ {
switch (SelectedLanguage) { switch (SelectedLanguage) {
case SupportedLanguage.CSharp: case SupportedLanguage.CSharp:
resolver = new NRefactoryResolver(LanguageProperties.CSharp);
SetHighlighting("C#"); SetHighlighting("C#");
break; break;
case SupportedLanguage.VBNet: case SupportedLanguage.VBNet:
resolver = new NRefactoryResolver(LanguageProperties.VBNet);
SetHighlighting("VBNET"); SetHighlighting("VBNET");
break; break;
} }
} }
public ConsolePad() public ConsolePad()
{ {
WindowsDebugger debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; WindowsDebugger debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
debugger.ProcessSelected += delegate(object sender, ProcessEventArgs e) { debugger.ProcessSelected += delegate(object sender, ProcessEventArgs e) {
@ -109,6 +109,43 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
this.Process = debugger.DebuggedProcess; this.Process = debugger.DebuggedProcess;
} }
protected override void AbstractConsolePadTextEntered(object sender, TextCompositionEventArgs e)
{
if (this.process == null || this.process.IsRunning)
return;
if (this.process.SelectedStackFrame == null || this.process.SelectedStackFrame.NextStatement == null)
return;
foreach (char ch in e.Text) {
if (ch == '.') {
ShowDotCompletion(console.CommandText);
}
}
}
void ShowDotCompletion(string currentText)
{
var seg = process.SelectedStackFrame.NextStatement;
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));
}
}
protected override ToolBar BuildToolBar() protected override ToolBar BuildToolBar()
{ {
return ToolBarService.CreateToolBar(this, debuggerConsoleToolBarTreePath); return ToolBarService.CreateToolBar(this, debuggerConsoleToolBarTreePath);

1
src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj

@ -86,6 +86,7 @@
<DependentUpon>ChooseEncodingDialog.xaml</DependentUpon> <DependentUpon>ChooseEncodingDialog.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Src\CodeCompletionEditorAdapter.cs" />
<Compile Include="Src\CodeEditor.cs" /> <Compile Include="Src\CodeEditor.cs" />
<Compile Include="Src\CodeEditorAdapter.cs" /> <Compile Include="Src\CodeEditorAdapter.cs" />
<Compile Include="Src\CodeEditorView.cs" /> <Compile Include="Src\CodeEditorView.cs" />

13
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditorControlService.cs

@ -26,18 +26,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
{ {
SharpDevelopTextEditor editor = new SharpDevelopTextEditor(); SharpDevelopTextEditor editor = new SharpDevelopTextEditor();
control = editor; control = editor;
return new EditorAdapter(editor); return new CodeCompletionEditorAdapter(editor);
}
sealed class EditorAdapter : AvalonEditTextEditorAdapter
{
public EditorAdapter(SharpDevelopTextEditor editor) : base(editor)
{
}
public override ITextEditorOptions Options {
get { return CodeEditorOptions.Instance; }
}
} }
} }
} }

71
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeCompletionEditorAdapter.cs

@ -0,0 +1,71 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <author name="Daniel Grunwald"/>
// <version>$Revision: 5413 $</version>
// </file>
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using ICSharpCode.AvalonEdit.AddIn.Options;
using ICSharpCode.AvalonEdit.AddIn.Snippets;
using ICSharpCode.AvalonEdit.Indentation;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
namespace ICSharpCode.AvalonEdit.AddIn
{
class CodeCompletionEditorAdapter : AvalonEditTextEditorAdapter
{
SharpDevelopTextEditor textEditor;
public CodeCompletionEditorAdapter(SharpDevelopTextEditor textEditor)
: base(textEditor)
{
this.textEditor = textEditor;
}
public override ICompletionListWindow ShowCompletionWindow(ICompletionItemList data)
{
if (data == null || !data.Items.Any())
return null;
SharpDevelopCompletionWindow window = new SharpDevelopCompletionWindow(this, this.TextEditor.TextArea, data);
textEditor.ShowCompletionWindow(window);
return window;
}
public override IInsightWindow ShowInsightWindow(IEnumerable<IInsightItem> items)
{
if (items == null)
return null;
var insightWindow = new SharpDevelopInsightWindow(this.TextEditor.TextArea);
insightWindow.Items.AddRange(items);
if (insightWindow.Items.Count > 0) {
insightWindow.SelectedItem = insightWindow.Items[0];
} else {
// don't open insight window when there are no items
return null;
}
textEditor.ShowInsightWindow(insightWindow);
return insightWindow;
}
public override IInsightWindow ActiveInsightWindow {
get { return textEditor.ActiveInsightWindow; }
}
public override ICompletionListWindow ActiveCompletionWindow {
get { return textEditor.ActiveCompletionWindow; }
}
public override ITextEditorOptions Options {
get { return CodeEditorOptions.Instance; }
}
}
}

90
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -368,10 +368,24 @@ namespace ICSharpCode.AvalonEdit.AddIn
} }
} }
SharpDevelopCompletionWindow CompletionWindow {
get {
return primaryTextEditor.ActiveCompletionWindow
?? (secondaryTextEditor == null ? null : secondaryTextEditor.ActiveCompletionWindow);
}
}
SharpDevelopInsightWindow InsightWindow {
get {
return primaryTextEditor.ActiveInsightWindow
?? (secondaryTextEditor == null ? null : secondaryTextEditor.ActiveInsightWindow);
}
}
void TextAreaTextEntering(object sender, TextCompositionEventArgs e) void TextAreaTextEntering(object sender, TextCompositionEventArgs e)
{ {
// don't start new code completion if there is still a completion window open // don't start new code completion if there is still a completion window open
if (completionWindow != null) if (CompletionWindow != null)
return; return;
if (e.Handled) if (e.Handled)
@ -383,19 +397,19 @@ namespace ICSharpCode.AvalonEdit.AddIn
foreach (ICodeCompletionBinding cc in CodeCompletionBindings) { foreach (ICodeCompletionBinding cc in CodeCompletionBindings) {
CodeCompletionKeyPressResult result = cc.HandleKeyPress(adapter, c); CodeCompletionKeyPressResult result = cc.HandleKeyPress(adapter, c);
if (result == CodeCompletionKeyPressResult.Completed) { if (result == CodeCompletionKeyPressResult.Completed) {
if (completionWindow != null) { if (CompletionWindow != null) {
// a new CompletionWindow was shown, but does not eat the input // a new CompletionWindow was shown, but does not eat the input
// tell it to expect the text insertion // tell it to expect the text insertion
completionWindow.ExpectInsertionBeforeStart = true; CompletionWindow.ExpectInsertionBeforeStart = true;
} }
if (insightWindow != null) { if (InsightWindow != null) {
insightWindow.ExpectInsertionBeforeStart = true; InsightWindow.ExpectInsertionBeforeStart = true;
} }
return; return;
} else if (result == CodeCompletionKeyPressResult.CompletedIncludeKeyInCompletion) { } else if (result == CodeCompletionKeyPressResult.CompletedIncludeKeyInCompletion) {
if (completionWindow != null) { if (CompletionWindow != null) {
if (completionWindow.StartOffset == completionWindow.EndOffset) { if (CompletionWindow.StartOffset == CompletionWindow.EndOffset) {
completionWindow.CloseWhenCaretAtBeginning = true; CompletionWindow.CloseWhenCaretAtBeginning = true;
} }
} }
return; return;
@ -450,7 +464,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
void OnCodeCompletion(object sender, ExecutedRoutedEventArgs e) void OnCodeCompletion(object sender, ExecutedRoutedEventArgs e)
{ {
CloseExistingCompletionWindow(); if (CompletionWindow != null)
CompletionWindow.Close();
CodeEditorView textEditor = GetTextEditorFromSender(sender); CodeEditorView textEditor = GetTextEditorFromSender(sender);
foreach (ICodeCompletionBinding cc in CodeCompletionBindings) { foreach (ICodeCompletionBinding cc in CodeCompletionBindings) {
if (cc.CtrlSpace(textEditor.Adapter)) { if (cc.CtrlSpace(textEditor.Adapter)) {
@ -460,63 +475,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
} }
} }
SharpDevelopCompletionWindow completionWindow;
SharpDevelopInsightWindow insightWindow;
void CloseExistingCompletionWindow()
{
if (completionWindow != null) {
completionWindow.Close();
}
}
void CloseExistingInsightWindow()
{
if (insightWindow != null) {
insightWindow.Close();
}
}
public SharpDevelopCompletionWindow ActiveCompletionWindow {
get { return completionWindow; }
}
public SharpDevelopInsightWindow ActiveInsightWindow {
get { return insightWindow; }
}
internal void ShowCompletionWindow(SharpDevelopCompletionWindow window)
{
CloseExistingCompletionWindow();
completionWindow = window;
window.Closed += delegate {
completionWindow = null;
};
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(
delegate {
if (completionWindow == window) {
window.Show();
}
}
));
}
internal void ShowInsightWindow(SharpDevelopInsightWindow window)
{
CloseExistingInsightWindow();
insightWindow = window;
window.Closed += delegate {
insightWindow = null;
};
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(
delegate {
if (insightWindow == window) {
window.Show();
}
}
));
}
public IHighlightingDefinition SyntaxHighlighting { public IHighlightingDefinition SyntaxHighlighting {
get { return primaryTextEditor.SyntaxHighlighting; } get { return primaryTextEditor.SyntaxHighlighting; }
set { set {

43
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
/// <summary> /// <summary>
/// Wraps the CodeEditor class to provide the ITextEditor interface. /// Wraps the CodeEditor class to provide the ITextEditor interface.
/// </summary> /// </summary>
sealed class CodeEditorAdapter : AvalonEditTextEditorAdapter sealed class CodeEditorAdapter : CodeCompletionEditorAdapter
{ {
readonly CodeEditor codeEditor; readonly CodeEditor codeEditor;
@ -39,18 +39,14 @@ namespace ICSharpCode.AvalonEdit.AddIn
get { return codeEditor.FileName; } get { return codeEditor.FileName; }
} }
public override ICompletionListWindow ActiveCompletionWindow {
get { return codeEditor.ActiveCompletionWindow; }
}
ILanguageBinding languageBinding; ILanguageBinding languageBinding;
public override ILanguageBinding Language { public override ILanguageBinding Language {
get { return languageBinding; } get { return languageBinding; }
} }
public override ITextEditorOptions Options { public override ITextEditor PrimaryView {
get { return CodeEditorOptions.Instance; } get { return codeEditor.PrimaryTextEditorAdapter; }
} }
internal void FileNameChanged() internal void FileNameChanged()
@ -84,39 +80,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
// so we keep it enabled even when the option is set to false. // so we keep it enabled even when the option is set to false.
} }
public override ICompletionListWindow ShowCompletionWindow(ICompletionItemList data)
{
if (data == null || !data.Items.Any())
return null;
SharpDevelopCompletionWindow window = new SharpDevelopCompletionWindow(this, this.TextEditor.TextArea, data);
codeEditor.ShowCompletionWindow(window);
return window;
}
public override IInsightWindow ShowInsightWindow(IEnumerable<IInsightItem> items)
{
if (items == null)
return null;
var insightWindow = new SharpDevelopInsightWindow(this.TextEditor.TextArea);
insightWindow.Items.AddRange(items);
if (insightWindow.Items.Count > 0) {
insightWindow.SelectedItem = insightWindow.Items[0];
} else {
// don't open insight window when there are no items
return null;
}
codeEditor.ShowInsightWindow(insightWindow);
return insightWindow;
}
public override IInsightWindow ActiveInsightWindow {
get { return codeEditor.ActiveInsightWindow; }
}
public override ITextEditor PrimaryView {
get { return codeEditor.PrimaryTextEditorAdapter; }
}
public override IEnumerable<ICompletionItem> GetSnippets() public override IEnumerable<ICompletionItem> GetSnippets()
{ {
CodeSnippetGroup g = SnippetManager.Instance.FindGroup(Path.GetExtension(this.FileName)); CodeSnippetGroup g = SnippetManager.Instance.FindGroup(Path.GetExtension(this.FileName));

58
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopTextEditor.cs

@ -19,6 +19,7 @@ using System.Windows.Data;
using System.Windows.Documents; using System.Windows.Documents;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Threading;
using ICSharpCode.AvalonEdit.AddIn.Options; using ICSharpCode.AvalonEdit.AddIn.Options;
using ICSharpCode.AvalonEdit.AddIn.Snippets; using ICSharpCode.AvalonEdit.AddIn.Snippets;
@ -64,6 +65,63 @@ namespace ICSharpCode.AvalonEdit.AddIn
get { return "untitled"; } get { return "untitled"; }
} }
SharpDevelopCompletionWindow completionWindow;
SharpDevelopInsightWindow insightWindow;
void CloseExistingCompletionWindow()
{
if (completionWindow != null) {
completionWindow.Close();
}
}
void CloseExistingInsightWindow()
{
if (insightWindow != null) {
insightWindow.Close();
}
}
public SharpDevelopCompletionWindow ActiveCompletionWindow {
get { return completionWindow; }
}
public SharpDevelopInsightWindow ActiveInsightWindow {
get { return insightWindow; }
}
internal void ShowCompletionWindow(SharpDevelopCompletionWindow window)
{
CloseExistingCompletionWindow();
completionWindow = window;
window.Closed += delegate {
completionWindow = null;
};
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(
delegate {
if (completionWindow == window) {
window.Show();
}
}
));
}
internal void ShowInsightWindow(SharpDevelopInsightWindow window)
{
CloseExistingInsightWindow();
insightWindow = window;
window.Closed += delegate {
insightWindow = null;
};
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(
delegate {
if (insightWindow == window) {
window.Show();
}
}
));
}
#region Printing #region Printing
void OnPrint(object sender, ExecutedRoutedEventArgs e) void OnPrint(object sender, ExecutedRoutedEventArgs e)
{ {

3
src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionItemProvider.cs

@ -356,6 +356,9 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
ResolveResult ResolveAtCurrentOffset(string className, CompletionContext context) ResolveResult ResolveAtCurrentOffset(string className, CompletionContext context)
{ {
if (context.Editor.FileName == null)
return null;
var document = context.Editor.Document; var document = context.Editor.Document;
var position = document.OffsetToPosition(context.StartOffset); var position = document.OffsetToPosition(context.StartOffset);
return ParserService.Resolve(new ExpressionResult(className), position.Line, position.Column, context.Editor.FileName, document.Text); return ParserService.Resolve(new ExpressionResult(className), position.Line, position.Column, context.Editor.FileName, document.Text);

70
src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs

@ -27,7 +27,7 @@ namespace ICSharpCode.SharpDevelop.Gui
const string toolBarTreePath = "/SharpDevelop/Pads/CommonConsole/ToolBar"; const string toolBarTreePath = "/SharpDevelop/Pads/CommonConsole/ToolBar";
DockPanel panel; DockPanel panel;
ConsoleControl console; protected ConsoleControl console;
ToolBar toolbar; ToolBar toolbar;
bool cleared; bool cleared;
@ -53,8 +53,14 @@ namespace ICSharpCode.SharpDevelop.Gui
e.Handled = HandleInput(e.Key); e.Handled = HandleInput(e.Key);
}; };
this.console.editor.TextArea.TextEntered += new TextCompositionEventHandler(AbstractConsolePadTextEntered);
this.InitializeConsole(); this.InitializeConsole();
} }
protected virtual void AbstractConsolePadTextEntered(object sender, TextCompositionEventArgs e)
{
}
protected virtual ToolBar BuildToolBar() protected virtual ToolBar BuildToolBar()
{ {
@ -151,31 +157,31 @@ namespace ICSharpCode.SharpDevelop.Gui
console.CommandText = ""; console.CommandText = "";
else else
console.CommandText = this.history[this.historyPointer]; console.CommandText = this.history[this.historyPointer];
console.editor.ScrollToEnd();
return true;
case Key.Return:
if (Keyboard.Modifiers == ModifierKeys.Shift)
return false;
int caretOffset = this.console.TextEditor.Caret.Offset;
string commandText = console.CommandText;
cleared = false;
if (AcceptCommand(commandText)) {
IDocument document = console.TextEditor.Document;
if (!cleared) {
if (document.GetCharAt(document.TextLength - 1) != '\n')
document.Insert(document.TextLength, Environment.NewLine);
AppendPrompt();
console.TextEditor.Select(document.TextLength, 0);
} else {
console.CommandText = "";
}
cleared = false;
this.history.Add(commandText);
this.historyPointer = this.history.Count;
console.editor.ScrollToEnd(); console.editor.ScrollToEnd();
return true; return true;
} case Key.Return:
return false; if (Keyboard.Modifiers == ModifierKeys.Shift)
return false;
int caretOffset = this.console.TextEditor.Caret.Offset;
string commandText = console.CommandText;
cleared = false;
if (AcceptCommand(commandText)) {
IDocument document = console.TextEditor.Document;
if (!cleared) {
if (document.GetCharAt(document.TextLength - 1) != '\n')
document.Insert(document.TextLength, Environment.NewLine);
AppendPrompt();
console.TextEditor.Select(document.TextLength, 0);
} else {
console.CommandText = "";
}
cleared = false;
this.history.Add(commandText);
this.historyPointer = this.history.Count;
console.editor.ScrollToEnd();
return true;
}
return false;
default: default:
return false; return false;
} }
@ -254,9 +260,10 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
} }
class ConsoleControl : Grid public class ConsoleControl : Grid
{ {
internal AvalonEdit.TextEditor editor; internal AvalonEdit.TextEditor editor;
internal ITextEditor editorAdapter;
internal BeginReadOnlySectionProvider readOnlyRegion; internal BeginReadOnlySectionProvider readOnlyRegion;
public ConsoleControl() public ConsoleControl()
@ -264,9 +271,14 @@ namespace ICSharpCode.SharpDevelop.Gui
this.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }); this.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
this.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); this.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
this.editor = Editor.AvalonEdit.AvalonEditTextEditorAdapter.CreateAvalonEditInstance(); object tmp;
this.editorAdapter = EditorControlService.CreateEditor(out tmp);
this.editor = (AvalonEdit.TextEditor)tmp;
this.editor.SetValue(Grid.ColumnProperty, 0); this.editor.SetValue(Grid.ColumnProperty, 0);
this.editor.SetValue(Grid.RowProperty, 0); this.editor.SetValue(Grid.RowProperty, 0);
this.editor.ShowLineNumbers = false;
this.Children.Add(editor); this.Children.Add(editor);
@ -275,7 +287,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public ITextEditor TextEditor { public ITextEditor TextEditor {
get { get {
return new AvalonEditTextEditorAdapter(editor); return editorAdapter;
} }
} }
@ -305,6 +317,10 @@ namespace ICSharpCode.SharpDevelop.Gui
readOnlyRegion.EndOffset = editor.Document.TextLength; readOnlyRegion.EndOffset = editor.Document.TextLength;
} }
public int CommandOffset {
get { return readOnlyRegion.EndOffset; }
}
/// <summary> /// <summary>
/// Gets/sets the command text displayed at the command prompt. /// Gets/sets the command text displayed at the command prompt.
/// </summary> /// </summary>

Loading…
Cancel
Save