Browse Source

ResourceToolkit: Fixed resource tooltips by adapting NRefactoryResourceResolver to the new behavior of the C# ExpressionFinder.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2955 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Christian Hornung 18 years ago
parent
commit
6ba58ec72f
  1. 26
      src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryResourceResolver.cs

26
src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryResourceResolver.cs

@ -111,31 +111,37 @@ namespace Hornung.ResourceToolkit.Resolver @@ -111,31 +111,37 @@ namespace Hornung.ResourceToolkit.Resolver
return null;
}
while (true) {
ExpressionResult result = ef.FindFullExpression(document.TextContent, caretOffset);
if (result.Expression == null) {
// may happen if in string
while (--caretOffset > 0 && (result = ef.FindFullExpression(document.TextContent, caretOffset)).Expression == null) {
if (document.GetLineNumberForOffset(caretOffset) != caretLine) {
// only look in same line
break;
}
// Try to find an expression to the left, but only
// in the same line.
if (--caretOffset < 0 || document.GetLineNumberForOffset(caretOffset) != caretLine) {
return null;
}
continue;
}
if (result.Expression != null) {
PrimitiveExpression pe;
Expression expr = NRefactoryAstCacheService.ParseExpression(fileName, result.Expression, caretLine + 1, caretColumn + 1);
if (expr == null) {
return null;
} else if ((pe = expr as PrimitiveExpression) != null) {
if (pe.Value is string) {
// We are inside a string literal and need to find
// the next outer expression to decide
// whether it is a resource key.
if (--caretOffset < 0) return null;
continue;
}
}
return TryResolve(result, expr, caretLine, caretColumn, fileName, document.TextContent, ef, charTyped);
}
return null;
}
// ********************************************************************************************************************************

Loading…
Cancel
Save