[Geany-devel] "Ensure new line on file end" inserts new line when file is empty

Eugene Arshinov earshinov at xxxxx
Sat Oct 16 11:11:36 UTC 2010


On Sat, 16 Oct 2010 22:04:33 +1100%
Lex Trotman <elextr at gmail.com> wrote:

> On 16 October 2010 21:39, Eugene Arshinov <earshinov at gmail.com> wrote:
> > On Sat, 16 Oct 2010 21:06:12 +1100%
> > Lex Trotman <elextr at gmail.com> wrote:
> >
> >> On 16 October 2010 19:52, Eugene Arshinov <earshinov at gmail.com>
> >> wrote:
> >> > On Sat, 16 Oct 2010 17:49:27 +1100%
> >> > Lex Trotman <elextr at gmail.com> wrote:
> >> >
> >> >> Hi Eugene,
> >> >>
> >> >> I'm not sure it is a bug, the pref setting is there is to ensure
> >> >> that the file ends in a newline, so an empty file will become
> >> >> just a new line (see od below).  Thats working correctly AFAICT.
> >> >>
> >> >> lex at fred5 ~ $ od untitled
> >> >> 0000000 000012
> >> >> 0000001
> >> >>
> >> >> Cheers
> >> >> Lex
> >> >>
> >> >
> >> > Hi.
> >> >
> >> > Yes, of course it's logical that newline is always added, even
> >> > for empty files.  But it becomes that for non-empty files you
> >> > get one empty line at the end, for empty files -- two empty
> >> > lines.  It's not quite useful and (IMHO) bad.
> >>
> >> Well, if the file ends in a newline it will always appear as an
> >> empty line at the end even though there is nothing after the
> >> newline, the only way to avoid it is to not end in newline.  If
> >> you don't like the blank line, delete the newline ... and turn off
> >> the preference so Geany won't add it back again ;-)
> >
> > No, I like a new line, but not two of them :D
> >
> >>
> >> But there are some things that REQUIRE the file to end in newline,
> >> and IIUC that is what the "ensure newline at file end" preference
> >> is for, it has to add the newline.  So it isn't a bug if the
> >> preference is selected.
> >>
> >
> > We may consider `wc -l' as an example.  It (at least, the version I
> > have) accounts the last line only if it ends with \n.  With the
> > option turned on, if a user creates an empty file with Geany and
> > saves it, wc of course says it contains 1 line.  I would prefer the
> > file staying really empty and wc returning 0 lines.  Note that I
> > have to keep the option turned on to keep wc working properly in
> > "usual" cases.
> >
> 
> I'm a bit confused, why turn on the preference in that case?

If I turn it off and write some text, for example

  int main(int argc, char **argv){
    return 0;
  }

, and do not manually insert a newline, wc -l will return 2 which (I
believe) would be incorrect as there are 3 lines of code here.

> What I
> don't see is your patch checking the preference?

The function is called only when the preference is turned on.  See
document_save_file() where editor_ensure_final_newline() is called.

Best regards,
Eugene.



More information about the Devel mailing list