From patchwork Mon Oct 4 14:10:34 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaud Charlet X-Patchwork-Id: 66684 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 70311B70CC for ; Tue, 5 Oct 2010 01:11:14 +1100 (EST) Received: (qmail 20980 invoked by alias); 4 Oct 2010 14:11:09 -0000 Received: (qmail 18172 invoked by uid 22791); 4 Oct 2010 14:10:56 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, TW_PR, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mel.act-europe.fr (HELO mel.act-europe.fr) (212.99.106.210) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 04 Oct 2010 14:10:37 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id AEDE2CB025E; Mon, 4 Oct 2010 16:10:34 +0200 (CEST) Received: from mel.act-europe.fr ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KoBu1XOolW96; Mon, 4 Oct 2010 16:10:34 +0200 (CEST) Received: from saumur.act-europe.fr (saumur.act-europe.fr [10.10.0.183]) by mel.act-europe.fr (Postfix) with ESMTP id 98B94CB0244; Mon, 4 Oct 2010 16:10:34 +0200 (CEST) Received: by saumur.act-europe.fr (Postfix, from userid 525) id 7AA34D9BB4; Mon, 4 Oct 2010 16:10:34 +0200 (CEST) Date: Mon, 4 Oct 2010 16:10:34 +0200 From: Arnaud Charlet To: gcc-patches@gcc.gnu.org Cc: Vincent Celier Subject: [Ada] Maximum line length in project files created by gnatname Message-ID: <20101004141034.GA8351@adacore.com> Mime-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.9i X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org The maximum length of lines in project files created by gnatname is changed from 255 to 79. In addition, continuation lines are properly indented. Tested on x86_64-pc-linux-gnu, committed on trunk 2010-10-04 Vincent Celier * prj-makr.adb (Finalize): Invoke Pretty_Print with Max_Length set to 79 * prj-pp.adb (Pretty_Print): New parameter Max_Line_Length, that replaces global constant with the same name. When a line is too long, indent properly the next continuation line. * prj-pp.ads (Pretty_Print): New parameter Max_Line_Length with a range from 50 to 255, defaulted to 255, to indicate the maximum length of lines in the project file. Index: prj-pp.adb =================================================================== --- prj-pp.adb (revision 164906) +++ prj-pp.adb (working copy) @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2010, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,19 +34,6 @@ package body Prj.PP is Not_Tested : array (Project_Node_Kind) of Boolean := (others => True); - Max_Line_Length : constant := 255; - -- Maximum length of a line. This is chosen to be compatible with older - -- versions of GNAT that had a strict limit on the maximum line length. - - Column : Natural := 0; - -- Column number of the last character in the line. Used to avoid - -- outputting lines longer than Max_Line_Length. - - First_With_In_List : Boolean := True; - -- Indicate that the next with clause is first in a list such as - -- with "A", "B"; - -- First_With_In_List will be True for "A", but not for "B". - procedure Indicate_Tested (Kind : Project_Node_Kind); -- Set the corresponding component of array Not_Tested to False. -- Only called by pragmas Debug. @@ -67,14 +54,16 @@ package body Prj.PP is procedure Pretty_Print (Project : Prj.Tree.Project_Node_Id; In_Tree : Prj.Tree.Project_Node_Tree_Ref; - Increment : Positive := 3; - Eliminate_Empty_Case_Constructions : Boolean := False; - Minimize_Empty_Lines : Boolean := False; - W_Char : Write_Char_Ap := null; - W_Eol : Write_Eol_Ap := null; - W_Str : Write_Str_Ap := null; + Increment : Positive := 3; + Eliminate_Empty_Case_Constructions : Boolean := False; + Minimize_Empty_Lines : Boolean := False; + W_Char : Write_Char_Ap := null; + W_Eol : Write_Eol_Ap := null; + W_Str : Write_Str_Ap := null; Backward_Compatibility : Boolean; - Id : Prj.Project_Id := Prj.No_Project) + Id : Prj.Project_Id := Prj.No_Project; + Max_Line_Length : Max_Length_Of_Line := + Max_Length_Of_Line'Last) is procedure Print (Node : Project_Node_Id; Indent : Natural); -- A recursive procedure that traverses a project file tree and outputs @@ -82,28 +71,35 @@ package body Prj.PP is -- is used when printing attributes, since in nested packages they -- need to use a fully qualified name. - procedure Output_Attribute_Name (Name : Name_Id); + procedure Output_Attribute_Name (Name : Name_Id; Indent : Natural); -- Outputs an attribute name, taking into account the value of -- Backward_Compatibility. - procedure Output_Name (Name : Name_Id; Capitalize : Boolean := True); + procedure Output_Name + (Name : Name_Id; + Indent : Natural; + Capitalize : Boolean := True); -- Outputs a name procedure Start_Line (Indent : Natural); -- Outputs the indentation at the beginning of the line - procedure Output_String (S : Name_Id); - procedure Output_String (S : Path_Name_Type); + procedure Output_String (S : Name_Id; Indent : Natural); + procedure Output_String (S : Path_Name_Type; Indent : Natural); -- Outputs a string using the default output procedures procedure Write_Empty_Line (Always : Boolean := False); -- Outputs an empty line, only if the previous line was not empty - -- already and either Always is True or Minimize_Empty_Lines is False. + -- already and either Always is True or Minimize_Empty_Lines is + -- False. procedure Write_Line (S : String); -- Outputs S followed by a new line - procedure Write_String (S : String; Truncated : Boolean := False); + procedure Write_String + (S : String; + Indent : Natural; + Truncated : Boolean := False); -- Outputs S using Write_Str, starting a new line if line would -- become too long, when Truncated = False. -- When Truncated = True, only the part of the string that can fit on @@ -112,39 +108,48 @@ package body Prj.PP is procedure Write_End_Of_Line_Comment (Node : Project_Node_Id); Write_Char : Write_Char_Ap := Output.Write_Char'Access; - Write_Eol : Write_Eol_Ap := Output.Write_Eol'Access; - Write_Str : Write_Str_Ap := Output.Write_Str'Access; + Write_Eol : Write_Eol_Ap := Output.Write_Eol'Access; + Write_Str : Write_Str_Ap := Output.Write_Str'Access; -- These three access to procedure values are used for the output Last_Line_Is_Empty : Boolean := False; -- Used to avoid two consecutive empty lines + Column : Natural := 0; + -- Column number of the last character in the line. Used to avoid + -- outputting lines longer than Max_Line_Length. + + First_With_In_List : Boolean := True; + -- Indicate that the next with clause is first in a list such as + -- with "A", "B"; + -- First_With_In_List will be True for "A", but not for "B". + --------------------------- -- Output_Attribute_Name -- --------------------------- - procedure Output_Attribute_Name (Name : Name_Id) is + procedure Output_Attribute_Name (Name : Name_Id; Indent : Natural) is begin if Backward_Compatibility then case Name is when Snames.Name_Spec => - Output_Name (Snames.Name_Specification); + Output_Name (Snames.Name_Specification, Indent); when Snames.Name_Spec_Suffix => - Output_Name (Snames.Name_Specification_Suffix); + Output_Name (Snames.Name_Specification_Suffix, Indent); when Snames.Name_Body => - Output_Name (Snames.Name_Implementation); + Output_Name (Snames.Name_Implementation, Indent); when Snames.Name_Body_Suffix => - Output_Name (Snames.Name_Implementation_Suffix); + Output_Name (Snames.Name_Implementation_Suffix, Indent); when others => - Output_Name (Name); + Output_Name (Name, Indent); end case; else - Output_Name (Name); + Output_Name (Name, Indent); end if; end Output_Attribute_Name; @@ -152,10 +157,18 @@ package body Prj.PP is -- Output_Name -- ----------------- - procedure Output_Name (Name : Name_Id; Capitalize : Boolean := True) is + procedure Output_Name + (Name : Name_Id; + Indent : Natural; + Capitalize : Boolean := True) + is Capital : Boolean := Capitalize; begin + if Column = 0 and then Indent /= 0 then + Start_Line (Indent + Increment); + end if; + Get_Name_String (Name); -- If line would become too long, create new line @@ -163,6 +176,10 @@ package body Prj.PP is if Column + Name_Len > Max_Line_Length then Write_Eol.all; Column := 0; + + if Indent /= 0 then + Start_Line (Indent + Increment); + end if; end if; for J in 1 .. Name_Len loop @@ -186,18 +203,26 @@ package body Prj.PP is -- Output_String -- ------------------- - procedure Output_String (S : Name_Id) is + procedure Output_String (S : Name_Id; Indent : Natural) is begin + if Column = 0 and then Indent /= 0 then + Start_Line (Indent + Increment); + end if; + Get_Name_String (S); - -- If line could become too long, create new line. - -- Note that the number of characters on the line could be - -- twice the number of character in the string (if every - -- character is a '"') plus two (the initial and final '"'). + -- If line could become too long, create new line. Note that the + -- number of characters on the line could be twice the number of + -- character in the string (if every character is a '"') plus two + -- (the initial and final '"'). if Column + Name_Len + Name_Len + 2 > Max_Line_Length then Write_Eol.all; Column := 0; + + if Indent /= 0 then + Start_Line (Indent + Increment); + end if; end if; Write_Char ('"'); @@ -214,14 +239,16 @@ package body Prj.PP is Column := Column + 1; end if; - -- If the string does not fit on one line, cut it in parts - -- and concatenate. + -- If the string does not fit on one line, cut it in parts and + -- concatenate. if J < Name_Len and then Column >= Max_Line_Length then Write_Str (""" &"); Write_Eol.all; + Column := 0; + Start_Line (Indent + Increment); Write_Char ('"'); - Column := 1; + Column := Column + 1; end if; end loop; @@ -229,9 +256,9 @@ package body Prj.PP is Column := Column + 1; end Output_String; - procedure Output_String (S : Path_Name_Type) is + procedure Output_String (S : Path_Name_Type; Indent : Natural) is begin - Output_String (Name_Id (S)); + Output_String (Name_Id (S), Indent); end Output_String; ---------------- @@ -269,8 +296,8 @@ package body Prj.PP is begin if Value /= No_Name then - Write_String (" --"); - Write_String (Get_Name_String (Value), Truncated => True); + Write_String (" --", 0); + Write_String (Get_Name_String (Value), 0, Truncated => True); end if; Write_Line (""); @@ -282,7 +309,7 @@ package body Prj.PP is procedure Write_Line (S : String) is begin - Write_String (S); + Write_String (S, 0); Last_Line_Is_Empty := False; Write_Eol.all; Column := 0; @@ -292,9 +319,16 @@ package body Prj.PP is -- Write_String -- ------------------ - procedure Write_String (S : String; Truncated : Boolean := False) is + procedure Write_String + (S : String; + Indent : Natural; + Truncated : Boolean := False) is Length : Natural := S'Length; begin + if Column = 0 and then Indent /= 0 then + Start_Line (Indent + Increment); + end if; + -- If the string would not fit on the line, -- start a new line. @@ -305,6 +339,10 @@ package body Prj.PP is else Write_Eol.all; Column := 0; + + if Indent /= 0 then + Start_Line (Indent + Increment); + end if; end if; end if; @@ -316,7 +354,7 @@ package body Prj.PP is -- Print -- ----------- - procedure Print (Node : Project_Node_Id; Indent : Natural) is + procedure Print (Node : Project_Node_Id; Indent : Natural) is begin if Present (Node) then @@ -335,27 +373,29 @@ package body Prj.PP is Print (First_Comment_Before (Node, In_Tree), Indent); Start_Line (Indent); - Write_String ("project "); + Write_String ("project ", Indent); if Id /= Prj.No_Project then - Output_Name (Id.Display_Name); + Output_Name (Id.Display_Name, Indent); else - Output_Name (Name_Of (Node, In_Tree)); + Output_Name (Name_Of (Node, In_Tree), Indent); end if; -- Check if this project extends another project if Extended_Project_Path_Of (Node, In_Tree) /= No_Path then - Write_String (" extends "); + Write_String (" extends ", Indent); if Is_Extending_All (Node, In_Tree) then - Write_String ("all "); + Write_String ("all ", Indent); end if; - Output_String (Extended_Project_Path_Of (Node, In_Tree)); + Output_String + (Extended_Project_Path_Of (Node, In_Tree), + Indent); end if; - Write_String (" is"); + Write_String (" is", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), Indent + Increment); @@ -368,12 +408,12 @@ package body Prj.PP is (First_Comment_Before_End (Node, In_Tree), Indent + Increment); Start_Line (Indent); - Write_String ("end "); + Write_String ("end ", Indent); if Id /= Prj.No_Project then - Output_Name (Id.Display_Name); + Output_Name (Id.Display_Name, Indent); else - Output_Name (Name_Of (Node, In_Tree)); + Output_Name (Name_Of (Node, In_Tree), Indent); end if; Write_Line (";"); @@ -397,20 +437,20 @@ package body Prj.PP is if Non_Limited_Project_Node_Of (Node, In_Tree) = Empty_Node then - Write_String ("limited "); + Write_String ("limited ", Indent); end if; - Write_String ("with "); + Write_String ("with ", Indent); end if; - Output_String (String_Value_Of (Node, In_Tree)); + Output_String (String_Value_Of (Node, In_Tree), Indent); if Is_Not_Last_In_List (Node, In_Tree) then - Write_String (", "); + Write_String (", ", Indent); First_With_In_List := False; else - Write_String (";"); + Write_String (";", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), Indent); First_With_In_List := True; @@ -441,25 +481,26 @@ package body Prj.PP is Write_Empty_Line (Always => True); Print (First_Comment_Before (Node, In_Tree), Indent); Start_Line (Indent); - Write_String ("package "); - Output_Name (Name_Of (Node, In_Tree)); + Write_String ("package ", Indent); + Output_Name (Name_Of (Node, In_Tree), Indent); if Project_Of_Renamed_Package_Of (Node, In_Tree) /= Empty_Node then - Write_String (" renames "); + Write_String (" renames ", Indent); Output_Name (Name_Of (Project_Of_Renamed_Package_Of (Node, In_Tree), - In_Tree)); - Write_String ("."); - Output_Name (Name_Of (Node, In_Tree)); - Write_String (";"); + In_Tree), + Indent); + Write_String (".", Indent); + Output_Name (Name_Of (Node, In_Tree), Indent); + Write_String (";", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After_End (Node, In_Tree), Indent); else - Write_String (" is"); + Write_String (" is", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), Indent + Increment); @@ -475,8 +516,8 @@ package body Prj.PP is Print (First_Comment_Before_End (Node, In_Tree), Indent + Increment); Start_Line (Indent); - Write_String ("end "); - Output_Name (Name_Of (Node, In_Tree)); + Write_String ("end ", Indent); + Output_Name (Name_Of (Node, In_Tree), Indent); Write_Line (";"); Print (First_Comment_After_End (Node, In_Tree), Indent); Write_Empty_Line; @@ -486,11 +527,11 @@ package body Prj.PP is pragma Debug (Indicate_Tested (N_String_Type_Declaration)); Print (First_Comment_Before (Node, In_Tree), Indent); Start_Line (Indent); - Write_String ("type "); - Output_Name (Name_Of (Node, In_Tree)); + Write_String ("type ", Indent); + Output_Name (Name_Of (Node, In_Tree), Indent); Write_Line (" is"); Start_Line (Indent + Increment); - Write_String ("("); + Write_String ("(", Indent); declare String_Node : Project_Node_Id := @@ -498,50 +539,57 @@ package body Prj.PP is begin while Present (String_Node) loop - Output_String (String_Value_Of (String_Node, In_Tree)); + Output_String + (String_Value_Of (String_Node, In_Tree), + Indent); String_Node := Next_Literal_String (String_Node, In_Tree); if Present (String_Node) then - Write_String (", "); + Write_String (", ", Indent); end if; end loop; end; - Write_String (");"); + Write_String (");", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), Indent); when N_Literal_String => pragma Debug (Indicate_Tested (N_Literal_String)); - Output_String (String_Value_Of (Node, In_Tree)); + Output_String (String_Value_Of (Node, In_Tree), Indent); if Source_Index_Of (Node, In_Tree) /= 0 then - Write_String (" at"); - Write_String (Source_Index_Of (Node, In_Tree)'Img); + Write_String (" at", Indent); + Write_String + (Source_Index_Of (Node, In_Tree)'Img, + Indent); end if; when N_Attribute_Declaration => pragma Debug (Indicate_Tested (N_Attribute_Declaration)); Print (First_Comment_Before (Node, In_Tree), Indent); Start_Line (Indent); - Write_String ("for "); - Output_Attribute_Name (Name_Of (Node, In_Tree)); + Write_String ("for ", Indent); + Output_Attribute_Name (Name_Of (Node, In_Tree), Indent); if Associative_Array_Index_Of (Node, In_Tree) /= No_Name then - Write_String (" ("); + Write_String (" (", Indent); Output_String - (Associative_Array_Index_Of (Node, In_Tree)); + (Associative_Array_Index_Of (Node, In_Tree), + Indent); if Source_Index_Of (Node, In_Tree) /= 0 then - Write_String (" at"); - Write_String (Source_Index_Of (Node, In_Tree)'Img); + Write_String (" at", Indent); + Write_String + (Source_Index_Of (Node, In_Tree)'Img, + Indent); end if; - Write_String (")"); + Write_String (")", Indent); end if; - Write_String (" use "); + Write_String (" use ", Indent); if Present (Expression_Of (Node, In_Tree)) then Print (Expression_Of (Node, In_Tree), Indent); @@ -555,16 +603,18 @@ package body Prj.PP is Output_Name (Name_Of (Associative_Project_Of (Node, In_Tree), - In_Tree)); + In_Tree), + Indent); if Present (Associative_Package_Of (Node, In_Tree)) then - Write_String ("."); + Write_String (".", Indent); Output_Name (Name_Of (Associative_Package_Of (Node, In_Tree), - In_Tree)); + In_Tree), + Indent); end if; elsif @@ -573,14 +623,15 @@ package body Prj.PP is Output_Name (Name_Of (Associative_Package_Of (Node, In_Tree), - In_Tree)); + In_Tree), + Indent); end if; - Write_String ("'"); - Output_Attribute_Name (Name_Of (Node, In_Tree)); + Write_String ("'", Indent); + Output_Attribute_Name (Name_Of (Node, In_Tree), Indent); end if; - Write_String (";"); + Write_String (";", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), Indent); @@ -589,13 +640,14 @@ package body Prj.PP is (Indicate_Tested (N_Typed_Variable_Declaration)); Print (First_Comment_Before (Node, In_Tree), Indent); Start_Line (Indent); - Output_Name (Name_Of (Node, In_Tree)); - Write_String (" : "); + Output_Name (Name_Of (Node, In_Tree), Indent); + Write_String (" : ", Indent); Output_Name - (Name_Of (String_Type_Of (Node, In_Tree), In_Tree)); - Write_String (" := "); + (Name_Of (String_Type_Of (Node, In_Tree), In_Tree), + Indent); + Write_String (" := ", Indent); Print (Expression_Of (Node, In_Tree), Indent); - Write_String (";"); + Write_String (";", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), Indent); @@ -603,10 +655,10 @@ package body Prj.PP is pragma Debug (Indicate_Tested (N_Variable_Declaration)); Print (First_Comment_Before (Node, In_Tree), Indent); Start_Line (Indent); - Output_Name (Name_Of (Node, In_Tree)); - Write_String (" := "); + Output_Name (Name_Of (Node, In_Tree), Indent); + Write_String (" := ", Indent); Print (Expression_Of (Node, In_Tree), Indent); - Write_String (";"); + Write_String (";", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), Indent); @@ -621,7 +673,7 @@ package body Prj.PP is Term := Next_Term (Term, In_Tree); if Present (Term) then - Write_String (" & "); + Write_String (" & ", Indent); end if; end loop; end; @@ -632,7 +684,7 @@ package body Prj.PP is when N_Literal_String_List => pragma Debug (Indicate_Tested (N_Literal_String_List)); - Write_String ("("); + Write_String ("(", Indent); declare Expression : Project_Node_Id := @@ -645,40 +697,42 @@ package body Prj.PP is Next_Expression_In_List (Expression, In_Tree); if Present (Expression) then - Write_String (", "); + Write_String (", ", Indent); end if; end loop; end; - Write_String (")"); + Write_String (")", Indent); when N_Variable_Reference => pragma Debug (Indicate_Tested (N_Variable_Reference)); if Present (Project_Node_Of (Node, In_Tree)) then Output_Name - (Name_Of (Project_Node_Of (Node, In_Tree), In_Tree)); - Write_String ("."); + (Name_Of (Project_Node_Of (Node, In_Tree), In_Tree), + Indent); + Write_String (".", Indent); end if; if Present (Package_Node_Of (Node, In_Tree)) then Output_Name - (Name_Of (Package_Node_Of (Node, In_Tree), In_Tree)); - Write_String ("."); + (Name_Of (Package_Node_Of (Node, In_Tree), In_Tree), + Indent); + Write_String (".", Indent); end if; - Output_Name (Name_Of (Node, In_Tree)); + Output_Name (Name_Of (Node, In_Tree), Indent); when N_External_Value => pragma Debug (Indicate_Tested (N_External_Value)); - Write_String ("external ("); + Write_String ("external (", Indent); Print (External_Reference_Of (Node, In_Tree), Indent); if Present (External_Default_Of (Node, In_Tree)) then - Write_String (", "); + Write_String (", ", Indent); Print (External_Default_Of (Node, In_Tree), Indent); end if; - Write_String (")"); + Write_String (")", Indent); when N_Attribute_Reference => pragma Debug (Indicate_Tested (N_Attribute_Reference)); @@ -687,24 +741,27 @@ package body Prj.PP is and then Project_Node_Of (Node, In_Tree) /= Project then Output_Name - (Name_Of (Project_Node_Of (Node, In_Tree), In_Tree)); + (Name_Of (Project_Node_Of (Node, In_Tree), In_Tree), + Indent); if Present (Package_Node_Of (Node, In_Tree)) then - Write_String ("."); + Write_String (".", Indent); Output_Name - (Name_Of (Package_Node_Of (Node, In_Tree), In_Tree)); + (Name_Of (Package_Node_Of (Node, In_Tree), In_Tree), + Indent); end if; elsif Present (Package_Node_Of (Node, In_Tree)) then Output_Name - (Name_Of (Package_Node_Of (Node, In_Tree), In_Tree)); + (Name_Of (Package_Node_Of (Node, In_Tree), In_Tree), + Indent); else - Write_String ("project"); + Write_String ("project", Indent); end if; - Write_String ("'"); - Output_Attribute_Name (Name_Of (Node, In_Tree)); + Write_String ("'", Indent); + Output_Attribute_Name (Name_Of (Node, In_Tree), Indent); declare Index : constant Name_Id := @@ -712,9 +769,9 @@ package body Prj.PP is begin if Index /= No_Name then - Write_String (" ("); - Output_String (Index); - Write_String (")"); + Write_String (" (", Indent); + Output_String (Index, Indent); + Write_String (")", Indent); end if; end; @@ -743,11 +800,11 @@ package body Prj.PP is Write_Empty_Line; Print (First_Comment_Before (Node, In_Tree), Indent); Start_Line (Indent); - Write_String ("case "); + Write_String ("case ", Indent); Print (Case_Variable_Reference_Of (Node, In_Tree), Indent); - Write_String (" is"); + Write_String (" is", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), @@ -784,10 +841,10 @@ package body Prj.PP is Write_Empty_Line; Print (First_Comment_Before (Node, In_Tree), Indent); Start_Line (Indent); - Write_String ("when "); + Write_String ("when ", Indent); if No (First_Choice_Of (Node, In_Tree)) then - Write_String ("others"); + Write_String ("others", Indent); else declare @@ -799,13 +856,13 @@ package body Prj.PP is Label := Next_Literal_String (Label, In_Tree); if Present (Label) then - Write_String (" | "); + Write_String (" | ", Indent); end if; end loop; end; end if; - Write_String (" =>"); + Write_String (" =>", Indent); Write_End_Of_Line_Comment (Node); Print (First_Comment_After (Node, In_Tree), @@ -837,9 +894,10 @@ package body Prj.PP is end if; Start_Line (Indent); - Write_String ("--"); + Write_String ("--", Indent); Write_String (Get_Name_String (String_Value_Of (Node, In_Tree)), + Indent, Truncated => True); Write_Line (""); Index: prj-pp.ads =================================================================== --- prj-pp.ads (revision 164906) +++ prj-pp.ads (working copy) @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2010, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -43,17 +43,21 @@ package Prj.PP is type Write_Str_Ap is access procedure (S : String); + subtype Max_Length_Of_Line is Positive range 50 .. 255; + procedure Pretty_Print (Project : Prj.Tree.Project_Node_Id; In_Tree : Prj.Tree.Project_Node_Tree_Ref; - Increment : Positive := 3; - Eliminate_Empty_Case_Constructions : Boolean := False; - Minimize_Empty_Lines : Boolean := False; - W_Char : Write_Char_Ap := null; - W_Eol : Write_Eol_Ap := null; - W_Str : Write_Str_Ap := null; + Increment : Positive := 3; + Eliminate_Empty_Case_Constructions : Boolean := False; + Minimize_Empty_Lines : Boolean := False; + W_Char : Write_Char_Ap := null; + W_Eol : Write_Eol_Ap := null; + W_Str : Write_Str_Ap := null; Backward_Compatibility : Boolean; - Id : Prj.Project_Id := Prj.No_Project); + Id : Prj.Project_Id := Prj.No_Project; + Max_Line_Length : Max_Length_Of_Line := + Max_Length_Of_Line'Last); -- Output a project file, using either the default output routines, or the -- ones specified by W_Char, W_Eol and W_Str. -- @@ -77,6 +81,8 @@ package Prj.PP is -- -- Id is used to compute the display name of the project including its -- proper casing. + -- + -- Max_Line_Length is the maximum line length in the project file. private Index: prj-makr.adb =================================================================== --- prj-makr.adb (revision 164906) +++ prj-makr.adb (working copy) @@ -693,7 +693,8 @@ package body Prj.Makr is W_Char => Write_A_Char'Access, W_Eol => Write_Eol'Access, W_Str => Write_A_String'Access, - Backward_Compatibility => False); + Backward_Compatibility => False, + Max_Line_Length => 79); Close (Output_FD); -- Delete the naming project file if it already exists