Пример #1
0
        /// <summary>
        /// Gets the user snippet directories. These are used for the save as dialog
        /// </summary>
        private void GetUserSnippetDirectories()
        {
            string vsDocDir   = RegistryLocations.GetVisualStudioUserDataPath(SnippetDesignerPackage.Instance.VSVersion);
            string snippetDir = Path.Combine(vsDocDir, StringConstants.SnippetDirectoryName);

            userSnippetDirectories[Resources.DisplayNameCSharp]      = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameCSharp, StringConstants.MySnippetsDir));
            userSnippetDirectories[Resources.DisplayNameVisualBasic] = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameVisualBasic, StringConstants.MySnippetsDir));
            userSnippetDirectories[Resources.DisplayNameXML]         = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameXML, StringConstants.MyXmlSnippetsDir));
            userSnippetDirectories[Resources.DisplayNameSQL]         = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameSQL, StringConstants.MySnippetsDir));

            if (!SnippetDesignerPackage.Instance.IsVisualStudio2010)
            {
                userSnippetDirectories[Resources.DisplayNameCPP]        = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameCPP, StringConstants.MySnippetsDir));
                userSnippetDirectories[Resources.DisplayNameJavaScript] = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameJavaScriptVS11, StringConstants.MySnippetsDir));
            }


            if (!SnippetDesignerPackage.Instance.IsVisualStudio2010 && !SnippetDesignerPackage.Instance.IsVisualStudio2012)
            {
                userSnippetDirectories[Resources.DisplayNameXAML] = Path.Combine(snippetDir, StringConstants.SnippetDirNameXAML);
            }

            var webDevSnippetDir = Path.Combine(snippetDir, StringConstants.VisualWebDeveloper);

            if (SnippetDesignerPackage.Instance.IsVisualStudio2010)
            {
                userSnippetDirectories[Resources.DisplayNameJavaScript] = Path.Combine(webDevSnippetDir, StringConstants.SnippetDirNameJavaScript);
            }


            userSnippetDirectories[Resources.DisplayNameHTML] = Path.Combine(webDevSnippetDir, StringConstants.SnippetDirNameHTML);

            userSnippetDirectories[String.Empty] = snippetDir;
        }
Пример #2
0
        /// <summary>
        /// Gets the install root.
        /// </summary>
        /// <param name="version"> </param>
        /// <returns></returns>
        private static string GetInstallRoot(string version)
        {
            string fullName = SnippetDesignerPackage.Instance.Dte.Application.FullName;

            string vsDirPath = Path.GetFullPath(Path.Combine(fullName, @"..\..\..\"));

            if (!Directory.Exists(vsDirPath))
            {
                vsDirPath = Path.GetFullPath(Path.Combine(RegistryLocations.GetVSInstallDir(version), @"..\..\"));
            }

            return(vsDirPath);
        }
Пример #3
0
        private void GetSnippetDirectoriesFromRegistry(RegistryKey rootKey, bool configSection, string version)
        {
            try
            {
                using (RegistryKey vsKey = RegistryLocations.GetVSRegKey(rootKey, configSection, version))
                {
                    if (vsKey == null)
                    {
                        return;
                    }

                    using (RegistryKey codeExpansionKey = vsKey.OpenSubKey("Languages\\CodeExpansions"))
                    {
                        foreach (string lang in codeExpansionKey.GetSubKeyNames())
                        {
                            try
                            {
                                using (var langKey = codeExpansionKey.OpenSubKey(lang))
                                {
                                    AddPathsFromRegistryKey(langKey, "ForceCreateDirs");
                                    AddPathsFromRegistryKey(langKey, "Paths");
                                }
                            }
                            catch (NullReferenceException e)
                            {
                                SnippetDesignerPackage.Instance.Logger.Log(string.Format("Cannot find registry values for {0}", lang), "SnippetDirectories", e);
                            }
                            catch (ArgumentException e)
                            {
                                SnippetDesignerPackage.Instance.Logger.Log(string.Format("Cannot find registry values for {0}", lang), "SnippetDirectories", e);
                            }
                        }
                    }
                }
            }
            catch (ArgumentException e)
            {
                SnippetDesignerPackage.Instance.Logger.Log("Cannot acces registry", "SnippetDirectories", e);
            }
            catch (NullReferenceException e)
            {
                SnippetDesignerPackage.Instance.Logger.Log("Cannot acces registry", "SnippetDirectories", e);
            }
            catch (SecurityException e)
            {
                SnippetDesignerPackage.Instance.Logger.Log("Cannot acces registry", "SnippetDirectories", e);
            }
        }
Пример #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SnippetDirectories"/> class.
        /// </summary>
        private SnippetDirectories()
        {
            var           version    = SnippetDesignerPackage.Instance.VSVersion;
            IUIHostLocale localeHost = (IUIHostLocale)SnippetDesignerPackage.Instance.GetService(typeof(IUIHostLocale));
            uint          lcid       = (uint)CultureInfo.CurrentCulture.LCID;

            localeHost.GetUILocale(out lcid);

            registryPathReplacements.Add("%InstallRoot%", GetInstallRoot(version));
            registryPathReplacements.Add("%LCID%", lcid.ToString());
            registryPathReplacements.Add("%MyDocs%", RegistryLocations.GetVisualStudioUserDataPath(version));
            replaceRegex = new Regex("(%InstallRoot%)|(%LCID%)|(%MyDocs%)", RegexOptions.Compiled);

            GetUserSnippetDirectories();
            GetSnippetDirectoriesFromRegistry(Registry.LocalMachine, false, version);
            GetSnippetDirectoriesFromRegistry(Registry.CurrentUser, true, version);
        }
Пример #5
0
        /// <summary>
        /// Gets the install root.
        /// </summary>
        /// <param name="version"> </param>
        /// <returns></returns>
        private static string GetInstallRoot(string version)
        {
            string fullName = SnippetDesignerPackage.Instance.Dte.Application.FullName;
            string pathRoot = Path.GetPathRoot(fullName);

            string[] parts     = fullName.Split(Path.DirectorySeparatorChar);
            string   vsDirPath = "";

            if (parts.Length >= 3)
            {
                vsDirPath = Path.Combine(pathRoot, Path.Combine(parts[1], parts[2]));
            }
            else
            {
                vsDirPath = RegistryLocations.GetVSInstallDir(version) + @"..\..\";
            }

            return(vsDirPath);
        }
Пример #6
0
        private static string GetSnippetSchemaPath()
        {
            int    uiLanguage    = RegistryLocations.GetVSUILanguage();
            string snippetSchema = string.Format(SnippetSchemaFormat, uiLanguage);

            if (File.Exists(snippetSchema))
            {
                return(snippetSchema);
            }

            snippetSchema = string.Format(SnippetSchemaFormat, CultureInfo.CurrentCulture.LCID);
            if (File.Exists(snippetSchema))
            {
                return(snippetSchema);
            }

            snippetSchema = string.Format(SnippetSchemaFormat, 1033);
            if (File.Exists(snippetSchema))
            {
                return(snippetSchema);
            }

            return(null);
        }