public override void Invoke()
        {
            Span ruleSpan = new Span(_rule.Start, _rule.Length);

            Sorter sorter = new Sorter();
            string result = null;

            if (_view.TextBuffer.ContentType.IsOfType("LESS"))
            {
                result = sorter.SortLess(_rule.Text);
            }
            else
            {
                result = sorter.SortStyleSheet(_rule.Text);
            }
            //var declarations = _rule.Block.Declarations.OrderBy(d => d.PropertyName, new DeclarationComparer());
            var position = _view.Caret.Position.BufferPosition.Position;

            EditorExtensionsPackage.DTE.UndoContext.Open(DisplayText);

            _span.TextBuffer.Replace(ruleSpan, result);// string.Concat(declarations.Select(d => d.Text)));
            _view.Caret.MoveTo(new SnapshotPoint(_span.TextBuffer.CurrentSnapshot, position));
            EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");

            EditorExtensionsPackage.DTE.UndoContext.Close();
        }
Пример #2
0
        private void InsertEmbedString(ITextSnapshot snapshot, string dataUri)
        {
            EditorExtensionsPackage.DTE.UndoContext.Open(DisplayText);
            Declaration dec = _url.FindType <Declaration>();

            if (dec != null && dec.Parent != null && !(dec.Parent.Parent is FontFaceDirective)) // No declartion in LESS variable definitions
            {
                RuleBlock rule = _url.FindType <RuleBlock>();
                string    text = dec.Text;

                if (dec != null && rule != null)
                {
                    Declaration match = rule.Declarations.FirstOrDefault(d => d.PropertyName != null && d.PropertyName.Text == "*" + dec.PropertyName.Text);
                    if (!text.StartsWith("*") && match == null)
                    {
                        _span.TextBuffer.Insert(dec.AfterEnd, "*" + text + "/* For IE 6 and 7 */");
                    }
                }
            }

            _span.TextBuffer.Replace(_span.GetSpan(snapshot), dataUri);

            EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
            EditorExtensionsPackage.ExecuteCommand("Edit.CollapsetoDefinitions");
            EditorExtensionsPackage.DTE.UndoContext.Close();
        }
Пример #3
0
        private bool Indent()
        {
            int position = _textView.Caret.Position.BufferPosition.Position;


            if (position == 0 || position == _textView.TextBuffer.CurrentSnapshot.Length || _textView.Selection.SelectedSpans[0].Length > 0)
            {
                return(false);
            }

            char before = _textView.TextBuffer.CurrentSnapshot.GetText(position - 1, 1)[0];
            char after  = _textView.TextBuffer.CurrentSnapshot.GetText(position, 1)[0];

            if (before == '{' && after == '}')
            {
                EditorExtensionsPackage.DTE.UndoContext.Open("Smart indent");

                _textView.TextBuffer.Insert(position, Environment.NewLine + '\t');
                SnapshotPoint point = new SnapshotPoint(_textView.TextBuffer.CurrentSnapshot, position);
                _textView.Selection.Select(new SnapshotSpan(point, 4), true);

                EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");

                _textView.Selection.Clear();
                SendKeys.Send("{ENTER}");

                EditorExtensionsPackage.DTE.UndoContext.Close();

                return(true);
            }

            return(false);
        }
Пример #4
0
        private void InsertEmbedString(ITextSnapshot snapshot, string dataUri)
        {
            EditorExtensionsPackage.DTE.UndoContext.Open(DisplayText);
            Declaration dec = _url.FindType <Declaration>();

            _span.TextBuffer.Replace(_span.GetSpan(snapshot), dataUri);

            EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
            EditorExtensionsPackage.ExecuteCommand("Edit.CollapsetoDefinitions");
            EditorExtensionsPackage.DTE.UndoContext.Close();
        }
 public void Redo()
 {
     try
     {
         EditorExtensionsPackage.ExecuteCommand("Edit.Redo");
         EditorExtensionsPackage.DTE.ActiveDocument.Save();
     }
     catch
     {
         // Do nothing
     }
 }
Пример #6
0
        private ITextSelection UpdateTextBuffer(Span zenSpan, string result)
        {
            TextView.TextBuffer.Replace(zenSpan, result);

            SnapshotPoint point    = new SnapshotPoint(TextView.TextBuffer.CurrentSnapshot, zenSpan.Start);
            SnapshotSpan  snapshot = new SnapshotSpan(point, result.Length);

            TextView.Selection.Select(snapshot, false);

            EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");

            return(TextView.Selection);
        }
Пример #7
0
        public override void Invoke()
        {
            StringBuilder sb = new StringBuilder();

            foreach (var entry in _missingPseudos)
            {
                string text = _selector.Text.Replace(_pseudo.Text, entry).Trim(',');
                sb.Append(text + "," + Environment.NewLine);
            }

            EditorExtensionsPackage.DTE.UndoContext.Open(DisplayText);
            _span.TextBuffer.Insert(_selector.Start, sb.ToString());
            EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
            EditorExtensionsPackage.DTE.UndoContext.Close();
        }
Пример #8
0
        private static void AddMetaTag(int index)
        {
            Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
            {
                var view   = ProjectHelpers.GetCurentTextView();
                var buffer = view.TextBuffer;

                using (EditorExtensionsPackage.UndoContext("Adding <meta> viewport"))
                {
                    buffer.Insert(index, "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />" + Environment.NewLine);
                    view.Caret.MoveTo(new SnapshotPoint(buffer.CurrentSnapshot, index + 31 + 37));
                    view.Selection.Select(new SnapshotSpan(buffer.CurrentSnapshot, 31 + index, 37), false);
                    EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
                }

                EditorExtensionsPackage.DTE.ActiveDocument.Save();
            }), DispatcherPriority.ApplicationIdle, null);
        }
Пример #9
0
        private static void AddMetaTag(int index)
        {
            Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
            {
                var view   = ProjectHelpers.GetCurentTextView();
                var buffer = view.TextBuffer;

                using (EditorExtensionsPackage.UndoContext("Adding <meta> description"))
                {
                    buffer.Insert(index, "<meta name=\"description\" content=\"The description of my page\" />" + Environment.NewLine);
                    view.Caret.MoveTo(new SnapshotPoint(buffer.CurrentSnapshot, index + 34 + 26));
                    view.Selection.Select(new SnapshotSpan(buffer.CurrentSnapshot, 34 + index, 26), false);
                    EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
                }

                EditorExtensionsPackage.DTE.ActiveDocument.Save();
                view.ViewScroller.EnsureSpanVisible(new SnapshotSpan(buffer.CurrentSnapshot, index, 1), EnsureSpanVisibleOptions.AlwaysCenter);
            }), DispatcherPriority.ApplicationIdle, null);
        }
Пример #10
0
        public override void Invoke()
        {
            RuleBlock     rule      = _declaration.FindType <RuleBlock>();
            StringBuilder sb        = new StringBuilder();
            string        separator = rule.Text.Contains("\r") || rule.Text.Contains("\n") ? Environment.NewLine : " ";

            foreach (var entry in _prefixes)
            {
                sb.Append(entry + _declaration.Text + separator);
            }

            EditorExtensionsPackage.DTE.UndoContext.Open(DisplayText);
            _span.TextBuffer.Replace(_span.GetSpan(_span.TextBuffer.CurrentSnapshot), sb.ToString() + _declaration.Text);
            if (separator == Environment.NewLine)
            {
                EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
            }
            EditorExtensionsPackage.DTE.UndoContext.Close();
        }
        private void Update(int start, int end)
        {
            EditorExtensionsPackage.DTE.UndoContext.Open("Surround with...");

            using (var edit = _buffer.CreateEdit())
            {
                edit.Insert(end, "</p>");
                edit.Insert(start, "<p>");
                edit.Apply();
            }

            SnapshotPoint point = new SnapshotPoint(_buffer.CurrentSnapshot, start + 1);

            _view.Caret.MoveTo(point);
            _view.Selection.Select(new SnapshotSpan(_buffer.CurrentSnapshot, point, 1), false);
            EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");

            EditorExtensionsPackage.DTE.UndoContext.Close();
        }
Пример #12
0
        private bool Jump()
        {
            if (!EnsureInitialized())
            {
                return(false);
            }

            int       position = _textView.Caret.Position.BufferPosition.Position;
            ParseItem item     = _tree.StyleSheet.ItemBeforePosition(position);

            if (item != null)
            {
                RuleBlock   rule = item.FindType <RuleBlock>();
                Declaration dec  = item.FindType <Declaration>();

                if (rule != null && dec != null)
                {
                    CommitStatementCompletion();

                    var    line = _textView.TextSnapshot.GetLineFromPosition(position);
                    string text = line.Extent.GetText().TrimEnd();

                    if (!string.IsNullOrWhiteSpace(text) && !text.EndsWith(";"))
                    {
                        using (ITextEdit edit = _textView.TextBuffer.CreateEdit())
                        {
                            edit.Replace(line.Extent, text + ";");
                            edit.Apply();
                        }
                    }

                    EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");

                    SnapshotPoint point = new SnapshotPoint(_textView.TextBuffer.CurrentSnapshot, rule.AfterEnd);
                    _textView.Caret.MoveTo(point);
                    _textView.ViewScroller.EnsureSpanVisible(new SnapshotSpan(point, 0));
                    return(true);
                }
            }

            return(false);
        }
Пример #13
0
        public override void Invoke()
        {
            Sorter sorter = new Sorter();

            if (_view.TextBuffer.ContentType.IsOfType("LESS"))
            {
                sorter.SortLess(_rule.Text);
            }
            else
            {
                sorter.SortStyleSheet(_rule.Text);
            }

            var position = _view.Caret.Position.BufferPosition.Position;

            EditorExtensionsPackage.DTE.UndoContext.Open(DisplayText);

            _view.Caret.MoveTo(new SnapshotPoint(_span.TextBuffer.CurrentSnapshot, position));
            EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");

            EditorExtensionsPackage.DTE.UndoContext.Close();
        }
        private void UpdateTextBuffer(string fileName)
        {
            int    position = TextView.Caret.Position.BufferPosition.Position;
            string relative = FileHelpers.RelativePath(ProjectHelpers.GetRootFolder() ?? "/", fileName);
            string text     = string.Format(CultureInfo.InvariantCulture, _format, relative);

            using (EditorExtensionsPackage.UndoContext("Insert Image"))
            {
                TextView.TextBuffer.Insert(position, text);

                try
                {
                    SnapshotSpan span = new SnapshotSpan(TextView.TextBuffer.CurrentSnapshot, position, _format.Length);
                    TextView.Selection.Select(span, false);

                    EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
                    TextView.Selection.Clear();
                }
                catch
                {
                    // Try to format the selection. Some editors handle this differently, so try/catch
                }
            }
        }
        protected override bool Execute(uint commandId, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
        {
            if (TextView == null)
            {
                return(false);
            }

            CssEditorDocument document = CssEditorDocument.FromTextBuffer(TextView.TextBuffer);

            int       position = TextView.Caret.Position.BufferPosition.Position;
            ParseItem item     = document.Tree.StyleSheet.ItemBeforePosition(position);

            ParseItem rule       = LessExtractVariableCommandTarget.FindParent(item);
            int       mixinStart = rule.Start;
            string    name       = Microsoft.VisualBasic.Interaction.InputBox("Name of the Mixin", "Web Essentials");

            if (!string.IsNullOrEmpty(name))
            {
                EditorExtensionsPackage.DTE.UndoContext.Open("Extract to mixin");

                var    selection = TextView.Selection.SelectedSpans[0];
                string text      = selection.GetText();
                TextView.TextBuffer.Replace(selection.Span, "." + name + "();");
                TextView.TextBuffer.Insert(rule.Start, "." + name + "() {" + Environment.NewLine + text + Environment.NewLine + "}" + Environment.NewLine + Environment.NewLine);

                TextView.Selection.Select(new SnapshotSpan(TextView.TextBuffer.CurrentSnapshot, mixinStart, 1), false);
                EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
                TextView.Selection.Clear();

                EditorExtensionsPackage.DTE.UndoContext.Close();

                return(true);
            }

            return(false);
        }
Пример #16
0
 private void PerformDiff()
 {
     EditorExtensionsPackage.ExecuteCommand("Tools.DiffFiles", "\"" + files[0] + "\" \"" + files[1] + "\"");
 }