diff --git a/components/synedit/synedithighlighterfoldbase.pas b/components/synedit/synedithighlighterfoldbase.pas
index 5e5112cf55..a1c900cefb 100644
--- a/components/synedit/synedithighlighterfoldbase.pas
+++ b/components/synedit/synedithighlighterfoldbase.pas
@@ -69,11 +69,11 @@ type
                      sfaClose,        // Any Closing node
                      sfaOpenFold,     // At this node a new Fold can start // Actually, includes all,any multiline node too.
                      sfaCloseFold,    // At this node a fold ends
-                     sfaMarkup,   // This node can be highlighted, by the matching Word-Pair Markup
-                     sfaFold,     // Part of a fold- or hide-able block (FoldConf.Enabled = True)           - excludes one=liners for FoldFold
-                     sfaFoldFold, // Part of a fold-able block (FoldConf.Enabled = True / smFold in Modes)  - includes one=liners / only opening node (todo: maybe both?)
+                     sfaFold,     // Part of a fold- or hide-able block (FoldConf.Enabled = True)           - excludes one=liners for FoldFold, as they can not fold
+                     sfaFoldFold, // Part of a fold-able block (FoldConf.Enabled = True / smFold in Modes)  - excludes one=liners / only opening node (todo: maybe both?)
                      sfaFoldHide, // Part of a hide-able block (FoldConf.Enabled = True / smHide in Modes)  - includes one=liners / only opening node (todo: maybe both?)
                      sfaInvalid,  // Wrong Index
+                     sfaMarkup,   // This node can be highlighted, by the matching Word-Pair Markup
                      sfaDefaultCollapsed,
                      sfaOneLineOpen,   // Open, but closes on same line; *only* if hide-able has [sfaOpenFold, sfaFold]; always has [sfaFoldFold, sfaFoldHide]
                      sfaOneLineClose,  // Open, but closes on same line;
diff --git a/components/synedit/synhighlighterpas.pp b/components/synedit/synhighlighterpas.pp
index 8f18df7e99..8c239801f9 100644
--- a/components/synedit/synhighlighterpas.pp
+++ b/components/synedit/synhighlighterpas.pp
@@ -3454,13 +3454,14 @@ begin
       nd^.FoldAction  := nd^.FoldAction + [sfaOneLineOpen];
       Node.FoldAction := Node.FoldAction + [sfaOneLineClose];
       if (sfaFoldHide in nd^.FoldAction) then begin
+        assert(sfaFold in nd^.FoldAction, 'sfaFoldHide without sfaFold');
         // one liner: hide-able / not fold-able
         nd^.FoldAction  := nd^.FoldAction - [sfaFoldFold];
         Node.FoldAction := Node.FoldAction - [sfaFoldFold];
       end else begin
         // one liner: nether hide-able nore fold-able
-        nd^.FoldAction  := nd^.FoldAction - [sfaOpenFold, sfaFold]; // TODO -[sfaFoldFold, sfaFoldHide]
-        Node.FoldAction := Node.FoldAction - [sfaCloseFold, sfaFold];
+        nd^.FoldAction  := nd^.FoldAction - [sfaOpenFold, sfaFold, sfaFoldFold];
+        Node.FoldAction := Node.FoldAction - [sfaCloseFold, sfaFold, sfaFoldFold];
       end;
     end;
   end;
diff --git a/components/synedit/test/testhighlightpas.pas b/components/synedit/test/testhighlightpas.pas
index 8c356399a2..4eb6595d4c 100644
--- a/components/synedit/test/testhighlightpas.pas
+++ b/components/synedit/test/testhighlightpas.pas
@@ -1123,7 +1123,7 @@ begin
       // Line 5:     {$ifdef b} if a then begin {$endif}                        zz# pasminlvl=3 endlvl=4
       CheckNode( 5, [], 0,   0,   3, 9,   0, 1,   0, 1,
                                   cfbtIfDef, cfbtIfDef,  FOLDGROUP_IFDEF,
-                                  [sfaOpen, sfaMarkup,sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaMarkup,sfaOneLineOpen]);
       CheckNode( 5, [], 0,   1,   23, 28,   3, 4,   3, 4,
                                   cfbtBeginEnd, cfbtBeginEnd,  FOLDGROUP_PASCAL,
                                   [sfaOpen, sfaOpenFold,sfaMarkup,sfaFold,sfaFoldFold]);
@@ -1156,7 +1156,7 @@ begin
       // Line 11:   //                                                          # pasminlvl=0 endlvl=0
       CheckNode(11, [], 0,   0,   0, 2,   0, 1,   0, 1,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaOneLineOpen]);
       CheckNode(11, [], 0,   1,   2, 2,   1, 0,   1, 0,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
                                   [sfaClose, sfaOneLineClose,sfaLastLineClose]);
@@ -1214,7 +1214,7 @@ begin
       // Line 11:   //                                                          # pasminlvl=0 endlvl=0
       CheckNode(11, [], 1,   0,   0, 2,   0, 1,   0, 1,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaOneLineOpen]);
       CheckNode(11, [], 1,   1,   2, 2,   1, 0,   1, 0,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
                                   [sfaClose, sfaOneLineClose,sfaLastLineClose]);
@@ -1420,7 +1420,7 @@ begin
       // Line 5:     {$ifdef b} if a then begin {$endif}                                                    # pasminlvl=2 endlvl=3
       CheckNode( 5, [], 0,   0,   3, 9,   0, 1,   0, 1,
                                   cfbtIfDef, cfbtIfDef,  FOLDGROUP_IFDEF,
-                                  [sfaOpen, sfaMarkup,sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaMarkup,sfaOneLineOpen]);
       CheckNode( 5, [], 0,   1,   23, 28,   2, 3,   3, 4,
                                   cfbtBeginEnd, cfbtBeginEnd,  FOLDGROUP_PASCAL,
                                   [sfaOpen, sfaOpenFold,sfaMarkup,sfaFold,sfaFoldFold]);
@@ -1489,10 +1489,10 @@ begin
                                   [sfaOpen, sfaOpenFold,sfaMarkup,sfaFold,sfaFoldFold]);  // begin
       CheckNode( 2, [], 0,   2,   18, 24,   1, 2,   1, 2,
                                   cfbtIfDef, cfbtIfDef,  FOLDGROUP_IFDEF,
-                                  [sfaOpen, sfaMarkup,sfaFoldFold,sfaOneLineOpen]);           // {$IFDEF B}
+                                  [sfaOpen, sfaMarkup,sfaOneLineOpen]);           // {$IFDEF B}
       CheckNode( 2, [], 0,   3,   28, 34,   3, 4,   3, 4,
                                   cfbtRepeat, cfbtRepeat,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaMarkup,sfaFoldFold,sfaOneLineOpen]); // repeat a;
+                                  [sfaOpen, sfaMarkup,sfaOneLineOpen]); // repeat a;
       CheckNode( 2, [], 0,   4,   39, 45,   2, 1,   2, 1,
                                   cfbtIfDef, cfbtIfDef,  FOLDGROUP_IFDEF,
                                   [sfaClose, sfaMarkup,sfaOneLineClose]);                      // {$ENDIF}
@@ -1501,7 +1501,7 @@ begin
                                   [sfaClose, sfaMarkup,sfaOneLineClose]);            // until b;
       CheckNode( 2, [], 0,   6,   57, 63,   1, 2,   1, 2,
                                   cfbtIfDef, cfbtIfDef,  FOLDGROUP_IFDEF,
-                                  [sfaOpen, sfaMarkup,sfaFoldFold,sfaOneLineOpen]);           // {$IFDEF c}
+                                  [sfaOpen, sfaMarkup,sfaOneLineOpen]);           // {$IFDEF c}
       CheckNode( 2, [], 0,   7,   67, 70,   3, 4,   3, 4,
                                   cfbtTry, cfbtTry,  FOLDGROUP_PASCAL,
                                   [sfaOpen, sfaOpenFold,sfaMarkup,sfaFold,sfaFoldFold]);// try
@@ -1514,7 +1514,7 @@ begin
       // Line 3:     //foo                                                      # pasminlvl=4 endlvl=4
       CheckNode( 3, [], 0,   0,   2, 4,   4, 5,   4, 5,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaOneLineOpen]);
       CheckNode( 3, [], 0,   1,   7, 7,   5, 4,   5, 4,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
                                   [sfaClose, sfaOneLineClose, sfaCloseForNextLine]);
@@ -1524,7 +1524,7 @@ begin
                                   [sfaOpen, sfaOpenFold,sfaMarkup,sfaFold,sfaFoldFold]);
       CheckNode( 4, [], 0,   1,   10, 16,   5, 6,   5, 6,
                                   cfbtRepeat, cfbtRepeat,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaMarkup,sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaMarkup,sfaOneLineOpen]);
       CheckNode( 4, [], 0,   2,   21, 27,   2, 1,   2, 1,
                                   cfbtIfDef, cfbtIfDef,  FOLDGROUP_IFDEF,
                                   [sfaClose, sfaCloseFold,sfaMarkup,sfaFold]);
@@ -1534,7 +1534,7 @@ begin
       // Line 5:     repeat m; until n; end; {$endif a} //                                      # pasminlvl=3 endlvl=3
       CheckNode( 5, [], 0,   0,   2, 8,   5, 6,   5, 6,
                                   cfbtRepeat, cfbtRepeat,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaMarkup,sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaMarkup,sfaOneLineOpen]);
       CheckNode( 5, [], 0,   1,   12, 17,   6, 5,   6, 5,
                                   cfbtRepeat, cfbtRepeat,  FOLDGROUP_PASCAL,
                                   [sfaClose, sfaMarkup,sfaOneLineClose]);
@@ -1557,7 +1557,7 @@ begin
       // Line 7:   begin end.                                                   # pasminlvl=0 endlvl=0
       CheckNode( 7, [], 0,   0,   0, 5,   1, 2,   1, 2,
                                   cfbtBeginEnd, cfbtBeginEnd,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaMarkup,sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaMarkup,sfaOneLineOpen]);
       CheckNode( 7, [], 0,   1,   6, 9,   2, 1,   2, 1,
                                   cfbtBeginEnd, cfbtBeginEnd,  FOLDGROUP_PASCAL,
                                   [sfaClose, sfaMarkup,sfaOneLineClose]);
@@ -1590,7 +1590,7 @@ begin
       // Line 2:   type a=integer;                                              # pasminlvl=2 endlvl=2
       CheckNode( 2, [], 0,   0,   0, 4,   2, 3,   2, 3,
                                   cfbtVarType, cfbtVarType,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaOneLineOpen]);
       CheckNode( 2, [], 0,   1,   15, 15,   3, 2,   3, 2,
                                   cfbtVarType, cfbtVarType,  FOLDGROUP_PASCAL,
                                   [sfaClose, sfaOneLineClose, sfaCloseForNextLine]);
@@ -1624,7 +1624,7 @@ begin
       // Line 9:   //, unit-section                                             # pasminlvl=1 endlvl=1
       CheckNode( 9, [], 0,   0,   0, 2,   2, 3,   2, 3,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaOneLineOpen]);
       CheckNode( 9, [], 0,   1,   2, 2,   3, 2,   3, 2,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
                                   [sfaClose, sfaOneLineClose, sfaCloseForNextLine]);
@@ -1689,7 +1689,7 @@ begin
       // Line 6:   //                                                           # pasminlvl=1 endlvl=0
       CheckNode( 6, [], 0,   0,   0, 2,   1, 2,   1, 2,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
-                                  [sfaOpen, sfaFoldFold,sfaOneLineOpen]);
+                                  [sfaOpen, sfaOneLineOpen]);
       CheckNode( 6, [], 0,   1,   2, 2,   2, 1,   2, 1,
                                   cfbtSlashComment, cfbtSlashComment,  FOLDGROUP_PASCAL,
                                   [sfaClose, sfaOneLineClose,sfaLastLineClose]);