@@ -6446,30 +6446,34 @@ package body Src_Editor_Buffer is
6446
6446
-- Start_Line and End_Line.
6447
6447
6448
6448
-- Search upward for the first editable line
6449
- Search_Line := Start_Line;
6450
- while From_Line = 0 and then Search_Line < End_Line loop
6451
- Search_Line := Search_Line + 1 ;
6452
- -- Gint and Buffer_Line_Type are off by 1
6449
+ -- We have tested Start_Line + 1, the next one is Start_Line + 2
6450
+ Search_Line := Start_Line + 2 ;
6451
+ while From_Line = 0 and then Search_Line <= End_Line loop
6453
6452
From_Line :=
6454
6453
Get_Editable_Line
6455
- (Buffer, Buffer_Line_Type (Search_Line + 1 ));
6454
+ (Buffer, Buffer_Line_Type (Search_Line));
6455
+ Search_Line := Search_Line + 1 ;
6456
6456
end loop ;
6457
6457
6458
6458
-- Search downward for the last editable line
6459
+ -- We have tested End_Line + 1, the previous one is End_Line
6459
6460
Search_Line := End_Line;
6460
- while To_Line = 0 and then Search_Line > Start_Line loop
6461
- Search_Line := Search_Line - 1 ;
6462
- -- Gint and Buffer_Line_Type are off by 1
6461
+ while To_Line = 0 and then Search_Line >= Start_Line loop
6463
6462
To_Line :=
6464
6463
Get_Editable_Line
6465
- (Buffer, Buffer_Line_Type (Search_Line + 1 ));
6464
+ (Buffer, Buffer_Line_Type (Search_Line));
6465
+ Search_Line := Search_Line - 1 ;
6466
6466
end loop ;
6467
6467
6468
+ Trace (Me, " End_Line: " & End_Line'Image);
6469
+ Trace (Me, " Search_Line: " & Search_Line'Image);
6470
+ Trace (Me, " To_Line: " & To_Line'Image);
6471
+
6468
6472
-- Include all characters from the last line
6469
6473
To_Column :=
6470
- Buffer.Editor_Buffer.New_Location (Integer (To_Line))
6471
- .End_Of_Line
6472
- .Column;
6474
+ Buffer.Editor_Buffer.New_Location
6475
+ (Line => Integer (To_Line),
6476
+ Column => 1 ).End_Of_Line .Column;
6473
6477
end ;
6474
6478
end if ;
6475
6479
@@ -6619,11 +6623,13 @@ package body Src_Editor_Buffer is
6619
6623
Indent_Params : Indent_Parameters;
6620
6624
begin
6621
6625
if not Buffer.Writable then
6626
+ Trace (Me, " Buffer not writable" );
6622
6627
End_Action (Buffer);
6623
6628
return False;
6624
6629
end if ;
6625
6630
6626
6631
if not Get_Language_Context (Lang).Can_Indent then
6632
+ Trace (Me, " Language Can't Indent" );
6627
6633
return False;
6628
6634
end if ;
6629
6635
0 commit comments