On 03/20/2016 12:49 PM, Dmitry Gutov wrote: > On 03/20/2016 09:47 PM, Jostein Kjønigsen wrote: > >>> diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el >>> index 15a52ba..dffdb77 100644 >>> --- a/lisp/progmodes/js.el >>> +++ b/lisp/progmodes/js.el >>> @@ -578,6 +578,7 @@ js-mode-syntax-table >>> (c-populate-syntax-table table) >>> (modify-syntax-entry ?$ "_" table) >>> (modify-syntax-entry ?` "\"" table) >>> + (modify-syntax-entry ?\C-M " " table) >>> table) >>> "Syntax table for `js-mode'.") >>> >> >> That works for me, at least in js-mode. >> >> While not a general solution to all weird files one might encounter >> while working in Emacs, it at least makes js-files behave as expected. >> And in a fairly reusable manner too: I can copy this code and I'm home >> free. >> >> Would pushing this up to cc-mode's c-populate-syntax-table function also >> be considered an option? Or does that just sound on overall way too >> risky? > > I don't see any problem there, but that's up to Alan. It don't have any problem teaching specific modes about carriage returns, but this approach doesn't scale. A better approach, I think, would be to extend something like ws-butler for dealing with mixed-line-ending files. On load, we'd transform `\r\n' -> `\n', but *remember* which `\n's represent `\r\n` and perform the reverse translation when writing. This way, you'd preserve clowny extra carriage returns from other people, but see a clean, unified view in Emacs.