[svn] r7067: vs-plugin/trunk/Nemerle.VsIntegration: LanguageService/NemerleLanguageService.cs LanguageServ...

IT svnadmin at nemerle.org
Thu Dec 7 06:16:00 CET 2006


Log:
1. LanguageService refactoring.
2. Started working on Navigation DropDown.

Author: IT
Date: Thu Dec  7 06:15:56 2006
New Revision: 7067

Added:
   vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleTypeAndMemberDropdownBars .cs
Modified:
   vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleLanguageService.cs
   vs-plugin/trunk/Nemerle.VsIntegration/Nemerle.VsIntegration.csproj

Modified: vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleLanguageService.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleLanguageService.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleLanguageService.cs	Thu Dec  7 06:15:56 2006
@@ -5,12 +5,9 @@
 using System.Globalization;
 using System.IO;
 using System.Runtime.InteropServices;
-using System.Security.Permissions;
-using System.Windows.Forms;
 
 using Microsoft.VisualStudio;
 using Microsoft.VisualStudio.Package;
-using Microsoft.VisualStudio.Shell;
 using Microsoft.VisualStudio.Shell.Interop;
 using Microsoft.VisualStudio.TextManager.Interop;
 
@@ -26,104 +23,16 @@
 	[Guid(NemerleConstants.LanguageServiceGuidString)]
 	public class NemerleLanguageService : Microsoft.VisualStudio.Package.LanguageService
 	{
+		#region Init
+
 		public NemerleLanguageService()
 		{
 			CompiledUnitAstBrowser.ShowLocation += CompiledUnitAstBrowser_ShowLocation;
 		}
 
-		void CompiledUnitAstBrowser_ShowLocation(Location loc)
-		{
-			TextSpan span = new TextSpan();
-
-			span.iStartLine  = loc.Line - 1;
-			span.iStartIndex = loc.Column - 1;
-			span.iEndLine    = loc.EndLine - 1;
-			span.iEndIndex   = loc.EndColumn - 1;
-
-			uint           itemID;
-			IVsUIHierarchy hierarchy;
-			IVsWindowFrame docFrame;
-			IVsTextView    textView;
-
-			VsShell.OpenDocument(Site, loc.File,
-				NativeMethods.LOGVIEWID_Code, out hierarchy, out itemID, out docFrame, out textView);
-
-			NativeMethods.ThrowOnFailure(docFrame.Show());
-
-			if (textView != null)
-			{
-				try
-				{
-					NativeMethods.ThrowOnFailure(textView.SetCaretPos(span.iStartLine, span.iStartIndex));
-					TextSpanHelper.MakePositive(ref span);
-					NativeMethods.ThrowOnFailure(textView.SetSelection(span.iStartLine, span.iStartIndex, span.iEndLine, span.iEndIndex));
-					NativeMethods.ThrowOnFailure(textView.EnsureSpanVisible(span));
-				}
-				catch (Exception ex)
-				{
-					Trace.WriteLine(ex.Message);
-				}
-			}
-		}
-
 		LanguagePreferences                    _preferences;
 		Dictionary<IVsTextView, NemerleSource> _specialSources = new Dictionary<IVsTextView, NemerleSource>();
 
-		// This array contains the definition of the colorable items provided by
-		// this language service.
-		// This specific language does not really need to provide colorable items
-		// because it does not define any item different from the default ones,
-		// but the base class has an empty implementation of
-		// IVsProvideColorableItems, so any language service that derives from
-		// it must implement the methods of this interface, otherwise there are
-		// errors when the shell loads an editor to show a file associated to
-		// this language.
-		private static NemerleColorableItem[] _colorableItems = 
-		{
-			// The sequential order of these items should be consistent with the ScanTokenColor enum.
-			//
-			new NemerleColorableItem("Keyword",                  COLORINDEX.CI_BLUE),
-			new NemerleColorableItem("Comment",                  COLORINDEX.CI_DARKGREEN),
-			new NemerleColorableItem("Identifier"),
-			new NemerleColorableItem("String",                   COLORINDEX.CI_MAROON, Color.FromArgb(170,  0,   0)),
-			new NemerleColorableItem("Number"),
-			new NemerleColorableItem("Text"),
-
-			new NemerleColorableItem("Operator"),
-			new NemerleColorableItem("Preprocessor Keyword",     COLORINDEX.CI_BLUE,   Color.FromArgb(  0, 51, 204)),
-			new NemerleColorableItem("StringEx",                 COLORINDEX.CI_MAROON, Color.FromArgb(143, 44, 182)),
-			new NemerleColorableItem("String (@ Verbatim)",   2, COLORINDEX.CI_MAROON, Color.FromArgb(170,  0,   0)),
-			new NemerleColorableItem("StringEx (@ Verbatim)", 2, COLORINDEX.CI_MAROON, Color.FromArgb(143, 44, 182)),
-
-			new NemerleColorableItem("User Types",               COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
-			new NemerleColorableItem("User Types (Delegates)",   COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
-			new NemerleColorableItem("User Types (Enums)",       COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
-			new NemerleColorableItem("User Types (Interfaces)",  COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
-			new NemerleColorableItem("User Types (Value types)", COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
-
-			new NemerleColorableItem("Quotation",             0, COLORINDEX.CI_BROWN),
-
-			new NemerleColorableItem("<[ Text ]>",            0),
-			new NemerleColorableItem("<[ Keyword ]>",         0, COLORINDEX.CI_BLUE),
-			new NemerleColorableItem("<[ Comment ]>",         0, COLORINDEX.CI_DARKGREEN),
-			new NemerleColorableItem("<[ Identifier ]>",      0),
-			new NemerleColorableItem("<[ String ]>",          0, COLORINDEX.CI_MAROON, Color.FromArgb(170,  0,   0)),
-			new NemerleColorableItem("<[ Number ]>",          0),
-			new NemerleColorableItem("<[ Operator ]>",        0),
-			new NemerleColorableItem("<[ StringEx ]>",        0, COLORINDEX.CI_MAROON, Color.FromArgb(143, 44, 182)),
-			new NemerleColorableItem("<[ String (@) ]>",      1, COLORINDEX.CI_MAROON, Color.FromArgb(170,  0,   0)),
-			new NemerleColorableItem("<[ StringEx (@) ]>",    1, COLORINDEX.CI_MAROON, Color.FromArgb(143, 44, 182)),
-
-			new NemerleColorableItem("<[ User Types ]>",               0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
-			new NemerleColorableItem("<[ User Types (Delegates) ]>",   0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
-			new NemerleColorableItem("<[ User Types (Enums) ]>",       0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
-			new NemerleColorableItem("<[ User Types (Interfaces) ]>",  0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
-			new NemerleColorableItem("<[ User Types (Value types) ]>", 0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
-
-			new NemerleColorableItem("Highlight One", COLORINDEX.CI_BLACK, COLORINDEX.CI_YELLOW, Color.Empty, Color.FromArgb(255, 255, 200)),
-			new NemerleColorableItem("Highlight Two", COLORINDEX.CI_BLACK, COLORINDEX.CI_GREEN, Color.Empty, Color.FromArgb(230, 255, 230)),
-		};
-
 		public override void Dispose()
 		{
 			try
@@ -150,73 +59,6 @@
 			}
 		}
 
-		public void AddSpecialSource(NemerleSource source, IVsTextView view)
-		{
-			_specialSources.Add(view, source);
-		}
-
-		public override string Name
-		{
-			get { return Resources.Nemerle; }
-		}
-
-		public override Source CreateSource(IVsTextLines buffer)
-		{
-			return new NemerleSource(this, buffer, GetColorizer(buffer));
-		}
-
-		public override CodeWindowManager CreateCodeWindowManager(IVsCodeWindow codeWindow, Source source)
-		{
-			CodeWindowManager m = base.CreateCodeWindowManager(codeWindow, source);
-
-			// It compiles the source right after it's loaded.
-			//
-			source.BeginParse();
-
-			return m;
-		}
-
-		public override LanguagePreferences GetLanguagePreferences()
-		{
-			if (_preferences == null)
-			{
-				_preferences = new LanguagePreferences(Site, typeof(NemerleLanguageService).GUID, Name);
-				_preferences.Init();
-				_preferences.EnableFormatSelection = true;
-
-#if DEBUG
-				//VladD2: Switch on synchronous mode for debugging purpose!
-				//TODO: Comment it if necessary.
-				_preferences.EnableAsyncCompletion = false;
-#endif
-			}
-
-			return _preferences;
-		}
-
-		#region Colorizer
-
-		Dictionary<IVsTextLines, NemerleColorizer> _colorizers = new Dictionary<IVsTextLines,NemerleColorizer>();
-
-		public override Colorizer GetColorizer(IVsTextLines buffer)
-		{
-			NemerleColorizer colorizer;
-
-			if (!_colorizers.TryGetValue(buffer, out colorizer))
-			{
-				colorizer = new NemerleColorizer(this, buffer, (NemerleScanner)GetScanner(buffer));
-
-				_colorizers.Add(buffer, colorizer);
-			}
-
-			return colorizer;
-		}
-
-		public override IScanner GetScanner(IVsTextLines buffer)
-		{
-			return new NemerleScanner(this, buffer);
-		}
-
 		#endregion
 
 		#region ParseSource
@@ -261,11 +103,9 @@
 
 		private AuthoringScope Check(ParseRequest request)
 		{
-			//return null;
 			Trace.WriteLine(">>>> ##### Check!");
 			try
 			{
-
 				ProjectInfo projectInfo = ProjectInfo.FindProject(request.FileName);
 
 				if (projectInfo == null)
@@ -281,12 +121,8 @@
 
 				request.Sink.ProcessHiddenRegions = true;
 
-				//projectInfo.UpdateFile(request);
-
 				projectInfo.Project.Check(
 					request.FileName,
-					// VladD2: Ìíå êàæåòñÿ îò ÿâíîé ïåðåäà÷è ISource íóæíî îòêàçàòüñÿ.
-					// Åñëè ÷òî åãî âñåãäà ìîæíî ïîëó÷èòü ó Engine.
 					new SourceTextManager(projectInfo.GetSource(request.FileName)),
 					delegate(Location location, string text, bool isExpanded)
 					{
@@ -454,29 +290,6 @@
 			return GetDefaultScope(request);
 		}
 
-		private string GetCodeRegion(
-			ParseRequest request, 
-			int startLine, 
-			int startCol, 
-			int endLine, int endCol
-		)
-		{
-			string region;
-
-			if (request.View.GetTextStream(
-					startLine - 1,
-					startCol  - 1,
-					endLine   - 1,
-					endCol    - 1,
-					out region
-				) == VSConstants.S_OK)
-			{
-				return region;
-			}
-
-			return "";
-		}
-
 		private AuthoringScope GetDefaultScope(ParseRequest request)
 		{
 			ProjectInfo projectInfo = ProjectInfo.FindProject(request.FileName);
@@ -513,56 +326,82 @@
 
 		#endregion
 
-		public override ImageList GetImageList()
-		{
-			return base.GetImageList();
-		}
+		#region Colorizing
 
-		public override int ValidateBreakpointLocation(
-			IVsTextBuffer buffer, 
-			int line, 
-			int col, 
-			TextSpan[] pCodeSpan
-		)
-		{
-			if (pCodeSpan != null)
+		// This array contains the definition of the colorable items provided by
+		// this language service.
+		// This specific language does not really need to provide colorable items
+		// because it does not define any item different from the default ones,
+		// but the base class has an empty implementation of
+		// IVsProvideColorableItems, so any language service that derives from
+		// it must implement the methods of this interface, otherwise there are
+		// errors when the shell loads an editor to show a file associated to
+		// this language.
+		private static NemerleColorableItem[] _colorableItems = 
 			{
-				pCodeSpan[0].iStartLine  = line;
-				pCodeSpan[0].iStartIndex = col;
-				pCodeSpan[0].iEndLine    = line;
-				pCodeSpan[0].iEndIndex   = col;
+			// The sequential order of these items should be consistent with the ScanTokenColor enum.
+			//
+			new NemerleColorableItem("Keyword",                  COLORINDEX.CI_BLUE),
+			new NemerleColorableItem("Comment",                  COLORINDEX.CI_DARKGREEN),
+			new NemerleColorableItem("Identifier"),
+			new NemerleColorableItem("String",                   COLORINDEX.CI_MAROON, Color.FromArgb(170,  0,   0)),
+			new NemerleColorableItem("Number"),
+			new NemerleColorableItem("Text"),
 
-				if (buffer != null)
-				{
-					int length;
+			new NemerleColorableItem("Operator"),
+			new NemerleColorableItem("Preprocessor Keyword",     COLORINDEX.CI_BLUE,   Color.FromArgb(  0, 51, 204)),
+			new NemerleColorableItem("StringEx",                 COLORINDEX.CI_MAROON, Color.FromArgb(143, 44, 182)),
+			new NemerleColorableItem("String (@ Verbatim)",   2, COLORINDEX.CI_MAROON, Color.FromArgb(170,  0,   0)),
+			new NemerleColorableItem("StringEx (@ Verbatim)", 2, COLORINDEX.CI_MAROON, Color.FromArgb(143, 44, 182)),
 
-					buffer.GetLengthOfLine(line, out length);
+			new NemerleColorableItem("User Types",               COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
+			new NemerleColorableItem("User Types (Delegates)",   COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
+			new NemerleColorableItem("User Types (Enums)",       COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
+			new NemerleColorableItem("User Types (Interfaces)",  COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
+			new NemerleColorableItem("User Types (Value types)", COLORINDEX.CI_CYAN,   Color.FromArgb(43, 145, 175)),
 
-					pCodeSpan[0].iStartIndex = 0;
-					pCodeSpan[0].iEndIndex   = length;
-				}
+			new NemerleColorableItem("Quotation",             0, COLORINDEX.CI_BROWN),
 
-				return VSConstants.S_OK;
-			}
-			else
+			new NemerleColorableItem("<[ Text ]>",            0),
+			new NemerleColorableItem("<[ Keyword ]>",         0, COLORINDEX.CI_BLUE),
+			new NemerleColorableItem("<[ Comment ]>",         0, COLORINDEX.CI_DARKGREEN),
+			new NemerleColorableItem("<[ Identifier ]>",      0),
+			new NemerleColorableItem("<[ String ]>",          0, COLORINDEX.CI_MAROON, Color.FromArgb(170,  0,   0)),
+			new NemerleColorableItem("<[ Number ]>",          0),
+			new NemerleColorableItem("<[ Operator ]>",        0),
+			new NemerleColorableItem("<[ StringEx ]>",        0, COLORINDEX.CI_MAROON, Color.FromArgb(143, 44, 182)),
+			new NemerleColorableItem("<[ String (@) ]>",      1, COLORINDEX.CI_MAROON, Color.FromArgb(170,  0,   0)),
+			new NemerleColorableItem("<[ StringEx (@) ]>",    1, COLORINDEX.CI_MAROON, Color.FromArgb(143, 44, 182)),
+
+			new NemerleColorableItem("<[ User Types ]>",               0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
+			new NemerleColorableItem("<[ User Types (Delegates) ]>",   0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
+			new NemerleColorableItem("<[ User Types (Enums) ]>",       0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
+			new NemerleColorableItem("<[ User Types (Interfaces) ]>",  0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
+			new NemerleColorableItem("<[ User Types (Value types) ]>", 0, COLORINDEX.CI_CYAN, Color.FromArgb(43, 145, 175)),
+
+			new NemerleColorableItem("Highlight One", COLORINDEX.CI_BLACK, COLORINDEX.CI_YELLOW, Color.Empty, Color.FromArgb(255, 255, 200)),
+			new NemerleColorableItem("Highlight Two", COLORINDEX.CI_BLACK, COLORINDEX.CI_GREEN, Color.Empty, Color.FromArgb(230, 255, 230)),
+		};
+
+		Dictionary<IVsTextLines, NemerleColorizer> _colorizers = new Dictionary<IVsTextLines,NemerleColorizer>();
+
+		public override Colorizer GetColorizer(IVsTextLines buffer)
 			{
-				return VSConstants.S_FALSE;
-			}
-		}
+			NemerleColorizer colorizer;
 
-		public override void OnIdle(bool periodic)
+			if (!_colorizers.TryGetValue(buffer, out colorizer))
 		{
-			Source src = GetSource(LastActiveTextView);
+				colorizer = new NemerleColorizer(this, buffer, (NemerleScanner)GetScanner(buffer));
 
-			if (src != null && src.LastParseTime == int.MaxValue)
-				src.LastParseTime = 0;
+				_colorizers.Add(buffer, colorizer);
+			}
 
-			base.OnIdle(periodic);
+			return colorizer;
 		}
 
-		public override string GetFormatFilterList()
+		public override IScanner GetScanner(IVsTextLines buffer)
 		{
-			return Resources.NemerleFormatFilter;
+			return new NemerleScanner(this, buffer);
 		}
 
 		// Implementation of IVsProvideColorableItems.
@@ -583,11 +422,44 @@
 			return VSConstants.S_OK;
 		}
 
+		#endregion
+
+		#region Source
+
+		public void AddSpecialSource(NemerleSource source, IVsTextView view)
+		{
+			_specialSources.Add(view, source);
+		}
+
+		public override string Name
+		{
+			get { return Resources.Nemerle; }
+		}
+
+		public override Source CreateSource(IVsTextLines buffer)
+		{
+			return new NemerleSource(this, buffer, GetColorizer(buffer));
+		}
+
+		public override CodeWindowManager CreateCodeWindowManager(IVsCodeWindow codeWindow, Source source)
+		{
+			CodeWindowManager m = base.CreateCodeWindowManager(codeWindow, source);
+
+			// It compiles the source right after it's loaded.
+			//
+			source.BeginParse();
+
+			return m;
+		}
+
+		#endregion
+
+		#region Snippets
+
 		private int classNameCounter = 0;
 
 		public override ExpansionFunction CreateExpansionFunction(
-			ExpansionProvider provider, 
-			string functionName)
+			ExpansionProvider provider, string functionName)
 		{
 			ExpansionFunction function = null;
 
@@ -644,14 +516,6 @@
 					expansionsList.Add(expansion);
 		}
 
-		public override ViewFilter CreateViewFilter(CodeWindowManager mgr, IVsTextView newView)
-		{
-			// This call makes sure debugging events can be received by our view filter.
-			//
-			GetIVsDebugger();
-			return new NemerleViewFilter(mgr, newView);
-		}
-
 		internal class NemerleGetNameExpansionFunction : ExpansionFunction
 		{
 			private int nameCount;
@@ -669,5 +533,144 @@
 				return name;
 			}
 		}
+
+		#endregion
+
+		#region Navigation DropDown
+
+		public override TypeAndMemberDropdownBars CreateDropDownHelper(IVsTextView forView)
+		{
+			return null;//new NemerleTypeAndMemberDropdownBars(this, forView);
+		}
+
+		#endregion
+
+		#region LanguagePreferences
+
+		public override LanguagePreferences GetLanguagePreferences()
+		{
+			if (_preferences == null)
+			{
+				_preferences = new LanguagePreferences(Site, typeof(NemerleLanguageService).GUID, Name);
+				_preferences.Init();
+				_preferences.EnableFormatSelection = true;
+
+#if DEBUG
+				//VladD2: Switch on synchronous mode for debugging purpose!
+				//TODO: Comment it if necessary.
+				_preferences.EnableAsyncCompletion = false;
+#endif
+			}
+
+			return _preferences;
+		}
+
+		#endregion
+
+		#region Debugging
+
+		public override int ValidateBreakpointLocation(
+			IVsTextBuffer buffer, 
+			int           line, 
+			int           col, 
+			TextSpan[]    pCodeSpan
+		)
+		{
+			if (pCodeSpan != null)
+			{
+				pCodeSpan[0].iStartLine  = line;
+				pCodeSpan[0].iStartIndex = col;
+				pCodeSpan[0].iEndLine    = line;
+				pCodeSpan[0].iEndIndex   = col;
+
+				if (buffer != null)
+				{
+					int length;
+
+					buffer.GetLengthOfLine(line, out length);
+
+					pCodeSpan[0].iStartIndex = 0;
+					pCodeSpan[0].iEndIndex   = length;
+				}
+
+				return VSConstants.S_OK;
+			}
+			else
+			{
+				return VSConstants.S_FALSE;
+			}
+		}
+
+		public override ViewFilter CreateViewFilter(CodeWindowManager mgr, IVsTextView newView)
+		{
+			// This call makes sure debugging events can be received by our view filter.
+			//
+			GetIVsDebugger();
+			return new NemerleViewFilter(mgr, newView);
+		}
+
+		#endregion
+
+		#region OnIdle
+
+		public override void OnIdle(bool periodic)
+		{
+			Source src = GetSource(LastActiveTextView);
+
+			if (src != null && src.LastParseTime == int.MaxValue)
+				src.LastParseTime = 0;
+
+			base.OnIdle(periodic);
+		}
+
+		#endregion
+
+		#region Filter List
+
+		public override string GetFormatFilterList()
+		{
+			return Resources.NemerleFormatFilter;
+		}
+
+		#endregion
+
+		#region ShowLocation event handler
+
+		void CompiledUnitAstBrowser_ShowLocation(Location loc)
+		{
+			TextSpan span = new TextSpan();
+
+			span.iStartLine  = loc.Line - 1;
+			span.iStartIndex = loc.Column - 1;
+			span.iEndLine    = loc.EndLine - 1;
+			span.iEndIndex   = loc.EndColumn - 1;
+
+			uint           itemID;
+			IVsUIHierarchy hierarchy;
+			IVsWindowFrame docFrame;
+			IVsTextView    textView;
+
+			VsShell.OpenDocument(Site, loc.File,
+				NativeMethods.LOGVIEWID_Code, out hierarchy, out itemID, out docFrame, out textView);
+
+			NativeMethods.ThrowOnFailure(docFrame.Show());
+
+			if (textView != null)
+			{
+				try
+				{
+					NativeMethods.ThrowOnFailure(textView.SetCaretPos(span.iStartLine, span.iStartIndex));
+					TextSpanHelper.MakePositive(ref span);
+					NativeMethods.ThrowOnFailure(textView.SetSelection(span.iStartLine, span.iStartIndex, span.iEndLine, span.iEndIndex));
+					NativeMethods.ThrowOnFailure(textView.EnsureSpanVisible(span));
+				}
+				catch (Exception ex)
+				{
+					Trace.WriteLine(ex.Message);
+				}
+			}
+		}
+
+		#endregion
 	}
 }

Added: vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleTypeAndMemberDropdownBars .cs
==============================================================================
--- (empty file)
+++ vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleTypeAndMemberDropdownBars .cs	Thu Dec  7 06:15:56 2006
@@ -0,0 +1,35 @@
+using System;
+using System.Collections;
+
+using Microsoft.VisualStudio.Package;
+using Microsoft.VisualStudio.TextManager.Interop;
+
+using VsPkg = Microsoft.VisualStudio.Package;
+
+namespace Nemerle.VisualStudio.LanguageService
+{
+	class NemerleTypeAndMemberDropdownBars : TypeAndMemberDropdownBars
+	{
+		public NemerleTypeAndMemberDropdownBars(NemerleLanguageService langService, IVsTextView forView)
+			: base(langService)
+		{
+		}
+
+		public override bool OnSynchronizeDropdowns(
+			VsPkg.LanguageService languageService,
+			IVsTextView           textView,
+			int                   line,
+			int                   col,
+			ArrayList             dropDownTypes,
+			ArrayList             dropDownMembers,
+			ref int               selectedType,
+			ref int               selectedMember)
+		{
+			NemerleLanguageService lang = (NemerleLanguageService)languageService;
+
+			//lang.get
+
+			return true;
+		}
+	}
+}

Modified: vs-plugin/trunk/Nemerle.VsIntegration/Nemerle.VsIntegration.csproj
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/Nemerle.VsIntegration.csproj	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/Nemerle.VsIntegration.csproj	Thu Dec  7 06:15:56 2006
@@ -139,6 +139,7 @@
     <Compile Include="LanguageService\NemerleLanguageService.cs" />
     <Compile Include="LanguageService\NemerleScanner.cs" />
     <Compile Include="LanguageService\NemerleSource.cs" />
+    <Compile Include="LanguageService\NemerleTypeAndMemberDropdownBars .cs" />
     <Compile Include="LanguageService\ProjectManager.cs" />
     <Compile Include="LanguageService\SourceTextManager.cs" />
     <Compile Include="NemerlePackage.cs" />



More information about the svn mailing list