On Fri, Jul 14, 2023, 3:44 AM Grisha Levit <grishale...@gmail.com> wrote:
> On Fri, Jul 14, 2023 at 3:44 AM Martin D Kealey <mar...@kurahaupo.gen.nz> > wrote: > > > > On the whole I think this is great, and thankyou for working up the > patch, but I would like to offer some comments and suggestions: > > Thanks for looking at it, feedback very much appreciated. > > > One option that some other languages use is to find the terminator, and > then use its indentation as the pattern to remove from the content lines. > The problem of course is that it would take a double run over the content, > but the benefit is that there'd only be one in-band signaling line instead > of two. > > I agree, this would be useful functionality, would be interested in > seeing your implementation. > > > Secondly, the battle for 8-space tabs has been well and truly lost at > this point, so hard-coding that constant feels like it's likely to be a > source of errors. > > > > In order to be tab-agnostic, I can see two reasonable options: > > 1. remove only an exact match for the sequence of whitespace characters > that occurs in the indicator line > > I think a problem with this is that a coding style using mixed > tabs/spaces (such as the bash source..) would have > > foo > EOF > > saved as: > > [tab]foo > [spc][spc][spc][spc][spc][spc]EOF > > > so I don't think it's feasible to record the indent level as a fixed > tab/space mix if we are to allow indentation deeper into the heredoc > using the document's native style, at least not without ending up back > at the problem of needing to pick a tab stop width to use. > > Personally, I don't use this indentation style (but don't wish to > precipitate an argument everyone is surely tired of) so I don't have > much of an opinion on what would be useful here. One slight point in > favor of keeping the 8-space wide tab approach is that this is how > readline renders literal tabs as well. > Would a declared spaces-per-level indent amount be useful? Something like <<4# that would be the script writer's responsibility to conform to since they set it. This might be in addition to the already proposed <<#. >