[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