{"items": [{"author": "Sam", "source_link": "https://www.facebook.com/jefftk/posts/228532080591342?comment_id=228533710591179", "anchor": "fb-228533710591179", "service": "fb", "text": "I keep auto-fill-mode on in most modes, and set toggle-truncate-lines to the not-default mos of the times, and don't really mind much.", "timestamp": "1337564647"}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://www.facebook.com/jefftk/posts/228532080591342?comment_id=228535580590992", "anchor": "fb-228535580590992", "service": "fb", "text": "@Sam: I'm working on an existing codebase that's all wrapped at 80 columns.  It bugs me that emacs requires 81 column terminals if I want to always see these as whole lines.", "timestamp": "1337564956"}, {"author": "Devon", "source_link": "https://www.facebook.com/jefftk/posts/228532080591342?comment_id=228560873921796", "anchor": "fb-228560873921796", "service": "fb", "text": "Vim", "timestamp": "1337569321"}, {"author": "Andrew", "source_link": "https://www.facebook.com/jefftk/posts/228532080591342?comment_id=228565167254700", "anchor": "fb-228565167254700", "service": "fb", "text": "Back in the days of 80-column terminals (before bitmapped windows and everyone just emulating xterms), there were dozens and hundreds of crt terminals (and before that, paper terminals too), and many of them were 80 columns wide (following the punched-card model), and there was no fixed method of dealing with what happened when you send a stream of more than 80 \"printing characters\" to the display (not counting tabs or control characters, just stick to alphanum and space).  Especially in the early days, the behavior was hard wired with hard wires.  It was not software, and it was not easy to just change it, and different hardware designers decided on different behaviors.  And so termcap/terminfo were born.<br><br>Now let's say you send streams of numerals, 1234567890, 8 times to fill a line.  Let's say you send another 1.  Where does it go?  Next line?  May be obvious to you that this is correct, but it's not the only choice.  Also possible is just piling up the characters in the last column.  Also possible is just eating the characters until you throw a cr).  Note that in those days, cr and lf were two different characters with two different functions, emulating the separate functions of cr and lf on a typewriter.  It was not unsual to play tricks by using cr and lf without their natural partners.  Usually cr and lf went together, but sometimes it was lf and cr.<br><br>And let's say you send the 80 characters (8 sets of 1-0 again) and then send a crlf?  I *know* what you *mean.*  You want me to start on the next line.  But no, the algorithm says  look, when i get 80, the 81st is going on the next line, and that's where the flashing cursor is *before* I print.  So the cursor is already in the new line first column, and you send *another* crlf?  that's a new (blank) line!<br><br>Anyway, RMS probably looked at the various methods of dealing with line wrapping and he chose one that he liked, and he probably has a very good reason for it that may not be intuitive, but is arguably correct.", "timestamp": "1337570118"}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://www.facebook.com/jefftk/posts/228532080591342?comment_id=228733263904557", "anchor": "fb-228733263904557", "service": "fb", "text": "@Andrew: I don't think this is from the constraints of physical terminals.  All the rules you're describing differed between terminals and emacs needs to be able to work with any of them.  Once you have support for multiple ways of dealing with line wrapping on a terminal you can make your program act however you want.  It's a little bit harder to make it only start wrapping when it sees text in column 81 instead of column 80, but you can do it as long as you have support for arbitrary cursor movements.<br><br>(I have a physical terminal, 80x25, but I don't use it on this codebase.  Emacs works great on it, though.)", "timestamp": "1337606928"}, {"author": "Andrew", "source_link": "https://www.facebook.com/jefftk/posts/228532080591342?comment_id=228977400546810", "anchor": "fb-228977400546810", "service": "fb", "text": "Jeff, I agree that emacs is no longer constrained by 80 column terminals, but I am fairly sure that the design of its line wrapping is influenced by them, and perhaps the defaults are vestigial.  Re the way it does things, I think it has a default and a few options, have you seen:<br><br>http://emacswiki.org/emacs/LineWrap<br><br>In my experience, if emacs doesn't work the way you like there's usually a mode you can change to fix it.<br><br>I am not an emacs user these days.  I was an emacs (and teco) user in the 70s on PDP10s, but when I became a UNIX hacker back then, UNIX had no full-screen editor, so I switched to ed and then, when it was written, vi, and so, now usually vim.  My choice of vi was mostly because it was available and became mature on UNIX a bit before emacs did, and on small address-space PDP11s, vi was less of a memory-hog than emacs was.  And there were two different incompatible ports of emacs on UNIX (Gosling and Zimmermann/CCA), and as I recall, they were meant to be customized and didn't work so well without init (rc) files, so vi was just simpler.  (This was all before GNU emacs).<br><br>I have not much religious preference between vim and emacs, though I know many do.", "timestamp": "1337639015"}]}