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

Lex Trotman elextr at xxxxx
Sat Oct 16 11:37:29 UTC 2010


On 16 October 2010 22:11, Eugene Arshinov <earshinov at gmail.com> wrote:
> 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.

Ok, so wc counts newlines, not lines, I can't say I've looked that
closely at it (or its documentation :-).  But this argues that if the
option is set then Geany is correct in adding a newline, then it would
count right. But that is just one tool.

I think we are, as we say here, getting our wires a bit crossed.

What I'm expressing badly is that if a file ends in a newline you can
consider that there is nothing after that, or you can consider that it
has an empty unterminated line after the newline. Similarly an empty
file has no lines or it has one unterminated empty line.  Geany takes
the empty unterminated line view, since a new "untitled" shows one
line on screen.  But neither interpretation is "right", it depends on
what you are using the file for and what the tools expect.

My argument is that, if someone (eg me) selects that I want my file to
end in newline (which is what the preference says) then thats what it
should do, irrespective of any interpretation or the length of the
file.

>
>> 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.


Oh Ok fine, I'm not at my development machine with all Geany source.

Cheers
Lex

>
> Best regards,
> Eugene.
> _______________________________________________
> Geany-devel mailing list
> Geany-devel at uvena.de
> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
>



More information about the Devel mailing list