diff options
Diffstat (limited to 'src/ex_eval.c')
| -rw-r--r-- | src/ex_eval.c | 139 | 
1 files changed, 47 insertions, 92 deletions
diff --git a/src/ex_eval.c b/src/ex_eval.c index 5f845c3f33..e4148068f5 100644 --- a/src/ex_eval.c +++ b/src/ex_eval.c @@ -12,6 +12,14 @@   */  #include "vim.h" +#include "ex_eval.h" +#include "charset.h" +#include "eval.h" +#include "ex_cmds2.h" +#include "ex_docmd.h" +#include "message.h" +#include "misc2.h" +#include "regexp.h"  static void free_msglist __ARGS((struct msglist *l)); @@ -84,7 +92,7 @@ static int cause_abort = FALSE;   * cancellation of an expression evaluation after an aborting function call or   * due to a parsing error, aborting() always returns the same value.   */ -int aborting()         { +int aborting(void)         {    return (did_emsg && force_abort) || got_int || did_throw;  } @@ -94,7 +102,7 @@ int aborting()         {   * be necessary to restore "force_abort" even before the throw point for the   * error message has been reached.  update_force_abort() should be called then.   */ -void update_force_abort()          { +void update_force_abort(void)          {    if (cause_abort)      force_abort = TRUE;  } @@ -105,8 +113,7 @@ void update_force_abort()          {   * execution of a failing subcommand as long as the error message has not been   * displayed and actually caused the abortion.   */ -int should_abort(retcode) -int retcode; +int should_abort(int retcode)  {    return (retcode == FAIL && trylevel != 0 && !emsg_silent) || aborting();  } @@ -117,7 +124,7 @@ int retcode;   * to find finally clauses to be executed, and that some errors in skipped   * commands are still reported.   */ -int aborted_in_try()         { +int aborted_in_try(void)         {    /* This function is only called after an error.  In this case, "force_abort"     * determines whether searching for finally clauses is necessary. */    return force_abort; @@ -132,10 +139,7 @@ int aborted_in_try()         {   * most specific one and used as the exception value.  The "severe" flag can be   * set to TRUE, if a later but severer message should be used instead.   */ -int cause_errthrow(mesg, severe, ignore) -char_u      *mesg; -int severe; -int         *ignore; +int cause_errthrow(char_u *mesg, int severe, int *ignore)  {    struct msglist *elem;    struct msglist **plist; @@ -275,8 +279,7 @@ int         *ignore;  /*   * Free a "msg_list" and the messages it contains.   */ -static void free_msglist(l) -struct msglist  *l; +static void free_msglist(struct msglist *l)  {    struct msglist  *messages, *next; @@ -293,7 +296,7 @@ struct msglist  *l;   * Free global "*msg_list" and the messages it contains, then set "*msg_list"   * to NULL.   */ -void free_global_msglist()          { +void free_global_msglist(void)          {    free_msglist(*msg_list);    *msg_list = NULL;  } @@ -303,9 +306,7 @@ void free_global_msglist()          {   * error exception.  If cstack is NULL, postpone the throw until do_cmdline()   * has returned (see do_one_cmd()).   */ -void do_errthrow(cstack, cmdname) -struct condstack    *cstack; -char_u              *cmdname; +void do_errthrow(struct condstack *cstack, char_u *cmdname)  {    /*     * Ensure that all commands in nested function calls and sourced files @@ -337,8 +338,7 @@ char_u              *cmdname;   * exception if appropriate.  Return TRUE if the current exception is discarded,   * FALSE otherwise.   */ -int do_intthrow(cstack) -struct condstack    *cstack; +int do_intthrow(struct condstack *cstack)  {    /*     * If no interrupt occurred or no try conditional is active and no exception @@ -384,11 +384,7 @@ struct condstack    *cstack;  /*   * Get an exception message that is to be stored in current_exception->value.   */ -char_u * get_exception_string(value, type, cmdname, should_free) -void        *value; -int type; -char_u      *cmdname; -int         *should_free; +char_u *get_exception_string(void *value, int type, char_u *cmdname, int *should_free)  {    char_u      *ret, *mesg;    int cmdlen; @@ -457,10 +453,7 @@ int         *should_free;   * user or interrupt exception, or points to a message list in case of an   * error exception.   */ -static int throw_exception(value, type, cmdname) -void        *value; -int type; -char_u      *cmdname; +static int throw_exception(void *value, int type, char_u *cmdname)  {    except_T    *excp;    int should_free; @@ -541,9 +534,7 @@ fail:   * Discard an exception.  "was_finished" is set when the exception has been   * caught and the catch clause has been ended normally.   */ -static void discard_exception(excp, was_finished) -except_T            *excp; -int was_finished; +static void discard_exception(except_T *excp, int was_finished)  {    char_u              *saved_IObuff; @@ -589,7 +580,7 @@ int was_finished;  /*   * Discard the exception currently being thrown.   */ -void discard_current_exception()          { +void discard_current_exception(void)          {    discard_exception(current_exception, FALSE);    current_exception = NULL;    did_throw = FALSE; @@ -599,8 +590,7 @@ void discard_current_exception()          {  /*   * Put an exception on the caught stack.   */ -static void catch_exception(excp) -except_T    *excp; +static void catch_exception(except_T *excp)  {    excp->caught = caught_stack;    caught_stack = excp; @@ -643,8 +633,7 @@ except_T    *excp;  /*   * Remove an exception from the caught stack.   */ -static void finish_exception(excp) -except_T    *excp; +static void finish_exception(except_T *excp)  {    if (excp != caught_stack)      EMSG(_(e_internal)); @@ -687,10 +676,7 @@ except_T    *excp;   * what is pending.  "value" specifies the return value for a pending ":return"   * or the exception value for a pending exception.   */ -static void report_pending(action, pending, value) -int action; -int pending; -void        *value; +static void report_pending(int action, int pending, void *value)  {    char_u      *mesg;    char        *s; @@ -765,9 +751,7 @@ void        *value;   * If something is made pending in a finally clause, report it if required by   * the 'verbose' option or when debugging.   */ -void report_make_pending(pending, value) -int pending; -void        *value; +void report_make_pending(int pending, void *value)  {    if (p_verbose >= 14 || debug_break_level > 0) {      if (debug_break_level <= 0) @@ -782,9 +766,7 @@ void        *value;   * If something pending in a finally clause is resumed at the ":endtry", report   * it if required by the 'verbose' option or when debugging.   */ -void report_resume_pending(pending, value) -int pending; -void        *value; +void report_resume_pending(int pending, void *value)  {    if (p_verbose >= 14 || debug_break_level > 0) {      if (debug_break_level <= 0) @@ -799,9 +781,7 @@ void        *value;   * If something pending in a finally clause is discarded, report it if required   * by the 'verbose' option or when debugging.   */ -void report_discard_pending(pending, value) -int pending; -void        *value; +void report_discard_pending(int pending, void *value)  {    if (p_verbose >= 14 || debug_break_level > 0) {      if (debug_break_level <= 0) @@ -816,8 +796,7 @@ void        *value;  /*   * ":if".   */ -void ex_if(eap) -exarg_T     *eap; +void ex_if(exarg_T *eap)  {    int error;    int skip; @@ -854,8 +833,7 @@ exarg_T     *eap;  /*   * ":endif".   */ -void ex_endif(eap) -exarg_T     *eap; +void ex_endif(exarg_T *eap)  {    did_endif = TRUE;    if (eap->cstack->cs_idx < 0 @@ -883,8 +861,7 @@ exarg_T     *eap;  /*   * ":else" and ":elseif".   */ -void ex_else(eap) -exarg_T     *eap; +void ex_else(exarg_T *eap)  {    int error;    int skip; @@ -965,8 +942,7 @@ exarg_T     *eap;  /*   * Handle ":while" and ":for".   */ -void ex_while(eap) -exarg_T     *eap; +void ex_while(exarg_T *eap)  {    int error;    int skip; @@ -1055,8 +1031,7 @@ exarg_T     *eap;  /*   * ":continue"   */ -void ex_continue(eap) -exarg_T     *eap; +void ex_continue(exarg_T *eap)  {    int idx;    struct condstack    *cstack = eap->cstack; @@ -1089,8 +1064,7 @@ exarg_T     *eap;  /*   * ":break"   */ -void ex_break(eap) -exarg_T     *eap; +void ex_break(exarg_T *eap)  {    int idx;    struct condstack    *cstack = eap->cstack; @@ -1113,8 +1087,7 @@ exarg_T     *eap;  /*   * ":endwhile" and ":endfor"   */ -void ex_endwhile(eap) -exarg_T     *eap; +void ex_endwhile(exarg_T *eap)  {    struct condstack    *cstack = eap->cstack;    int idx; @@ -1190,8 +1163,7 @@ exarg_T     *eap;  /*   * ":throw expr"   */ -void ex_throw(eap) -exarg_T     *eap; +void ex_throw(exarg_T *eap)  {    char_u      *arg = eap->arg;    char_u      *value; @@ -1218,8 +1190,7 @@ exarg_T     *eap;   * for ":throw" (user exception) and error and interrupt exceptions.  Also   * used for rethrowing an uncaught exception.   */ -void do_throw(cstack) -struct condstack    *cstack; +void do_throw(struct condstack *cstack)  {    int idx;    int inactivate_try = FALSE; @@ -1279,8 +1250,7 @@ struct condstack    *cstack;  /*   * ":try"   */ -void ex_try(eap) -exarg_T     *eap; +void ex_try(exarg_T *eap)  {    int skip;    struct condstack    *cstack = eap->cstack; @@ -1347,8 +1317,7 @@ exarg_T     *eap;  /*   * ":catch /{pattern}/" and ":catch"   */ -void ex_catch(eap) -exarg_T     *eap; +void ex_catch(exarg_T *eap)  {    int idx = 0;    int give_up = FALSE; @@ -1489,8 +1458,7 @@ exarg_T     *eap;  /*   * ":finally"   */ -void ex_finally(eap) -exarg_T     *eap; +void ex_finally(exarg_T *eap)  {    int idx;    int skip = FALSE; @@ -1608,8 +1576,7 @@ exarg_T     *eap;  /*   * ":endtry"   */ -void ex_endtry(eap) -exarg_T     *eap; +void ex_endtry(exarg_T *eap)  {    int idx;    int skip; @@ -1797,8 +1764,7 @@ exarg_T     *eap;   * do_cmdline() that is going to be made for the cleanup autocommand   * execution.   */ -void enter_cleanup(csp) -cleanup_T   *csp; +void enter_cleanup(cleanup_T *csp)  {    int pending = CSTP_NONE; @@ -1854,8 +1820,7 @@ cleanup_T   *csp;   * cleanup autocommands.  In the latter case, the saved error/interrupt/   * exception state is discarded.   */ -void leave_cleanup(csp) -cleanup_T   *csp; +void leave_cleanup(cleanup_T *csp)  {    int pending = csp->pending; @@ -1935,10 +1900,7 @@ cleanup_T   *csp;   * entered, is restored (used by ex_endtry()).  This is normally done only   * when such a try conditional is left.   */ -int cleanup_conditionals(cstack, searched_cond, inclusive) -struct condstack   *cstack; -int searched_cond; -int inclusive; +int cleanup_conditionals(struct condstack *cstack, int searched_cond, int inclusive)  {    int idx;    int stop = FALSE; @@ -2046,8 +2008,7 @@ int inclusive;  /*   * Return an appropriate error message for a missing endwhile/endfor/endif.   */ -static char_u * get_end_emsg(cstack) -struct condstack    *cstack; +static char_u *get_end_emsg(struct condstack *cstack)  {    if (cstack->cs_flags[cstack->cs_idx] & CSF_WHILE)      return e_endwhile; @@ -2064,11 +2025,7 @@ struct condstack    *cstack;   * type.   * Also free "for info" structures where needed.   */ -void rewind_conditionals(cstack, idx, cond_type, cond_level) -struct condstack   *cstack; -int idx; -int cond_type; -int         *cond_level; +void rewind_conditionals(struct condstack *cstack, int idx, int cond_type, int *cond_level)  {    while (cstack->cs_idx > idx) {      if (cstack->cs_flags[cstack->cs_idx] & cond_type) @@ -2082,8 +2039,7 @@ int         *cond_level;  /*   * ":endfunction" when not after a ":function"   */ -void ex_endfunction(eap) -exarg_T     *eap UNUSED; +void ex_endfunction(exarg_T *eap)  {    EMSG(_("E193: :endfunction not inside a function"));  } @@ -2091,8 +2047,7 @@ exarg_T     *eap UNUSED;  /*   * Return TRUE if the string "p" looks like a ":while" or ":for" command.   */ -int has_loop_cmd(p) -char_u      *p; +int has_loop_cmd(char_u *p)  {    int len;  | 
