|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- //
- // Lol Engine - VsLol add-in for Visual Studio
- //
- // Copyright: (c) 2010-2012 Sam Hocevar <sam@hocevar.net>
- // This program is free software; you can redistribute it and/or
- // modify it under the terms of the Do What The Fuck You Want To
- // Public License, Version 2, as published by Sam Hocevar. See
- // http://www.wtfpl.net/ for more details.
- //
-
- using System;
- using System.ComponentModel.Design;
- using System.Diagnostics;
- using System.Globalization;
- using System.Runtime.InteropServices;
- using System.Security.Permissions;
- using System.Text;
- using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
- using Microsoft.VisualStudio.Shell;
- using Microsoft.VisualStudio.Shell.Interop;
-
- namespace lol
- {
-
- [PackageRegistration(UseManagedResourcesOnly = true)]
-
- /* LolFx syntax highlighting */
- [ProvideServiceAttribute(typeof(LolFxLanguageService),
- ServiceName = "LolFx Service")]
- [ProvideLanguageServiceAttribute(typeof(LolFxLanguageService),
- "LolFx", 106 /* resource ID */,
- CodeSense = true,
- RequestStockColors = true,
- EnableCommenting = true,
- EnableAsyncCompletion = true)]
- [ProvideLanguageExtensionAttribute(typeof(LolFxLanguageService),
- ".lolfx")]
-
- [ProvideMenuResource(1000, 1)]
- [Guid("f96f7ac5-16ac-4061-8b92-0a02bb455ae9")]
- [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
- [ComVisible(true)]
-
- /* Autoload package */
- [ProvideAutoLoad("f1536ef8-92ec-443c-9ed7-fdadf150da82")]
-
- public sealed class PluginPackage : Package
- {
- public PluginPackage()
- {
- Trace.WriteLine(String.Format("Entering constructor for: {0}", this.ToString()));
- }
-
- [SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)]
- protected override void Initialize()
- {
- // Trace the beginning of this method and call the base implementation.
- Trace.WriteLine(String.Format("Entering Initialize() of: {0}", this.ToString()));
- base.Initialize();
-
- Logger.Initialize(GetService(typeof(SVsOutputWindow)) as IVsOutputWindow);
-
- /* Register the "Generate Compilers" context menu */
- OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
- if (null != mcs)
- {
- CommandID id = new CommandID(GuidsList.guidVsLolCmdSet,
- VsLolIDList.cmdidGenerateCompilers);
- OleMenuCommand command = new MenuGenerateCompilers(new ServiceProvider((IOleServiceProvider)this.GetService(typeof(IOleServiceProvider))), id);
- mcs.AddCommand(command);
- }
-
- /* Register the LolFx language service */
- IServiceContainer serviceContainer = this as IServiceContainer;
- LolFxLanguageService lolfxserv = new LolFxLanguageService();
- lolfxserv.SetSite(this);
- serviceContainer.AddService(typeof(LolFxLanguageService),
- lolfxserv, true);
- }
- }
-
- internal static class Logger
- {
- public static void Initialize(IVsOutputWindow window)
- {
- m_window = window;
-
- OpenBuildPane();
-
- if (m_pane == null)
- Trace.WriteLine("Failed to get a reference to the Output window Build pane");
- }
-
- private static void OpenBuildPane()
- {
- /* Ensure the "Build" output pane exists */
- if (m_window != null)
- {
- Guid guidBuild = Microsoft.VisualStudio.VSConstants.OutputWindowPaneGuid.BuildOutputPane_guid;
- m_window.CreatePane(guidBuild, "Build", 1, 0);
-
- if (Microsoft.VisualStudio.ErrorHandler.Failed(m_window.GetPane(ref guidBuild, out m_pane)))
- m_pane = null;
- }
-
- if (m_pane != null)
- m_pane.Activate();
- }
-
- public static void Clear()
- {
- OpenBuildPane();
-
- if (m_pane == null)
- {
- m_backlog = "";
- return;
- }
-
- m_pane.Clear();
- }
-
- public static void Info(string s)
- {
- OpenBuildPane();
-
- if (m_pane == null)
- {
- m_backlog += s;
- return;
- }
-
- m_pane.OutputString(m_backlog);
- m_backlog = "";
- m_pane.OutputString(s);
- }
-
- private static IVsOutputWindow m_window = null;
- private static IVsOutputWindowPane m_pane = null;
- private static string m_backlog = "";
- }
-
- internal static class GuidsList
- {
- // Now define the list of guids as public static members.
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- public static readonly Guid guidVsLolPkg = new Guid("{f96f7ac5-16ac-4061-8b92-0a02bb455ae9}");
-
- public static readonly Guid guidVsLolCmdSet = new Guid("{ce508d12-530e-45d0-8b52-1e9ee3f8eaaf}");
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- public static readonly Guid guidGearBmp = new Guid("{560dba06-c26b-4731-8229-b816818e5992}");
- }
-
- internal static class VsLolIDList
- {
- public const int cmdidGenerateCompilers = 0x2001;
- public const int cmdidUnused1 = 0x2002;
- public const int cmdidUnused2 = 0x2003;
- }
-
- } /* namespace lol */
|