void okButtonClick(object sender, RoutedEventArgs e)
		{
			try {
				if (listBox.SelectedItem == null)
					return;
				object tag = ((GotoEntry)listBox.SelectedItem).Tag;
				if (tag is int) {
					ITextEditor editor = GetEditor();
					if (editor != null) {
						int i = Math.Min(editor.Document.TotalNumberOfLines, Math.Max(1, (int)tag));
						editor.JumpTo(i, int.MaxValue);
					}
				} else if (tag is IClass) {
					IClass c = tag as IClass;
					CodeCompletionDataUsageCache.IncrementUsage(c.DotNetName);
					GotoRegion(c.Region, c.CompilationUnit.FileName);
				} else if (tag is IMember) {
					IMember m = tag as IMember;
					CodeCompletionDataUsageCache.IncrementUsage(m.DotNetName);
					GotoRegion(m.Region, m.DeclaringType.CompilationUnit.FileName);
				} else if (tag is FileLineReference) {
					FileLineReference flref = (FileLineReference)tag;
					if (flref.Line <= 0) {
						FileService.OpenFile(flref.FileName);
					} else {
						FileService.JumpToFilePosition(flref.FileName, flref.Line, flref.Column);
					}
				} else {
					throw new NotImplementedException("Unknown tag: " + tag);
				}
			} finally {
				Close();
			}
		}
示例#2
0
        void AddItemIfMatchText(string text, IMember member, int imageIndex)
        {
            string name      = member.Name;
            int    matchType = GetMatchType(text, name);

            if (matchType >= 0)
            {
                AddItem(member, imageIndex, CodeCompletionDataUsageCache.GetPriority(member.DotNetName, true), matchType);
            }
        }
示例#3
0
        void AddItemIfMatchText(string text, IMember member, int imageIndex)
        {
            string name = member.Name;

            if (name.Length >= text.Length)
            {
                if (text.Equals(name.Substring(0, text.Length), StringComparison.OrdinalIgnoreCase))
                {
                    AddItem(member, imageIndex, CodeCompletionDataUsageCache.GetPriority(member.DotNetName, true));
                }
            }
        }
示例#4
0
 void okButtonClick(object sender, RoutedEventArgs e)
 {
     try {
         if (listBox.SelectedItem == null)
         {
             return;
         }
         object tag = ((GotoEntry)listBox.SelectedItem).Tag;
         if (tag is int)
         {
             ITextEditor editor = GetEditor();
             if (editor != null)
             {
                 int i = Math.Min(editor.Document.LineCount, Math.Max(1, (int)tag));
                 editor.JumpTo(i, int.MaxValue);
             }
         }
         else if (tag is IUnresolvedEntity)
         {
             IUnresolvedEntity c = tag as IUnresolvedEntity;
             CodeCompletionDataUsageCache.IncrementUsage(c.ReflectionName);
             GotoRegion(c.Region);
         }
         else if (tag is IEntity)
         {
             IEntity m = tag as IEntity;
             CodeCompletionDataUsageCache.IncrementUsage(m.ReflectionName);
             GotoRegion(m.Region);
         }
         else if (tag is FileLineReference)
         {
             FileLineReference flref = (FileLineReference)tag;
             if (flref.Line <= 0)
             {
                 FileService.OpenFile(flref.FileName);
             }
             else
             {
                 FileService.JumpToFilePosition(flref.FileName, flref.Line, flref.Column);
             }
         }
         else
         {
             throw new NotImplementedException("Unknown tag: " + tag);
         }
     } finally {
         Close();
     }
 }
 public SnippetCompletionItem(ITextEditor textEditor, CodeSnippet codeSnippet)
 {
     if (textEditor == null)
     {
         throw new ArgumentNullException("textEditor");
     }
     if (codeSnippet == null)
     {
         throw new ArgumentNullException("codeSnippet");
     }
     this.textEditor = textEditor;
     this.textArea   = textEditor.GetService(typeof(TextArea)) as TextArea;
     if (textArea == null)
     {
         throw new ArgumentException("textEditor must be an AvalonEdit text editor");
     }
     this.codeSnippet = codeSnippet;
     this.Priority    = CodeCompletionDataUsageCache.GetPriority("snippet" + codeSnippet.Name, true);
 }
示例#6
0
        public CodeCompletionItem(IEntity entity, IProjectContent projectContent)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }
            _entity         = entity;
            _projectContent = projectContent;

            IAmbience ambience = AmbienceService.GetCurrentAmbience();

            ambience.ConversionFlags = entity is IClass ? ConversionFlags.ShowTypeParameterList : ConversionFlags.None;
            Text    = entity.Name;
            Content = ambience.Convert(entity);

            Overloads = 1;

            Priority = CodeCompletionDataUsageCache.GetPriority(entity.DotNetName, true);
        }
        public void Complete(CompletionContext context)
        {
            if (context.Editor != this.textEditor)
            {
                throw new ArgumentException("wrong editor");
            }

            CodeCompletionDataUsageCache.IncrementUsage("snippet" + codeSnippet.Name);

            using (context.Editor.Document.OpenUndoGroup()) {
                if (context.CompletionChar == '\t' || AlwaysInsertSnippet)
                {
                    codeSnippet.TrackUsage("SnippetCompletionItem");

                    context.Editor.Document.Remove(context.StartOffset, context.Length);
                    CreateSnippet().Insert(textArea);
                }
                else
                {
                    context.Editor.Document.Replace(context.StartOffset, context.Length, this.Text);
                }
            }
        }
示例#8
0
 void AddItem(IClass c, int matchType)
 {
     AddItem(c, ClassBrowserIconService.GetIcon(c), CodeCompletionDataUsageCache.GetPriority(c.DotNetName, true), matchType);
 }
 public virtual void Complete(CompletionContext context)
 {
     context.Editor.Document.Replace(context.StartOffset, context.Length, this.CompletionText);
     context.EndOffset = context.StartOffset + this.CompletionText.Length;
     CodeCompletionDataUsageCache.IncrementUsage(DisplayText);
 }
 public KeywordCompletionItem(string text)
     : base(text)
 {
     priority = CodeCompletionDataUsageCache.GetPriority("keyword." + Text, true);
 }
 public override void Complete(CompletionContext context)
 {
     CodeCompletionDataUsageCache.IncrementUsage("keyword." + Text);
     base.Complete(context);
 }
示例#12
0
 protected void MarkAsUsed()
 {
     CodeCompletionDataUsageCache.IncrementUsage(_entity.DotNetName);
 }