Index: ClangFormatPackage.cs =================================================================== --- ClangFormatPackage.cs +++ ClangFormatPackage.cs @@ -326,7 +326,13 @@ string filePath = Vsix.GetDocumentPath(view); var path = Path.GetDirectoryName(filePath); + string text = view.TextBuffer.CurrentSnapshot.GetText(); + if (!text.EndsWith(Environment.NewLine)) + { + view.TextBuffer.Insert(view.TextBuffer.CurrentSnapshot.Length, Environment.NewLine); + text += Environment.NewLine; + } RunClangFormatAndApplyReplacements(text, 0, text.Length, path, filePath, options, view); } @@ -436,15 +442,17 @@ return; var root = XElement.Parse(replacements); - var edit = view.TextBuffer.CreateEdit(); - foreach (XElement replacement in root.Descendants("replacement")) + using (var edit = view.TextBuffer.CreateEdit()) { - var span = new Span( - int.Parse(replacement.Attribute("offset").Value), - int.Parse(replacement.Attribute("length").Value)); - edit.Replace(span, replacement.Value); + foreach (XElement replacement in root.Descendants("replacement")) + { + var span = new Span( + int.Parse(replacement.Attribute("offset").Value), + int.Parse(replacement.Attribute("length").Value)); + edit.Replace(span, replacement.Value); + } + edit.Apply(); } - edit.Apply(); } } }