Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        public void GetLineColumnFromPosition(int position, out int line, out int column)
        {
            DocumentLocation loc = document.OffsetToLocation(position);

            line   = loc.Line;
            column = loc.Column;
        }
Ejemplo n.º 3
0
        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>";
            }
        }
Ejemplo n.º 4
0
        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
                });
            }
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
		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
				};
			}
		}
Ejemplo n.º 7
0
		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;
		}
Ejemplo n.º 8
0
		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>";
			}
		}