当前位置: 首页>>代码示例>>C#>>正文


C# DocumentRange.IsValid方法代码示例

本文整理汇总了C#中DocumentRange.IsValid方法的典型用法代码示例。如果您正苦于以下问题:C# DocumentRange.IsValid方法的具体用法?C# DocumentRange.IsValid怎么用?C# DocumentRange.IsValid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DocumentRange的用法示例。


在下文中一共展示了DocumentRange.IsValid方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: PostfixTemplateAcceptanceContext

        public PostfixTemplateAcceptanceContext([NotNull] ITreeNode reference,
      [NotNull] ICSharpExpression expression, DocumentRange replaceRange,
      bool forceMode, [NotNull] PostfixExecutionContext context)
        {
            myReparsedContext = context.ReparsedContext;
              myMostInnerExpression = expression;
              PostfixReferenceNode = reference;
              ForceMode = forceMode;
              PsiModule = context.PsiModule;
              LookupItemsOwner = context.LookupItemsOwner;
              MostInnerReplaceRange = replaceRange;

              if (!replaceRange.IsValid())
              {
            var referenceExpression = reference as IReferenceExpression;
            if (referenceExpression != null)
            {
              MostInnerReplaceRange =
            ToDocumentRange(referenceExpression.QualifierExpression.NotNull()).SetEndTo(
              ToDocumentRange(referenceExpression.Delimiter.NotNull()).TextRange.EndOffset);
            }

            var referenceName = reference as IReferenceName;
            if (referenceName != null)
            {
              MostInnerReplaceRange =
            ToDocumentRange(referenceName.Qualifier).SetEndTo(
              ToDocumentRange(referenceName.Delimiter).TextRange.EndOffset);
            }
              }

              // build expression contexts
              var expressionContexts = new List<PrefixExpressionContext>();
              var endOffset = Math.Max(
            MostInnerReplaceRange.TextRange.EndOffset,
            ToDocumentRange(reference).TextRange.EndOffset);

              for (ITreeNode node = expression; node != null; node = node.Parent)
              {
            if (node is ICSharpStatement) break;

            var expr = node as ICSharpExpression;
            if (expr == null || expr == reference) continue;

            var exprRange = myReparsedContext.ToDocumentRange(expr);
            if (!exprRange.IsValid())
              break; // stop when out of generated
            if (exprRange.TextRange.EndOffset > endOffset)
              break; // stop when 'a.var + b'

            // skip relational expressions like this: 'List<int.{here}>'
            if (CommonUtils.IsRelationalExpressionWithTypeOperand(expr)) continue;

            var expressionContext = new PrefixExpressionContext(this, expr);
            if (expressionContext.ReferencedElement is ITypeElement)
            {
              // skip types that are parts of 'List<T.>'-like expressions
              if (!CommonUtils.CanTypeBecameExpression(expression)) continue;
            }

            expressionContexts.Add(expressionContext);
            if (expressionContext.CanBeStatement) break;
              }

              Expressions = (expressionContexts.Count == 0)
            ? EmptyList<PrefixExpressionContext>.InstanceList
            : expressionContexts.AsReadOnly();
        }
开发者ID:Excelion,项目名称:PostfixCompletion,代码行数:68,代码来源:PostfixTemplateAcceptanceContext.cs

示例2: Translate

		public TreeTextRange Translate(DocumentRange documentRange) {
			if (!documentRange.IsValid()
			|| _sourceFile == null
			|| !_sourceFile.IsValid())
				return TreeTextRange.InvalidRange;

			if (documentRange.Document != _sourceFile.Document) {
				foreach (IT4Include include in _includes) {
					if (include.DocumentRangeTranslator != null) {
						TreeTextRange textRange = include.DocumentRangeTranslator.Translate(documentRange);
						if (textRange.IsValid())
							return textRange;
					}
				}
				return TreeTextRange.InvalidRange;
			}

			TextRange range = documentRange.TextRange;
			TreeOffset rootStartOffset = _root.GetTreeStartOffset();

			// no includes, tree and document are matching
			if (_includes.Count == 0)
				return new TreeTextRange(rootStartOffset + range.StartOffset, rootStartOffset + range.EndOffset);

			TreeOffset startOffset = Translate(range.StartOffset);
			if (!startOffset.IsValid())
				return TreeTextRange.InvalidRange;

			TreeOffset endOffset = Translate(range.EndOffset);
			if (!endOffset.IsValid())
				return TreeTextRange.InvalidRange;
			
			return new TreeTextRange(startOffset, endOffset);
		}
开发者ID:mnaoumov,项目名称:ForTea,代码行数:34,代码来源:T4DocumentRangeTranslator.cs

示例3: FindDeclaredElement

		private DeclaredElementInfo FindDeclaredElement(DocumentRange documentRange) {
			IDocument document = documentRange.Document;
			if (document == null || !documentRange.IsValid())
				return null;
			
			IPsiServices psiServices = _solution.GetPsiServices();
			if (!psiServices.Files.AllDocumentsAreCommitted || psiServices.Caches.HasDirtyFiles)
				return null;

			return document
				.GetPsiSourceFiles(_solution)
				.SelectMany(
					psiSourceFile => psiServices.Files.GetPsiFiles(psiSourceFile, documentRange),
					(psiSourceFile, file) => FindDeclaredElement(documentRange, file))
				.FirstOrDefault(info => info != null && info.DeclaredElement.IsValid());
		}
开发者ID:ShaunTGO,项目名称:ReSharper.EnhancedTooltip,代码行数:16,代码来源:IdentifierTooltipContentProvider.cs


注:本文中的DocumentRange.IsValid方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。