Subject: Re: bug#19946: 24.4; js-mode, indentation

From: Daniel Colascione <[email-masked]>
Date: Sun, 20 Mar 2016 12:02:48 -0700

On 03/20/2016 12:01 PM, Jostein Kjønigsen wrote:
> On Sun, Mar 20, 2016, at 02:27 AM, Dmitry Gutov wrote:
>> On 03/20/2016 12:13 AM, Simen Heggestøyl wrote:
>> I do not mind, but I'm not sure if we actually want to support this 
>> usage. There are a lot regexps in lisp/progmodes that use $. There are 
>> several in js-mode, aside from this one.
>>
>> Some modes try to match [\r\n] (like CC Mode), but in general they seem 
>> to be a minority, and even CC Mode doesn't do that consistently.
> 
> I really don't see how that argument makes sense.
> 
> By following the cardinal rule of good software, that is produce the
> least amont of astonishment, cc-mode does what's right: it produces the
> expected outcome, no matter what kind of file it's working with.
> 
> The result: A happy user.
> 
> In my point of view, this should be the aim for all *-modes found in
> Emacs, no matter what its current state of affair or conventions is.
> 
> The solution to this is either a bunch of hacky patches replacing $ with
> \r\n (as above) or actually addressing what's probably the root cause
> (as observed by Andreas)
> 
>> I wonder why ?\r doesn't have whitespace syntax in the first place.
> 
> Make ?\r be interpreted as white-space, because once you put Emacs
> outside a GNU/Linux system honestly nothing else makes sense. Is there
> any specific reason for its current behaviour?
> 
> Or put the other way: Are there known pieces of code which depends on \r
> semantically not being white-space to function correctly?
> 
> As someone authoring two major modes, every time $ does not work as
> expected and I need to write hacks, it breaks my heart. As of now, I
> can't really use $ if I want my modes to work and that's just silly (but
> at least now I know why).

Line ending divergence is best addressed at the file encoding level, not
the individual mode level. I don't think it's worth while replacing uses
of $ with \r?\n just to address cases in which line ending translation
is broken.