<div dir="ltr">(Issues reported by an Android partner; basically "vi" with no arguments<br>is broken, and "vi foo" where foo doesn't yet exist is broken, and even<br>if they weren't, ":w filename" isn't implemented. This patch fixes the<br>last of those more convincingly than the other two.)<br><br>Don't crash (or write '(null).swp') when started with no filename;<br>refuse to write without a filename (with ":w filename" being the<br>workaround).<br><br>Also fix insert to work when started with a filename where no such file<br>yet exists. (This appears to still be buggy in some cases, depending<br>on the exact sequence of editing operations performed. An 'i' followed<br>by an 'A' for example suggests that there's an off-by-one in the whole<br>block_list/slice_list thing. I still think we should just replace that<br>with an easy to get right <a href="https://en.wikipedia.org/wiki/Gap_buffer">https://en.wikipedia.org/wiki/Gap_buffer</a><br>instead, or even just the trivial case where the gap is always at the<br>end! Especially when we come to dealing with stuff like undo/redo...)<br><br>Also add basic error reporting similar to hexedit. This (and the notion<br>of a status line that would help make both even better, in particular<br>removing the bogus "should be long enough" sleeps, should probably end<br>up in tty.c, but this is better than nothing.)<br><br>Also simplify the three (0/1/-1) return values from run_ex_cmd(),<br>which appears to have been a bug anyway.<br><br>Also document that TT.modified isn't actually updated (a bug that would<br>be a lot easier to fix with a simpler text representation). This means<br>that although I've added the missing ":q" warning for modified files, it<br>doesn't actually ever fire yet.<br><br>Bug: <a href="https://issuetracker.google.com/242636400">https://issuetracker.google.com/242636400</a><br>---<br> toys/pending/vi.c | 114 +++++++++++++++++++++++++++++-----------------<br> 1 file changed, 71 insertions(+), 43 deletions(-)<br></div>