[svn] r6637: vs-plugin/trunk/Nemerle.VsIntegration: NemerleAuthoringSink.cs NemerleLanguage.cs NemerleScan...

IT svnadmin at nemerle.org
Sun Sep 10 00:32:04 CEST 2006


Log:
MemberSelect implementation.

Author: IT
Date: Sun Sep 10 00:32:02 2006
New Revision: 6637

Modified:
   vs-plugin/trunk/Nemerle.VsIntegration/NemerleAuthoringSink.cs
   vs-plugin/trunk/Nemerle.VsIntegration/NemerleLanguage.cs
   vs-plugin/trunk/Nemerle.VsIntegration/NemerleScanner.cs

Modified: vs-plugin/trunk/Nemerle.VsIntegration/NemerleAuthoringSink.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/NemerleAuthoringSink.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/NemerleAuthoringSink.cs	Sun Sep 10 00:32:02 2006
@@ -13,16 +13,18 @@
 			ParseReason reason, 
 			int line, 
 			int col, 
-			int maxErrors) : base(reason, line, col, maxErrors)
+			int           maxErrors)
+		: base(reason, line, col, maxErrors)
 		{
 			_source = source;
 		}
 
-		NemerleSource _source;
-
+		private NemerleSource _source;
 		public NemerleSource Source
 		{
 			get { return _source; }
 		}
+
+		//override 
 	}
 }

Modified: vs-plugin/trunk/Nemerle.VsIntegration/NemerleLanguage.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/NemerleLanguage.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/NemerleLanguage.cs	Sun Sep 10 00:32:02 2006
@@ -142,14 +142,14 @@
 				case ParseReason.Autos:             break;
 				case ParseReason.Check:             return Check(request);
 				case ParseReason.CodeSpan:          break;
+				case ParseReason.MemberSelect:
 				case ParseReason.CompleteWord:      return GetCompleteWord(request);
 				case ParseReason.DisplayMemberList: break;
 				case ParseReason.HighlightBraces:   break;
 				case ParseReason.MatchBraces:       break;
-				case ParseReason.MemberSelect:      break;
 				case ParseReason.MemberSelectAndHighlightBraces: break;
-				case ParseReason.MethodTip:         break;
 				case ParseReason.None:              break;
+				case ParseReason.MethodTip:         break;
 				case ParseReason.Goto:
 				case ParseReason.QuickInfo:         return GetScope(request);
 			}
@@ -248,14 +248,12 @@
 
 				string filePath = request.FileName;
 
-				// îňń÷ĺň ęîîđäčíŕň getText() ďđîčçâîäčňń˙ ń ďîçčöčč (1, 1)
+				// getText() uses location pos from (1, 1)
 				GetText getText = delegate(int lineStart, int colStart, int lineEnd, int colEnd)
 				{
-					// îňń÷ĺň ęîîđäčíŕň GetCodeRegion() ďđîčçâîäčňń˙ ń ďîçčöčč (0, 0)
-					// ňŕę ÷ňî íóćíî ńęîđđĺęňčđîâŕňü ęîîđäčíŕňű.
-					string bodyCode = GetCodeRegion(request, lineStart - 1, colStart - 1,
-						lineEnd - 1, colEnd - 1);
-					return bodyCode;
+					// GetCodeRegion() uses location pos from (0, 0),
+					// so, we need to adjust it.
+					return GetCodeRegion(request, lineStart - 1, colStart - 1, lineEnd - 1, colEnd - 1);
 				};
 
 				CompletionElem[] overloads = proj.CompleteWord(
@@ -263,9 +261,6 @@
 
 				if (overloads.Length > 0)
 				{
-					//foreach (object overload in overloads)
-					//	Trace.WriteLine("#    " + overload);
-
 					return new NemerleAuthoringScope(
 						ProjectInfo.FindProject(request.FileName),
 						(NemerleAuthoringSink)request.Sink, overloads);
@@ -283,8 +278,7 @@
 			return GetDefaultScope(request);
 		}
 
-		string GetCodeRegion(ParseRequest request, int startLine, int startCol,
-			int endLine, int endCol)
+		string GetCodeRegion(ParseRequest request, int startLine, int startCol, int endLine, int endCol)
 		{
 			string region;
 

Modified: vs-plugin/trunk/Nemerle.VsIntegration/NemerleScanner.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/NemerleScanner.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/NemerleScanner.cs	Sun Sep 10 00:32:02 2006
@@ -7,42 +7,44 @@
 	{
 		static LexerHack _Root = new LexerHack();
 
-		public NemerleScanner() {
-			lexer = _Root.lexer;
+		public NemerleScanner()
+		{
+			_lexer = _Root.lexer;
 		}
 
-		LexerColorizer lexer;
+		LexerColorizer _lexer;
 
 		enum TC
 		{
-			Text = 0,
-			Keyword = 1,
-			Comment = 2,
-			Identifier = 3,
-			String = 4,
-			Number = 5,
-			//Text = 6,
+			Text       = TokenColor.Text,
+			Keyword    = TokenColor.Keyword,
+			Comment    = TokenColor.Comment,
+			Identifier = TokenColor.Identifier,
+			String     = TokenColor.String,
+			Number     = TokenColor.Number,
 			Operator = 7,
 		}
 
 		// Its calling depends on IVsColorizer.GetStateMaintenanceFlag, which defaults to true.
-		public bool ScanTokenAndProvideInfoAboutIt(TokenInfo tokenInfo, ref int state) {
-			LexerColorizer.SyntaxToken tok = lexer.GetSyntaxToken(ref state);
+		public bool ScanTokenAndProvideInfoAboutIt(TokenInfo tokenInfo, ref int state)
+		{
+			LexerColorizer.SyntaxToken tok = _lexer.GetSyntaxToken(ref state);
 
 			// TokenInfo is only read in *.LanguageService.dll
 			tokenInfo.Trigger = TokenTriggers.None;
+
 			switch(tok.Token) {
 				case SyntaxType.EndOfFile:
 					return false;
 
 				case SyntaxType.Keyword:
-					tokenInfo.Color = (TokenColor)TC.Keyword;
-					tokenInfo.Type = TokenType.Keyword;
+					tokenInfo.Color = TokenColor.Keyword;
+					tokenInfo.Type  = TokenType .Keyword;
 					break;
 
 				case SyntaxType.Identifier:
-					tokenInfo.Color = (TokenColor)TC.Identifier;
-					tokenInfo.Type = TokenType.Identifier;
+					tokenInfo.Color = TokenColor.Identifier;
+					tokenInfo.Type  = TokenType. Identifier;
 					break;
 
 				case SyntaxType.OperatorDot:
@@ -50,44 +52,51 @@
 				case SyntaxType.Operator:
 					tokenInfo.Color = (TokenColor)TC.Operator;
 					tokenInfo.Type = TokenType.Operator;
-					switch(tok.Token) {
+
+					switch (tok.Token)
+					{
 						case SyntaxType.OperatorBrace:
 							tokenInfo.Trigger = TokenTriggers.MatchBraces;
+
+							switch (_lastString[tok.StartPos])
+							{
+								case '(': tokenInfo.Trigger |= TokenTriggers.ParameterStart; break;
+								case ')': tokenInfo.Trigger |= TokenTriggers.ParameterEnd;   break;
+							}
+
 							break;
+
 						case SyntaxType.OperatorDot:
 							tokenInfo.Trigger = TokenTriggers.MemberSelect;
 							break;
-						default:
-							break;
 					}
+
 					break;
 
 				case SyntaxType.Comment:
-					tokenInfo.Color = (TokenColor)TC.Comment;
-					if(state == 0)
-						tokenInfo.Type = TokenType.LineComment;
-					else
-						tokenInfo.Type = TokenType.Comment;
+					tokenInfo.Color = TokenColor.Comment;
+					tokenInfo.Type  = state == 0? TokenType.LineComment : TokenType.Comment;
 					break;
 
 				case SyntaxType.CharLiteral:
-					tokenInfo.Color = (TokenColor)TC.String;
-					tokenInfo.Type = TokenType.Literal;
+					tokenInfo.Color = TokenColor.String;
+					tokenInfo.Type  = TokenType. Literal;
 					break;
 
 				case SyntaxType.IntLiteral:
-					tokenInfo.Color = (TokenColor)TC.Number;
-					tokenInfo.Type = TokenType.Literal;
+				case SyntaxType.FloatLiteral:
+					tokenInfo.Color = TokenColor.Number;
+					tokenInfo.Type  = TokenType. Literal;
 					break;
 
 				case SyntaxType.StringLiteral:
-					tokenInfo.Color = (TokenColor)TC.String;
-					tokenInfo.Type = TokenType.String;
+					tokenInfo.Color = TokenColor.String;
+					tokenInfo.Type  = TokenType. String;
 					break;
 
 				default:
-					tokenInfo.Color = (TokenColor)TC.Text;
-					tokenInfo.Type = TokenType.Text;
+					tokenInfo.Color = TokenColor.Text;
+					tokenInfo.Type  = TokenType. Text;
 					break;
 			}
 
@@ -102,13 +111,13 @@
 			return true;
 		}
 
-		string _laststring; // only for debugging ScanTokenAndProvideInfoAboutIt
+		string _lastString;
 
 		// The current implementation in *.LanguageService.dll always uses offset 0.
-		public void SetSource(string source, int offset) {
-			lexer.SetString(source, offset);
-			_laststring = source;
-			//System.Diagnostics.Trace.WriteLine(source);
+		public void SetSource(string source, int offset)
+		{
+			_lexer.SetString(source, offset);
+			_lastString = source;
 		}
 	}
 }



More information about the svn mailing list