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:
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs1
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/IndentationTrackerWrapper.cs4
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/SemanticHighlightingSyntaxMode.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs7
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/MessageBubbleTextMarker.cs4
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs18
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs8
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/LinkMarker.cs45
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/SmartTagMarker.cs4
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/WavedLineMarker.cs2
-rw-r--r--main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AbstractNavigationExtension.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/ITextSegmentMarker.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/InternalExtensionAPI/ITextMarkerFactory.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextMarkerFactory.cs4
17 files changed, 72 insertions, 43 deletions
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
index 16a664662e..92a761c700 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
@@ -1266,6 +1266,7 @@ namespace MonoDevelop.AssemblyBrowser
this.Open (link, loader);
}
});
+ marker.OnlyShowLinkOnHover = true;
underlineMarkers.Add (marker);
inspectEditor.AddMarker (marker);
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
index 1043d92495..25dd4e1e45 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
@@ -79,7 +79,7 @@ namespace MonoDevelop.SourceEditor.QuickTasks
static readonly Cairo.Color win81Background = new Cairo.Color (240 / 255d, 240 / 255d, 240 / 255d);
static readonly Cairo.Color win81Slider = new Cairo.Color (205 / 255d, 205 / 255d, 205 / 255d);
static readonly Cairo.Color win81SliderPrelight = new Cairo.Color (166 / 255d, 166 / 255d, 166 / 255d);
- static readonly Cairo.Color win81SliderActive = new Cairo.Color (96 / 255d, 96 / 255d, 96 / 255d);
+ //static readonly Cairo.Color win81SliderActive = new Cairo.Color (96 / 255d, 96 / 255d, 96 / 255d);
readonly int barPadding = MonoDevelop.Core.Platform.IsWindows ? 1 : 3;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/IndentationTrackerWrapper.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/IndentationTrackerWrapper.cs
index 22abf06f3a..a88ecf421c 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/IndentationTrackerWrapper.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/IndentationTrackerWrapper.cs
@@ -33,9 +33,6 @@ namespace MonoDevelop.SourceEditor.Wrappers
readonly IReadonlyTextDocument document;
readonly MonoDevelop.Ide.Editor.Extension.IndentationTracker indentationTracker;
- readonly Mono.TextEditor.TextEditorData textEditorData;
-
-
public IndentationTrackerWrapper (Mono.TextEditor.TextEditorData textEditorData, IReadonlyTextDocument document, MonoDevelop.Ide.Editor.Extension.IndentationTracker indentationTracker)
{
if (textEditorData == null)
@@ -44,7 +41,6 @@ namespace MonoDevelop.SourceEditor.Wrappers
throw new System.ArgumentNullException ("document");
if (indentationTracker == null)
throw new System.ArgumentNullException ("indentationTracker");
- this.textEditorData = textEditorData;
this.document = document;
this.indentationTracker = indentationTracker;
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/SemanticHighlightingSyntaxMode.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/SemanticHighlightingSyntaxMode.cs
index 745fda76b1..911e648cc7 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/SemanticHighlightingSyntaxMode.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/SemanticHighlightingSyntaxMode.cs
@@ -165,10 +165,8 @@ namespace MonoDevelop.SourceEditor.Wrappers
const int MaximumCachedLineSegments = 200;
SemanticHighlightingSyntaxMode semanticMode;
- int lineNumber;
public CSharpChunkParser (SemanticHighlightingSyntaxMode semanticMode, SpanParser spanParser, Mono.TextEditor.Highlighting.ColorScheme style, DocumentLine line) : base (semanticMode, spanParser, style, line)
{
- lineNumber = line.LineNumber;
this.semanticMode = semanticMode;
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs
index dc3df7cb69..3f68195f7c 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs
@@ -57,7 +57,6 @@ namespace MonoDevelop.SourceEditor
internal object MemoryProbe = Counters.EditorsInMemory.CreateMemoryProbe ();
SourceEditorView view;
- ExtensionContext extensionContext;
Adjustment cachedHAdjustment, cachedVAdjustment;
TextEditorExtension editorExtension;
@@ -217,7 +216,6 @@ namespace MonoDevelop.SourceEditor
{
IsDestroyed = true;
UnregisterAdjustments ();
- extensionContext = null;
view = null;
var disposableSyntaxMode = Document.SyntaxMode as IDisposable;
if (disposableSyntaxMode != null) {
@@ -515,11 +513,8 @@ namespace MonoDevelop.SourceEditor
}
}
- int oldOffset = -1;
-
public Microsoft.CodeAnalysis.ISymbol GetLanguageItem (int offset, out MonoDevelop.Ide.Editor.DocumentRegion region)
{
- oldOffset = offset;
region = MonoDevelop.Ide.Editor.DocumentRegion.Empty;
if (textEditorResolverProvider != null) {
@@ -547,8 +542,6 @@ namespace MonoDevelop.SourceEditor
public Microsoft.CodeAnalysis.ISymbol GetLanguageItem (int offset, string expression)
{
- oldOffset = offset;
-
if (textEditorResolverProvider != null) {
return textEditorResolverProvider.GetLanguageItem (view.WorkbenchWindow.Document, offset, expression);
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/MessageBubbleTextMarker.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/MessageBubbleTextMarker.cs
index d1bdc97ef2..e31382459d 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/MessageBubbleTextMarker.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/MessageBubbleTextMarker.cs
@@ -144,7 +144,7 @@ namespace MonoDevelop.SourceEditor
public override TextLineMarkerFlags Flags {
get {
- if (LineSegment != null && LineSegment.Markers.Any (m => m is DebugTextMarker))
+ if (LineSegment != null && editor.Document.GetTextSegmentMarkersAt (LineSegment).Any (m => m is DebugTextMarker))
return TextLineMarkerFlags.None;
return TextLineMarkerFlags.DrawsSelection;
@@ -571,7 +571,7 @@ namespace MonoDevelop.SourceEditor
if (!IsVisible)
return false;
bool markerShouldDrawnAsHidden = cache.CurrentSelectedTextMarker != null && cache.CurrentSelectedTextMarker != this;
- if (metrics.LineSegment.Markers.Any (m => m is DebugTextMarker))
+ if (editor.Document.GetTextSegmentMarkersAt (metrics.LineSegment).Any (m => m is DebugTextMarker))
return false;
EnsureLayoutCreated (editor);
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs
index 4e74c91ea6..1c2d9779d2 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs
@@ -158,7 +158,7 @@ namespace MonoDevelop.SourceEditor
TreeViewColumn col;
int cx, cy;
valueTree.GetPathAtPos ((int)args.Event.X, (int)args.Event.Y, out path, out col, out cx, out cy);
- Gdk.Rectangle rect = valueTree.GetCellArea (path, col);
+ //Gdk.Rectangle rect = valueTree.GetCellArea (path, col);
if (!mousePressed && valueTree.Columns[0] == col) {
mousePressed = true;
Editor.TextArea.MoveToTop (this);
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
index 65f308d04d..78854edd91 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
@@ -75,7 +75,6 @@ namespace MonoDevelop.SourceEditor
readonly SourceEditorWidget widget;
bool isDisposed = false;
DateTime lastSaveTimeUtc;
- string loadedMimeType;
internal object MemoryProbe = Counters.SourceViewsInMemory.CreateMemoryProbe ();
DebugMarkerPair currentDebugLineMarker;
DebugMarkerPair debugStackLineMarker;
@@ -138,7 +137,6 @@ namespace MonoDevelop.SourceEditor
}
- bool wasEdited = false;
uint removeMarkerTimeout;
Queue<MessageBubbleTextMarker> markersToRemove = new Queue<MessageBubbleTextMarker> ();
@@ -261,11 +259,6 @@ namespace MonoDevelop.SourceEditor
{
if (Document.CurrentAtomicUndoOperationType == OperationType.Format)
return;
- if (!inLoad) {
- if (widget.TextEditor.Document.IsInAtomicUndo) {
- wasEdited = true;
- }
- }
int startIndex = args.Offset;
foreach (var marker in currentErrorMarkers) {
@@ -284,7 +277,6 @@ namespace MonoDevelop.SourceEditor
void HandleBeginUndo (object sender, EventArgs e)
{
- wasEdited = false;
OnBeginUndo (EventArgs.Empty);
}
@@ -662,7 +654,6 @@ namespace MonoDevelop.SourceEditor
if (formatter.SupportsOnTheFlyFormatting) {
using (var undo = TextEditor.OpenUndoGroup ()) {
formatter.OnTheFlyFormat (WorkbenchWindow.Document.Editor, WorkbenchWindow.Document);
- wasEdited = false;
}
} else {
var text = document.Editor.Text;
@@ -820,7 +811,6 @@ namespace MonoDevelop.SourceEditor
didLoadCleanly = false;
}
else {
- inLoad = true;
if (loadEncoding == null) {
var res = await MonoDevelop.Core.Text.TextFileUtility.ReadAllTextAsync (fileName);
text = res.Text;
@@ -840,7 +830,6 @@ namespace MonoDevelop.SourceEditor
Document.Text = text;
Document.DiffTracker.SetBaseDocument (Document.CreateDocumentSnapshot ());
}
- inLoad = false;
didLoadCleanly = true;
}
// TODO: Would be much easier if the view would be created after the containers.
@@ -901,7 +890,6 @@ namespace MonoDevelop.SourceEditor
}
bool warnOverwrite = false;
- bool inLoad = false;
Encoding encoding;
bool hadBom = false;
@@ -914,10 +902,8 @@ namespace MonoDevelop.SourceEditor
}
UpdateMimeType (fileName);
- inLoad = true;
Document.Replace (0, Document.TextLength, content);
Document.DiffTracker.Reset ();
- inLoad = false;
encoding = enc;
ContentName = fileName;
UpdateExecutionLocation ();
@@ -2731,7 +2717,7 @@ namespace MonoDevelop.SourceEditor
return TextEditor.Document.RemoveMarker (textSegmentMarker);
}
- IFoldSegment ITextEditorImpl.CreateFoldSegment (int offset, int length, bool isFolded = false)
+ IFoldSegment ITextEditorImpl.CreateFoldSegment (int offset, int length, bool isFolded)
{
return new FoldSegmentWrapper (TextEditor.Document, "...", offset, length, Mono.TextEditor.FoldingType.None) { IsFolded = isFolded };
}
@@ -3358,7 +3344,7 @@ namespace MonoDevelop.SourceEditor
}
}
- public ITextSegmentMarker CreateLinkMarker (MonoDevelop.Ide.Editor.TextEditor editor, int offset, int length, Action<LinkRequest> activateLink)
+ public ILinkTextMarker CreateLinkMarker (MonoDevelop.Ide.Editor.TextEditor editor, int offset, int length, Action<LinkRequest> activateLink)
{
return new LinkMarker (offset, length, activateLink);
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
index cf8cd7c1a1..394e1dc66a 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
@@ -925,12 +925,12 @@ namespace MonoDevelop.SourceEditor
view.WorkbenchWindow.ShowNotification = false;
RemoveMessageBar ();
};
- okButton.Clicked += delegate {
+ okButton.Clicked += async delegate {
switch (combo.Active) {
case 0:
ConvertLineEndings ();
view.WorkbenchWindow.ShowNotification = false;
- view.Save (fileName, view.SourceEncoding);
+ await view.Save (fileName, view.SourceEncoding);
break;
case 1:
FileRegistry.ConvertLineEndingsInAllFiles ();
@@ -1023,7 +1023,7 @@ namespace MonoDevelop.SourceEditor
}
}
- public void Reload ()
+ public async void Reload ()
{
try {
if (!System.IO.File.Exists (view.ContentName))
@@ -1031,7 +1031,7 @@ namespace MonoDevelop.SourceEditor
view.StoreSettings ();
reloadSettings = true;
- view.Load (view.ContentName, view.SourceEncoding, true);
+ await view.Load (view.ContentName, view.SourceEncoding, true);
view.WorkbenchWindow.ShowNotification = false;
} catch (Exception ex) {
MessageService.ShowError ("Could not reload the file.", ex);
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/LinkMarker.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/LinkMarker.cs
index bbb533000b..fba52226f4 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/LinkMarker.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/LinkMarker.cs
@@ -30,12 +30,18 @@ using MonoDevelop.Core;
namespace MonoDevelop.SourceEditor
{
- class LinkMarker : UnderlineTextSegmentMarker, ITextSegmentMarker, IActionTextLineMarker
+ class LinkMarker : UnderlineTextSegmentMarker, ILinkTextMarker, IActionTextLineMarker
{
static readonly Gdk.Cursor textLinkCursor = new Gdk.Cursor (Gdk.CursorType.Hand1);
static readonly Cairo.Color linkColor = new Cairo.Color (0, 0, 1.0);
Action<LinkRequest> activateLink;
+ public bool OnlyShowLinkOnHover {
+ get;
+ set;
+ }
+
+
public LinkMarker (int offset, int length, Action<LinkRequest> activateLink) : base (linkColor, new TextSegment (offset, length))
{
this.activateLink = activateLink;
@@ -49,7 +55,6 @@ namespace MonoDevelop.SourceEditor
get;
set;
}
-
bool IActionTextLineMarker.MousePressed (MonoTextEditor editor, MarginMouseEventArgs args)
{
MousePressed?.Invoke (this, new TextEventArgsWrapper (args));
@@ -65,6 +70,42 @@ namespace MonoDevelop.SourceEditor
{
MouseHover?.Invoke (this, new TextEventArgsWrapper (args));
result.Cursor = textLinkCursor;
+ if (OnlyShowLinkOnHover) {
+ editor.GetTextEditorData ().Document.CommitLineUpdate (args.LineSegment);
+ editor.TextViewMargin.HoveredLineChanged += new UpdateOldLine (editor, args.LineSegment).TextViewMargin_HoveredLineChanged;
+ }
+ }
+
+ class UpdateOldLine
+ {
+ MonoTextEditor editor;
+ DocumentLine lineSegment;
+
+ public UpdateOldLine (MonoTextEditor editor, DocumentLine lineSegment)
+ {
+ this.editor = editor;
+ this.lineSegment = lineSegment;
+ }
+
+ public void TextViewMargin_HoveredLineChanged (object sender, Mono.TextEditor.LineEventArgs e)
+ {
+ editor.GetTextEditorData ().Document.CommitLineUpdate (lineSegment);
+ editor.TextViewMargin.HoveredLineChanged -= TextViewMargin_HoveredLineChanged;
+ }
+ }
+
+ public override void Draw (MonoTextEditor editor, Cairo.Context cr, LineMetrics metrics, int startOffset, int endOffset)
+ {
+ if (OnlyShowLinkOnHover) {
+ if (editor.TextViewMargin.MarginCursor != textLinkCursor)
+ return;
+ if (editor.TextViewMargin.HoveredLine == null)
+ return;
+ var hoverOffset = editor.LocationToOffset (editor.TextViewMargin.HoveredLocation);
+ if (!Segment.Contains (hoverOffset))
+ return;
+ }
+ base.Draw (editor, cr, metrics, startOffset, endOffset);
}
}
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/SmartTagMarker.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/SmartTagMarker.cs
index 78d287400a..21591025f7 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/SmartTagMarker.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/SmartTagMarker.cs
@@ -78,7 +78,7 @@ namespace MonoDevelop.SourceEditor
if (line == null)
return;
var x = editor.ColumnToX (line, loc.Column) - editor.HAdjustment.Value + editor.TextViewMargin.TextStartPosition;
- var y = editor.LineToY (line.LineNumber + 1) - editor.VAdjustment.Value;
+ //var y = editor.LineToY (line.LineNumber + 1) - editor.VAdjustment.Value;
const double xAdditionalSpace = tagMarkerWidth;
if (args.X - x >= -xAdditionalSpace * editor.Options.Zoom &&
args.X - x < (tagMarkerWidth + xAdditionalSpace) * editor.Options.Zoom /*&&
@@ -106,7 +106,9 @@ namespace MonoDevelop.SourceEditor
}
public event EventHandler<TextMarkerMouseEventArgs> MousePressed;
+ #pragma warning disable 0067
public event EventHandler<TextMarkerMouseEventArgs> MouseHover;
+ #pragma warning restore 0067
public event EventHandler ShowPopup;
public event EventHandler CancelPopup;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/WavedLineMarker.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/WavedLineMarker.cs
index fdd11c9729..7953dac2b5 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/WavedLineMarker.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/WavedLineMarker.cs
@@ -112,9 +112,11 @@ namespace MonoDevelop.SourceEditor
}
}
+ #pragma warning disable 0067
public event EventHandler<MonoDevelop.Ide.Editor.TextMarkerMouseEventArgs> MousePressed;
public event EventHandler<MonoDevelop.Ide.Editor.TextMarkerMouseEventArgs> MouseHover;
+ #pragma warning restore 0067
object MonoDevelop.Ide.Editor.ITextSegmentMarker.Tag {
get;
diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs
index b9aaa22f72..01d72c9dc4 100644
--- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs
+++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs
@@ -2241,6 +2241,7 @@ namespace Mono.TextEditor
var line = Document.GetLine (loc.Line);
var oldHoveredLine = HoveredLine;
HoveredLine = line;
+ HoveredLocation = loc;
OnHoveredLineChanged (new LineEventArgs (oldHoveredLine));
var hoverResult = new TextLineMarkerHoverResult ();
@@ -2552,6 +2553,8 @@ namespace Mono.TextEditor
}
}
+ public DocumentLocation HoveredLocation { get; private set; }
+
[Flags]
public enum CairoCorners
{
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AbstractNavigationExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AbstractNavigationExtension.cs
index 319482f2e4..3df2ccee30 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AbstractNavigationExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AbstractNavigationExtension.cs
@@ -159,6 +159,7 @@ namespace MonoDevelop.Ide.Editor.Extension
continue;
foreach (var segment in await RequestLinksAsync (line.Offset, line.Length, default (CancellationToken))) {
var marker = Editor.TextMarkerFactory.CreateLinkMarker (Editor, segment.Offset, segment.Length, delegate { segment.Activate (); });
+ marker.OnlyShowLinkOnHover = true;
Editor.AddMarker (marker);
markers.Add (marker);
}
@@ -174,6 +175,7 @@ namespace MonoDevelop.Ide.Editor.Extension
var line = e.Line;
foreach (var segment in await RequestLinksAsync (line.Offset, line.Length, default (CancellationToken))) {
var marker = Editor.TextMarkerFactory.CreateLinkMarker (Editor, segment.Offset, segment.Length, delegate { segment.Activate (); });
+ marker.OnlyShowLinkOnHover = true;
Editor.AddMarker (marker);
markers.Add (marker);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/ITextSegmentMarker.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/ITextSegmentMarker.cs
index 1f5bf5ad11..e1f797135b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/ITextSegmentMarker.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/ITextSegmentMarker.cs
@@ -83,5 +83,10 @@ namespace MonoDevelop.Ide.Editor
event EventHandler ShowPopup;
event EventHandler CancelPopup;
}
+
+ public interface ILinkTextMarker : ITextSegmentMarker
+ {
+ bool OnlyShowLinkOnHover { get; set; }
+ }
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/InternalExtensionAPI/ITextMarkerFactory.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/InternalExtensionAPI/ITextMarkerFactory.cs
index 8c674cd425..68f0ac8651 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/InternalExtensionAPI/ITextMarkerFactory.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/InternalExtensionAPI/ITextMarkerFactory.cs
@@ -48,7 +48,7 @@ namespace MonoDevelop.Ide.Editor
#region Segment marker
ITextSegmentMarker CreateUsageMarker (TextEditor editor, Usage usage);
- ITextSegmentMarker CreateLinkMarker (TextEditor editor, int offset, int length, Action<LinkRequest> activateLink);
+ ILinkTextMarker CreateLinkMarker (TextEditor editor, int offset, int length, Action<LinkRequest> activateLink);
IGenericTextSegmentMarker CreateGenericTextSegmentMarker (TextEditor editor, TextSegmentMarkerEffect effect, int offset, int length);
ISmartTagMarker CreateSmartTagMarker (TextEditor editor, int offset, DocumentLocation realLocation);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextMarkerFactory.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextMarkerFactory.cs
index 09cc6680c8..0a1530f5a1 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextMarkerFactory.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextMarkerFactory.cs
@@ -71,12 +71,12 @@ namespace MonoDevelop.Ide.Editor
return editor.TextMarkerFactory.CreateUsageMarker (editor, usage);
}
- public static ITextSegmentMarker CreateLinkMarker (TextEditor editor, int offset, int length, Action<LinkRequest> activateLink)
+ public static ILinkTextMarker CreateLinkMarker (TextEditor editor, int offset, int length, Action<LinkRequest> activateLink)
{
return editor.TextMarkerFactory.CreateLinkMarker (editor, offset, length, activateLink);
}
- public static ITextSegmentMarker CreateLinkMarker (TextEditor editor, ISegment segment, Action<LinkRequest> activateLink)
+ public static ILinkTextMarker CreateLinkMarker (TextEditor editor, ISegment segment, Action<LinkRequest> activateLink)
{
if (segment == null)
throw new ArgumentNullException ("segment");