/* ex_cmds.c */
extern void do_ascii __ARGS((exarg_T *eap));
extern void ex_align __ARGS((exarg_T *eap));
extern void ex_sort __ARGS((exarg_T *eap));
extern void ex_retab __ARGS((exarg_T *eap));
extern int do_move __ARGS((linenr_T line1, linenr_T line2, linenr_T dest));
extern void ex_copy __ARGS((linenr_T line1, linenr_T line2, linenr_T n));
extern void free_prev_shellcmd __ARGS((void));
extern void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
extern void do_shell __ARGS((char_u *cmd, int flags));
extern char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
extern void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
extern int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
extern int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
extern void write_viminfo __ARGS((char_u *file, int forceit));
extern int viminfo_readline __ARGS((vir_T *virp));
extern char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
extern void viminfo_writestring __ARGS((FILE *fd, char_u *p));
extern void do_fixdel __ARGS((exarg_T *eap));
extern void print_line_no_prefix __ARGS((linenr_T lnum, int use_number, int list));
extern void print_line __ARGS((linenr_T lnum, int use_number, int list));
extern void ex_file __ARGS((exarg_T *eap));
extern void ex_update __ARGS((exarg_T *eap));
extern void ex_write __ARGS((exarg_T *eap));
extern int do_write __ARGS((exarg_T *eap));
extern void ex_wnext __ARGS((exarg_T *eap));
extern void do_wqall __ARGS((exarg_T *eap));
extern int not_writing __ARGS((void));
extern int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
extern int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
extern void ex_append __ARGS((exarg_T *eap));
extern void ex_change __ARGS((exarg_T *eap));
extern void ex_z __ARGS((exarg_T *eap));
extern int check_restricted __ARGS((void));
extern int check_secure __ARGS((void));
extern void do_sub __ARGS((exarg_T *eap));
extern int do_sub_msg __ARGS((int count_only));
extern void ex_global __ARGS((exarg_T *eap));
extern void global_exe __ARGS((char_u *cmd));
extern int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
extern void write_viminfo_sub_string __ARGS((FILE *fp));
extern void free_old_sub __ARGS((void));
extern int prepare_tagpreview __ARGS((int undo_sync));
extern void ex_help __ARGS((exarg_T *eap));
extern char_u *check_help_lang __ARGS((char_u *arg));
extern int help_heuristic __ARGS((char_u *matched_string, int offset, int wrong_case));
extern int find_help_tags __ARGS((char_u *arg, int *num_matches, char_u ***matches, int keep_lang));
extern void fix_help_buffer __ARGS((void));
extern void ex_exusage __ARGS((exarg_T *eap));
extern void ex_viusage __ARGS((exarg_T *eap));
extern void ex_helptags __ARGS((exarg_T *eap));
extern void ex_sign __ARGS((exarg_T *eap));
extern void sign_gui_started __ARGS((void));
extern int sign_get_attr __ARGS((int typenr, int line));
extern char_u *sign_get_text __ARGS((int typenr));
extern void *sign_get_image __ARGS((int typenr));
extern char_u *sign_typenr2name __ARGS((int typenr));
extern void ex_drop __ARGS((exarg_T *eap));
/* vim: set ft=c : */
