/* vi:set ts=8 sts=4 sw=4: * * VIM - Vi IMproved by Bram Moolenaar * * Do ":help uganda" in Vim to read copying and usage conditions. * Do ":help credits" in Vim to see a list of people who contributed. * See README.txt for an overview of the Vim source code. */ /* * ex_docmd.c: functions for executing an Ex command line. */ #include "vim.h" #ifdef HAVE_FCNTL_H# include <fcntl.h> /* for chdir() */#endif static int quitmore = 0;static int ex_pressedreturn = FALSE;#ifndef FEAT_PRINTER# define ex_hardcopy ex_ni#endif #ifdef FEAT_USR_CMDStypedef struct ucmd{ char_u *uc_name; /* The command name */ long_u uc_argt; /* The argument type */ char_u *uc_rep; /* The command's replacement string */ long uc_def; /* The default value for a range/count */ scid_T uc_scriptID; /* SID where the command was defined */ int uc_compl; /* completion type */# if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) char_u *uc_compl_arg; /* completion argument if any */# endif} ucmd_T; #define UC_BUFFER 1 /* -buffer: local to current buffer */ static garray_T ucmds = {0, 0, sizeof(ucmd_T), 4, NULL}; #define USER_CMD(i) (&((ucmd_T *)(ucmds.ga_data))[i])#define USER_CMD_GA(gap, i) (&((ucmd_T *)((gap)->ga_data))[i]) static void do_ucmd __ARGS((exarg_T *eap));static void ex_command __ARGS((exarg_T *eap));static void ex_delcommand __ARGS((exarg_T *eap));# ifdef FEAT_CMDL_COMPLstatic char_u *get_user_command_name __ARGS((int idx));# endif #else# define ex_command ex_ni# define ex_comclear ex_ni# define ex_delcommand ex_ni#endif #ifdef FEAT_EVALstatic char_u *do_one_cmd __ARGS((char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int), void *cookie));#elsestatic char_u *do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie));static int if_level = 0; /* depth in :if */#endifstatic char_u *find_command __ARGS((exarg_T *eap, int *full)); static void ex_abbreviate __ARGS((exarg_T *eap));static void ex_map __ARGS((exarg_T *eap));static void ex_unmap __ARGS((exarg_T *eap));static void ex_mapclear __ARGS((exarg_T *eap));static void ex_abclear __ARGS((exarg_T *eap));#ifndef FEAT_MENU# define ex_emenu ex_ni# define ex_menu ex_ni# define ex_menutranslate ex_ni#endif#ifdef FEAT_AUTOCMDstatic void ex_autocmd __ARGS((exarg_T *eap));static void ex_doautocmd __ARGS((exarg_T *eap));#else# define ex_autocmd ex_ni# define ex_doautocmd ex_ni# define ex_doautoall ex_ni#endif#ifdef FEAT_LISTCMDSstatic void ex_bunload __ARGS((exarg_T *eap));static void ex_buffer __ARGS((exarg_T *eap));static void ex_bmodified __ARGS((exarg_T *eap));static void ex_bnext __ARGS((exarg_T *eap));static void ex_bprevious __ARGS((exarg_T *eap));static void ex_brewind __ARGS((exarg_T *eap));static void ex_blast __ARGS((exarg_T *eap));#else# define ex_bunload ex_ni# define ex_buffer ex_ni# define ex_bmodified ex_ni# define ex_bnext ex_ni# define ex_bprevious ex_ni# define ex_brewind ex_ni# define ex_blast ex_ni# define buflist_list ex_ni# define ex_checktime ex_ni#endif#if !defined(FEAT_LISTCMDS) || !defined(FEAT_WINDOWS)# define ex_buffer_all ex_ni#endifstatic char_u *getargcmd __ARGS((char_u **));static char_u *skip_cmd_arg __ARGS((char_u *p, int rembs));static int getargopt __ARGS((exarg_T *eap));#ifndef FEAT_QUICKFIX# define ex_make ex_ni# define ex_cbuffer ex_ni# define ex_cc ex_ni# define ex_cnext ex_ni# define ex_cfile ex_ni# define qf_list ex_ni# define qf_age ex_ni# define ex_helpgrep ex_ni# define ex_vimgrep ex_ni#endif#if !defined(FEAT_QUICKFIX) || !defined(FEAT_WINDOWS)# define ex_cclose ex_ni# define ex_copen ex_ni# define ex_cwindow ex_ni#endif#if !defined(FEAT_QUICKFIX) || !defined(FEAT_EVAL)# define ex_cexpr ex_ni#endif static int check_more __ARGS((int, int));static linenr_T get_address __ARGS((char_u **, int skip, int to_other_file));static void get_flags __ARGS((exarg_T *eap));#if !defined(FEAT_PERL) || !defined(FEAT_PYTHON) || !defined(FEAT_TCL) \ || !defined(FEAT_RUBY) || !defined(FEAT_MZSCHEME)static void ex_script_ni __ARGS((exarg_T *eap));#endifstatic char_u *invalid_range __ARGS((exarg_T *eap));static void correct_range __ARGS((exarg_T *eap));#ifdef FEAT_QUICKFIXstatic char_u *replace_makeprg __ARGS((exarg_T *eap, char_u *p, char_u **cmdlinep));#endifstatic char_u *repl_cmdline __ARGS((exarg_T *eap, char_u *src, int srclen, char_u *repl, char_u **cmdlinep));static void ex_highlight __ARGS((exarg_T *eap));static void ex_colorscheme __ARGS((exarg_T *eap));static void ex_quit __ARGS((exarg_T *eap));static void ex_cquit __ARGS((exarg_T *eap));static void ex_quit_all __ARGS((exarg_T *eap));#ifdef FEAT_WINDOWSstatic void ex_close __ARGS((exarg_T *eap));static void ex_win_close __ARGS((int forceit, win_T *win, tabpage_T *tp));static void ex_only __ARGS((exarg_T *eap));static void ex_resize __ARGS((exarg_T *eap));static void ex_stag __ARGS((exarg_T *eap));static void ex_tabclose __ARGS((exarg_T *eap));static void ex_tabonly __ARGS((exarg_T *eap));static void ex_tabnext __ARGS((exarg_T *eap));static void ex_tabmove __ARGS((exarg_T *eap));static void ex_tabs __ARGS((exarg_T *eap));#else# define ex_close ex_ni# define ex_only ex_ni# define ex_all ex_ni# define ex_resize ex_ni# define ex_splitview ex_ni# define ex_stag ex_ni# define ex_tabnext ex_ni# define ex_tabmove ex_ni# define ex_tabs ex_ni# define ex_tabclose ex_ni# define ex_tabonly ex_ni#endif#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)static void ex_pclose __ARGS((exarg_T *eap));static void ex_ptag __ARGS((exarg_T *eap));static void ex_pedit __ARGS((exarg_T *eap));#else# define ex_pclose ex_ni# define ex_ptag ex_ni# define ex_pedit ex_ni#endifstatic void ex_hide __ARGS((exarg_T *eap));static void ex_stop __ARGS((exarg_T *eap));static void ex_exit __ARGS((exarg_T *eap));static void ex_print __ARGS((exarg_T *eap));#ifdef FEAT_BYTEOFFstatic void ex_goto __ARGS((exarg_T *eap));#else# define ex_goto ex_ni#endifstatic void ex_shell __ARGS((exarg_T *eap));static void ex_preserve __ARGS((exarg_T *eap));static void ex_recover __ARGS((exarg_T *eap));#ifndef FEAT_LISTCMDS# define ex_argedit ex_ni# define ex_argadd ex_ni# define ex_argdelete ex_ni# define ex_listdo ex_ni#endifstatic void ex_mode __ARGS((exarg_T *eap));static void ex_wrongmodifier __ARGS((exarg_T *eap));static void ex_find __ARGS((exarg_T *eap));static void ex_open __ARGS((exarg_T *eap));static void ex_edit __ARGS((exarg_T *eap));#if !defined(FEAT_GUI) && !defined(FEAT_CLIENTSERVER)# define ex_drop ex_ni#endif#ifndef FEAT_GUI# define ex_gui ex_noguistatic void ex_nogui __ARGS((exarg_T *eap));#endif#if defined(FEAT_GUI_W32) && defined(FEAT_MENU) && defined(FEAT_TEAROFF)static void ex_tearoff __ARGS((exarg_T *eap));#else# define ex_tearoff ex_ni#endif#if (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_GTK)) && defined(FEAT_MENU)static void ex_popup __ARGS((exarg_T *eap));#else# define ex_popup ex_ni#endif#ifndef FEAT_GUI_MSWIN# define ex_simalt ex_ni#endif#if !defined(FEAT_GUI_MSWIN) && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_MOTIF)# define gui_mch_find_dialog ex_ni# define gui_mch_replace_dialog ex_ni#endif#if !defined(FEAT_GUI_GTK)# define ex_helpfind ex_ni#endif#ifndef FEAT_CSCOPE# define do_cscope ex_ni# define do_scscope ex_ni# define do_cstag ex_ni#endif#ifndef FEAT_SYN_HL# define ex_syntax ex_ni#endif#ifndef FEAT_SPELL# define ex_spell ex_ni# define ex_mkspell ex_ni# define ex_spelldump ex_ni# define ex_spellinfo ex_ni# define ex_spellrepall ex_ni#endif#ifndef FEAT_MZSCHEME# define ex_mzscheme ex_script_ni# define ex_mzfile ex_ni#endif#ifndef FEAT_PERL# define ex_perl ex_script_ni# define ex_perldo ex_ni#endif#ifndef FEAT_PYTHON# define ex_python ex_script_ni# define ex_pyfile ex_ni#endif#ifndef FEAT_TCL# define ex_tcl ex_script_ni# define ex_tcldo ex_ni# define ex_tclfile ex_ni#endif#ifndef FEAT_RUBY# define ex_ruby ex_script_ni# define ex_rubydo ex_ni# define ex_rubyfile ex_ni#endif#ifndef FEAT_SNIFF# define ex_sniff ex_ni#endif#ifndef FEAT_KEYMAP# define ex_loadkeymap ex_ni#endifstatic void ex_swapname __ARGS((exarg_T *eap));static void ex_syncbind __ARGS((exarg_T *eap));static void ex_read __ARGS((exarg_T *eap));static void ex_cd __ARGS((exarg_T *eap));static void ex_pwd __ARGS((exarg_T *eap));static void ex_equal __ARGS((exarg_T *eap));static void ex_sleep __ARGS((exarg_T *eap));static void do_exmap __ARGS((exarg_T *eap, int isabbrev));static void ex_winsize __ARGS((exarg_T *eap));#ifdef FEAT_WINDOWSstatic void ex_wincmd __ARGS((exarg_T *eap));#else# define ex_wincmd ex_ni#endif#if defined(FEAT_GUI) || defined(UNIX) || defined(VMS) || defined(MSWIN)static void ex_winpos __ARGS((exarg_T *eap));#else# define ex_winpos ex_ni#endifstatic void ex_operators __ARGS((exarg_T *eap));static void ex_put __ARGS((exarg_T *eap));static void ex_copymove __ARGS((exarg_T *eap));static void ex_may_print __ARGS((exarg_T *eap));static void ex_submagic __ARGS((exarg_T *eap));static void ex_join __ARGS((exarg_T *eap));static void ex_at __ARGS((exarg_T *eap));static void ex_bang __ARGS((exarg_T *eap));static void ex_undo __ARGS((exarg_T *eap));static void ex_redo __ARGS((exarg_T *eap));static void ex_later __ARGS((exarg_T *eap));static void ex_redir __ARGS((exarg_T *eap));static void ex_redraw __ARGS((exarg_T *eap));static void ex_redrawstatus __ARGS((exarg_T *eap));static void close_redir __ARGS((void));static void ex_mkrc __ARGS((exarg_T *eap));static void ex_mark __ARGS((exarg_T *eap));#ifdef FEAT_USR_CMDSstatic char_u *uc_fun_cmd __ARGS((void));static char_u *find_ucmd __ARGS((exarg_T *eap, char_u *p, int *full, expand_T *xp, int *compl));#endif#ifdef FEAT_EX_EXTRAstatic void ex_normal __ARGS((exarg_T *eap));static void ex_startinsert __ARGS((exarg_T *eap));static void ex_stopinsert __ARGS((exarg_T *eap));#else# define ex_normal ex_ni# define ex_align ex_ni# define ex_retab ex_ni# define ex_startinsert ex_ni# define ex_stopinsert ex_ni# define ex_helptags ex_ni# define ex_sort ex_ni#endif#ifdef FEAT_FIND_IDstatic void ex_checkpath __ARGS((exarg_T *eap));static void ex_findpat __ARGS((exarg_T *eap));#else# define ex_findpat ex_ni# define ex_checkpath ex_ni#endif#if defined(FEAT_FIND_ID) && defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)static void ex_psearch __ARGS((exarg_T *eap));#else# define ex_psearch ex_ni#endifstatic void ex_tag __ARGS((exarg_T *eap));static void ex_tag_cmd __ARGS((exarg_T *eap, char_u *name));#ifndef FEAT_EVAL# define ex_scriptnames ex_ni# define ex_finish ex_ni# define ex_echo ex_ni# define ex_echohl ex_ni# define ex_execute ex_ni# define ex_call ex_ni# define ex_if ex_ni# define ex_endif ex_ni# define ex_else ex_ni# define ex_while ex_ni# define ex_for ex_ni# define ex_continue ex_ni# define ex_break ex_ni# define ex_endwhile ex_ni# define ex_endfor ex_ni# define ex_throw ex_ni# define ex_try ex_ni# define ex_catch ex_ni# define ex_finally ex_ni# define ex_endtry ex_ni# define ex_endfunction ex_ni# define ex_let ex_ni# define ex_unlet ex_ni# define ex_lockvar ex_ni# define ex_unlockvar ex_ni# define ex_function ex_ni# define ex_delfunction ex_ni# define ex_return ex_ni#endifstatic char_u *arg_all __ARGS((void));#ifdef FEAT_SESSIONstatic int makeopens __ARGS((FILE *fd, char_u *dirnow));static int put_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp));static void ex_loadview __ARGS((exarg_T *eap));static char_u *get_view_file __ARGS((int c));static int did_lcd; /* whether ":lcd" was produced for a session */#else# define ex_loadview ex_ni#endif#ifndef FEAT_EVAL# define ex_compiler ex_ni#endif#ifdef FEAT_VIMINFOstatic void ex_viminfo __ARGS((exarg_T *eap));#else# define ex_viminfo ex_ni#endifstatic void ex_behave __ARGS((exarg_T *eap));#ifdef FEAT_AUTOCMDstatic void ex_filetype __ARGS((exarg_T *eap));static void ex_setfiletype __ARGS((exarg_T *eap));#else# define ex_filetype ex_ni# define ex_setfiletype ex_ni#endif#ifndef FEAT_DIFF# define ex_diffoff ex_ni# define ex_diffpatch ex_ni# define ex_diffgetput ex_ni# define ex_diffsplit ex_ni# define ex_diffthis ex_ni# define ex_diffupdate ex_ni#endifstatic void ex_digraphs __ARGS((exarg_T *eap));static void ex_set __ARGS((exarg_T *eap));#if !defined(FEAT_EVAL) || !defined(FEAT_AUTOCMD)# define ex_options ex_ni#endif#ifdef FEAT_SEARCH_EXTRAstatic void ex_nohlsearch __ARGS((exarg_T *eap));static void ex_match __ARGS((exarg_T *eap));#else# define ex_nohlsearch ex_ni# define ex_match ex_ni#endif#ifdef FEAT_CRYPTstatic void ex_X __ARGS((exarg_T *eap));#else# define ex_X ex_ni#endif#ifdef FEAT_FOLDINGstatic void ex_fold __ARGS((exarg_T *eap));static void ex_foldopen __ARGS((exarg_T *eap));static void ex_folddo __ARGS((exarg_T *eap));#else# define ex_fold ex_ni# define ex_foldopen ex_ni# define ex_folddo ex_ni#endif#if !((defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)))# define ex_language ex_ni#endif#ifndef FEAT_SIGNS# define ex_sign ex_ni#endif#ifndef FEAT_SUN_WORKSHOP# define ex_wsverb ex_ni#endif#ifndef FEAT_NETBEANS_INTG# define ex_nbkey ex_ni#endif #ifndef FEAT_EVAL# define ex_debug ex_ni# define ex_breakadd ex_ni# define ex_debuggreedy ex_ni# define ex_breakdel ex_ni# define ex_breaklist ex_ni#endif #ifndef FEAT_CMDHIST# define ex_history ex_ni#endif#ifndef FEAT_JUMPLIST# define ex_jumps ex_ni# define ex_changes ex_ni#endif #ifndef FEAT_PROFILE# define ex_profile ex_ni#endif /* * Declare cmdnames[]. */#define DO_DECLARE_EXCMD#include "ex_cmds.h" /* * Table used to quickly search for a command, based on its first character. */static cmdidx_T cmdidxs[27] ={ CMD_append, CMD_buffer, CMD_change, CMD_delete, CMD_edit, CMD_file, CMD_global, CMD_help, CMD_insert, CMD_join, CMD_k, CMD_list, CMD_move, CMD_next, CMD_open, CMD_print, CMD_quit, CMD_read, CMD_substitute, CMD_t, CMD_undo, CMD_vglobal, CMD_write, CMD_xit,Lines 1–500 of 10942. Load more
/* vi:set ts=8 sts=4 sw=4: * * VIM - Vi IMproved by Bram Moolenaar * * Do ":help uganda" in Vim to read copying and usage conditions. * Do ":help credits" in Vim to see a list of people who contributed. * See README.txt for an overview of the Vim source code. */ /* * ex_docmd.c: functions for executing an Ex command line. */ #include "vim.h" #ifdef HAVE_FCNTL_H # include <fcntl.h> /* for chdir() */ #endif static int quitmore = 0; static int ex_pressedreturn = FALSE; #ifndef FEAT_PRINTER # define ex_hardcopy ex_ni #endif #ifdef FEAT_USR_CMDS typedef struct ucmd { char_u *uc_name; /* The command name */ long_u uc_argt; /* The argument type */ char_u *uc_rep; /* The command's replacement string */ long uc_def; /* The default value for a range/count */ scid_T uc_scriptID; /* SID where the command was defined */ int uc_compl; /* completion type */ # if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) char_u *uc_compl_arg; /* completion argument if any */ # endif } ucmd_T; #define UC_BUFFER 1 /* -buffer: local to current buffer */ static garray_T ucmds = {0, 0, sizeof(ucmd_T), 4, NULL}; #define USER_CMD(i) (&((ucmd_T *)(ucmds.ga_data))[i]) #define USER_CMD_GA(gap, i) (&((ucmd_T *)((gap)->ga_data))[i]) static void do_ucmd __ARGS((exarg_T *eap)); static void ex_command __ARGS((exarg_T *eap)); static void ex_delcommand __ARGS((exarg_T *eap)); # ifdef FEAT_CMDL_COMPL static char_u *get_user_command_name __ARGS((int idx)); # endif #else # define ex_command ex_ni # define ex_comclear ex_ni # define ex_delcommand ex_ni #endif #ifdef FEAT_EVAL static char_u *do_one_cmd __ARGS((char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int), void *cookie)); #else static char_u *do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie)); static int if_level = 0; /* depth in :if */ #endif static char_u *find_command __ARGS((exarg_T *eap, int *full)); static void ex_abbreviate __ARGS((exarg_T *eap)); static void ex_map __ARGS((exarg_T *eap)); static void ex_unmap __ARGS((exarg_T *eap)); static void ex_mapclear __ARGS((exarg_T *eap)); static void ex_abclear __ARGS((exarg_T *eap)); #ifndef FEAT_MENU # define ex_emenu ex_ni # define ex_menu ex_ni # define ex_menutranslate ex_ni #endif #ifdef FEAT_AUTOCMD static void ex_autocmd __ARGS((exarg_T *eap)); static void ex_doautocmd __ARGS((exarg_T *eap)); #else # define ex_autocmd ex_ni # define ex_doautocmd ex_ni # define ex_doautoall ex_ni #endif #ifdef FEAT_LISTCMDS static void ex_bunload __ARGS((exarg_T *eap)); static void ex_buffer __ARGS((exarg_T *eap)); static void ex_bmodified __ARGS((exarg_T *eap)); static void ex_bnext __ARGS((exarg_T *eap)); static void ex_bprevious __ARGS((exarg_T *eap)); static void ex_brewind __ARGS((exarg_T *eap)); static void ex_blast __ARGS((exarg_T *eap)); #else # define ex_bunload ex_ni # define ex_buffer ex_ni # define ex_bmodified ex_ni # define ex_bnext ex_ni # define ex_bprevious ex_ni # define ex_brewind ex_ni # define ex_blast ex_ni # define buflist_list ex_ni # define ex_checktime ex_ni #endif #if !defined(FEAT_LISTCMDS) || !defined(FEAT_WINDOWS) # define ex_buffer_all ex_ni #endif static char_u *getargcmd __ARGS((char_u **)); static char_u *skip_cmd_arg __ARGS((char_u *p, int rembs)); static int getargopt __ARGS((exarg_T *eap)); #ifndef FEAT_QUICKFIX # define ex_make ex_ni # define ex_cbuffer ex_ni # define ex_cc ex_ni # define ex_cnext ex_ni # define ex_cfile ex_ni # define qf_list ex_ni # define qf_age ex_ni # define ex_helpgrep ex_ni # define ex_vimgrep ex_ni #endif #if !defined(FEAT_QUICKFIX) || !defined(FEAT_WINDOWS) # define ex_cclose ex_ni # define ex_copen ex_ni # define ex_cwindow ex_ni #endif #if !defined(FEAT_QUICKFIX) || !defined(FEAT_EVAL) # define ex_cexpr ex_ni #endif static int check_more __ARGS((int, int)); static linenr_T get_address __ARGS((char_u **, int skip, int to_other_file)); static void get_flags __ARGS((exarg_T *eap)); #if !defined(FEAT_PERL) || !defined(FEAT_PYTHON) || !defined(FEAT_TCL) \ || !defined(FEAT_RUBY) || !defined(FEAT_MZSCHEME) static void ex_script_ni __ARGS((exarg_T *eap)); #endif static char_u *invalid_range __ARGS((exarg_T *eap)); static void correct_range __ARGS((exarg_T *eap)); #ifdef FEAT_QUICKFIX static char_u *replace_makeprg __ARGS((exarg_T *eap, char_u *p, char_u **cmdlinep)); #endif static char_u *repl_cmdline __ARGS((exarg_T *eap, char_u *src, int srclen, char_u *repl, char_u **cmdlinep)); static void ex_highlight __ARGS((exarg_T *eap)); static void ex_colorscheme __ARGS((exarg_T *eap)); static void ex_quit __ARGS((exarg_T *eap)); static void ex_cquit __ARGS((exarg_T *eap)); static void ex_quit_all __ARGS((exarg_T *eap)); #ifdef FEAT_WINDOWS static void ex_close __ARGS((exarg_T *eap)); static void ex_win_close __ARGS((int forceit, win_T *win, tabpage_T *tp)); static void ex_only __ARGS((exarg_T *eap)); static void ex_resize __ARGS((exarg_T *eap)); static void ex_stag __ARGS((exarg_T *eap)); static void ex_tabclose __ARGS((exarg_T *eap)); static void ex_tabonly __ARGS((exarg_T *eap)); static void ex_tabnext __ARGS((exarg_T *eap)); static void ex_tabmove __ARGS((exarg_T *eap)); static void ex_tabs __ARGS((exarg_T *eap)); #else # define ex_close ex_ni # define ex_only ex_ni # define ex_all ex_ni # define ex_resize ex_ni # define ex_splitview ex_ni # define ex_stag ex_ni # define ex_tabnext ex_ni # define ex_tabmove ex_ni # define ex_tabs ex_ni # define ex_tabclose ex_ni # define ex_tabonly ex_ni #endif #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) static void ex_pclose __ARGS((exarg_T *eap)); static void ex_ptag __ARGS((exarg_T *eap)); static void ex_pedit __ARGS((exarg_T *eap)); #else # define ex_pclose ex_ni # define ex_ptag ex_ni # define ex_pedit ex_ni #endif static void ex_hide __ARGS((exarg_T *eap)); static void ex_stop __ARGS((exarg_T *eap)); static void ex_exit __ARGS((exarg_T *eap)); static void ex_print __ARGS((exarg_T *eap)); #ifdef FEAT_BYTEOFF static void ex_goto __ARGS((exarg_T *eap)); #else # define ex_goto ex_ni #endif static void ex_shell __ARGS((exarg_T *eap)); static void ex_preserve __ARGS((exarg_T *eap)); static void ex_recover __ARGS((exarg_T *eap)); #ifndef FEAT_LISTCMDS # define ex_argedit ex_ni # define ex_argadd ex_ni # define ex_argdelete ex_ni # define ex_listdo ex_ni #endif static void ex_mode __ARGS((exarg_T *eap)); static void ex_wrongmodifier __ARGS((exarg_T *eap)); static void ex_find __ARGS((exarg_T *eap)); static void ex_open __ARGS((exarg_T *eap)); static void ex_edit __ARGS((exarg_T *eap)); #if !defined(FEAT_GUI) && !defined(FEAT_CLIENTSERVER) # define ex_drop ex_ni #endif #ifndef FEAT_GUI # define ex_gui ex_nogui static void ex_nogui __ARGS((exarg_T *eap)); #endif #if defined(FEAT_GUI_W32) && defined(FEAT_MENU) && defined(FEAT_TEAROFF) static void ex_tearoff __ARGS((exarg_T *eap)); #else # define ex_tearoff ex_ni #endif #if (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_GTK)) && defined(FEAT_MENU) static void ex_popup __ARGS((exarg_T *eap)); #else # define ex_popup ex_ni #endif #ifndef FEAT_GUI_MSWIN # define ex_simalt ex_ni #endif #if !defined(FEAT_GUI_MSWIN) && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_MOTIF) # define gui_mch_find_dialog ex_ni # define gui_mch_replace_dialog ex_ni #endif #if !defined(FEAT_GUI_GTK) # define ex_helpfind ex_ni #endif #ifndef FEAT_CSCOPE # define do_cscope ex_ni # define do_scscope ex_ni # define do_cstag ex_ni #endif #ifndef FEAT_SYN_HL # define ex_syntax ex_ni #endif #ifndef FEAT_SPELL # define ex_spell ex_ni # define ex_mkspell ex_ni # define ex_spelldump ex_ni # define ex_spellinfo ex_ni # define ex_spellrepall ex_ni #endif #ifndef FEAT_MZSCHEME # define ex_mzscheme ex_script_ni # define ex_mzfile ex_ni #endif #ifndef FEAT_PERL # define ex_perl ex_script_ni # define ex_perldo ex_ni #endif #ifndef FEAT_PYTHON # define ex_python ex_script_ni # define ex_pyfile ex_ni #endif #ifndef FEAT_TCL # define ex_tcl ex_script_ni # define ex_tcldo ex_ni # define ex_tclfile ex_ni #endif #ifndef FEAT_RUBY # define ex_ruby ex_script_ni # define ex_rubydo ex_ni # define ex_rubyfile ex_ni #endif #ifndef FEAT_SNIFF # define ex_sniff ex_ni #endif #ifndef FEAT_KEYMAP # define ex_loadkeymap ex_ni #endif static void ex_swapname __ARGS((exarg_T *eap)); static void ex_syncbind __ARGS((exarg_T *eap)); static void ex_read __ARGS((exarg_T *eap)); static void ex_cd __ARGS((exarg_T *eap)); static void ex_pwd __ARGS((exarg_T *eap)); static void ex_equal __ARGS((exarg_T *eap)); static void ex_sleep __ARGS((exarg_T *eap)); static void do_exmap __ARGS((exarg_T *eap, int isabbrev)); static void ex_winsize __ARGS((exarg_T *eap)); #ifdef FEAT_WINDOWS static void ex_wincmd __ARGS((exarg_T *eap)); #else # define ex_wincmd ex_ni #endif #if defined(FEAT_GUI) || defined(UNIX) || defined(VMS) || defined(MSWIN) static void ex_winpos __ARGS((exarg_T *eap)); #else # define ex_winpos ex_ni #endif static void ex_operators __ARGS((exarg_T *eap)); static void ex_put __ARGS((exarg_T *eap)); static void ex_copymove __ARGS((exarg_T *eap)); static void ex_may_print __ARGS((exarg_T *eap)); static void ex_submagic __ARGS((exarg_T *eap)); static void ex_join __ARGS((exarg_T *eap)); static void ex_at __ARGS((exarg_T *eap)); static void ex_bang __ARGS((exarg_T *eap)); static void ex_undo __ARGS((exarg_T *eap)); static void ex_redo __ARGS((exarg_T *eap)); static void ex_later __ARGS((exarg_T *eap)); static void ex_redir __ARGS((exarg_T *eap)); static void ex_redraw __ARGS((exarg_T *eap)); static void ex_redrawstatus __ARGS((exarg_T *eap)); static void close_redir __ARGS((void)); static void ex_mkrc __ARGS((exarg_T *eap)); static void ex_mark __ARGS((exarg_T *eap)); #ifdef FEAT_USR_CMDS static char_u *uc_fun_cmd __ARGS((void)); static char_u *find_ucmd __ARGS((exarg_T *eap, char_u *p, int *full, expand_T *xp, int *compl)); #endif #ifdef FEAT_EX_EXTRA static void ex_normal __ARGS((exarg_T *eap)); static void ex_startinsert __ARGS((exarg_T *eap)); static void ex_stopinsert __ARGS((exarg_T *eap)); #else # define ex_normal ex_ni # define ex_align ex_ni # define ex_retab ex_ni # define ex_startinsert ex_ni # define ex_stopinsert ex_ni # define ex_helptags ex_ni # define ex_sort ex_ni #endif #ifdef FEAT_FIND_ID static void ex_checkpath __ARGS((exarg_T *eap)); static void ex_findpat __ARGS((exarg_T *eap)); #else # define ex_findpat ex_ni # define ex_checkpath ex_ni #endif #if defined(FEAT_FIND_ID) && defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) static void ex_psearch __ARGS((exarg_T *eap)); #else # define ex_psearch ex_ni #endif static void ex_tag __ARGS((exarg_T *eap)); static void ex_tag_cmd __ARGS((exarg_T *eap, char_u *name)); #ifndef FEAT_EVAL # define ex_scriptnames ex_ni # define ex_finish ex_ni # define ex_echo ex_ni # define ex_echohl ex_ni # define ex_execute ex_ni # define ex_call ex_ni # define ex_if ex_ni # define ex_endif ex_ni # define ex_else ex_ni # define ex_while ex_ni # define ex_for ex_ni # define ex_continue ex_ni # define ex_break ex_ni # define ex_endwhile ex_ni # define ex_endfor ex_ni # define ex_throw ex_ni # define ex_try ex_ni # define ex_catch ex_ni # define ex_finally ex_ni # define ex_endtry ex_ni # define ex_endfunction ex_ni # define ex_let ex_ni # define ex_unlet ex_ni # define ex_lockvar ex_ni # define ex_unlockvar ex_ni # define ex_function ex_ni # define ex_delfunction ex_ni # define ex_return ex_ni #endif static char_u *arg_all __ARGS((void)); #ifdef FEAT_SESSION static int makeopens __ARGS((FILE *fd, char_u *dirnow)); static int put_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp)); static void ex_loadview __ARGS((exarg_T *eap)); static char_u *get_view_file __ARGS((int c)); static int did_lcd; /* whether ":lcd" was produced for a session */ #else # define ex_loadview ex_ni #endif #ifndef FEAT_EVAL # define ex_compiler ex_ni #endif #ifdef FEAT_VIMINFO static void ex_viminfo __ARGS((exarg_T *eap)); #else # define ex_viminfo ex_ni #endif static void ex_behave __ARGS((exarg_T *eap)); #ifdef FEAT_AUTOCMD static void ex_filetype __ARGS((exarg_T *eap)); static void ex_setfiletype __ARGS((exarg_T *eap)); #else # define ex_filetype ex_ni # define ex_setfiletype ex_ni #endif #ifndef FEAT_DIFF # define ex_diffoff ex_ni # define ex_diffpatch ex_ni # define ex_diffgetput ex_ni # define ex_diffsplit ex_ni # define ex_diffthis ex_ni # define ex_diffupdate ex_ni #endif static void ex_digraphs __ARGS((exarg_T *eap)); static void ex_set __ARGS((exarg_T *eap)); #if !defined(FEAT_EVAL) || !defined(FEAT_AUTOCMD) # define ex_options ex_ni #endif #ifdef FEAT_SEARCH_EXTRA static void ex_nohlsearch __ARGS((exarg_T *eap)); static void ex_match __ARGS((exarg_T *eap)); #else # define ex_nohlsearch ex_ni # define ex_match ex_ni #endif #ifdef FEAT_CRYPT static void ex_X __ARGS((exarg_T *eap)); #else # define ex_X ex_ni #endif #ifdef FEAT_FOLDING static void ex_fold __ARGS((exarg_T *eap)); static void ex_foldopen __ARGS((exarg_T *eap)); static void ex_folddo __ARGS((exarg_T *eap)); #else # define ex_fold ex_ni # define ex_foldopen ex_ni # define ex_folddo ex_ni #endif #if !((defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))) # define ex_language ex_ni #endif #ifndef FEAT_SIGNS # define ex_sign ex_ni #endif #ifndef FEAT_SUN_WORKSHOP # define ex_wsverb ex_ni #endif #ifndef FEAT_NETBEANS_INTG # define ex_nbkey ex_ni #endif #ifndef FEAT_EVAL # define ex_debug ex_ni # define ex_breakadd ex_ni # define ex_debuggreedy ex_ni # define ex_breakdel ex_ni # define ex_breaklist ex_ni #endif #ifndef FEAT_CMDHIST # define ex_history ex_ni #endif #ifndef FEAT_JUMPLIST # define ex_jumps ex_ni # define ex_changes ex_ni #endif #ifndef FEAT_PROFILE # define ex_profile ex_ni #endif /* * Declare cmdnames[]. */ #define DO_DECLARE_EXCMD #include "ex_cmds.h" /* * Table used to quickly search for a command, based on its first character. */ static cmdidx_T cmdidxs[27] = { CMD_append, CMD_buffer, CMD_change, CMD_delete, CMD_edit, CMD_file, CMD_global, CMD_help, CMD_insert, CMD_join, CMD_k, CMD_list, CMD_move, CMD_next, CMD_open, CMD_print, CMD_quit, CMD_read, CMD_substitute, CMD_t, CMD_undo, CMD_vglobal, CMD_write, CMD_xit,