From ba19122c8d755613e2eaf31b604a8372e706c319 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 22 Oct 2005 13:59:54 +0000 Subject: [PATCH] Fixed BOO-516: Tooltips don't work in last line of the document git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@608 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/CodeCompletion/ExpressionFinder.cs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ExpressionFinder.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ExpressionFinder.cs index cf53bf247c..c645521a01 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ExpressionFinder.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ExpressionFinder.cs @@ -240,26 +240,23 @@ namespace Grunwald.BooBinding.CodeCompletion if (result.Expression == null) return result; StringBuilder b = new StringBuilder(result.Expression); - ResetStateMachine(); - int state = -1; - // state = -1 : accepting current identifier - // state >= 0 : accepting brackets/parenthesis - Stack bracketStack = new Stack(); + // accepting current identifier int i; for (i = offset + 1; i < inText.Length; i++) { char c = inText[i]; - if (char.IsLetterOrDigit(c) || c == '_') { - // continue reading identifier - } else { - state = 0; + if (!char.IsLetterOrDigit(c) && c != '_') { break; } } i -= 1; + // accepting brackets/parenthesis + int state = 0; + ResetStateMachine(); + Stack bracketStack = new Stack(); while (state >= 0) { state = FindNextCodeCharacter(state, inText, ref i); if (state < 0) break; - char c = inText[i]; + char c = (i < inText.Length) ? inText[i] : '\0'; int bracket = _openingBrackets.IndexOf(c); if (bracket >= 0) { bracketStack.Push(bracket); @@ -371,7 +368,7 @@ namespace Grunwald.BooBinding.CodeCompletion do { pos += 1; if (pos >= text.Length) - return -1; + break; char c = text[pos]; state = FeedStateMachine(state, c); if (state == 12) {