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. 34
      src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryResourceResolver.cs

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

@ -111,31 +111,37 @@ namespace Hornung.ResourceToolkit.Resolver
return null; return null;
} }
ExpressionResult result = ef.FindFullExpression(document.TextContent, caretOffset); while (true) {
if (result.Expression == null) { ExpressionResult result = ef.FindFullExpression(document.TextContent, caretOffset);
// may happen if in string
while (--caretOffset > 0 && (result = ef.FindFullExpression(document.TextContent, caretOffset)).Expression == null) { if (result.Expression == null) {
if (document.GetLineNumberForOffset(caretOffset) != caretLine) { // Try to find an expression to the left, but only
// only look in same line // in the same line.
break; 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); Expression expr = NRefactoryAstCacheService.ParseExpression(fileName, result.Expression, caretLine + 1, caretColumn + 1);
if (expr == null) { if (expr == null) {
return 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 TryResolve(result, expr, caretLine, caretColumn, fileName, document.TextContent, ef, charTyped);
} }
return null;
} }
// ******************************************************************************************************************************** // ********************************************************************************************************************************
@ -331,7 +337,7 @@ namespace Hornung.ResourceToolkit.Resolver
resourceName = resourceName.Substring(p.RootNamespace.Length+1); resourceName = resourceName.Substring(p.RootNamespace.Length+1);
switch(p.Language) { switch(p.Language) {
case "VBNet": case "VBNet":
// SD2-1239 // SD2-1239

Loading…
Cancel
Save