Пример #1
0
        private static void InsertText(IWpfTextView view, DTE2 dte, string text)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            try
            {
                dte.UndoContext.Open("Generate text");

                using (Microsoft.VisualStudio.Text.ITextEdit edit = view.TextBuffer.CreateEdit())
                {
                    if (!view.Selection.IsEmpty)
                    {
                        edit.Delete(view.Selection.SelectedSpans[0].Span);
                        view.Selection.Clear();
                    }

                    edit.Insert(view.Caret.Position.BufferPosition, text);
                    edit.Apply();
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Write(ex);
            }
            finally
            {
                dte.UndoContext.Close();
            }
        }
Пример #2
0
        private static bool RemoveTextInTextView(Microsoft.VisualStudio.Text.ITextEdit edit, string text, string pattern)
        {
            var match = Regex.Match(text, pattern);

            if (match.Success)
            {
                edit.Delete(match.Index, match.Length);
            }

            return(true);
        }
Пример #3
0
        void UpdateLinkText(TextLink link, Microsoft.VisualStudio.Text.ITextEdit edit)
        {
            for (int i = 0; (i < link.Links.Count); ++i)
            {
                var s      = link.Links[i];
                int offset = s.Offset + baseOffset;
                if (offset < 0 || s.Length < 0 || offset + s.Length > Editor.Document.Length)
                {
                    // This should never happen since it implies a corrupted link/bad update following a text change.
                    continue;
                }

                var span = new Microsoft.VisualStudio.Text.Span(offset, s.Length);
                if (edit.Snapshot.GetText(span) != link.CurrentText)
                {
                    edit.Replace(span, link.CurrentText);
                }
            }
        }
Пример #4
0
 void UpdateTextLink(TextLink link, Microsoft.VisualStudio.Text.ITextEdit edit)
 {
     if (link.GetStringFunc != null)
     {
         link.Values = link.GetStringFunc(GetStringCallback);
     }
     if (!link.IsEditable && link.Values != null && link.Values.Count > 0)
     {
         link.CurrentText = (string)link.Values [link.Values.Count - 1];
     }
     else
     {
         if (!link.PrimaryLink.IsInvalid())
         {
             int offset = link.PrimaryLink.Offset + baseOffset;
             if (offset >= 0 && link.PrimaryLink.Length >= 0)
             {
                 link.CurrentText = Editor.Document.GetTextAt(offset, link.PrimaryLink.Length);
             }
         }
     }
     UpdateLinkText(link, edit);
 }
        public DragDropPointerEffects HandleDataDropped(DragDropInfo dragDropInfo)
        {
            Microsoft.VisualStudio.Text.SnapshotPoint position = dragDropInfo.VirtualBufferPosition.Position;
            var doc = SpriteDocument.FromJSON(_view.TextBuffer.CurrentSnapshot.GetText(), _documentFileName);

            string ident = SpriteHelpers.GetIdentifier(_draggedFileName);
            string file  = SpriteHelpers.MakeRelative(_documentFileName, _draggedFileName);

            if (doc.Images.ContainsKey(ident))
            {
                ident += "_" + Guid.NewGuid().ToString().Replace("-", string.Empty);
            }

            doc.Images.Add(new KeyValuePair <string, string>(ident, file));

            using (Microsoft.VisualStudio.Text.ITextEdit edit = _view.TextBuffer.CreateEdit())
            {
                edit.Replace(0, _view.TextBuffer.CurrentSnapshot.Length, doc.ToJsonString());
                edit.Apply();
            }

            return(DragDropPointerEffects.Copy);
        }
Пример #6
0
 public void WriteToTextViewer(string codeToWrite, IWpfTextView viewer, int offset)
 {
     Microsoft.VisualStudio.Text.ITextEdit ie = viewer.Selection.TextView.TextBuffer.CreateEdit();
     ie.Insert(offset, codeToWrite);
     ie.Apply();
 }