File: Classification\ClassificationTypeDefinitions.cs
Web Access
Project: src\src\EditorFeatures\Core\Microsoft.CodeAnalysis.EditorFeatures.csproj (Microsoft.CodeAnalysis.EditorFeatures)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Language.StandardClassification;
using Microsoft.VisualStudio.Text.Classification;
using Microsoft.VisualStudio.Utilities;
 
namespace Microsoft.CodeAnalysis.Classification;
 
internal sealed class ClassificationTypeDefinitions
{
    #region Preprocessor Text 
    [Export]
    [Name(ClassificationTypeNames.PreprocessorText)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal ClassificationTypeDefinition PreprocessorTextTypeDefinition { get; set; }
    #endregion
    #region Punctuation
    [Export]
    [Name(ClassificationTypeNames.Punctuation)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal ClassificationTypeDefinition PunctuationTypeDefinition;
    #endregion
    #region String - Verbatim
    [Export]
    [Name(ClassificationTypeNames.VerbatimStringLiteral)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition StringVerbatimTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.StringEscapeCharacter)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition StringEscapeCharacterTypeDefinition;
    #endregion
    #region Keyword - Control
    // Keyword - Control sets its BaseDefinitions to be Keyword so that
    // in the absence of specific styling they will appear as keywords.  
    [Export]
    [Name(ClassificationTypeNames.ControlKeyword)]
    [BaseDefinition(PredefinedClassificationTypeNames.Keyword)]
    internal ClassificationTypeDefinition ControlKeywordTypeDefinition;
    #endregion
 
    #region User Types - Classes
    [Export]
    [Name(ClassificationTypeNames.ClassName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserTypeClassesTypeDefinition;
    #endregion
    #region User Types - Records
    [Export]
    [Name(ClassificationTypeNames.RecordClassName)]
    [BaseDefinition(ClassificationTypeNames.ClassName)]
    internal readonly ClassificationTypeDefinition UserTypeRecordsTypeDefinition;
    #endregion
    #region User Types - Record Structs
    [Export]
    [Name(ClassificationTypeNames.RecordStructName)]
    [BaseDefinition(ClassificationTypeNames.StructName)]
    internal readonly ClassificationTypeDefinition UserTypeRecordStructsTypeDefinition;
    #endregion
    #region User Types - Delegates 
    [Export]
    [Name(ClassificationTypeNames.DelegateName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserTypeDelegatesTypeDefinition;
    #endregion
    #region User Types - Enums 
    [Export]
    [Name(ClassificationTypeNames.EnumName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserTypeEnumsTypeDefinition;
    #endregion
    #region User Types - Interfaces 
    [Export]
    [Name(ClassificationTypeNames.InterfaceName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserTypeInterfacesTypeDefinition;
    #endregion
    #region User Types - Modules 
    [Export]
    [Name(ClassificationTypeNames.ModuleName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserTypeModulesTypeDefinition;
    #endregion
    #region User Types - Structures 
    [Export]
    [Name(ClassificationTypeNames.StructName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserTypeStructuresTypeDefinition;
    #endregion
    #region User Types - Type Parameters 
    [Export]
    [Name(ClassificationTypeNames.TypeParameterName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserTypeTypeParametersTypeDefinition;
    #endregion
 
    #region Test Code
    [Export]
    [Name(ClassificationTypeNames.TestCode)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition TestCodeTypeDefinition;
    [Export]
    [Name(ClassificationTypeNames.TestCodeMarkdown)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition TestCodeMarkdownTypeDefinition;
    #endregion
 
    // User Members - * set their BaseDefinitions to be Identifier so that
    // in the absence of specific styling they will appear as identifiers. 
    // Extension Methods are an exception and their base definition is Method
    // since it is a more specific type of method.
    #region User Members - Fields
    [Export]
    [Name(ClassificationTypeNames.FieldName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersFieldsTypeDefinition;
    #endregion
    #region User Members - Enum Memberd
    [Export]
    [Name(ClassificationTypeNames.EnumMemberName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersEnumMembersTypeDefinition;
    #endregion
    #region User Members - Constants
    [Export]
    [Name(ClassificationTypeNames.ConstantName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersConstantsTypeDefinition;
    #endregion
    #region User Members - Locals
    [Export]
    [Name(ClassificationTypeNames.LocalName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersLocalsTypeDefinition;
    #endregion
    #region User Members - Parameters
    [Export]
    [Name(ClassificationTypeNames.ParameterName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersParametersTypeDefinition;
    #endregion
    #region User Members - Methods
    [Export]
    [Name(ClassificationTypeNames.MethodName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersMethodsTypeDefinition;
    #endregion
    #region User Members - Extension Methods
    [Export]
    [Name(ClassificationTypeNames.ExtensionMethodName)]
    [BaseDefinition(ClassificationTypeNames.MethodName)]
    internal readonly ClassificationTypeDefinition UserMembersExtensionMethodsTypeDefinition;
    #endregion
    #region User Members - Properties
    [Export]
    [Name(ClassificationTypeNames.PropertyName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersPropertiesTypeDefinition;
    #endregion
    #region User Members - Events
    [Export]
    [Name(ClassificationTypeNames.EventName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersEventsTypeDefinition;
    #endregion
    #region User Members - Namespaces
    [Export]
    [Name(ClassificationTypeNames.NamespaceName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersNamespacesTypeDefinition;
    #endregion
    #region User Members - Labels
    [Export]
    [Name(ClassificationTypeNames.LabelName)]
    [BaseDefinition(PredefinedClassificationTypeNames.Identifier)]
    internal readonly ClassificationTypeDefinition UserMembersLabelsTypeDefinition;
    #endregion
 
    #region XML Doc Comments - Attribute Name 
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentAttributeName)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentAttributeNameTypeDefinition;
    #endregion
    #region XML Doc Comments - Attribute Quotes 
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentAttributeQuotes)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentAttributeQuotesTypeDefinition;
    #endregion
    #region XML Doc Comments - Attribute Value 
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentAttributeValue)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentAttributeValueTypeDefinition;
    #endregion
    #region XML Doc Comments - CData Section 
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentCDataSection)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentCDataSectionTypeDefinition;
    #endregion
    #region XML Doc Comments - Comment 
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentComment)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentCommentTypeDefinition;
    #endregion
    #region XML Doc Comments - Delimiter 
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentDelimiter)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentDelimiterTypeDefinition;
    #endregion
    #region XML Doc Comments - Entity Reference
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentEntityReference)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentEntityReferenceTypeDefinition;
    #endregion
    #region XML Doc Comments - Name
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentName)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentNameTypeDefinition;
    #endregion
    #region XML Doc Comments - Processing Instruction
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentProcessingInstruction)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentProcessingInstructionTypeDefinition;
    #endregion
    #region XML Doc Comments - Text 
    [Export]
    [Name(ClassificationTypeNames.XmlDocCommentText)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlDocCommentTextTypeDefinition;
    #endregion
 
    #region Regex
    [Export]
    [Name(ClassificationTypeNames.RegexComment)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexCommentTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.RegexText)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexTextTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.RegexCharacterClass)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexCharacterClassTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.RegexQuantifier)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexQuantifierTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.RegexAnchor)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexAnchorTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.RegexAlternation)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexAlternationTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.RegexOtherEscape)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexOtherEscapeTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.RegexSelfEscapedCharacter)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexSelfEscapedCharacterTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.RegexGrouping)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition RegexGroupingTypeDefinition;
 
    #endregion
 
    #region JSON
    [Export]
    [Name(ClassificationTypeNames.JsonComment)]
    [BaseDefinition(PredefinedClassificationTypeNames.Comment)]
    internal readonly ClassificationTypeDefinition JsonCommentTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonNumber)]
    [BaseDefinition(PredefinedClassificationTypeNames.Number)]
    internal readonly ClassificationTypeDefinition JsonNumberTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonString)]
    [BaseDefinition(PredefinedClassificationTypeNames.String)]
    internal readonly ClassificationTypeDefinition JsonStringTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonKeyword)]
    [BaseDefinition(PredefinedClassificationTypeNames.Keyword)]
    internal readonly ClassificationTypeDefinition JsonKeywordTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonText)]
    [BaseDefinition(PredefinedClassificationTypeNames.Text)]
    internal readonly ClassificationTypeDefinition JsonTextTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonOperator)]
    [BaseDefinition(PredefinedClassificationTypeNames.Operator)]
    internal readonly ClassificationTypeDefinition JsonOperatorTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonPunctuation)]
    [BaseDefinition(PredefinedClassificationTypeNames.Punctuation)]
    internal readonly ClassificationTypeDefinition JsonPunctuationTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonArray)]
    [BaseDefinition(PredefinedClassificationTypeNames.Punctuation)]
    internal readonly ClassificationTypeDefinition JsonArrayTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonObject)]
    [BaseDefinition(PredefinedClassificationTypeNames.Punctuation)]
    internal readonly ClassificationTypeDefinition JsonObjectTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonPropertyName)]
    [BaseDefinition(ClassificationTypeNames.MethodName)]
    internal readonly ClassificationTypeDefinition JsonPropertyNameTypeDefinition;
 
    [Export]
    [Name(ClassificationTypeNames.JsonConstructorName)]
    [BaseDefinition(ClassificationTypeNames.StructName)]
    internal readonly ClassificationTypeDefinition JsonConstructorNameTypeDefinition;
 
    #endregion
 
    #region VB XML Literals - Attribute Name 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralAttributeName)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralAttributeNameTypeDefinition;
    #endregion
    #region VB XML Literals - Attribute Quotes 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralAttributeQuotes)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralAttributeQuotesTypeDefinition;
    #endregion
    #region VB XML Literals - Attribute Value 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralAttributeValue)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralAttributeValueTypeDefinition;
    #endregion
    #region VB XML Literals - CData Section 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralCDataSection)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralCDataSectionTypeDefinition;
    #endregion
    #region VB XML Literals - Comment 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralComment)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralCommentTypeDefinition;
    #endregion
    #region VB XML Literals - Delimiter 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralDelimiter)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralDelimiterTypeDefinition;
    #endregion
    #region VB XML Literals - Embedded Expression 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralEmbeddedExpression)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralEmbeddedExpressionTypeDefinition;
    #endregion
    #region VB XML Literals - Entity Reference 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralEntityReference)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralEntityReferenceTypeDefinition;
    #endregion
    #region VB XML Literals - Name 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralName)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralNameTypeDefinition;
    #endregion
    #region VB XML Literals - Processing Instruction 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralProcessingInstruction)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralProcessingInstructionTypeDefinition;
    #endregion
    #region VB XML Literals - Text 
    [Export]
    [Name(ClassificationTypeNames.XmlLiteralText)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition XmlLiteralTextTypeDefinition;
    #endregion
 
    #region Reassigned Variable
    [Export]
    [Name(ClassificationTypeNames.ReassignedVariable)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition ReassignedVariableTypeDefinition;
    #endregion
 
    #region Obsolete Symbol
    [Export]
    [Name(ClassificationTypeNames.ObsoleteSymbol)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition ObsoleteSymbolTypeDefinition;
    #endregion
 
    #region Static Symbol
    [Export]
    [Name(ClassificationTypeNames.StaticSymbol)]
    [BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
    internal readonly ClassificationTypeDefinition StaticSymbolTypeDefinition;
    #endregion
 
    #region Operator - Overloaded
    // Operator - Overloaded sets its BaseDefinitions to be Operator so that
    // in the absence of specific styling they will appear as operators.  
    [Export]
    [Name(ClassificationTypeNames.OperatorOverloaded)]
    [BaseDefinition(PredefinedClassificationTypeNames.Operator)]
    internal readonly ClassificationTypeDefinition OperatorOverloadTypeDefinition;
    #endregion
}