Example #1
0
 public override bool Walk(DottedName node)
 {
     if (base.Walk(node))
     {
         string totalName = null;
         foreach (var n in node.Names.MaybeEnumerate())
         {
             if (n?.Name == null)
             {
                 break;
             }
             if (Location >= n.StartIndex && Location <= n.EndIndex)
             {
                 if (totalName == null)
                 {
                     Expression = n;
                 }
                 else
                 {
                     Expression = new NameExpression(totalName + n.Name);
                     Expression.SetLoc(node.StartIndex, n.EndIndex);
                 }
                 break;
             }
             totalName = (totalName ?? "") + n.Name + ".";
         }
     }
     return(false);
 }
Example #2
0
 public override bool Walk(MemberExpression node)
 {
     if (Save(node, base.Walk(node), _options.Members && Location >= node.NameHeader))
     {
         if (_options.MemberName && Location >= node.NameHeader)
         {
             var nameNode = new NameExpression(node.Name);
             nameNode.SetLoc(node.NameHeader, node.EndIndex);
             Expression = nameNode;
         }
         return(true);
     }
     return(false);
 }
Example #3
0
 public override bool Walk(MemberExpression node)
 {
     if (base.Walk(node))
     {
         if (_options.MemberName && Location > node.DotIndex && _endLocation <= node.EndIndex)
         {
             var nameNode = new NameExpression(node.Name);
             nameNode.SetLoc(node.NameHeader, node.EndIndex);
             Expression = nameNode;
             return(false);
         }
         else if (_options.Members)
         {
             Expression = node;
         }
         return(true);
     }
     return(false);
 }
 private IEnumerable <CompletionItem> GetCompletionsFromMembers(ref GetMemberOptions opts)
 {
     if (Node is MemberExpression me && me.Target != null && me.DotIndex > me.StartIndex && Index > me.DotIndex)
     {
         _log.TraceMessage($"Completing expression {me.Target.ToCodeString(Tree, CodeFormattingOptions.Traditional)}");
         ParentExpression = me.Target;
         if (!string.IsNullOrEmpty(me.Name))
         {
             Node = new NameExpression(me.Name);
             Node.SetLoc(me.NameHeader, me.NameHeader + me.Name.Length);
         }
         else
         {
             Node = null;
         }
         ShouldCommitByDefault = true;
         return(Analysis.GetMembers(me.Target, Position, opts, null).Select(ToCompletionItem));
     }
     return(null);
 }
Example #5
0
            private bool Save(int startIndex, bool baseWalk, string keyword)
            {
                if (!baseWalk)
                {
                    return(false);
                }

                if (startIndex < 0)
                {
                    return(true);
                }

                if (_endLocation <= startIndex + keyword.Length)
                {
                    var ne = new NameExpression(keyword);
                    ne.SetLoc(startIndex, startIndex + keyword.Length);
                    Expression = ne;
                    return(false);
                }

                return(true);
            }