Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/addins/CSharpBinding/AspNet/AspLanguageBuilder.cs')
-rw-r--r--main/src/addins/CSharpBinding/AspNet/AspLanguageBuilder.cs107
1 files changed, 61 insertions, 46 deletions
diff --git a/main/src/addins/CSharpBinding/AspNet/AspLanguageBuilder.cs b/main/src/addins/CSharpBinding/AspNet/AspLanguageBuilder.cs
index 4e1fc93617..e6e4eaf509 100644
--- a/main/src/addins/CSharpBinding/AspNet/AspLanguageBuilder.cs
+++ b/main/src/addins/CSharpBinding/AspNet/AspLanguageBuilder.cs
@@ -23,17 +23,25 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
-
+/*
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
-using Mono.TextEditor;
using MonoDevelop.AspNet.WebForms;
using MonoDevelop.AspNet.WebForms.Dom;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory.TypeSystem;
+using MonoDevelop.CSharp.Parser;
+using System.IO;
+using ICSharpCode.NRefactory.Completion;
+using MonoDevelop.AspNet.StateEngine;
+using MonoDevelop.Xml.StateEngine;
+using ICSharpCode.NRefactory6.CSharp.Completion;
+using MonoDevelop.Ide.Editor;
+using MonoDevelop.Core.Text;
namespace MonoDevelop.CSharp.Completion
{
@@ -67,9 +75,8 @@ namespace MonoDevelop.CSharp.Completion
builder.Append (" : ");
builder.AppendLine (info.BaseType);
}
-
- public LocalDocumentInfo BuildLocalDocument (DocumentInfo info, TextEditorData data,
- string expressionText, string textAfterCaret, bool isExpression)
+
+ LocalDocumentInfo ILanguageCompletionBuilder.BuildLocalDocument (DocumentInfo info, MonoDevelop.Ide.Editor.TextEditor data, string expressionText, string textAfterCaret, bool isExpression)
{
var sb = new StringBuilder ();
@@ -84,12 +91,12 @@ namespace MonoDevelop.CSharp.Completion
foreach (var node in info.XExpressions) {
bool isBlock = node is WebFormsRenderBlock;
- if (node.Region.Begin.Line > data.Caret.Line || node.Region.Begin.Line == data.Caret.Line && node.Region.Begin.Column > data.Caret.Column - 5)
+ if (node.Region.Begin.Line > data.CaretLine || node.Region.Begin.Line == data.CaretLine && node.Region.Begin.Column > data.CaretColumn - 5)
continue;
//Console.WriteLine ("take xprt:" + expressions.Key.BeginLine +"/" +expressions.Key.BeginColumn);
- var start = data.Document.LocationToOffset (node.Region.Begin.Line, node.Region.Begin.Column) + 2;
- var end = data.Document.LocationToOffset (node.Region.End.Line, node.Region.End.Column) - 2;
+ var start = data.LocationToOffset (node.Region.Begin.Line, node.Region.Begin.Column) + 2;
+ var end = data.LocationToOffset (node.Region.End.Line, node.Region.End.Column) - 2;
if (!isBlock) {
sb.Append ("WriteLine (");
@@ -114,53 +121,52 @@ namespace MonoDevelop.CSharp.Completion
result.LocalDocument = sb.ToString ();
result.CaretPosition = caretPosition;
- result.OriginalCaretPosition = data.Caret.Offset;
+ result.OriginalCaretPosition = data.CaretOffset;
result.ParsedLocalDocument = Parse (info.AspNetDocument.FileName, sb.ToString ());
return result;
}
- public ICompletionDataList HandlePopupCompletion (Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo)
+ public ICompletionDataList HandlePopupCompletion (TextEditor realEditor, DocumentContext realContext, DocumentInfo info, LocalDocumentInfo localInfo)
{
CodeCompletionContext codeCompletionContext;
- using (var completion = CreateCompletion (realDocument, info, localInfo, out codeCompletionContext)) {
+ using (var completion = CreateCompletion (realEditor, realContext, info, localInfo, out codeCompletionContext)) {
return completion.CodeCompletionCommand (codeCompletionContext);
}
}
- public ICompletionDataList HandleCompletion (Document realDocument, CodeCompletionContext completionContext, DocumentInfo info, LocalDocumentInfo localInfo, char currentChar, ref int triggerWordLength)
+ public ICompletionDataList HandleCompletion (TextEditor realEditor, DocumentContext realContext, CodeCompletionContext completionContext, DocumentInfo info, LocalDocumentInfo localInfo, char currentChar, ref int triggerWordLength)
{
CodeCompletionContext ccc;
- using (var completion = CreateCompletion (realDocument, info, localInfo, out ccc)) {
- return completion.HandleCodeCompletion (completionContext, currentChar, ref triggerWordLength);
+ using (var completion = CreateCompletion (realEditor, realContext, info, localInfo, out ccc)) {
+ return completion.HandleCodeCompletionAsync (completionContext, currentChar, ref triggerWordLength);
}
}
- public ParameterDataProvider HandleParameterCompletion (Document realDocument, CodeCompletionContext completionContext, DocumentInfo info, LocalDocumentInfo localInfo, char completionChar)
+ public ParameterHintingResult HandleParameterCompletion (TextEditor realEditor, DocumentContext realContext, CodeCompletionContext completionContext, DocumentInfo info, LocalDocumentInfo localInfo, char completionChar)
{
CodeCompletionContext ccc;
- using (var completion = CreateCompletion (realDocument, info, localInfo, out ccc)) {
- return completion.HandleParameterCompletion (completionContext, completionChar);
+ using (var completion = CreateCompletion (realEditor, realContext, info, localInfo, out ccc)) {
+ return completion.HandleParameterCompletionAsync (completionContext, completionChar);
}
}
- public bool GetParameterCompletionCommandOffset (Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo, out int cpos)
+ public bool GetParameterCompletionCommandOffset (TextEditor realEditor, DocumentContext realContext, DocumentInfo info, LocalDocumentInfo localInfo, out int cpos)
{
CodeCompletionContext codeCompletionContext;
- using (var completion = CreateCompletion (realDocument, info, localInfo, out codeCompletionContext)) {
- return completion.GetParameterCompletionCommandOffset (out cpos);
+ using (var completion = CreateCompletion (realEditor, realContext, info, localInfo, out codeCompletionContext)) {
+ int wlen;
+ return completion.GetCompletionCommandOffset (out cpos, out wlen);
}
}
- public ICompletionWidget CreateCompletionWidget (Document realDocument, LocalDocumentInfo localInfo)
+ public ICompletionWidget CreateCompletionWidget (TextEditor realEditor, DocumentContext realContext, LocalDocumentInfo localInfo)
{
- return new AspCompletionWidget (realDocument, localInfo);
+ return new AspCompletionWidget (realEditor, localInfo);
}
- CSharpCompletionTextEditorExtension CreateCompletion (Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo, out CodeCompletionContext codeCompletionContext)
+ CSharpCompletionTextEditorExtension CreateCompletion (TextEditor realEditor, DocumentContext realContext, DocumentInfo info, LocalDocumentInfo localInfo, out CodeCompletionContext codeCompletionContext)
{
- var doc = new TextDocument () {
- Text = localInfo.LocalDocument,
- };
+ var doc = TextEditorFactory.CreateNewDocument (new StringTextSource (localInfo.LocalDocument), realEditor.FileName + ".cs");
var documentLocation = doc.OffsetToLocation (localInfo.CaretPosition);
codeCompletionContext = new CodeCompletionContext () {
@@ -170,16 +176,16 @@ namespace MonoDevelop.CSharp.Completion
};
return new CSharpCompletionTextEditorExtension (localInfo.HiddenDocument) {
- CompletionWidget = CreateCompletionWidget (realDocument, localInfo)
+ CompletionWidget = CreateCompletionWidget (realEditor, realContext, localInfo)
};
}
class AspCompletionWidget : ICompletionWidget
{
- Document realDocument;
+ TextEditor realDocument;
LocalDocumentInfo localInfo;
- public AspCompletionWidget (Document realDocument, LocalDocumentInfo localInfo)
+ public AspCompletionWidget (TextEditor realDocument, LocalDocumentInfo localInfo)
{
this.realDocument = realDocument;
this.localInfo = localInfo;
@@ -188,7 +194,7 @@ namespace MonoDevelop.CSharp.Completion
#region ICompletionWidget implementation
public CodeCompletionContext CurrentCodeCompletionContext {
get {
- int delta = realDocument.Editor.Caret.Offset - localInfo.OriginalCaretPosition;
+ int delta = realDocument.CaretOffset - localInfo.OriginalCaretPosition;
return CreateCodeCompletionContext (localInfo.CaretPosition + delta);
}
}
@@ -217,10 +223,10 @@ namespace MonoDevelop.CSharp.Completion
public CodeCompletionContext CreateCodeCompletionContext (int triggerOffset)
{
- var savedCtx = realDocument.GetContent<ICompletionWidget> ().CreateCodeCompletionContext (realDocument.Editor.Caret.Offset + triggerOffset - localInfo.CaretPosition);
+ var savedCtx = realDocument.GetContent<ICompletionWidget> ().CreateCodeCompletionContext (realDocument.CaretOffset + triggerOffset - localInfo.CaretPosition);
CodeCompletionContext result = new CodeCompletionContext ();
result.TriggerOffset = triggerOffset;
- DocumentLocation loc = localInfo.HiddenDocument.Editor.Document.OffsetToLocation (triggerOffset);
+ var loc = localInfo.HiddenDocument.Editor.OffsetToLocation (triggerOffset);
result.TriggerLine = loc.Line;
result.TriggerLineOffset = loc.Column - 1;
@@ -234,9 +240,9 @@ namespace MonoDevelop.CSharp.Completion
{
if (ctx == null)
return null;
- int min = Math.Min (ctx.TriggerOffset, localInfo.HiddenDocument.Editor.Caret.Offset);
- int max = Math.Max (ctx.TriggerOffset, localInfo.HiddenDocument.Editor.Caret.Offset);
- return localInfo.HiddenDocument.Editor.Document.GetTextBetween (min, max);
+ int min = Math.Min (ctx.TriggerOffset, localInfo.HiddenDocument.Editor.CaretOffset);
+ int max = Math.Max (ctx.TriggerOffset, localInfo.HiddenDocument.Editor.CaretOffset);
+ return localInfo.HiddenDocument.Editor.GetTextBetween (min, max);
}
public void SetCompletionText (CodeCompletionContext ctx, string partial_word, string complete_word)
@@ -249,7 +255,7 @@ namespace MonoDevelop.CSharp.Completion
CodeCompletionContext translatedCtx = new CodeCompletionContext ();
int offset = localInfo.OriginalCaretPosition + ctx.TriggerOffset - localInfo.CaretPosition;
translatedCtx.TriggerOffset = offset;
- DocumentLocation loc = localInfo.HiddenDocument.Editor.Document.OffsetToLocation (offset);
+ var loc = localInfo.HiddenDocument.Editor.OffsetToLocation (offset);
translatedCtx.TriggerLine = loc.Line;
translatedCtx.TriggerLineOffset = loc.Column - 1;
translatedCtx.TriggerWordLength = ctx.TriggerWordLength;
@@ -258,13 +264,16 @@ namespace MonoDevelop.CSharp.Completion
public int CaretOffset {
get {
- return localInfo.HiddenDocument.Editor.Caret.Offset;
+ return localInfo.HiddenDocument.Editor.CaretOffset;
+ }
+ set {
+ localInfo.HiddenDocument.Editor.CaretOffset = value;
}
}
public int TextLength {
get {
- return localInfo.HiddenDocument.Editor.Document.TextLength;
+ return localInfo.HiddenDocument.Editor.Length;
}
}
@@ -279,28 +288,33 @@ namespace MonoDevelop.CSharp.Completion
return Gtk.Widget.DefaultStyle;
}
}
+
+ void ICompletionWidget.AddSkipChar (int cursorPosition, char c)
+ {
+ // ignore
+ }
#endregion
}
-
- public ParsedDocument BuildDocument (DocumentInfo info, TextEditorData data)
+
+ ParsedDocument ILanguageCompletionBuilder.BuildDocument (DocumentInfo info, MonoDevelop.Ide.Editor.TextEditor data)
{
var docStr = BuildDocumentString (info, data);
return Parse (info.AspNetDocument.FileName, docStr);
}
- public string BuildDocumentString (DocumentInfo info, TextEditorData data, List<LocalDocumentInfo.OffsetInfo> offsetInfos = null, bool buildExpressions = false)
+ public string BuildDocumentString (DocumentInfo info, MonoDevelop.Ide.Editor.TextEditor data, List<LocalDocumentInfo.OffsetInfo> offsetInfos = null, bool buildExpressions = false)
{
var document = new StringBuilder ();
WriteUsings (info.Imports, document);
foreach (var node in info.XScriptBlocks) {
- var start = data.Document.LocationToOffset (node.Region.Begin.Line, node.Region.Begin.Column) + 2;
- var end = data.Document.LocationToOffset (node.Region.End.Line, node.Region.End.Column) - 2;
+ var start = data.LocationToOffset (node.Region.Begin.Line, node.Region.Begin.Column) + 2;
+ var end = data.LocationToOffset (node.Region.End.Line, node.Region.End.Column) - 2;
if (offsetInfos != null)
offsetInfos.Add (new LocalDocumentInfo.OffsetInfo (start, document.Length, end - start));
- document.AppendLine (data.Document.GetTextBetween (start, end));
+ document.AppendLine (data.GetTextBetween (start, end));
}
if (buildExpressions) {
WriteClassDeclaration (info, document);
@@ -312,8 +326,8 @@ namespace MonoDevelop.CSharp.Completion
foreach (var node in info.XExpressions) {
bool isBlock = node is WebFormsRenderBlock;
- var start = data.Document.LocationToOffset (node.Region.Begin.Line, node.Region.Begin.Column) + 2;
- var end = data.Document.LocationToOffset (node.Region.End.Line, node.Region.End.Column) - 2;
+ var start = data.LocationToOffset (node.Region.Begin.Line, node.Region.Begin.Column) + 2;
+ var end = data.LocationToOffset (node.Region.End.Line, node.Region.End.Column) - 2;
if (!isBlock) {
document.Append ("WriteLine (");
@@ -335,3 +349,4 @@ namespace MonoDevelop.CSharp.Completion
}
}
}
+*/ \ No newline at end of file