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:
authorAaron Bockover <abock@microsoft.com>2019-09-13 03:50:34 +0300
committerGitHub <noreply@github.com>2019-09-13 03:50:34 +0300
commitf0e4a6b105b736e8f51ccfeb22dfb0f715e9938a (patch)
tree06f47d618038c19901d9b9aa1252a371c8773549 /main/src/core/MonoDevelop.Ide
parent84a14aa0e1adc9b79f1acee2cf9dff11d89fe01b (diff)
parentc77f33f754666a08a97d456cca74d70a7cb9349c (diff)
Merge pull request #8708 from mono/pr-anvod-nexterror
Fixes 946718: Next Error keybinding not working
Diffstat (limited to 'main/src/core/MonoDevelop.Ide')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Navigation/TextFileNavigationPoint.cs14
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs19
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs4
3 files changed, 16 insertions, 21 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Navigation/TextFileNavigationPoint.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Navigation/TextFileNavigationPoint.cs
index 29838a4e3f..65d8e21269 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Navigation/TextFileNavigationPoint.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Navigation/TextFileNavigationPoint.cs
@@ -128,19 +128,7 @@ namespace MonoDevelop.Ide.Navigation
protected void JumpToCurrentLocation (ITextView textView)
{
- var editorOperationsFactoryService = CompositionManager.Instance.GetExportedValue<IEditorOperationsFactoryService> ();
- var editorOperations = editorOperationsFactoryService.GetEditorOperations (textView);
- VirtualSnapshotPoint point;
- if (offset is SnapshotPoint sp1 && sp1.Snapshot.TextBuffer == textView.TextBuffer) {
- var currentSnapshot = textView.TextBuffer.CurrentSnapshot;
- var sp = sp1.TranslateTo (currentSnapshot, PointTrackingMode.Positive);
- point = new VirtualSnapshotPoint (currentSnapshot, sp);
- } else {
- var snapshotLine = textView.TextSnapshot.GetLineFromLineNumber (Math.Min (textView.TextSnapshot.LineCount - 1, this.line));
- point = new VirtualSnapshotPoint (textView.TextSnapshot, Math.Min (textView.TextSnapshot.Length - 1, snapshotLine.Start.Position + column));
- offset = point.Position;
- }
- editorOperations.SelectAndMoveCaret (point, point, TextSelectionMode.Stream, EnsureSpanVisibleOptions.AlwaysCenter);
+ textView.NavigateToLineAndColumn (Math.Max (0, Line - 1), Math.Max (0, Column - 1));
}
public override bool Equals (object o)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs
index 7025fb7abd..1347e3d21c 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs
@@ -44,6 +44,7 @@ using MonoDevelop.Ide.Navigation;
using MonoDevelop.Ide.TextEditing;
using MonoDevelop.Ide.Desktop;
using System.Threading.Tasks;
+using System.Linq;
namespace MonoDevelop.Ide.Tasks
{
@@ -448,7 +449,7 @@ namespace MonoDevelop.Ide.Tasks
// Jump over tasks with different severity or with no file name
while (n != -1 && n < tasks.Count &&
- (iteratingSeverity != tasks [n].Severity || !IsProjectTaskFile (tasks [n])))
+ (iteratingSeverity != tasks [n].Severity || !IsProjectTaskFileInternal (tasks [n])))
n++;
TaskListEntry ct = n != -1 && n < tasks.Count ? tasks [n] : null;
@@ -477,8 +478,14 @@ namespace MonoDevelop.Ide.Tasks
/// <summary>
/// Determines whether the task's file should be opened automatically when jumping to the next error.
/// </summary>
+ [Obsolete("This will be removed in a future release", error: true)]
public static bool IsProjectTaskFile (TaskListEntry t)
{
+ return IsProjectTaskFileInternal (t);
+ }
+
+ internal static bool IsProjectTaskFileInternal (TaskListEntry t)
+ {
if (t.FileName.IsNullOrEmpty)
return false;
@@ -494,12 +501,12 @@ namespace MonoDevelop.Ide.Tasks
if (!IdeServices.DesktopService.GetMimeTypeIsText (mimeType))
return false;
- //only files for which we have a default internal display binding
- var binding = IdeServices.DisplayBindingService.GetDefaultBinding (t.FileName, mimeType, p);
- if (binding == null || !binding.CanUseAsDefault || binding is IExternalDisplayBinding)
- return false;
+ // only valid files are those that have a way to view them
+ // .Result here is currently safe because none of the actual calls to OnGetSupportedControllers(Async)
+ // is actually requesting the UI thread scheduler.
+ var fileViewers = IdeServices.DisplayBindingService.GetFileViewers (t.FileName, p).Result;
- return true;
+ return fileViewers.Any (viewer => viewer.CanUseAsDefault && !viewer.IsExternal);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
index 830bb22d92..45574f79ed 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
@@ -1842,10 +1842,10 @@ namespace MonoDevelop.Ide
TaskListEntry jumpTask = null;
switch (IdeApp.Preferences.JumpToFirstErrorOrWarning.Value) {
case JumpToFirst.Error:
- jumpTask = tasks.FirstOrDefault (t => t.Severity == TaskSeverity.Error && TaskStore.IsProjectTaskFile (t));
+ jumpTask = tasks.FirstOrDefault (t => t.Severity == TaskSeverity.Error && TaskStore.IsProjectTaskFileInternal (t));
break;
case JumpToFirst.ErrorOrWarning:
- jumpTask = tasks.FirstOrDefault (t => (t.Severity == TaskSeverity.Error || t.Severity == TaskSeverity.Warning) && TaskStore.IsProjectTaskFile (t));
+ jumpTask = tasks.FirstOrDefault (t => (t.Severity == TaskSeverity.Error || t.Severity == TaskSeverity.Warning) && TaskStore.IsProjectTaskFileInternal (t));
break;
}
if (jumpTask != null) {