예제 #1
0
        internal static ClassificationTypeDefinition CommaClassificationDefinition = null; // Set via MEF

        #endregion

        #region IDlrClassifierProvider

        public IClassifier GetClassifier(ITextBuffer buffer)
        {
            IDlrClassifier existing;

            if (buffer.Properties.TryGetProperty <IDlrClassifier>(typeof(IDlrClassifier), out existing))
            {
                return(existing);
            }

            if (_categoryMap == null)
            {
                _categoryMap = FillCategoryMap(_classificationRegistry);
            }
            var specificContentType = ContentType;

            DlrClassifier res = null;

            if (specificContentType == null || buffer.ContentType == specificContentType)
            {
                res = new DlrClassifier(this, Engine, buffer);
            }
            else
            {
                foreach (var baseType in buffer.ContentType.BaseTypes)
                {
                    if (baseType == specificContentType)
                    {
                        res = new DlrClassifier(this, Engine, buffer);
                        break;
                    }
                }
            }

            if (res != null)
            {
                buffer.Properties.AddProperty(typeof(IDlrClassifier), res);
            }

            return(res);
        }
예제 #2
0
        public IClassifier GetClassifier(ITextBuffer buffer)
        {
            IDlrClassifier existing;
            if (buffer.Properties.TryGetProperty<IDlrClassifier>(typeof(IDlrClassifier), out existing)) {
                return existing;
            }

            if (_categoryMap == null) {
                _categoryMap = FillCategoryMap(_classificationRegistry);
            }
            var specificContentType = ContentType;

            DlrClassifier res = null;
            if (specificContentType == null || buffer.ContentType == specificContentType) {
                res = new DlrClassifier(this, Engine, buffer);
            } else {

                foreach (var baseType in buffer.ContentType.BaseTypes) {
                    if (baseType == specificContentType) {
                        res = new DlrClassifier(this, Engine, buffer);
                        break;
                    }
                }
            }

            if (res != null) {
                buffer.Properties.AddProperty(typeof(IDlrClassifier), res);
            }

            return res;
        }