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

2010-10-22 Thread Lex Trotman
On 22 October 2010 19:20, Eugene Arshinov earshi...@gmail.com wrote:
 On Wed, 20 Oct 2010 12:42:52 +0100%
 Nick Treleaven nick.trelea...@btinternet.com wrote:

 On Sat, 16 Oct 2010 22:37:29 +1100
 Lex Trotman ele...@gmail.com wrote:

  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.

 I agree.

 Okay, let's forget this issue.  Anyway, how often do you edit empty
 files? :)

 Is it then acceptable that the part of the addons plugin that removes
 trailing blank lines (written by me, btw) currently also removes the
 newline Geany adds to empty file?  It may be a bit confusing (for a
 hypothetical user who edits empty files).  Should it not remove the
 newline, or provide a checkbox for that, or should we leave
 everything as is?  I'd prefer the latter :)

I'd leave everything as is.  There is already a checkbox to turn
on/off the strip trailing blank lines addon and one to turn on/off
the end in EOL' option.  If a user turns on two options that do
opposite things well ... the only real confusion is that the options
are so far apart, but changing that is IMO too much work for the
benefit.

Cheers
Lex


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

___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-20 Thread Nick Treleaven
On Sat, 16 Oct 2010 22:37:29 +1100
Lex Trotman ele...@gmail.com wrote:

 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.

I agree.

Nick
___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-16 Thread Lex Trotman
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.

l...@fred5 ~ $ od untitled
000 12
001

Cheers
Lex

On 16 October 2010 17:19, Eugene Arshinov earshi...@gmail.com wrote:
 I think it's a bug.  I didn't notice it before as I usually use
 addons plugin with Strip trailing blank lines option checked.  Patch
 attached, also modified to use utils_get_eol_char().

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


___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-16 Thread Eugene Arshinov
On Sat, 16 Oct 2010 17:49:27 +1100%
Lex Trotman ele...@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.
 
 l...@fred5 ~ $ od untitled
 000 12
 001
 
 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.

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


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

2010-10-16 Thread Lex Trotman
On 16 October 2010 19:52, Eugene Arshinov earshi...@gmail.com wrote:
 On Sat, 16 Oct 2010 17:49:27 +1100%
 Lex Trotman ele...@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.

 l...@fred5 ~ $ od untitled
 000 12
 001

 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 ;-)

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.

Cheers
Lex

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

___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-16 Thread Eugene Arshinov
On Sat, 16 Oct 2010 21:06:12 +1100%
Lex Trotman ele...@gmail.com wrote:

 On 16 October 2010 19:52, Eugene Arshinov earshi...@gmail.com wrote:
  On Sat, 16 Oct 2010 17:49:27 +1100%
  Lex Trotman ele...@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.
 
  l...@fred5 ~ $ od untitled
  000 12
  001
 
  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.

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


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

2010-10-16 Thread Lex Trotman
On 16 October 2010 21:39, Eugene Arshinov earshi...@gmail.com wrote:
 On Sat, 16 Oct 2010 21:06:12 +1100%
 Lex Trotman ele...@gmail.com wrote:

 On 16 October 2010 19:52, Eugene Arshinov earshi...@gmail.com wrote:
  On Sat, 16 Oct 2010 17:49:27 +1100%
  Lex Trotman ele...@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.
 
  l...@fred5 ~ $ od untitled
  000 12
  001
 
  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?  What I
don't see is your patch checking the preference?

Cheers
Lex


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

___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-16 Thread Eugene Arshinov
Oh God, I left an erroneous check in the code.  Updated patch attacked.diff --git a/src/editor.c b/src/editor.c
index a012f7d..8697c09 100644
--- a/src/editor.c
+++ b/src/editor.c
@@ -4609,26 +4609,12 @@ void editor_strip_trailing_spaces(GeanyEditor *editor)
 void editor_ensure_final_newline(GeanyEditor *editor)
 {
 	gint max_lines = sci_get_line_count(editor-sci);
-	gboolean append_newline = (max_lines == 1);
 	gint end_document = sci_get_position_from_line(editor-sci, max_lines);
 
-	if (max_lines  1)
+	if (end_document  sci_get_position_from_line(editor-sci, max_lines - 1))
 	{
-		append_newline = end_document  sci_get_position_from_line(editor-sci, max_lines - 1);
-	}
-	if (append_newline)
-	{
-		const gchar *eol = \n;
-		switch (sci_get_eol_mode(editor-sci))
-		{
-			case SC_EOL_CRLF:
-eol = \r\n;
-break;
-			case SC_EOL_CR:
-eol = \r;
-break;
-		}
-		sci_insert_text(editor-sci, end_document, eol);
+		sci_insert_text(editor-sci, end_document,
+			utils_get_eol_char(sci_get_eol_mode(editor-sci)));
 	}
 }
 
___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-16 Thread Eugene Arshinov
On Sat, 16 Oct 2010 15:05:01 +0400
Eugene Arshinov earshi...@gmail.com wrote:

 Oh God, I left an erroneous check in the code.  Updated patch
 attacked.

I meant attached...
___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-16 Thread Eugene Arshinov
On Sat, 16 Oct 2010 22:04:33 +1100%
Lex Trotman ele...@gmail.com wrote:

 On 16 October 2010 21:39, Eugene Arshinov earshi...@gmail.com wrote:
  On Sat, 16 Oct 2010 21:06:12 +1100%
  Lex Trotman ele...@gmail.com wrote:
 
  On 16 October 2010 19:52, Eugene Arshinov earshi...@gmail.com
  wrote:
   On Sat, 16 Oct 2010 17:49:27 +1100%
   Lex Trotman ele...@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.
  
   l...@fred5 ~ $ od untitled
   000 12
   001
  
   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.
___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-16 Thread Lex Trotman
On 16 October 2010 22:11, Eugene Arshinov earshi...@gmail.com wrote:
 On Sat, 16 Oct 2010 22:04:33 +1100%
 Lex Trotman ele...@gmail.com wrote:

 On 16 October 2010 21:39, Eugene Arshinov earshi...@gmail.com wrote:
  On Sat, 16 Oct 2010 21:06:12 +1100%
  Lex Trotman ele...@gmail.com wrote:
 
  On 16 October 2010 19:52, Eugene Arshinov earshi...@gmail.com
  wrote:
   On Sat, 16 Oct 2010 17:49:27 +1100%
   Lex Trotman ele...@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.
  
   l...@fred5 ~ $ od untitled
   000 12
   001
  
   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@uvena.de
 http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel

___
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


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

2010-10-16 Thread Eugene Arshinov
On Sat, 16 Oct 2010 22:37:29 +1100%
Lex Trotman ele...@gmail.com wrote:

 On 16 October 2010 22:11, Eugene Arshinov earshi...@gmail.com wrote:
  On Sat, 16 Oct 2010 22:04:33 +1100%
  Lex Trotman ele...@gmail.com wrote:
 
  On 16 October 2010 21:39, Eugene Arshinov earshi...@gmail.com
  wrote:
   On Sat, 16 Oct 2010 21:06:12 +1100%
   Lex Trotman ele...@gmail.com wrote:
  
   On 16 October 2010 19:52, Eugene Arshinov earshi...@gmail.com
   wrote:
On Sat, 16 Oct 2010 17:49:27 +1100%
Lex Trotman ele...@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.
   
l...@fred5 ~ $ od untitled
000 12
001
   
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.
 

This is absolutely correct.

 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.


I understand what you mean and agree that this point of view is
meaningful.

My argument for unterminated lines view is that
1) Geany already uses this view in one aspect, as you wrote (and I
agree)
2) and so, to my knowledge, do most text utilities like wc (they do not
process last line if it is unterminated)

From this point of view, it's logical that Geany should never insert
unterminated empty lines, either if file is empty or when it already
contains trailing newline.

By the way, there is another argument for your point of view and
current behaviour.  The code of editor_ensure_final_newline() is quite
old (it was inserted to utils.c in Initial import commit, rev 4) and
may be already considered a feature :-)

 
  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.

No problem.

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