You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by tm...@apache.org on 2020/12/06 10:42:19 UTC

[netbeans] branch master updated: [NETBEANS-5075] Remove consecutive empty lines when formatting PHP code

This is an automated email from the ASF dual-hosted git repository.

tmysik pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new e05a8e5  [NETBEANS-5075] Remove consecutive empty lines when formatting PHP code
     new de6e4ef  Merge pull request #2573 from KacerCZ/netbeans-5075-remove-blank-lines
e05a8e5 is described below

commit e05a8e592823fb14cf6895fe953a0a137082e0cc
Author: Tomas Prochazka <ka...@razdva.cz>
AuthorDate: Tue Dec 1 18:49:34 2020 +0100

    [NETBEANS-5075] Remove consecutive empty lines when formatting PHP code
    
    https://issues.apache.org/jira/browse/NETBEANS-5075
    
    Removes multiple empty lines from PHP code.
    Adds setting under Formatting/PHP/Blank Lines.
---
 .../modules/php/editor/indent/CodeStyle.java       |  4 +
 .../modules/php/editor/indent/FmtOptions.java      |  2 +
 .../modules/php/editor/indent/TokenFormatter.java  |  3 +
 .../modules/php/editor/indent/ui/Bundle.properties |  3 +
 .../php/editor/indent/ui/FmtBlankLines.form        | 85 +++++++++++++++-------
 .../php/editor/indent/ui/FmtBlankLines.java        | 74 ++++++++++++-------
 .../formatting/blankLines/MaxPreservedLines01.php  | 18 +++++
 .../blankLines/MaxPreservedLines01.php.formatted   | 11 +++
 .../formatting/blankLines/MaxPreservedLines02.php  | 18 +++++
 .../blankLines/MaxPreservedLines02.php.formatted   | 14 ++++
 .../formatting/blankLines/MaxPreservedLines03.php  | 18 +++++
 .../blankLines/MaxPreservedLines03.php.formatted   | 17 +++++
 .../testfiles/formatting/issue176453.php.formatted |  1 -
 .../editor/indent/PHPFormatterBlankLinesTest.java  | 20 +++++
 14 files changed, 234 insertions(+), 54 deletions(-)

diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/indent/CodeStyle.java b/php/php.editor/src/org/netbeans/modules/php/editor/indent/CodeStyle.java
index 0eb2e84..8230a2a 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/indent/CodeStyle.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/indent/CodeStyle.java
@@ -236,6 +236,10 @@ public final class CodeStyle {
         return preferences.getInt(BLANK_LINES_BEFORE_CLOSE_PHP_TAG, getDefaultAsInt(BLANK_LINES_BEFORE_CLOSE_PHP_TAG));
     }
 
+    public int getBlankLinesMaxPreserved() {
+        return preferences.getInt(BLANK_LINES_MAX_PRESERVED, getDefaultAsInt(BLANK_LINES_MAX_PRESERVED));
+    }
+
     // Spaces ------------------------------------------------------------------
 
     public boolean spaceBeforeWhile() {
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/indent/FmtOptions.java b/php/php.editor/src/org/netbeans/modules/php/editor/indent/FmtOptions.java
index 77ed28c..5d600fc 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/indent/FmtOptions.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/indent/FmtOptions.java
@@ -108,6 +108,7 @@ public final class FmtOptions {
     public static final String BLANK_LINES_AFTER_OPEN_PHP_TAG = "blankLinesAfterOpenPHPTag"; //NOI18N
     public static final String BLANK_LINES_AFTER_OPEN_PHP_TAG_IN_HTML = "blankLinesAfterOpenPHPTagInHTML"; //NOI18N
     public static final String BLANK_LINES_BEFORE_CLOSE_PHP_TAG = "blankLinesBeforeClosePHPTag"; //NOI18N
+    public static final String BLANK_LINES_MAX_PRESERVED = "blankLinesMaxPreserved"; //NOI18N
     public static final String SPACE_BEFORE_WHILE = "spaceBeforeWhile"; //NOI18N
     public static final String SPACE_BEFORE_ELSE = "spaceBeforeElse"; //NOI18N
     public static final String SPACE_BEFORE_CATCH = "spaceBeforeCatch"; //NOI18N
@@ -284,6 +285,7 @@ public final class FmtOptions {
             {BLANK_LINES_AFTER_OPEN_PHP_TAG, "1"}, //NOI18N
             {BLANK_LINES_AFTER_OPEN_PHP_TAG_IN_HTML, "0"}, //NOI18N
             {BLANK_LINES_BEFORE_CLOSE_PHP_TAG, "0"}, //NOI18N
+            {BLANK_LINES_MAX_PRESERVED, "1"}, //NOI18N
 
             {SPACE_BEFORE_WHILE, TRUE},
             {SPACE_BEFORE_ELSE, TRUE},
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/indent/TokenFormatter.java b/php/php.editor/src/org/netbeans/modules/php/editor/indent/TokenFormatter.java
index 7e5e9b0..62f8f0f 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/indent/TokenFormatter.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/indent/TokenFormatter.java
@@ -161,6 +161,7 @@ public class TokenFormatter {
         public int blankLinesAfterOpenPHPTag;
         public int blankLinesAfterOpenPHPTagInHTML;
         public int blankLinesBeforeClosePHPTag;
+        public int blankLinesMaxPreserved;
         public CodeStyle.WrapStyle wrapGroupUseList;
         public CodeStyle.WrapStyle wrapExtendsImplementsKeyword;
         public CodeStyle.WrapStyle wrapExtendsImplementsList;
@@ -312,6 +313,7 @@ public class TokenFormatter {
             blankLinesAfterOpenPHPTag = codeStyle.getBlankLinesAfterOpenPHPTag();
             blankLinesAfterOpenPHPTagInHTML = codeStyle.getBlankLinesAfterOpenPHPTagInHTML();
             blankLinesBeforeClosePHPTag = codeStyle.getBlankLinesBeforeClosePHPTag();
+            blankLinesMaxPreserved = codeStyle.getBlankLinesMaxPreserved();
 
             wrapGroupUseList = codeStyle.wrapGroupUseList();
             wrapExtendsImplementsKeyword = codeStyle.wrapExtendsImplementsKeyword();
@@ -1829,6 +1831,7 @@ public class TokenFormatter {
                                     } else {
                                         if (!indentRule) {
                                             newLines = countOfNewLines(oldText);
+                                            newLines = docOptions.blankLinesMaxPreserved + 1 < newLines ? docOptions.blankLinesMaxPreserved + 1 : newLines;
                                         }
                                     }
                                 }
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/Bundle.properties b/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/Bundle.properties
index 2f3ec87..29d24f8 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/Bundle.properties
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/Bundle.properties
@@ -430,3 +430,6 @@ FmtWrapping.groupUseListLabel.text=G&roup Use List:
 FmtWrapping.groupUseBracesCheckBox.text_1=Group &Use Braces
 FmtBraces.groupUseLabel.text=G&roup Use:
 FmtAlignment.noteLabel.text=<html><i>Note: These options depend on Wrapping settings</i></html>
+FmtBlankLines.maxPreservedBlankLabel.AccessibleContext.accessibleDescription=Maximal preserved consecutive empty lines
+FmtBlankLines.maxPreservedBlankLabel.AccessibleContext.accessibleName=Maximal Preserved Lines
+FmtBlankLines.maxPreservedBlankLabel.text=Max Preserved Lines:
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/FmtBlankLines.form b/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/FmtBlankLines.form
index fbc54d0..84a886b 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/FmtBlankLines.form
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/FmtBlankLines.form
@@ -47,7 +47,7 @@
     <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
     <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
     <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-12,0,0,1,13"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,100,0,0,1,17"/>
   </AuxValues>
 
   <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
@@ -97,7 +97,6 @@
                                   <Group type="103" groupAlignment="0" attributes="0">
                                       <Group type="103" alignment="1" groupAlignment="0" attributes="0">
                                           <Component id="bClosePHPTagLabel" alignment="0" min="-2" max="-2" attributes="0"/>
-                                          <Component id="bUseTraitLabel" alignment="0" min="-2" max="-2" attributes="0"/>
                                           <Component id="aOpenPHPTagHTMLLabel" alignment="0" min="-2" max="-2" attributes="0"/>
                                       </Group>
                                       <Component id="bMethodsLabel" alignment="0" min="-2" max="-2" attributes="0"/>
@@ -115,30 +114,42 @@
                                   <Component id="bUseLabel" alignment="0" min="-2" max="-2" attributes="0"/>
                                   <Component id="aNamespaceLabel" alignment="0" min="-2" max="-2" attributes="0"/>
                                   <Component id="bNamespaceLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="bUseTraitLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="maxPreservedBlankLabel" alignment="0" min="-2" max="-2" attributes="0"/>
                               </Group>
-                              <EmptySpace min="-2" pref="12" max="-2" attributes="0"/>
                               <Group type="103" groupAlignment="0" attributes="0">
-                                  <Group type="103" alignment="0" groupAlignment="1" attributes="0">
-                                      <Component id="aMethodsField" linkSize="1" alignment="1" min="-2" max="-2" attributes="3"/>
-                                      <Component id="bMethodsField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="aFieldsField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="bFunctionEndField" linkSize="1" alignment="1" min="-2" max="-2" attributes="3"/>
-                                      <Component id="betweenFields" linkSize="1" alignment="0" min="-2" max="-2" attributes="1"/>
-                                      <Component id="bFieldsField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="aClassField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="bClassEndField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="aClassHeaderField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="bClassField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="aUseField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="bUseField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="aNamespaceField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="bNamespaceField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                  <Group type="102" attributes="0">
+                                      <EmptySpace min="-2" pref="12" max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Group type="103" alignment="0" groupAlignment="1" attributes="0">
+                                              <Component id="aMethodsField" linkSize="1" alignment="1" min="-2" max="-2" attributes="3"/>
+                                              <Component id="bMethodsField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="aFieldsField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="bFunctionEndField" linkSize="1" alignment="1" min="-2" max="-2" attributes="3"/>
+                                              <Component id="betweenFields" linkSize="1" alignment="0" min="-2" max="-2" attributes="1"/>
+                                              <Component id="bFieldsField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="aClassField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="bClassEndField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="aClassHeaderField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="bClassField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="aUseField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="bUseField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="aNamespaceField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="bNamespaceField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                          </Group>
+                                          <Component id="aOpenPHPTagField" linkSize="1" min="-2" max="-2" attributes="3"/>
+                                          <Group type="103" alignment="1" groupAlignment="0" max="-2" attributes="0">
+                                              <Component id="bClosePHPTagField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                              <Component id="aOpenPHPTagHTMLField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                          </Group>
+                                      </Group>
                                   </Group>
-                                  <Component id="aOpenPHPTagField" linkSize="1" min="-2" max="-2" attributes="3"/>
-                                  <Group type="103" alignment="1" groupAlignment="0" max="-2" attributes="0">
-                                      <Component id="bUseTraitField" linkSize="1" min="-2" max="-2" attributes="0"/>
-                                      <Component id="bClosePHPTagField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
-                                      <Component id="aOpenPHPTagHTMLField" linkSize="1" alignment="0" min="-2" max="-2" attributes="3"/>
+                                  <Group type="102" alignment="1" attributes="0">
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                          <Component id="maxPreservedBlankField" max="32767" attributes="0"/>
+                                          <Component id="bUseTraitField" linkSize="1" max="32767" attributes="0"/>
+                                      </Group>
                                   </Group>
                               </Group>
                           </Group>
@@ -236,12 +247,17 @@
                           <Component id="bClosePHPTagLabel" alignment="3" min="-2" max="-2" attributes="0"/>
                           <Component id="bClosePHPTagField" alignment="3" min="-2" max="-2" attributes="0"/>
                       </Group>
-                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
                       <Group type="103" groupAlignment="3" attributes="0">
-                          <Component id="bUseTraitLabel" alignment="3" min="-2" max="-2" attributes="0"/>
                           <Component id="bUseTraitField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="bUseTraitLabel" alignment="3" min="-2" max="-2" attributes="0"/>
                       </Group>
-                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="maxPreservedBlankLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="maxPreservedBlankField" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
                       <Component id="cbGroupFields" min="-2" max="-2" attributes="0"/>
                       <EmptySpace max="32767" attributes="0"/>
                   </Group>
@@ -743,6 +759,23 @@
                 </Property>
               </Properties>
             </Component>
+            <Component class="javax.swing.JTextField" name="maxPreservedBlankField">
+            </Component>
+            <Component class="javax.swing.JLabel" name="maxPreservedBlankLabel">
+              <Properties>
+                <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+                  <ResourceString bundle="org/netbeans/modules/php/editor/indent/ui/Bundle.properties" key="FmtBlankLines.maxPreservedBlankLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+                </Property>
+              </Properties>
+              <AccessibilityProperties>
+                <Property name="AccessibleContext.accessibleName" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+                  <ResourceString bundle="org/netbeans/modules/php/editor/indent/ui/Bundle.properties" key="FmtBlankLines.maxPreservedBlankLabel.AccessibleContext.accessibleName" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+                </Property>
+                <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+                  <ResourceString bundle="org/netbeans/modules/php/editor/indent/ui/Bundle.properties" key="FmtBlankLines.maxPreservedBlankLabel.AccessibleContext.accessibleDescription" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+                </Property>
+              </AccessibilityProperties>
+            </Component>
           </SubComponents>
         </Container>
       </SubComponents>
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/FmtBlankLines.java b/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/FmtBlankLines.java
index 79dff35..657bf15 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/FmtBlankLines.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/indent/ui/FmtBlankLines.java
@@ -57,6 +57,7 @@ public class FmtBlankLines extends javax.swing.JPanel {
         aOpenPHPTagField.putClientProperty(OPTION_ID, BLANK_LINES_AFTER_OPEN_PHP_TAG);
         aOpenPHPTagHTMLField.putClientProperty(OPTION_ID, BLANK_LINES_AFTER_OPEN_PHP_TAG_IN_HTML);
         bClosePHPTagField.putClientProperty(OPTION_ID, BLANK_LINES_BEFORE_CLOSE_PHP_TAG);
+        maxPreservedBlankField.putClientProperty(OPTION_ID, BLANK_LINES_MAX_PRESERVED);
 
         bNamespaceField.addKeyListener(new NumericKeyListener());
         aNamespaceField.addKeyListener(new NumericKeyListener());
@@ -139,6 +140,8 @@ public class FmtBlankLines extends javax.swing.JPanel {
         cbGroupFields = new javax.swing.JCheckBox();
         bUseTraitLabel = new javax.swing.JLabel();
         bUseTraitField = new javax.swing.JTextField();
+        maxPreservedBlankField = new javax.swing.JTextField();
+        maxPreservedBlankLabel = new javax.swing.JLabel();
 
         setName(org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "LBL_BlankLines")); // NOI18N
         setOpaque(false);
@@ -235,6 +238,8 @@ public class FmtBlankLines extends javax.swing.JPanel {
 
         bUseTraitField.setText(org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "FmtBlankLines.bUseTraitField.text")); // NOI18N
 
+        org.openide.awt.Mnemonics.setLocalizedText(maxPreservedBlankLabel, org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "FmtBlankLines.maxPreservedBlankLabel.text")); // NOI18N
+
         javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
         jPanel1.setLayout(jPanel1Layout);
         jPanel1Layout.setHorizontalGroup(
@@ -248,7 +253,6 @@ public class FmtBlankLines extends javax.swing.JPanel {
                             .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                     .addComponent(bClosePHPTagLabel)
-                                    .addComponent(bUseTraitLabel)
                                     .addComponent(aOpenPHPTagHTMLLabel))
                                 .addComponent(bMethodsLabel)
                                 .addComponent(bFunctionEndLabel)
@@ -263,29 +267,37 @@ public class FmtBlankLines extends javax.swing.JPanel {
                             .addComponent(aUseLabel)
                             .addComponent(bUseLabel)
                             .addComponent(aNamespaceLabel)
-                            .addComponent(bNamespaceLabel))
-                        .addGap(12, 12, 12)
+                            .addComponent(bNamespaceLabel)
+                            .addComponent(bUseTraitLabel)
+                            .addComponent(maxPreservedBlankLabel))
                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                                .addComponent(aMethodsField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(bMethodsField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(aFieldsField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(bFunctionEndField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(betweenFields, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(bFieldsField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(aClassField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(bClassEndField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(aClassHeaderField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(bClassField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(aUseField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(bUseField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(aNamespaceField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(bNamespaceField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                            .addComponent(aOpenPHPTagField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
-                                .addComponent(bUseTraitField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(bClosePHPTagField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addComponent(aOpenPHPTagHTMLField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
+                            .addGroup(jPanel1Layout.createSequentialGroup()
+                                .addGap(12, 12, 12)
+                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                                        .addComponent(aMethodsField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(bMethodsField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(aFieldsField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(bFunctionEndField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(betweenFields, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(bFieldsField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(aClassField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(bClassEndField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(aClassHeaderField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(bClassField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(aUseField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(bUseField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(aNamespaceField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(bNamespaceField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                                    .addComponent(aOpenPHPTagField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                                        .addComponent(bClosePHPTagField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(aOpenPHPTagHTMLField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
+                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                                    .addComponent(maxPreservedBlankField)
+                                    .addComponent(bUseTraitField)))))
                     .addComponent(cbGroupFields))
                 .addContainerGap())
         );
@@ -363,11 +375,15 @@ public class FmtBlankLines extends javax.swing.JPanel {
                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                     .addComponent(bClosePHPTagLabel)
                     .addComponent(bClosePHPTagField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                    .addComponent(bUseTraitLabel)
-                    .addComponent(bUseTraitField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                    .addComponent(bUseTraitField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(bUseTraitLabel))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(maxPreservedBlankLabel)
+                    .addComponent(maxPreservedBlankField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                 .addComponent(cbGroupFields)
                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
         );
@@ -425,6 +441,8 @@ public class FmtBlankLines extends javax.swing.JPanel {
         aUseField.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "FmtBlankLines.aUseField.AccessibleContext.accessibleDescription")); // NOI18N
         aUseLabel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "FmtBlankLines.aUseLabel.AccessibleContext.accessibleName")); // NOI18N
         aUseLabel.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "FmtBlankLines.aUseLabel.AccessibleContext.accessibleDescription")); // NOI18N
+        maxPreservedBlankLabel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "FmtBlankLines.maxPreservedBlankLabel.AccessibleContext.accessibleName")); // NOI18N
+        maxPreservedBlankLabel.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "FmtBlankLines.maxPreservedBlankLabel.AccessibleContext.accessibleDescription")); // NOI18N
 
         scrollPane1.setViewportView(jPanel1);
         jPanel1.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(FmtBlankLines.class, "FmtBlankLines.jPanel1.AccessibleContext.accessibleName")); // NOI18N
@@ -478,6 +496,8 @@ public class FmtBlankLines extends javax.swing.JPanel {
     private javax.swing.JLabel betweenFieldsLabel;
     private javax.swing.JCheckBox cbGroupFields;
     private javax.swing.JPanel jPanel1;
+    private javax.swing.JTextField maxPreservedBlankField;
+    private javax.swing.JLabel maxPreservedBlankLabel;
     private javax.swing.JScrollPane scrollPane1;
     // End of variables declaration//GEN-END:variables
 
diff --git a/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines01.php b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines01.php
new file mode 100644
index 0000000..50ae1f4
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines01.php
@@ -0,0 +1,18 @@
+<?php
+
+function start() {
+    echo "Ready\n";
+    
+    
+    echo "Set\n";
+    
+    
+    
+    echo "Go!\n";
+}
+
+start();
+sleep(1);
+
+
+start();
diff --git a/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines01.php.formatted b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines01.php.formatted
new file mode 100644
index 0000000..9b69ea6
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines01.php.formatted
@@ -0,0 +1,11 @@
+<?php
+
+function start() {
+    echo "Ready\n";
+    echo "Set\n";
+    echo "Go!\n";
+}
+
+start();
+sleep(1);
+start();
diff --git a/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines02.php b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines02.php
new file mode 100644
index 0000000..50ae1f4
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines02.php
@@ -0,0 +1,18 @@
+<?php
+
+function start() {
+    echo "Ready\n";
+    
+    
+    echo "Set\n";
+    
+    
+    
+    echo "Go!\n";
+}
+
+start();
+sleep(1);
+
+
+start();
diff --git a/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines02.php.formatted b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines02.php.formatted
new file mode 100644
index 0000000..1f3cea0
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines02.php.formatted
@@ -0,0 +1,14 @@
+<?php
+
+function start() {
+    echo "Ready\n";
+
+    echo "Set\n";
+
+    echo "Go!\n";
+}
+
+start();
+sleep(1);
+
+start();
diff --git a/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines03.php b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines03.php
new file mode 100644
index 0000000..50ae1f4
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines03.php
@@ -0,0 +1,18 @@
+<?php
+
+function start() {
+    echo "Ready\n";
+    
+    
+    echo "Set\n";
+    
+    
+    
+    echo "Go!\n";
+}
+
+start();
+sleep(1);
+
+
+start();
diff --git a/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines03.php.formatted b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines03.php.formatted
new file mode 100644
index 0000000..6689642
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/formatting/blankLines/MaxPreservedLines03.php.formatted
@@ -0,0 +1,17 @@
+<?php
+
+function start() {
+    echo "Ready\n";
+
+
+    echo "Set\n";
+
+
+    echo "Go!\n";
+}
+
+start();
+sleep(1);
+
+
+start();
diff --git a/php/php.editor/test/unit/data/testfiles/formatting/issue176453.php.formatted b/php/php.editor/test/unit/data/testfiles/formatting/issue176453.php.formatted
index 05eb97b..95b061d 100644
--- a/php/php.editor/test/unit/data/testfiles/formatting/issue176453.php.formatted
+++ b/php/php.editor/test/unit/data/testfiles/formatting/issue176453.php.formatted
@@ -4,7 +4,6 @@ echo preg_replace_callback('~-([a-z])~', function ($match) {
   return strtoupper($match[1]);
 }, 'hello-world');
 
-
 $greet = function($name) {
   printf("Hello %s\r\n", $name);
 };
diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/indent/PHPFormatterBlankLinesTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/indent/PHPFormatterBlankLinesTest.java
index b66f1d1..9c19b6e 100644
--- a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/indent/PHPFormatterBlankLinesTest.java
+++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/indent/PHPFormatterBlankLinesTest.java
@@ -147,6 +147,7 @@ public class PHPFormatterBlankLinesTest extends PHPFormatterTestBase {
 
     public void testAlternativeSyntaxPlacement01() throws Exception {
         HashMap<String, Object> options = new HashMap<String, Object>(FmtOptions.getDefaults());
+        options.put(FmtOptions.BLANK_LINES_MAX_PRESERVED, 2);
         reformatFileContents("testfiles/formatting/blankLines/AlternativeSyntaxPlacement01.php", options);
     }
 
@@ -166,6 +167,7 @@ public class PHPFormatterBlankLinesTest extends PHPFormatterTestBase {
     public void testBLAnonymousClass01() throws Exception {
         HashMap<String, Object> options = new HashMap<>(FmtOptions.getDefaults());
         options.put(FmtOptions.INITIAL_INDENT, 0);
+        options.put(FmtOptions.BLANK_LINES_MAX_PRESERVED, 6);
         reformatFileContents("testfiles/formatting/blankLines/AnonymousClass01.php", options);
     }
 
@@ -1031,6 +1033,24 @@ public class PHPFormatterBlankLinesTest extends PHPFormatterTestBase {
         reformatFileContents("testfiles/formatting/blankLines/OpenClosePHPTag05.php", options);
     }
 
+    public void testMaxPreservedBlankLines01() throws Exception {
+        HashMap<String, Object> options = new HashMap<String, Object>(FmtOptions.getDefaults());
+        options.put(FmtOptions.BLANK_LINES_MAX_PRESERVED, 0);
+        reformatFileContents("testfiles/formatting/blankLines/MaxPreservedLines01.php", options);
+    }
+
+    public void testMaxPreservedBlankLines02() throws Exception {
+        HashMap<String, Object> options = new HashMap<String, Object>(FmtOptions.getDefaults());
+        options.put(FmtOptions.BLANK_LINES_MAX_PRESERVED, 1);
+        reformatFileContents("testfiles/formatting/blankLines/MaxPreservedLines02.php", options);
+    }
+
+    public void testMaxPreservedBlankLines03() throws Exception {
+        HashMap<String, Object> options = new HashMap<String, Object>(FmtOptions.getDefaults());
+        options.put(FmtOptions.BLANK_LINES_MAX_PRESERVED, 2);
+        reformatFileContents("testfiles/formatting/blankLines/MaxPreservedLines03.php", options);
+    }
+
     public void testIssue229703() throws Exception {
         HashMap<String, Object> options = new HashMap<String, Object>(FmtOptions.getDefaults());
         reformatFileContents("testfiles/formatting/blankLines/issue229703.php", options);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists