diff --git a/YesNt.CodeEditor/Editor.cs b/YesNt.CodeEditor/Editor.cs index 325d51f..b179d83 100644 --- a/YesNt.CodeEditor/Editor.cs +++ b/YesNt.CodeEditor/Editor.cs @@ -114,10 +114,7 @@ namespace YesNt.CodeEditor } Lines.Clear(); - foreach (string line in File.ReadAllLines(path)) - { - Lines.Add(line.Replace("\n", "")); - } + Lines.AddRange(File.ReadAllLines(path)); CurrentPath = path; inputHandler.WriteStatus("File Loaded!"); return true; @@ -125,14 +122,6 @@ namespace YesNt.CodeEditor public bool Save(string input, bool loadIfExists) { - string text = ""; - - foreach (string line in Lines) - { - text += line + "\n"; - } - text = text.TrimEnd('\n'); - string path; if (input.Split(' ').Length == 2) { @@ -171,9 +160,14 @@ namespace YesNt.CodeEditor path = Path.ChangeExtension(path, "ynt"); } + while (Lines.Count > 0 && string.IsNullOrWhiteSpace(Lines[Lines.Count - 1])) + { + Lines.RemoveAt(Lines.Count - 1); + } + try { - File.WriteAllText(path, text); + File.WriteAllLines(path, Lines); inputHandler.WriteStatus("File Saved!"); return true; } diff --git a/YesNt.CodeEditor/InputHandler.cs b/YesNt.CodeEditor/InputHandler.cs index eef306b..f8f55a7 100644 --- a/YesNt.CodeEditor/InputHandler.cs +++ b/YesNt.CodeEditor/InputHandler.cs @@ -25,6 +25,21 @@ namespace YesNt.CodeEditor textEditor.EditMode = Mode.Command; break; + case ConsoleKey.B: + int position = textEditor.Lines.Count; + textEditor.CursorPosition.Y = position - 1; + textEditor.LineOffset = Math.Max(position - Console.WindowHeight + 3, 0); + + textEditor.Display(true); + break; + + case ConsoleKey.T: + textEditor.CursorPosition.Y = 0; + textEditor.LineOffset = 0; + + textEditor.Display(true); + break; + case ConsoleKey.S: textEditor.CursorPosition.X = 0; break; @@ -172,6 +187,8 @@ namespace YesNt.CodeEditor string command = input.Split(' ')[0].Trim(); string path; + Console.CursorVisible = false; + switch (command) { case "edit":