diff options
| author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-02 11:24:02 -0300 | 
|---|---|---|
| committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-02 11:24:02 -0300 | 
| commit | cab8cf970c09ea465d30e11eb356e2e5d37dc544 (patch) | |
| tree | 5d274c892e4d53f5e976ae8f6f58aba030785e02 /src/nvim/ex_cmds.c | |
| parent | 52a9a5b0b0c53a1481d901f39ed0d1e7e86c3853 (diff) | |
| parent | 4aecb71b0e819aa84a430dacdab2146229c410a5 (diff) | |
| download | rneovim-cab8cf970c09ea465d30e11eb356e2e5d37dc544.tar.gz rneovim-cab8cf970c09ea465d30e11eb356e2e5d37dc544.tar.bz2 rneovim-cab8cf970c09ea465d30e11eb356e2e5d37dc544.zip | |
Merge pull request #710 'Automatically generate declarations'
Diffstat (limited to 'src/nvim/ex_cmds.c')
| -rw-r--r-- | src/nvim/ex_cmds.c | 391 | 
1 files changed, 175 insertions, 216 deletions
| diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c index de01665286..909e79be6d 100644 --- a/src/nvim/ex_cmds.c +++ b/src/nvim/ex_cmds.c @@ -62,19 +62,15 @@  #include "nvim/os/os.h"  #include "nvim/os/shell.h" -static int linelen(int *has_tab); -static void do_filter(linenr_T line1, linenr_T line2, exarg_T *eap, -                      char_u *cmd, int do_in, -                      int do_out); -static char_u *viminfo_filename(char_u  *); -static void do_viminfo(FILE *fp_in, FILE *fp_out, int flags); -static int viminfo_encoding(vir_T *virp); -static int read_viminfo_up_to_marks(vir_T *virp, int forceit, -                                    int writing); - -static int check_readonly(int *forceit, buf_T *buf); -static void delbuf_msg(char_u *name); -static int help_compare(const void *s1, const void *s2); +/* + * Struct to hold the sign properties. + */ +typedef struct sign sign_T; + + +#ifdef INCLUDE_GENERATED_DECLARATIONS +# include "ex_cmds.c.generated.h" +#endif  /*   * ":ascii" and "ga". @@ -293,8 +289,6 @@ typedef struct {    long end_col_nr;                      /* ending column number */  } sorti_T; -static int -sort_compare(const void *s1, const void *s2);  static int sort_compare(const void *s1, const void *s2)  { @@ -1407,7 +1401,6 @@ void append_redir(char_u *buf, int buflen, char_u *opt, char_u *fname)  } -static int no_viminfo(void);  static int viminfo_errcnt;  static int no_viminfo(void) @@ -5290,8 +5283,6 @@ void ex_viusage(exarg_T *eap)    do_cmdline_cmd((char_u *)"help normal-index");  } -static void helptags_one(char_u *dir, char_u *ext, char_u *lang, -                         int add_help_tags);  /*   * ":helptags" @@ -5606,11 +5597,6 @@ helptags_one (    fclose(fd_tags);          /* there is no check for an error... */  } -/* - * Struct to hold the sign properties. - */ -typedef struct sign sign_T; -  struct sign  {      sign_T      *sn_next;       /* next sign in list */ @@ -5625,9 +5611,6 @@ struct sign  static sign_T   *first_sign = NULL;  static int      next_sign_typenr = 1; -static int sign_cmd_idx (char_u *begin_cmd, char_u *end_cmd); -static void sign_list_defined (sign_T *sp); -static void sign_undefine (sign_T *sp, sign_T *sp_prev);  static char *cmds[] = {  			"define", @@ -6053,104 +6036,86 @@ void ex_sign(exarg_T *eap)  /*   * List one sign.   */ -    static void -sign_list_defined(sp) -    sign_T	*sp; +static void sign_list_defined(sign_T *sp)  { -    char_u	*p; +  char_u  *p; -    smsg((char_u *)"sign %s", sp->sn_name); -    if (sp->sn_icon != NULL) -    { -	MSG_PUTS(" icon="); -	msg_outtrans(sp->sn_icon); -	MSG_PUTS(_(" (not supported)")); -    } -    if (sp->sn_text != NULL) -    { -	MSG_PUTS(" text="); -	msg_outtrans(sp->sn_text); -    } -    if (sp->sn_line_hl > 0) -    { -	MSG_PUTS(" linehl="); -	p = get_highlight_name(NULL, sp->sn_line_hl - 1); -	if (p == NULL) -	    MSG_PUTS("NONE"); -	else -	    msg_puts(p); -    } -    if (sp->sn_text_hl > 0) -    { -	MSG_PUTS(" texthl="); -	p = get_highlight_name(NULL, sp->sn_text_hl - 1); -	if (p == NULL) -	    MSG_PUTS("NONE"); -	else -	    msg_puts(p); -    } +  smsg((char_u *)"sign %s", sp->sn_name); +  if (sp->sn_icon != NULL) { +    MSG_PUTS(" icon="); +    msg_outtrans(sp->sn_icon); +    MSG_PUTS(_(" (not supported)")); +  } +  if (sp->sn_text != NULL) { +    MSG_PUTS(" text="); +    msg_outtrans(sp->sn_text); +  } +  if (sp->sn_line_hl > 0) { +    MSG_PUTS(" linehl="); +    p = get_highlight_name(NULL, sp->sn_line_hl - 1); +    if (p == NULL) +      MSG_PUTS("NONE"); +    else +      msg_puts(p); +  } +  if (sp->sn_text_hl > 0) { +    MSG_PUTS(" texthl="); +    p = get_highlight_name(NULL, sp->sn_text_hl - 1); +    if (p == NULL) +      MSG_PUTS("NONE"); +    else +      msg_puts(p); +  }  }  /*   * Undefine a sign and free its memory.   */ -    static void -sign_undefine(sp, sp_prev) -    sign_T	*sp; -    sign_T	*sp_prev; +static void sign_undefine(sign_T *sp, sign_T *sp_prev)  { -    free(sp->sn_name); -    free(sp->sn_icon); -    free(sp->sn_text); -    if (sp_prev == NULL) -	first_sign = sp->sn_next; -    else -	sp_prev->sn_next = sp->sn_next; -    free(sp); +  free(sp->sn_name); +  free(sp->sn_icon); +  free(sp->sn_text); +  if (sp_prev == NULL) +    first_sign = sp->sn_next; +  else +    sp_prev->sn_next = sp->sn_next; +  free(sp);  }  /*   * Get highlighting attribute for sign "typenr".   * If "line" is TRUE: line highl, if FALSE: text highl.   */ -    int -sign_get_attr(typenr, line) -    int		typenr; -    int		line; +int sign_get_attr(int typenr, int line)  { -    sign_T	*sp; +  sign_T  *sp; -    for (sp = first_sign; sp != NULL; sp = sp->sn_next) -	if (sp->sn_typenr == typenr) -	{ -	    if (line) -	    { -		if (sp->sn_line_hl > 0) -		    return syn_id2attr(sp->sn_line_hl); -	    } -	    else -	    { -		if (sp->sn_text_hl > 0) -		    return syn_id2attr(sp->sn_text_hl); -	    } -	    break; -	} -    return 0; +  for (sp = first_sign; sp != NULL; sp = sp->sn_next) +    if (sp->sn_typenr == typenr) { +      if (line) { +        if (sp->sn_line_hl > 0) +          return syn_id2attr(sp->sn_line_hl); +      } else { +        if (sp->sn_text_hl > 0) +          return syn_id2attr(sp->sn_text_hl); +      } +      break; +    } +  return 0;  }  /*   * Get text mark for sign "typenr".   * Returns NULL if there isn't one.   */ -    char_u * -sign_get_text(typenr) -    int		typenr; +char_u * sign_get_text(int typenr)  { -    sign_T	*sp; +    sign_T  *sp;      for (sp = first_sign; sp != NULL; sp = sp->sn_next) -	if (sp->sn_typenr == typenr) -	    return sp->sn_text; +      if (sp->sn_typenr == typenr) +        return sp->sn_text;      return NULL;  } @@ -6158,27 +6123,24 @@ sign_get_text(typenr)  /*   * Get the name of a sign by its typenr.   */ -    char_u * -sign_typenr2name(typenr) -    int		typenr; +char_u * sign_typenr2name(int typenr)  { -    sign_T	*sp; +  sign_T  *sp; -    for (sp = first_sign; sp != NULL; sp = sp->sn_next) -	if (sp->sn_typenr == typenr) -	    return sp->sn_name; -    return (char_u *)_("[Deleted]"); +  for (sp = first_sign; sp != NULL; sp = sp->sn_next) +    if (sp->sn_typenr == typenr) +      return sp->sn_name; +  return (char_u *)_("[Deleted]");  }  #if defined(EXITFREE) || defined(PROTO)  /*   * Undefine/free all signs.   */ -    void -free_signs() +void free_signs()  { -    while (first_sign != NULL) -	sign_undefine(first_sign, NULL); +  while (first_sign != NULL) +    sign_undefine(first_sign, NULL);  }  #endif @@ -6240,120 +6202,117 @@ char_u * get_sign_name(expand_T *xp, int idx)  /*   * Handle command line completion for :sign command.   */ -    void -set_context_in_sign_cmd(xp, arg) -    expand_T	*xp; -    char_u	*arg; +void set_context_in_sign_cmd(expand_T *xp, char_u *arg)  { -    char_u	*p; -    char_u	*end_subcmd; -    char_u	*last; -    int		cmd_idx; -    char_u	*begin_subcmd_args; - -    /* Default: expand subcommands. */ -    xp->xp_context = EXPAND_SIGN; -    expand_what = EXP_SUBCMD; -    xp->xp_pattern = arg; - -    end_subcmd = skiptowhite(arg); -    if (*end_subcmd == NUL) -	/* expand subcmd name -	 * :sign {subcmd}<CTRL-D>*/ -	return; +  char_u  *p; +  char_u  *end_subcmd; +  char_u  *last; +  int    cmd_idx; +  char_u  *begin_subcmd_args; + +  /* Default: expand subcommands. */ +  xp->xp_context = EXPAND_SIGN; +  expand_what = EXP_SUBCMD; +  xp->xp_pattern = arg; + +  end_subcmd = skiptowhite(arg); +  if (*end_subcmd == NUL) +    /* expand subcmd name +     * :sign {subcmd}<CTRL-D>*/ +    return; -    cmd_idx = sign_cmd_idx(arg, end_subcmd); +  cmd_idx = sign_cmd_idx(arg, end_subcmd); -    /* :sign {subcmd} {subcmd_args} -     *		      | -     *		      begin_subcmd_args */ -    begin_subcmd_args = skipwhite(end_subcmd); -    p = skiptowhite(begin_subcmd_args); -    if (*p == NUL) +  /* :sign {subcmd} {subcmd_args} +   *          | +   *          begin_subcmd_args */ +  begin_subcmd_args = skipwhite(end_subcmd); +  p = skiptowhite(begin_subcmd_args); +  if (*p == NUL) +  { +    /* +     * Expand first argument of subcmd when possible. +     * For ":jump {id}" and ":unplace {id}", we could +     * possibly expand the ids of all signs already placed. +     */ +    xp->xp_pattern = begin_subcmd_args; +    switch (cmd_idx)      { -	/* -	 * Expand first argument of subcmd when possible. -	 * For ":jump {id}" and ":unplace {id}", we could -	 * possibly expand the ids of all signs already placed. -	 */ -	xp->xp_pattern = begin_subcmd_args; -	switch (cmd_idx) -	{ -	    case SIGNCMD_LIST: -	    case SIGNCMD_UNDEFINE: -		/* :sign list <CTRL-D> -		 * :sign undefine <CTRL-D> */ -		expand_what = EXP_SIGN_NAMES; -		break; -	    default: -		xp->xp_context = EXPAND_NOTHING; -	} -	return; +      case SIGNCMD_LIST: +      case SIGNCMD_UNDEFINE: +        /* :sign list <CTRL-D> +         * :sign undefine <CTRL-D> */ +        expand_what = EXP_SIGN_NAMES; +        break; +      default: +        xp->xp_context = EXPAND_NOTHING;      } +    return; +  } -    /* expand last argument of subcmd */ - -    /* :sign define {name} {args}... -     *		    | -     *		    p */ - -    /* Loop until reaching last argument. */ -    do -    { -	p = skipwhite(p); -	last = p; -	p = skiptowhite(p); -    } while (*p != NUL); - -    p = vim_strchr(last, '='); - -    /* :sign define {name} {args}... {last}= -     *				     |	   | -     *				  last	   p */ -    if (p == NUL) +  /* expand last argument of subcmd */ + +  /* :sign define {name} {args}... +   *        | +   *        p */ + +  /* Loop until reaching last argument. */ +  do +  { +    p = skipwhite(p); +    last = p; +    p = skiptowhite(p); +  } while (*p != NUL); + +  p = vim_strchr(last, '='); + +  /* :sign define {name} {args}... {last}= +   *             |     | +   *          last     p */ +  if (p == NUL) +  { +    /* Expand last argument name (before equal sign). */ +    xp->xp_pattern = last; +    switch (cmd_idx)      { -        /* Expand last argument name (before equal sign). */ -        xp->xp_pattern = last; -        switch (cmd_idx) -        { -            case SIGNCMD_DEFINE: -                expand_what = EXP_DEFINE; -                break; -            case SIGNCMD_PLACE: -                expand_what = EXP_PLACE; -                break; -            case SIGNCMD_JUMP: -            case SIGNCMD_UNPLACE: -                expand_what = EXP_UNPLACE; -                break; -            default: -                xp->xp_context = EXPAND_NOTHING; -        } +      case SIGNCMD_DEFINE: +        expand_what = EXP_DEFINE; +        break; +      case SIGNCMD_PLACE: +        expand_what = EXP_PLACE; +        break; +      case SIGNCMD_JUMP: +      case SIGNCMD_UNPLACE: +        expand_what = EXP_UNPLACE; +        break; +      default: +        xp->xp_context = EXPAND_NOTHING;      } -    else +  } +  else +  { +    /* Expand last argument value (after equal sign). */ +    xp->xp_pattern = p + 1; +    switch (cmd_idx)      { -        /* Expand last argument value (after equal sign). */ -        xp->xp_pattern = p + 1; -        switch (cmd_idx) -        { -            case SIGNCMD_DEFINE: -                if (STRNCMP(last, "texthl", p - last) == 0 || -                        STRNCMP(last, "linehl", p - last) == 0) -                    xp->xp_context = EXPAND_HIGHLIGHT; -                else if (STRNCMP(last, "icon", p - last) == 0) -                    xp->xp_context = EXPAND_FILES; -                else -                    xp->xp_context = EXPAND_NOTHING; -                break; -            case SIGNCMD_PLACE: -                if (STRNCMP(last, "name", p - last) == 0) -                    expand_what = EXP_SIGN_NAMES; -                else -                    xp->xp_context = EXPAND_NOTHING; -                break; -            default: -                xp->xp_context = EXPAND_NOTHING; -        } +      case SIGNCMD_DEFINE: +        if (STRNCMP(last, "texthl", p - last) == 0 || +            STRNCMP(last, "linehl", p - last) == 0) +          xp->xp_context = EXPAND_HIGHLIGHT; +        else if (STRNCMP(last, "icon", p - last) == 0) +          xp->xp_context = EXPAND_FILES; +        else +          xp->xp_context = EXPAND_NOTHING; +        break; +      case SIGNCMD_PLACE: +        if (STRNCMP(last, "name", p - last) == 0) +          expand_what = EXP_SIGN_NAMES; +        else +          xp->xp_context = EXPAND_NOTHING; +        break; +      default: +        xp->xp_context = EXPAND_NOTHING;      } +  }  } | 
