86 lines
3.1 KiB
Diff
86 lines
3.1 KiB
Diff
--- indent-2.2.10/src/indent.c
|
|
+++ indent-2.2.10/src/indent.c
|
|
@@ -1033,13 +1033,10 @@
|
|
|
|
if (!*sp_sw)
|
|
{ /* if not if for (;;) */
|
|
- do
|
|
- {
|
|
if (parse (semicolon) != total_success)
|
|
{
|
|
*file_exit_value = indent_error;
|
|
}
|
|
- } while(0);
|
|
|
|
*force_nl = true; /* force newline after a end of stmt */
|
|
}
|
|
@@ -2818,6 +2815,18 @@
|
|
return file_exit_value; /* RETURN */
|
|
}
|
|
|
|
+ if (type_code == sp_paren
|
|
+ && parser_state_tos->p_stack[parser_state_tos->tos] == dohead
|
|
+ && parser_state_tos->last_token == rbrace)
|
|
+ {
|
|
+ /* This is closing `while' of `do {stuff;} while'
|
|
+ statement (not `do stuff; while' command). In -cdw, we
|
|
+ want to suppress newline. */
|
|
+ if (settings.cuddle_do_while)
|
|
+ force_nl = false;
|
|
+ parser_state_tos->in_closing_br_while = true;
|
|
+ }
|
|
+
|
|
if ((type_code != comment) &&
|
|
(type_code != cplus_comment) &&
|
|
(type_code != newline) &&
|
|
--- indent-2.2.10/src/indent.h
|
|
+++ indent-2.2.10/src/indent.h
|
|
@@ -420,6 +420,9 @@
|
|
BOOLEAN in_decl; /*!< set to true when we are in a declaration
|
|
* statement. The processing of braces is then
|
|
* slightly different */
|
|
+ BOOLEAN in_closing_br_while; /*!< set to true when we are parsing
|
|
+ * closing while of do {} while
|
|
+ * statement*/
|
|
int in_stmt; /*!< set to 1 while in a stmt */
|
|
int in_parameter_declaration;
|
|
int ind_level; /*!< the current indentation level in spaces */
|
|
--- indent-2.2.10/src/parse.c
|
|
+++ indent-2.2.10/src/parse.c
|
|
@@ -69,6 +69,7 @@
|
|
parser_state_tos->cstk = (int *) xmalloc (INITIAL_STACK_SIZE * sizeof (int));
|
|
parser_state_tos->paren_indents_size = 8;
|
|
parser_state_tos->paren_indents = (short *) xmalloc (parser_state_tos->paren_indents_size * sizeof (short));
|
|
+ parser_state_tos->in_closing_br_while = false;
|
|
|
|
/* Although these are supposed to grow if we reach the end,
|
|
* I can find no place in the code which does this. */
|
|
@@ -428,6 +429,14 @@
|
|
|
|
parser_state_tos->ind_level = parser_state_tos->i_l_follow;
|
|
parser_state_tos->il[parser_state_tos->tos] = parser_state_tos->i_l_follow;
|
|
+
|
|
+ if (parser_state_tos->in_closing_br_while
|
|
+ && settings.cuddle_do_while
|
|
+ && !settings.btype_2)
|
|
+ {
|
|
+ parser_state_tos->ind_level += settings.brace_indent;
|
|
+ }
|
|
+ parser_state_tos->in_closing_br_while = false;
|
|
}
|
|
else
|
|
{ /* it is a while loop */
|
|
@@ -457,6 +466,12 @@
|
|
parser_state_tos->p_stack[parser_state_tos->tos] = elsehead;
|
|
/* remember if with else */
|
|
parser_state_tos->search_brace = true;
|
|
+
|
|
+ if (settings.cuddle_else
|
|
+ && !settings.btype_2)
|
|
+ {
|
|
+ parser_state_tos->ind_level += settings.brace_indent;
|
|
+ }
|
|
}
|
|
break;
|
|
|