public void AddToLine(Mono.TextEditor.Document doc) { if (Line != null) { DocumentLocation dl = doc.OffsetToLocation(marker.StartCol); marker.StartCol = dl.Column; dl = doc.OffsetToLocation(marker.EndCol); marker.EndCol = dl.Column; doc.AddMarker(Line, marker); } }
public void GetLineColumnFromPosition(int position, out int line, out int column) { DocumentLocation loc = document.OffsetToLocation(position); line = loc.Line; column = loc.Column; }
void SetLocationTextData(Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) { CellRendererText cellRendererText = (CellRendererText)cell; Change change = store.GetValue(iter, objColumn) as Change; cellRendererText.Visible = (bool)store.GetValue(iter, statusVisibleColumn); TextReplaceChange replaceChange = change as TextReplaceChange; if (replaceChange == null) { cellRendererText.Text = ""; return; } Mono.TextEditor.Document doc = new Mono.TextEditor.Document(); doc.Text = System.IO.File.ReadAllText(replaceChange.FileName); DocumentLocation loc = doc.OffsetToLocation(replaceChange.Offset); string text = string.Format(GettextCatalog.GetString("(Line:{0}, Column:{1})"), loc.Line, loc.Column); if (treeviewPreview.Selection.IterIsSelected(iter)) { cellRendererText.Text = text; } else { cellRendererText.Markup = "<span foreground=\"" + MonoDevelop.Components.PangoCairoHelper.GetColorString(Style.Text(StateType.Insensitive)) + "\">" + text + "</span>"; } }
CSharpTextEditorCompletion CreateCompletion(MonoDevelop.Ide.Gui.Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo, out CodeCompletionContext codeCompletionContext) { var doc = new Mono.TextEditor.Document() { Text = localInfo.LocalDocument, }; var documentLocation = doc.OffsetToLocation(localInfo.CaretPosition); codeCompletionContext = new CodeCompletionContext() { TriggerOffset = localInfo.CaretPosition, TriggerLine = documentLocation.Line, TriggerLineOffset = documentLocation.Column - 1 }; var r = new System.IO.StringReader(localInfo.LocalDocument); using (var parser = ICSharpCode.NRefactory.ParserFactory.CreateParser(SupportedLanguage.CSharp, r)) { parser.Parse(); return(new CSharpTextEditorCompletion(localInfo.HiddenDocument) { ParsedUnit = parser.CompilationUnit, CompletionWidget = CreateCompletionWidget(realDocument, localInfo), Dom = localInfo.HiddenDocument.Dom }); } }
NavigationPoint GetLocation(TreeIter iter) { this.treeviewSearchResults.Selection.UnselectAll(); if (!store.IterIsValid(iter)) { return(null); } this.treeviewSearchResults.Selection.SelectIter(iter); this.treeviewSearchResults.ScrollToCell(store.GetPath(iter), this.treeviewSearchResults.Columns[0], false, 0, 0); SearchResult searchResult = (SearchResult)store.GetValue(iter, SearchResultColumn); Mono.TextEditor.Document doc = GetDocument(searchResult); DocumentLocation location = doc.OffsetToLocation(searchResult.Offset); return(new SearchTextFileNavigationPoint(searchResult.FileName, location.Line + 1, location.Column + 1)); }
CSharpTextEditorCompletion CreateCompletion (MonoDevelop.Ide.Gui.Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo, out CodeCompletionContext codeCompletionContext) { var doc = new Mono.TextEditor.Document () { Text = localInfo.LocalDocument, }; var documentLocation = doc.OffsetToLocation (localInfo.CaretPosition); codeCompletionContext = new CodeCompletionContext () { TriggerOffset = localInfo.CaretPosition, TriggerLine = documentLocation.Line, TriggerLineOffset = documentLocation.Column - 1 }; var r = new System.IO.StringReader (localInfo.LocalDocument); using (var parser = ICSharpCode.NRefactory.ParserFactory.CreateParser (SupportedLanguage.CSharp, r)) { parser.Parse (); return new CSharpTextEditorCompletion (localInfo.HiddenDocument) { ParsedUnit = parser.CompilationUnit, CompletionWidget = CreateCompletionWidget (realDocument, localInfo), Dom = localInfo.HiddenDocument.Dom }; } }
public static List<InsertionPoint> GetInsertionPoints (Document doc, IType type) { if (doc == null) throw new ArgumentNullException ("doc"); if (type == null) throw new ArgumentNullException ("type"); List<InsertionPoint> result = new List<InsertionPoint> (); int offset = doc.LocationToOffset (type.BodyRegion.Start.Line, type.BodyRegion.Start.Column); if (offset < 0) return result; while (offset < doc.Length && doc.GetCharAt (offset) != '{' && char.IsWhiteSpace (doc.GetCharAt (offset))) offset++; var realStartLocation = doc.OffsetToLocation (offset); result.Add (GetInsertionPosition (doc, realStartLocation.Line, realStartLocation.Column)); result[0].LineBefore = NewLineInsertion.None; foreach (IMember member in type.Members) { DomLocation domLocation = member.BodyRegion.End; if (domLocation.Line <= 0) { LineSegment lineSegment = doc.GetLine (member.Location.Line); if (lineSegment == null) continue; domLocation = new DomLocation (member.Location.Line, lineSegment.EditableLength + 1); } result.Add (GetInsertionPosition (doc, domLocation.Line, domLocation.Column)); } result[result.Count - 1].LineAfter = NewLineInsertion.None; CheckStartPoint (doc, result[0], result.Count == 1); if (result.Count > 1) CheckEndPoint (doc, result[result.Count - 1], result.Count == 1); return result; }
static InsertionPoint GetInsertionPosition (Document doc, int line, int column) { int bodyEndOffset = doc.LocationToOffset (line, column) + 1; LineSegment curLine = doc.GetLine (line); if (curLine != null) { if (bodyEndOffset < curLine.Offset + curLine.EditableLength) return new InsertionPoint (new DocumentLocation (line, column + 1), NewLineInsertion.BlankLine, NewLineInsertion.BlankLine); } LineSegment nextLine = doc.GetLine (line + 1); int endOffset = nextLine != null ? nextLine.Offset : doc.Length; for (int i = bodyEndOffset; i < endOffset; i++) { char ch = doc.GetCharAt (i); if (!char.IsWhiteSpace (ch)) return new InsertionPoint (doc.OffsetToLocation (i), NewLineInsertion.BlankLine, NewLineInsertion.BlankLine); } if (nextLine == null) return new InsertionPoint (doc.OffsetToLocation (bodyEndOffset - 1), NewLineInsertion.BlankLine, NewLineInsertion.BlankLine); int oldLine = line; while (line < doc.LineCount && doc.GetLineIndent (line + 1).Length == doc.GetLine (line + 1).EditableLength) line++; NewLineInsertion insertBefore = NewLineInsertion.None; NewLineInsertion insertAfter = NewLineInsertion.None; int delta = line - oldLine; int lineNumber = line + 1; if (delta == 0) { insertBefore = NewLineInsertion.Eol; insertAfter = NewLineInsertion.BlankLine; } else if (delta == 1) { insertAfter = NewLineInsertion.BlankLine; } else if (delta == 2) { lineNumber--; insertAfter = NewLineInsertion.BlankLine; } else if (delta >= 3) { lineNumber -= 2; insertAfter = NewLineInsertion.None; } return new InsertionPoint (new DocumentLocation (lineNumber, doc.GetLineIndent (lineNumber).Length + 1), insertBefore, insertAfter); }
static InsertionPoint GetInsertionPosition (Document doc, int line, int column) { LineSegment nextLine = doc.GetLine (line + 1); int bodyEndOffset = doc.LocationToOffset (line, column) + 1; int endOffset = nextLine != null ? nextLine.Offset : doc.Length; for (int i = bodyEndOffset; i < endOffset; i++) { char ch = doc.GetCharAt (i); if (!char.IsWhiteSpace (ch)) return new InsertionPoint (doc.OffsetToLocation (i), true, true); } if (nextLine == null) return new InsertionPoint (doc.OffsetToLocation (bodyEndOffset - 1), true, true); int oldLine = line; bool curLineEmpty = false; if (doc.GetLineIndent (nextLine).Length == nextLine.EditableLength) { curLineEmpty = true; while (line + 2 < doc.LineCount && doc.GetLineIndent (line + 2).Length == doc.GetLine (line + 2).EditableLength) line++; } bool insertBefore = !curLineEmpty && line - oldLine <= 1; bool insertAfter = line - oldLine == 0; // if (curLineEmpty) // line++; int lineNumber = line + 1; return new InsertionPoint (new DocumentLocation (lineNumber, doc.GetLineIndent (lineNumber).Length), insertBefore, insertAfter); }
void SetLocationTextData (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) { CellRendererText cellRendererText = (CellRendererText)cell; Change change = store.GetValue (iter, objColumn) as Change; cellRendererText.Visible = (bool)store.GetValue (iter, statusVisibleColumn); TextReplaceChange replaceChange = change as TextReplaceChange; if (replaceChange == null) { cellRendererText.Text = ""; return; } Mono.TextEditor.Document doc = new Mono.TextEditor.Document (); doc.Text = System.IO.File.ReadAllText (replaceChange.FileName); DocumentLocation loc = doc.OffsetToLocation (replaceChange.Offset); string text = string.Format (GettextCatalog.GetString ("(Line:{0}, Column:{1})"), loc.Line, loc.Column); if (treeviewPreview.Selection.IterIsSelected (iter)) { cellRendererText.Text = text; } else { cellRendererText.Markup = "<span foreground=\"" + MonoDevelop.Components.PangoCairoHelper.GetColorString (Style.Text (StateType.Insensitive)) + "\">" + text + "</span>"; } }