diff options
author | Mike Krüger <mkrueger@novell.com> | 2010-04-13 12:16:53 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@novell.com> | 2010-04-13 12:16:53 +0400 |
commit | 2297a35cc18d5c9b531bd884c9d38020551590a2 (patch) | |
tree | a2158fd17cf6a34c6b3d847cc4c9091bd21c1a32 /main/src/core | |
parent | b7065cbecce9deea1cc30628e42e8f2e87fcdaec (diff) |
* MonoDevelop.Ide.Gui/Document.cs:
* MonoDevelop.Ide.Gui/ViewCommandHandlers.cs:
* MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs:
* MonoDevelop.Ide.Gui.Content/TextEditorExtension.cs:
* MonoDevelop.Ide.Gui.Content/DocumentStateTracker.cs: It's now
possible to get the TextEditorData object from the Document.
svn path=/trunk/monodevelop/; revision=155292
Diffstat (limited to 'main/src/core')
6 files changed, 45 insertions, 16 deletions
diff --git a/main/src/core/MonoDevelop.Ide/ChangeLog b/main/src/core/MonoDevelop.Ide/ChangeLog index e2c634cfd5..d727d3f55b 100644 --- a/main/src/core/MonoDevelop.Ide/ChangeLog +++ b/main/src/core/MonoDevelop.Ide/ChangeLog @@ -1,3 +1,13 @@ +2010-04-13 Mike Krüger <mkrueger@novell.com> + + * MonoDevelop.Ide.Gui/Document.cs: + * MonoDevelop.Ide.Gui/ViewCommandHandlers.cs: + * MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs: + * MonoDevelop.Ide.Gui.Content/TextEditorExtension.cs: + * MonoDevelop.Ide.Gui.Content/DocumentStateTracker.cs: It's + now possible to get the TextEditorData object from the + Document. + 2010-04-12 Mike Krüger <mkrueger@novell.com> * MonoDevelop.Ide.CodeCompletion/ListWidget.cs: Implemented diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs index e5796a6462..10109cf004 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs @@ -350,8 +350,7 @@ namespace MonoDevelop.Ide.CodeTemplates ParsedDocument doc = document.ParsedDocument ?? MonoDevelop.Projects.Dom.Parser.ProjectDomService.GetParsedDocument (dom, document.FileName); MonoDevelop.Ide.Gui.TextEditor editor = document.TextEditor; - Mono.TextEditor.ITextEditorDataProvider provider = document.GetContent<Mono.TextEditor.ITextEditorDataProvider> (); - Mono.TextEditor.TextEditorData data = provider.GetTextEditorData (); + Mono.TextEditor.TextEditorData data = document.TextEditorData; int offset = editor.CursorPosition; int line, col; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/DocumentStateTracker.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/DocumentStateTracker.cs index 71f67096c4..6a91431291 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/DocumentStateTracker.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/DocumentStateTracker.cs @@ -30,32 +30,38 @@ using System; using System.Collections.Generic; +using Mono.TextEditor; namespace MonoDevelop.Ide.Gui.Content { - public class DocumentStateTracker<T> where T : IDocumentStateEngine + public class DocumentStateTracker<T> : IDisposable where T : IDocumentStateEngine { T currentEngine; Stack<T> cachedEngines = new Stack<T> (); - MonoDevelop.Ide.Gui.TextEditor editor; + TextEditorData editor; - public DocumentStateTracker (T engine, MonoDevelop.Ide.Gui.TextEditor editor) + public DocumentStateTracker (T engine, TextEditorData editor) { this.currentEngine = engine; this.editor = editor; - editor.TextChanged += textChanged; + editor.Document.TextReplaced += textChanged; + } + + public void Dispose () + { + editor.Document.TextReplaced -= textChanged; } public T Engine { get { return currentEngine; } } - void textChanged (object sender, TextChangedEventArgs args) + void textChanged (object sender, ReplaceEventArgs args) { - if (args.StartIndex < currentEngine.Position) - ResetEngineToPosition (args.StartIndex); + if (args.Offset< currentEngine.Position) + ResetEngineToPosition (args.Offset); } public void ResetEngineToPosition (int position) @@ -79,7 +85,7 @@ namespace MonoDevelop.Ide.Gui.Content } public void UpdateEngine () { - UpdateEngine (editor.CursorPosition); + UpdateEngine (editor.Caret.Offset); } //Makes sure that the smart indent engine's cursor has caught up with the @@ -106,7 +112,7 @@ namespace MonoDevelop.Ide.Gui.Content // get the engine caught up int nextSave = (cachedEngines.Count == 0)? BUFFER_SIZE : cachedEngines.Peek ().Position + BUFFER_SIZE; if (currentEngine.Position + 1 == position) { - char ch = editor.GetCharAt (currentEngine.Position); + char ch = editor.Document.GetCharAt (currentEngine.Position); currentEngine.Push (ch); ConsoleWrite ("pushing character '{0}'", ch); if (currentEngine.Position == nextSave) @@ -118,7 +124,7 @@ namespace MonoDevelop.Ide.Gui.Content int endCut = currentEngine.Position + BUFFER_SIZE; if (endCut > position) endCut = position; - string buffer = editor.GetText (currentEngine.Position, endCut); + string buffer = editor.Document.GetTextBetween (currentEngine.Position, endCut); ConsoleWrite ("getting buffer between {0} and {1}" /* '{2}'"*/, currentEngine.Position, endCut - 1, buffer); foreach (char ch in buffer) { currentEngine.Push (ch); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/TextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/TextEditorExtension.cs index b67ab18a2c..5f16330639 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/TextEditorExtension.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/TextEditorExtension.cs @@ -35,6 +35,7 @@ using MonoDevelop.Projects.Dom.Parser; using MonoDevelop.Components.Commands; using MonoDevelop.Ide.Commands;
using MonoDevelop.Core; +using Mono.TextEditor; namespace MonoDevelop.Ide.Gui.Content { @@ -61,6 +62,10 @@ namespace MonoDevelop.Ide.Gui.Content get { return document.TextEditor; } } + protected TextEditorData TextEditorData { + get { return document.TextEditorData; } + } + protected FilePath FileName { get { IViewContent view = document.Window.ViewContent; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs index daf924ac7e..07d89a8d5e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs @@ -171,6 +171,18 @@ namespace MonoDevelop.Ide.Gui } } + Mono.TextEditor.TextEditorData data = null; + public Mono.TextEditor.TextEditorData TextEditorData { + get { + if (data == null) { + Mono.TextEditor.ITextEditorDataProvider view = GetContent <Mono.TextEditor.ITextEditorDataProvider> (); + data = view.GetTextEditorData (); + } + return data; + } + } + + public bool IsViewOnly { get { return Window.ViewContent.IsViewOnly; } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs index b342236516..679fe245d3 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs @@ -514,10 +514,7 @@ namespace MonoDevelop.Ide.Gui [CommandHandler (EditCommands.RemoveTrailingWhiteSpaces)] public void OnRemoveTrailingWhiteSpaces () { - Mono.TextEditor.ITextEditorDataProvider provider = GetContent<Mono.TextEditor.ITextEditorDataProvider> (); - if (provider == null) - return; - Mono.TextEditor.TextEditorData data = provider.GetTextEditorData (); + Mono.TextEditor.TextEditorData data = doc.TextEditorData; if (data == null) return; |