mirror of
https://github.com/vim/vim
synced 2025-05-02 22:37:47 +02:00
related: #14215 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
123 lines
3.1 KiB
C
123 lines
3.1 KiB
C
/* vi:set ts=8 sts=4 sw=4 noet:
|
|
* VIM_TEST_SETUP let g:c_comment_strings = 1
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#define EXTERN
|
|
#include "vim.h"
|
|
|
|
#ifdef __CYGWIN__
|
|
# include <cygwin/version.h>
|
|
# include <sys/cygwin.h> // for cygwin_conv_to_posix_path() and/or
|
|
// cygwin_conv_path()
|
|
# include <limits.h>
|
|
#endif
|
|
|
|
#if defined(MSWIN) && (!defined(FEAT_GUI_MSWIN) || defined(VIMDLL))
|
|
# include "iscygpty.h"
|
|
#endif
|
|
|
|
// Values for edit_type.
|
|
#define EDIT_NONE 0 // no edit type yet
|
|
#define EDIT_FILE 1 // file name argument[s] given, use argument list
|
|
#define EDIT_STDIN 2 // read file from stdin
|
|
#define EDIT_TAG 3 // tag name argument given, use tagname
|
|
#define EDIT_QF 4 // start in quickfix mode
|
|
|
|
#if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN)
|
|
static int file_owned(char *fname);
|
|
#endif
|
|
static void mainerr(int, char_u *);
|
|
static void early_arg_scan(mparm_T *parmp);
|
|
#ifndef NO_VIM_MAIN
|
|
static void usage(void);
|
|
static void parse_command_name(mparm_T *parmp);
|
|
static void command_line_scan(mparm_T *parmp);
|
|
static void check_tty(mparm_T *parmp);
|
|
static void read_stdin(void);
|
|
static void create_windows(mparm_T *parmp);
|
|
static void edit_buffers(mparm_T *parmp, char_u *cwd);
|
|
static void exe_pre_commands(mparm_T *parmp);
|
|
static void exe_commands(mparm_T *parmp);
|
|
static void source_startup_scripts(mparm_T *parmp);
|
|
static void main_start_gui(void);
|
|
static void check_swap_exists_action(void);
|
|
# ifdef FEAT_EVAL
|
|
static void set_progpath(char_u *argv0);
|
|
# endif
|
|
#endif
|
|
|
|
|
|
/*
|
|
* Different types of error messages.
|
|
*/
|
|
static char *(main_errors[]) =
|
|
{
|
|
N_("Unknown option argument"),
|
|
#define ME_UNKNOWN_OPTION 0
|
|
N_("Too many edit arguments"),
|
|
#define ME_TOO_MANY_ARGS 1
|
|
N_("Argument missing after"),
|
|
#define ME_ARG_MISSING 2
|
|
N_("Garbage after option argument"),
|
|
#define ME_GARBAGE 3
|
|
N_("Too many \"+command\", \"-c command\" or \"--cmd command\" arguments"),
|
|
#define ME_EXTRA_CMD 4
|
|
N_("Invalid argument for"),
|
|
#define ME_INVALID_ARG 5
|
|
};
|
|
|
|
#ifndef PROTO // don't want a prototype for main()
|
|
|
|
// Various parameters passed between main() and other functions.
|
|
static mparm_T params;
|
|
|
|
#ifdef _IOLBF
|
|
static void *s_vbuf = NULL; // buffer for setvbuf()
|
|
#endif
|
|
|
|
#ifndef NO_VIM_MAIN // skip this for unittests
|
|
|
|
static char_u *start_dir = NULL; // current working dir on startup
|
|
|
|
static int has_dash_c_arg = FALSE;
|
|
|
|
# ifdef VIMDLL
|
|
__declspec(dllexport)
|
|
# endif
|
|
int
|
|
# ifdef MSWIN
|
|
VimMain
|
|
# else
|
|
main
|
|
# endif
|
|
(int argc, char **argv)
|
|
{
|
|
#if defined(STARTUPTIME) || defined(CLEAN_RUNTIMEPATH)
|
|
int i;
|
|
#endif
|
|
|
|
/*
|
|
* Do any system-specific initialisations. These can NOT use IObuff or
|
|
* NameBuff. Thus emsg2() cannot be called!
|
|
*/
|
|
mch_early_init();
|
|
|
|
// Source startup scripts.
|
|
source_startup_scripts(¶ms);
|
|
|
|
#if 0
|
|
/*
|
|
* Newer version of MzScheme (Racket) require earlier (trampolined)
|
|
* initialisation via scheme_main_setup.
|
|
*/
|
|
return mzscheme_main();
|
|
#else
|
|
return vim_main2();
|
|
#endif
|
|
}
|