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(); }
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(); }
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); }
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 } }
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); }
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(); }
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); }
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); }
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(); }
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); }
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); }
private void PerformDiff() { EditorExtensionsPackage.ExecuteCommand("Tools.DiffFiles", "\"" + files[0] + "\" \"" + files[1] + "\""); }