annotate src/main.c @ 4444:ccecb03e5e8b v7.3.970

updated for version 7.3.970 Problem: Syntax highlighting can be slow. Solution: Include the NFA regexp engine. Add the 'regexpengine' option to select which one is used. (various authors, including Ken Takata, Andrei Aiordachioaie, Russ Cox, Xiaozhou Liua, Ian Young)
author Bram Moolenaar <bram@vim.org>
date Sun, 19 May 2013 19:40:29 +0200
parents c9820396afb9
children c4d4f0fc12b9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1 /* vi:set ts=8 sts=4 sw=4:
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
2 *
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3 * VIM - Vi IMproved by Bram Moolenaar
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4 *
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
5 * Do ":help uganda" in Vim to read copying and usage conditions.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
6 * Do ":help credits" in Vim to see a list of people who contributed.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
7 * See README.txt for an overview of the Vim source code.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
8 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
9
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
10 #define EXTERN
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
11 #include "vim.h"
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
12
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
13 #ifdef SPAWNO
242
a711f7a6852d updated for version 7.0067
vimboss
parents: 237
diff changeset
14 # include <spawno.h> /* special MS-DOS swapping library */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
15 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
16
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
17 #ifdef __CYGWIN__
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
18 # ifndef WIN32
1657
c3e225bc213a updated for version 7.2a-009
vimboss
parents: 1624
diff changeset
19 # include <cygwin/version.h>
c3e225bc213a updated for version 7.2a-009
vimboss
parents: 1624
diff changeset
20 # include <sys/cygwin.h> /* for cygwin_conv_to_posix_path() and/or
c3e225bc213a updated for version 7.2a-009
vimboss
parents: 1624
diff changeset
21 * cygwin_conv_path() */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
22 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
23 # include <limits.h>
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
24 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
25
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
26 /* Maximum number of commands from + or -c arguments. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
27 #define MAX_ARG_CMDS 10
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
28
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
29 /* values for "window_layout" */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
30 #define WIN_HOR 1 /* "-o" horizontally split windows */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
31 #define WIN_VER 2 /* "-O" vertically split windows */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
32 #define WIN_TABS 3 /* "-p" windows on tab pages */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
33
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
34 /* Struct for various parameters passed between main() and other functions. */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
35 typedef struct
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
36 {
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
37 int argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
38 char **argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
39
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
40 int evim_mode; /* started as "evim" */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
41 char_u *use_vimrc; /* vimrc from -u argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
42
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
43 int n_commands; /* no. of commands from + or -c */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
44 char_u *commands[MAX_ARG_CMDS]; /* commands from + or -c arg. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
45 char_u cmds_tofree[MAX_ARG_CMDS]; /* commands that need free() */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
46 int n_pre_commands; /* no. of commands from --cmd */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
47 char_u *pre_commands[MAX_ARG_CMDS]; /* commands from --cmd argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
48
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
49 int edit_type; /* type of editing to do */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
50 char_u *tagname; /* tag from -t argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
51 #ifdef FEAT_QUICKFIX
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
52 char_u *use_ef; /* 'errorfile' from -q argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
53 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
54
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
55 int want_full_screen;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
56 int stdout_isatty; /* is stdout a terminal? */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
57 char_u *term; /* specified terminal name */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
58 #ifdef FEAT_CRYPT
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
59 int ask_for_key; /* -x argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
60 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
61 int no_swap_file; /* "-n" argument used */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
62 #ifdef FEAT_EVAL
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
63 int use_debug_break_level;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
64 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
65 #ifdef FEAT_WINDOWS
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
66 int window_count; /* number of windows to use */
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
67 int window_layout; /* 0, WIN_HOR, WIN_VER or WIN_TABS */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
68 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
69
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
70 #ifdef FEAT_CLIENTSERVER
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
71 int serverArg; /* TRUE when argument for a server */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
72 char_u *serverName_arg; /* cmdline arg for server name */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
73 char_u *serverStr; /* remote server command */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
74 char_u *serverStrEnc; /* encoding of serverStr */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
75 char_u *servername; /* allocated name for our server */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
76 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
77 #if (!defined(UNIX) && !defined(__EMX__)) || defined(ARCHIE)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
78 int literal; /* don't expand file names */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
79 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
80 #ifdef MSWIN
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
81 int full_path; /* file name argument was full path */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
82 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
83 #ifdef FEAT_DIFF
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
84 int diff_mode; /* start with 'diff' set */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
85 #endif
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
86 } mparm_T;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
87
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
88 /* Values for edit_type. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
89 #define EDIT_NONE 0 /* no edit type yet */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
90 #define EDIT_FILE 1 /* file name argument[s] given, use argument list */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
91 #define EDIT_STDIN 2 /* read file from stdin */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
92 #define EDIT_TAG 3 /* tag name argument given, use tagname */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
93 #define EDIT_QF 4 /* start in quickfix mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
94
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
95 #if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
96 static int file_owned __ARGS((char *fname));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
97 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
98 static void mainerr __ARGS((int, char_u *));
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
99 #ifndef NO_VIM_MAIN
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
100 static void main_msg __ARGS((char *s));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
101 static void usage __ARGS((void));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
102 static int get_number_arg __ARGS((char_u *p, int *idx, int def));
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
103 # if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
104 static void init_locale __ARGS((void));
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
105 # endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
106 static void parse_command_name __ARGS((mparm_T *parmp));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
107 static void early_arg_scan __ARGS((mparm_T *parmp));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
108 static void command_line_scan __ARGS((mparm_T *parmp));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
109 static void check_tty __ARGS((mparm_T *parmp));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
110 static void read_stdin __ARGS((void));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
111 static void create_windows __ARGS((mparm_T *parmp));
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
112 # ifdef FEAT_WINDOWS
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
113 static void edit_buffers __ARGS((mparm_T *parmp));
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
114 # endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
115 static void exe_pre_commands __ARGS((mparm_T *parmp));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
116 static void exe_commands __ARGS((mparm_T *parmp));
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
117 static void source_startup_scripts __ARGS((mparm_T *parmp));
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
118 static void main_start_gui __ARGS((void));
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
119 # if defined(HAS_SWAP_EXISTS_ACTION)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
120 static void check_swap_exists_action __ARGS((void));
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
121 # endif
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
122 # if defined(FEAT_CLIENTSERVER) || defined(PROTO)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
123 static void exec_on_server __ARGS((mparm_T *parmp));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
124 static void prepare_server __ARGS((mparm_T *parmp));
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
125 static void cmdsrv_main __ARGS((int *argc, char **argv, char_u *serverName_arg, char_u **serverStr));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
126 static char_u *serverMakeName __ARGS((char_u *arg, char *cmd));
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
127 # endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
128 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
129
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
130
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
131 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
132 * Different types of error messages.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
133 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
134 static char *(main_errors[]) =
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
135 {
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
136 N_("Unknown option argument"),
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
137 #define ME_UNKNOWN_OPTION 0
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
138 N_("Too many edit arguments"),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
139 #define ME_TOO_MANY_ARGS 1
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
140 N_("Argument missing after"),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
141 #define ME_ARG_MISSING 2
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
142 N_("Garbage after option argument"),
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
143 #define ME_GARBAGE 3
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
144 N_("Too many \"+command\", \"-c command\" or \"--cmd command\" arguments"),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
145 #define ME_EXTRA_CMD 4
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
146 N_("Invalid argument for"),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
147 #define ME_INVALID_ARG 5
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
148 };
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
149
3955
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
150 #ifndef PROTO /* don't want a prototype for main() */
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
151 #ifndef NO_VIM_MAIN /* skip this for unittests */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
152 int
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
153 # ifdef VIMDLL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
154 _export
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
155 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
156 # ifdef FEAT_GUI_MSWIN
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
157 # ifdef __BORLANDC__
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
158 _cdecl
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
159 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
160 VimMain
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
161 # else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
162 main
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
163 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
164 (argc, argv)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
165 int argc;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
166 char **argv;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
167 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
168 char_u *fname = NULL; /* file name from command line */
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
169 mparm_T params; /* various parameters passed between
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
170 * main() and other functions. */
1972
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
171 #ifdef STARTUPTIME
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
172 int i;
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
173 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
174
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
175 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
176 * Do any system-specific initialisations. These can NOT use IObuff or
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
177 * NameBuff. Thus emsg2() cannot be called!
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
178 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
179 mch_early_init();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
180
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
181 /* Many variables are in "params" so that we can pass them to invoked
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
182 * functions without a lot of arguments. "argc" and "argv" are also
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
183 * copied, so that they can be changed. */
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
184 vim_memset(&params, 0, sizeof(params));
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
185 params.argc = argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
186 params.argv = argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
187 params.want_full_screen = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
188 #ifdef FEAT_EVAL
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
189 params.use_debug_break_level = -1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
190 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
191 #ifdef FEAT_WINDOWS
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
192 params.window_count = -1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
193 #endif
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
194
4369
c9820396afb9 updated for version 7.3.933
Bram Moolenaar <bram@vim.org>
parents: 4232
diff changeset
195 #ifdef FEAT_RUBY
c9820396afb9 updated for version 7.3.933
Bram Moolenaar <bram@vim.org>
parents: 4232
diff changeset
196 {
c9820396afb9 updated for version 7.3.933
Bram Moolenaar <bram@vim.org>
parents: 4232
diff changeset
197 int ruby_stack_start;
c9820396afb9 updated for version 7.3.933
Bram Moolenaar <bram@vim.org>
parents: 4232
diff changeset
198 vim_ruby_init((void *)&ruby_stack_start);
c9820396afb9 updated for version 7.3.933
Bram Moolenaar <bram@vim.org>
parents: 4232
diff changeset
199 }
c9820396afb9 updated for version 7.3.933
Bram Moolenaar <bram@vim.org>
parents: 4232
diff changeset
200 #endif
c9820396afb9 updated for version 7.3.933
Bram Moolenaar <bram@vim.org>
parents: 4232
diff changeset
201
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
202 #ifdef FEAT_TCL
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
203 vim_tcl_init(params.argv[0]);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
204 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
205
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
206 #ifdef MEM_PROFILE
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
207 atexit(vim_mem_profile_dump);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
208 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
209
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
210 #ifdef STARTUPTIME
1972
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
211 for (i = 1; i < argc; ++i)
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
212 {
1989
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
213 if (STRICMP(argv[i], "--startuptime") == 0 && i + 1 < argc)
1972
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
214 {
1989
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
215 time_fd = mch_fopen(argv[i + 1], "a");
1972
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
216 TIME_MSG("--- VIM STARTING ---");
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
217 break;
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
218 }
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
219 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
220 #endif
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 769
diff changeset
221 starttime = time(NULL);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
222
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
223 #ifdef __EMX__
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
224 _wildcard(&params.argc, &params.argv);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
225 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
226
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
227 #ifdef FEAT_MBYTE
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
228 (void)mb_init(); /* init mb_bytelen_tab[] to ones */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
229 #endif
123
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 46
diff changeset
230 #ifdef FEAT_EVAL
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 46
diff changeset
231 eval_init(); /* init global variables */
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 46
diff changeset
232 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
233
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
234 #ifdef __QNXNTO__
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
235 qnx_init(); /* PhAttach() for clipboard, (and gui) */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
236 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
237
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
238 #ifdef MAC_OS_CLASSIC
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
239 /* Prepare for possibly starting GUI sometime */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
240 /* Macintosh needs this before any memory is allocated. */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
241 gui_prepare(&params.argc, params.argv);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
242 TIME_MSG("GUI prepared");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
243 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
244
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
245 /* Init the table of Normal mode commands. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
246 init_normal_cmds();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
247
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
248 #if defined(HAVE_DATE_TIME) && defined(VMS) && defined(VAXC)
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
249 make_version(); /* Construct the long version string. */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
250 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
251
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
252 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
253 * Allocate space for the generic buffers (needed for set_init_1() and
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
254 * EMSG2()).
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
255 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
256 if ((IObuff = alloc(IOSIZE)) == NULL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
257 || (NameBuff = alloc(MAXPATHL)) == NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
258 mch_exit(0);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
259 TIME_MSG("Allocated generic buffers");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
260
22
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
261 #ifdef NBDEBUG
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
262 /* Wait a moment for debugging NetBeans. Must be after allocating
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
263 * NameBuff. */
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
264 nbdebug_log_init("SPRO_GVIM_DEBUG", "SPRO_GVIM_DLEVEL");
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
265 nbdebug_wait(WT_ENV | WT_WAIT | WT_STOP, "SPRO_GVIM_WAIT", 20);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
266 TIME_MSG("NetBeans debug wait");
22
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
267 #endif
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
268
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
269 #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
270 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
271 * Setup to use the current locale (for ctype() and many other things).
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
272 * NOTE: Translated messages with encodings other than latin1 will not
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
273 * work until set_init_1() has been called!
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
274 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
275 init_locale();
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
276 TIME_MSG("locale set");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
277 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
278
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
279 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
280 gui.dofork = TRUE; /* default is to use fork() */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
281 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
282
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
283 /*
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
284 * Do a first scan of the arguments in "argv[]":
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
285 * -display or --display
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
286 * --server...
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
287 * --socketid
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
288 * --windowid
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
289 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
290 early_arg_scan(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
291
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
292 #ifdef FEAT_SUN_WORKSHOP
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
293 findYourself(params.argv[0]);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
294 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
295 #if defined(FEAT_GUI) && !defined(MAC_OS_CLASSIC)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
296 /* Prepare for possibly starting GUI sometime */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
297 gui_prepare(&params.argc, params.argv);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
298 TIME_MSG("GUI prepared");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
299 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
300
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
301 #ifdef FEAT_CLIPBOARD
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
302 clip_init(FALSE); /* Initialise clipboard stuff */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
303 TIME_MSG("clipboard setup");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
304 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
305
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
306 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
307 * Check if we have an interactive window.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
308 * On the Amiga: If there is no window, we open one with a newcli command
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
309 * (needed for :! to * work). mch_check_win() will also handle the -d or
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
310 * -dev argument.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
311 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
312 params.stdout_isatty = (mch_check_win(params.argc, params.argv) != FAIL);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
313 TIME_MSG("window checked");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
314
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
315 /*
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 662
diff changeset
316 * Allocate the first window and buffer.
9090f866cd57 updated for version 7.0197
vimboss
parents: 662
diff changeset
317 * Can't do anything without it, exit when it fails.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
318 */
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 662
diff changeset
319 if (win_alloc_first() == FAIL)
9090f866cd57 updated for version 7.0197
vimboss
parents: 662
diff changeset
320 mch_exit(0);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
321
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
322 init_yank(); /* init yank buffers */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
323
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
324 alist_init(&global_alist); /* Init the argument list to empty. */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
325
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
326 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
327 * Set the default values for the options.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
328 * NOTE: Non-latin1 translated messages are working only after this,
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
329 * because this is where "has_mbyte" will be set, which is used by
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
330 * msg_outtrans_len_attr().
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
331 * First find out the home directory, needed to expand "~" in options.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
332 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
333 init_homedir(); /* find real value of $HOME */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
334 set_init_1();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
335 TIME_MSG("inits 1");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
336
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
337 #ifdef FEAT_EVAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
338 set_lang_var(); /* set v:lang and v:ctype */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
339 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
340
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
341 #ifdef FEAT_CLIENTSERVER
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
342 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
343 * Do the client-server stuff, unless "--servername ''" was used.
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
344 * This may exit Vim if the command was sent to the server.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
345 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
346 exec_on_server(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
347 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
348
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
349 /*
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
350 * Figure out the way to work from the command name argv[0].
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
351 * "vimdiff" starts diff mode, "rvim" sets "restricted", etc.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
352 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
353 parse_command_name(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
354
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
355 /*
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
356 * Process the command line arguments. File names are put in the global
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
357 * argument list "global_alist".
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
358 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
359 command_line_scan(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
360 TIME_MSG("parsing arguments");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
361
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
362 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
363 * On some systems, when we compile with the GUI, we always use it. On Mac
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
364 * there is no terminal version, and on Windows we can't fork one off with
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
365 * :gui.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
366 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
367 #ifdef ALWAYS_USE_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
368 gui.starting = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
369 #else
575
f1d46f948241 updated for version 7.0163
vimboss
parents: 541
diff changeset
370 # if defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
371 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
372 * Check if the GUI can be started. Reset gui.starting if not.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
373 * Don't know about other systems, stay on the safe side and don't check.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
374 */
2021
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
375 if (gui.starting)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
376 {
2021
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
377 if (gui_init_check() == FAIL)
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
378 {
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
379 gui.starting = FALSE;
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
380
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
381 /* When running "evim" or "gvim -y" we need the menus, exit if we
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
382 * don't have them. */
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
383 if (params.evim_mode)
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
384 mch_exit(1);
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
385 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
386 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
387 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
388 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
389
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
390 if (GARGCOUNT > 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
391 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
392 #if (!defined(UNIX) && !defined(__EMX__)) || defined(ARCHIE)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
393 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
394 * Expand wildcards in file names.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
395 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
396 if (!params.literal)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
397 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
398 /* Temporarily add '(' and ')' to 'isfname'. These are valid
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
399 * filename characters but are excluded from 'isfname' to make
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
400 * "gf" work on a file name in parenthesis (e.g.: see vim.h). */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
401 do_cmdline_cmd((char_u *)":set isf+=(,)");
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 40
diff changeset
402 alist_expand(NULL, 0);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
403 do_cmdline_cmd((char_u *)":set isf&");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
404 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
405 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
406 fname = alist_name(&GARGLIST[0]);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
407 }
23
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
408
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
409 #if defined(WIN32) && defined(FEAT_MBYTE)
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
410 {
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
411 extern void set_alist_count(void);
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
412
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
413 /* Remember the number of entries in the argument list. If it changes
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
414 * we don't react on setting 'encoding'. */
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
415 set_alist_count();
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
416 }
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
417 #endif
3f44e9abe4ec updated for version 7.0015
vimboss
parents: 22
diff changeset
418
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
419 #ifdef MSWIN
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
420 if (GARGCOUNT == 1 && params.full_path)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
421 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
422 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
423 * If there is one filename, fully qualified, we have very probably
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
424 * been invoked from explorer, so change to the file's directory.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
425 * Hint: to avoid this when typing a command use a forward slash.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
426 * If the cd fails, it doesn't matter.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
427 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
428 (void)vim_chdirfile(fname);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
429 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
430 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
431 TIME_MSG("expanding arguments");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
432
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
433 #ifdef FEAT_DIFF
769
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
434 if (params.diff_mode && params.window_count == -1)
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
435 params.window_count = 0; /* open up to 3 windows */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
436 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
437
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
438 /* Don't redraw until much later. */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
439 ++RedrawingDisabled;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
440
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
441 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
442 * When listing swap file names, don't do cursor positioning et. al.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
443 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
444 if (recoverymode && fname == NULL)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
445 params.want_full_screen = FALSE;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
446
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
447 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
448 * When certain to start the GUI, don't check capabilities of terminal.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
449 * For GTK we can't be sure, but when started from the desktop it doesn't
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
450 * make sense to try using a terminal.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
451 */
575
f1d46f948241 updated for version 7.0163
vimboss
parents: 541
diff changeset
452 #if defined(ALWAYS_USE_GUI) || defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
453 if (gui.starting
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
454 # ifdef FEAT_GUI_GTK
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
455 && !isatty(2)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
456 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
457 )
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
458 params.want_full_screen = FALSE;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
459 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
460
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
461 #if defined(FEAT_GUI_MAC) && defined(MACOS_X_UNIX)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
462 /* When the GUI is started from Finder, need to display messages in a
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
463 * message box. isatty(2) returns TRUE anyway, thus we need to check the
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
464 * name to know we're not started from a terminal. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
465 if (gui.starting && (!isatty(2) || strcmp("/dev/console", ttyname(2)) == 0))
816
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
466 {
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
467 params.want_full_screen = FALSE;
816
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
468
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
469 /* Avoid always using "/" as the current directory. Note that when
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
470 * started from Finder the arglist will be filled later in
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
471 * HandleODocAE() and "fname" will be NULL. */
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
472 if (getcwd((char *)NameBuff, MAXPATHL) != NULL
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
473 && STRCMP(NameBuff, "/") == 0)
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
474 {
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
475 if (fname != NULL)
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
476 (void)vim_chdirfile(fname);
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
477 else
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
478 {
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
479 expand_env((char_u *)"$HOME", NameBuff, MAXPATHL);
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
480 vim_chdir(NameBuff);
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
481 }
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
482 }
4a79d6d376f0 updated for version 7.0c02
vimboss
parents: 777
diff changeset
483 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
484 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
485
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
486 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
487 * mch_init() sets up the terminal (window) for use. This must be
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
488 * done after resetting full_screen, otherwise it may move the cursor
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
489 * (MSDOS).
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
490 * Note that we may use mch_exit() before mch_init()!
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
491 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
492 mch_init();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
493 TIME_MSG("shell init");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
494
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
495 #ifdef USE_XSMP
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
496 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
497 * For want of anywhere else to do it, try to connect to xsmp here.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
498 * Fitting it in after gui_mch_init, but before gui_init (via termcapinit).
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
499 * Hijacking -X 'no X connection' to also disable XSMP connection as that
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
500 * has a similar delay upon failure.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
501 * Only try if SESSION_MANAGER is set to something non-null.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
502 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
503 if (!x_no_connect)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
504 {
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
505 char *p = getenv("SESSION_MANAGER");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
506
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
507 if (p != NULL && *p != NUL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
508 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
509 xsmp_init();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
510 TIME_MSG("xsmp init");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
511 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
512 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
513 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
514
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
515 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
516 * Print a warning if stdout is not a terminal.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
517 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
518 check_tty(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
519
169
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
520 /* This message comes before term inits, but after setting "silent_mode"
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
521 * when the input is not a tty. */
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
522 if (GARGCOUNT > 1 && !silent_mode)
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
523 printf(_("%d files to edit\n"), GARGCOUNT);
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
524
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
525 if (params.want_full_screen && !silent_mode)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
526 {
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
527 termcapinit(params.term); /* set terminal name and get terminal
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
528 capabilities (will set full_screen) */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
529 screen_start(); /* don't know where cursor is now */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
530 TIME_MSG("Termcap init");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
531 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
532
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
533 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
534 * Set the default values for the options that use Rows and Columns.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
535 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
536 ui_get_shellsize(); /* inits Rows and Columns */
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 662
diff changeset
537 win_init_size();
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
538 #ifdef FEAT_DIFF
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
539 /* Set the 'diff' option now, so that it can be checked for in a .vimrc
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
540 * file. There is no buffer yet though. */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
541 if (params.diff_mode)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
542 diff_win_options(firstwin, FALSE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
543 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
544
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
545 cmdline_row = Rows - p_ch;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
546 msg_row = cmdline_row;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
547 screenalloc(FALSE); /* allocate screen buffers */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
548 set_init_2();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
549 TIME_MSG("inits 2");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
550
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
551 msg_scroll = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
552 no_wait_return = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
553
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
554 init_mappings(); /* set up initial mappings */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
555
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
556 init_highlight(TRUE, FALSE); /* set the default highlight groups */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
557 TIME_MSG("init highlight");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
558
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
559 #ifdef FEAT_EVAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
560 /* Set the break level after the terminal is initialized. */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
561 debug_break_level = params.use_debug_break_level;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
562 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
563
3348
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
564 #ifdef FEAT_MZSCHEME
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
565 /*
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
566 * Newer version of MzScheme (Racket) require earlier (trampolined)
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
567 * initialisation via scheme_main_setup.
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
568 * Implement this by initialising it as early as possible
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
569 * and splitting off remaining Vim main into vim_main2
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
570 */
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
571 {
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
572 /* Pack up preprocessed command line arguments.
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
573 * It is safe because Scheme does not access argc/argv. */
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
574 char *args[2];
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
575 args[0] = (char *)fname;
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
576 args[1] = (char *)&params;
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
577 return mzscheme_main(2, args);
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
578 }
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
579 }
3955
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
580 #endif
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
581 #endif /* NO_VIM_MAIN */
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
582
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
583 /* vim_main2() needs to be produced when FEAT_MZSCHEME is defined even when
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
584 * NO_VIM_MAIN is defined. */
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
585 #ifdef FEAT_MZSCHEME
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
586 int
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
587 vim_main2(int argc UNUSED, char **argv UNUSED)
3348
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
588 {
3955
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
589 # ifndef NO_VIM_MAIN
3348
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
590 char_u *fname = (char_u *)argv[0];
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
591 mparm_T params;
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
592
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
593 memcpy(&params, argv[1], sizeof(params));
3955
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
594 # else
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
595 return 0;
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
596 }
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
597 # endif
3348
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
598 #endif
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
599
3955
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
600 #ifndef NO_VIM_MAIN
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
601 /* Execute --cmd arguments. */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
602 exe_pre_commands(&params);
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
603
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
604 /* Source startup scripts. */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
605 source_startup_scripts(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
606
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
607 #ifdef FEAT_EVAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
608 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
609 * Read all the plugin files.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
610 * Only when compiled with +eval, since most plugins need it.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
611 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
612 if (p_lpl)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
613 {
892
d8dbf7d55c5e updated for version 7.0-018
vimboss
parents: 860
diff changeset
614 # ifdef VMS /* Somehow VMS doesn't handle the "**". */
d8dbf7d55c5e updated for version 7.0-018
vimboss
parents: 860
diff changeset
615 source_runtime((char_u *)"plugin/*.vim", TRUE);
d8dbf7d55c5e updated for version 7.0-018
vimboss
parents: 860
diff changeset
616 # else
541
3e19ea54eb07 updated for version 7.0153
vimboss
parents: 534
diff changeset
617 source_runtime((char_u *)"plugin/**/*.vim", TRUE);
892
d8dbf7d55c5e updated for version 7.0-018
vimboss
parents: 860
diff changeset
618 # endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
619 TIME_MSG("loading plugins");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
620 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
621 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
622
769
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
623 #ifdef FEAT_DIFF
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
624 /* Decide about window layout for diff mode after reading vimrc. */
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
625 if (params.diff_mode && params.window_layout == 0)
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
626 {
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
627 if (diffopt_horizontal())
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
628 params.window_layout = WIN_HOR; /* use horizontal split */
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
629 else
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
630 params.window_layout = WIN_VER; /* use vertical split */
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
631 }
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
632 #endif
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
633
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
634 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
635 * Recovery mode without a file name: List swap files.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
636 * This uses the 'dir' option, therefore it must be after the
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
637 * initializations.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
638 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
639 if (recoverymode && fname == NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
640 {
2267
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2226
diff changeset
641 recover_names(NULL, TRUE, 0, NULL);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
642 mch_exit(0);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
643 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
644
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
645 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
646 * Set a few option defaults after reading .vimrc files:
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
647 * 'title' and 'icon', Unix: 'shellpipe' and 'shellredir'.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
648 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
649 set_init_3();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
650 TIME_MSG("inits 3");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
651
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
652 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
653 * "-n" argument: Disable swap file by setting 'updatecount' to 0.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
654 * Note that this overrides anything from a vimrc file.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
655 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
656 if (params.no_swap_file)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
657 p_uc = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
658
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
659 #ifdef FEAT_FKMAP
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
660 if (curwin->w_p_rl && p_altkeymap)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
661 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
662 p_hkmap = FALSE; /* Reset the Hebrew keymap mode */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
663 # ifdef FEAT_ARABIC
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
664 curwin->w_p_arab = FALSE; /* Reset the Arabic keymap mode */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
665 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
666 p_fkmap = TRUE; /* Set the Farsi keymap mode */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
667 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
668 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
669
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
670 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
671 if (gui.starting)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
672 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
673 #if defined(UNIX) || defined(VMS)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
674 /* When something caused a message from a vimrc script, need to output
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
675 * an extra newline before the shell prompt. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
676 if (did_emsg || msg_didout)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
677 putchar('\n');
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
678 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
679
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
680 gui_start(); /* will set full_screen to TRUE */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
681 TIME_MSG("starting GUI");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
682
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
683 /* When running "evim" or "gvim -y" we need the menus, exit if we
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
684 * don't have them. */
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
685 if (!gui.in_use && params.evim_mode)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
686 mch_exit(1);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
687 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
688 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
689
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
690 #ifdef SPAWNO /* special MSDOS swapping library */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
691 init_SPAWNO("", SWAP_ANY);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
692 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
693
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
694 #ifdef FEAT_VIMINFO
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
695 /*
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1722
diff changeset
696 * Read in registers, history etc, but not marks, from the viminfo file.
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1722
diff changeset
697 * This is where v:oldfiles gets filled.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
698 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
699 if (*p_viminfo != NUL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
700 {
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1722
diff changeset
701 read_viminfo(NULL, VIF_WANT_INFO | VIF_GET_OLDFILES);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
702 TIME_MSG("reading viminfo");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
703 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
704 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
705
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
706 #ifdef FEAT_QUICKFIX
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
707 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
708 * "-q errorfile": Load the error file now.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
709 * If the error file can't be read, exit before doing anything else.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
710 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
711 if (params.edit_type == EDIT_QF)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
712 {
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
713 if (params.use_ef != NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
714 set_string_option_direct((char_u *)"ef", -1,
694
07d199fe02ed updated for version 7.0209
vimboss
parents: 685
diff changeset
715 params.use_ef, OPT_FREE, SID_CARG);
2411
68e394361ca3 Add "q" item for 'statusline'. Add w:quickfix_title. (Lech Lorens)
Bram Moolenaar <bram@vim.org>
parents: 2394
diff changeset
716 vim_snprintf((char *)IObuff, IOSIZE, "cfile %s", p_ef);
68e394361ca3 Add "q" item for 'statusline'. Add w:quickfix_title. (Lech Lorens)
Bram Moolenaar <bram@vim.org>
parents: 2394
diff changeset
717 if (qf_init(NULL, p_ef, p_efm, TRUE, IObuff) < 0)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
718 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
719 out_char('\n');
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
720 mch_exit(3);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
721 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
722 TIME_MSG("reading errorfile");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
723 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
724 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
725
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
726 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
727 * Start putting things on the screen.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
728 * Scroll screen down before drawing over it
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
729 * Clear screen now, so file message will not be cleared.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
730 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
731 starting = NO_BUFFERS;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
732 no_wait_return = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
733 if (!exmode_active)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
734 msg_scroll = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
735
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
736 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
737 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
738 * This seems to be required to make callbacks to be called now, instead
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
739 * of after things have been put on the screen, which then may be deleted
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
740 * when getting a resize callback.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
741 * For the Mac this handles putting files dropped on the Vim icon to
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
742 * global_alist.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
743 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
744 if (gui.in_use)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
745 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
746 # ifdef FEAT_SUN_WORKSHOP
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
747 if (!usingSunWorkShop)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
748 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
749 gui_wait_for_chars(50L);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
750 TIME_MSG("GUI delay");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
751 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
752 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
753
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
754 #if defined(FEAT_GUI_PHOTON) && defined(FEAT_CLIPBOARD)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
755 qnx_clip_init();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
756 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
757
2312
bbd6f5539378 Missing piece for Mac console clipboard support. (Bjorn Winckler)
Bram Moolenaar <bram@vim.org>
parents: 2282
diff changeset
758 #if defined(MACOS_X) && defined(FEAT_CLIPBOARD)
bbd6f5539378 Missing piece for Mac console clipboard support. (Bjorn Winckler)
Bram Moolenaar <bram@vim.org>
parents: 2282
diff changeset
759 clip_init(TRUE);
bbd6f5539378 Missing piece for Mac console clipboard support. (Bjorn Winckler)
Bram Moolenaar <bram@vim.org>
parents: 2282
diff changeset
760 #endif
bbd6f5539378 Missing piece for Mac console clipboard support. (Bjorn Winckler)
Bram Moolenaar <bram@vim.org>
parents: 2282
diff changeset
761
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
762 #ifdef FEAT_XCLIPBOARD
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
763 /* Start using the X clipboard, unless the GUI was started. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
764 # ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
765 if (!gui.in_use)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
766 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
767 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
768 setup_term_clip();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
769 TIME_MSG("setup clipboard");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
770 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
771 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
772
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
773 #ifdef FEAT_CLIENTSERVER
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
774 /* Prepare for being a Vim server. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
775 prepare_server(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
776 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
777
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
778 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
779 * If "-" argument given: Read file from stdin.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
780 * Do this before starting Raw mode, because it may change things that the
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
781 * writing end of the pipe doesn't like, e.g., in case stdin and stderr
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
782 * are the same terminal: "cat | vim -".
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
783 * Using autocommands here may cause trouble...
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
784 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
785 if (params.edit_type == EDIT_STDIN && !recoverymode)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
786 read_stdin();
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
787
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
788 #if defined(UNIX) || defined(VMS)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
789 /* When switching screens and something caused a message from a vimrc
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
790 * script, need to output an extra newline on exit. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
791 if ((did_emsg || msg_didout) && *T_TI != NUL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
792 newline_on_exit = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
793 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
794
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
795 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
796 * When done something that is not allowed or error message call
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
797 * wait_return. This must be done before starttermcap(), because it may
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
798 * switch to another screen. It must be done after settmode(TMODE_RAW),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
799 * because we want to react on a single key stroke.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
800 * Call settmode and starttermcap here, so the T_KS and T_TI may be
1226
a49d06539452 updated for version 7.1b
vimboss
parents: 1164
diff changeset
801 * defined by termcapinit and redefined in .exrc.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
802 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
803 settmode(TMODE_RAW);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
804 TIME_MSG("setting raw mode");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
805
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
806 if (need_wait_return || msg_didany)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
807 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
808 wait_return(TRUE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
809 TIME_MSG("waiting for return");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
810 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
811
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
812 starttermcap(); /* start termcap if not done by wait_return() */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
813 TIME_MSG("start termcap");
4215
ecf21be84def updated for version 7.3.859
Bram Moolenaar <bram@vim.org>
parents: 4021
diff changeset
814 #if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE)
ecf21be84def updated for version 7.3.859
Bram Moolenaar <bram@vim.org>
parents: 4021
diff changeset
815 may_req_ambiguous_character_width();
ecf21be84def updated for version 7.3.859
Bram Moolenaar <bram@vim.org>
parents: 4021
diff changeset
816 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
817
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
818 #ifdef FEAT_MOUSE
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
819 setmouse(); /* may start using the mouse */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
820 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
821 if (scroll_region)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
822 scroll_region_reset(); /* In case Rows changed */
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
823 scroll_start(); /* may scroll the screen to the right position */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
824
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
825 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
826 * Don't clear the screen when starting in Ex mode, unless using the GUI.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
827 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
828 if (exmode_active
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
829 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
830 && !gui.in_use
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
831 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
832 )
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
833 must_redraw = CLEAR;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
834 else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
835 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
836 screenclear(); /* clear screen */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
837 TIME_MSG("clearing screen");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
838 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
839
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
840 #ifdef FEAT_CRYPT
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
841 if (params.ask_for_key)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
842 {
2180
f60a0c9cbe6c Add the blowfish encryption patch from Mohsin Ahmed. Needs more work.
Bram Moolenaar <bram@vim.org>
parents: 2133
diff changeset
843 (void)blowfish_self_test();
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
844 (void)get_crypt_key(TRUE, TRUE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
845 TIME_MSG("getting crypt key");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
846 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
847 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
848
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
849 no_wait_return = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
850
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
851 /*
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
852 * Create the requested number of windows and edit buffers in them.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
853 * Also does recovery if "recoverymode" set.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
854 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
855 create_windows(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
856 TIME_MSG("opening buffers");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
857
1093
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
858 #ifdef FEAT_EVAL
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
859 /* clear v:swapcommand */
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
860 set_vim_var_string(VV_SWAPCOMMAND, NULL, -1);
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
861 #endif
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
862
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
863 /* Ex starts at last line of the file */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
864 if (exmode_active)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
865 curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
866
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
867 #ifdef FEAT_AUTOCMD
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
868 apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
869 TIME_MSG("BufEnter autocommands");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
870 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
871 setpcmark();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
872
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
873 #ifdef FEAT_QUICKFIX
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
874 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
875 * When started with "-q errorfile" jump to first error now.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
876 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
877 if (params.edit_type == EDIT_QF)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
878 {
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 640
diff changeset
879 qf_jump(NULL, 0, 0, FALSE);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
880 TIME_MSG("jump to first error");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
881 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
882 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
883
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
884 #ifdef FEAT_WINDOWS
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
885 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
886 * If opened more than one window, start editing files in the other
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
887 * windows.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
888 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
889 edit_buffers(&params);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
890 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
891
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
892 #ifdef FEAT_DIFF
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
893 if (params.diff_mode)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
894 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
895 win_T *wp;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
896
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
897 /* set options in each window for "vimdiff". */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
898 for (wp = firstwin; wp != NULL; wp = wp->w_next)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
899 diff_win_options(wp, TRUE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
900 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
901 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
902
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
903 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
904 * Shorten any of the filenames, but only when absolute.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
905 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
906 shorten_fnames(FALSE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
907
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
908 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
909 * Need to jump to the tag before executing the '-c command'.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
910 * Makes "vim -c '/return' -t main" work.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
911 */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
912 if (params.tagname != NULL)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
913 {
604
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
914 #if defined(HAS_SWAP_EXISTS_ACTION)
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
915 swap_exists_did_quit = FALSE;
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
916 #endif
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
917
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
918 vim_snprintf((char *)IObuff, IOSIZE, "ta %s", params.tagname);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
919 do_cmdline_cmd(IObuff);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
920 TIME_MSG("jumping to tag");
604
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
921
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
922 #if defined(HAS_SWAP_EXISTS_ACTION)
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
923 /* If the user doesn't want to edit the file then we quit here. */
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
924 if (swap_exists_did_quit)
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
925 getout(1);
2930fd8e7d9f updated for version 7.0171
vimboss
parents: 591
diff changeset
926 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
927 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
928
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
929 /* Execute any "+", "-c" and "-S" arguments. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
930 if (params.n_commands > 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
931 exe_commands(&params);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
932
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
933 RedrawingDisabled = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
934 redraw_all_later(NOT_VALID);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
935 no_wait_return = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
936 starting = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
937
626
732c7ae5743e updated for version 7.0180
vimboss
parents: 620
diff changeset
938 #ifdef FEAT_TERMRESPONSE
732c7ae5743e updated for version 7.0180
vimboss
parents: 620
diff changeset
939 /* Requesting the termresponse is postponed until here, so that a "-c q"
732c7ae5743e updated for version 7.0180
vimboss
parents: 620
diff changeset
940 * argument doesn't make it appear in the shell Vim was started from. */
732c7ae5743e updated for version 7.0180
vimboss
parents: 620
diff changeset
941 may_req_termresponse();
732c7ae5743e updated for version 7.0180
vimboss
parents: 620
diff changeset
942 #endif
732c7ae5743e updated for version 7.0180
vimboss
parents: 620
diff changeset
943
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
944 /* start in insert mode */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
945 if (p_im)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
946 need_start_insertmode = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
947
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
948 #ifdef FEAT_AUTOCMD
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
949 apply_autocmds(EVENT_VIMENTER, NULL, NULL, FALSE, curbuf);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
950 TIME_MSG("VimEnter autocommands");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
951 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
952
3488
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
953 #if defined(FEAT_EVAL) && defined(FEAT_CLIPBOARD)
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
954 /* Adjust default register name for "unnamed" in 'clipboard'. Can only be
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
955 * done after the clipboard is available and all initial commands that may
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
956 * modify the 'clipboard' setting have run; i.e. just before entering the
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
957 * main loop. */
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
958 {
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
959 int default_regname = 0;
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
960 adjust_clip_reg(&default_regname);
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
961 set_reg_var(default_regname);
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
962 }
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
963 #endif
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
964
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
965 #if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
966 /* When a startup script or session file setup for diff'ing and
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
967 * scrollbind, sync the scrollbind now. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
968 if (curwin->w_p_diff && curwin->w_p_scb)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
969 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
970 update_topline();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
971 check_scrollbind((linenr_T)0, 0L);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
972 TIME_MSG("diff scrollbinding");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
973 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
974 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
975
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
976 #if defined(WIN3264) && !defined(FEAT_GUI_W32)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
977 mch_set_winsize_now(); /* Allow winsize changes from now on */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
978 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
979
685
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
980 #if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
981 /* When tab pages were created, may need to update the tab pages line and
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
982 * scrollbars. This is skipped while creating them. */
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
983 if (first_tabpage->tp_next != NULL)
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
984 {
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
985 out_flush();
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
986 gui_init_which_components(NULL);
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
987 gui_update_scrollbars(TRUE);
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
988 }
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
989 need_mouse_correct = TRUE;
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
990 #endif
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 681
diff changeset
991
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
992 /* If ":startinsert" command used, stuff a dummy command to be able to
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
993 * call normal_cmd(), which will then start Insert mode. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
994 if (restart_edit != 0)
620
9e359e5759f6 updated for version 7.0177
vimboss
parents: 604
diff changeset
995 stuffcharReadbuff(K_NOP);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
996
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
997 #ifdef FEAT_NETBEANS_INTG
2210
8c6a66e2b3cc Add :nbstart and :nbclose.
Bram Moolenaar <bram@vim.org>
parents: 2209
diff changeset
998 if (netbeansArg != NULL && strncmp("-nb", netbeansArg, 3) == 0)
2209
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
999 {
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1000 # ifdef FEAT_GUI
2592
2c5e70e2858f updated for version 7.3.016
Bram Moolenaar <bram@vim.org>
parents: 2520
diff changeset
1001 # if !defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK) \
2209
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1002 && !defined(FEAT_GUI_W32)
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1003 if (gui.in_use)
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1004 {
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1005 mch_errmsg(_("netbeans is not supported with this GUI\n"));
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1006 mch_exit(2);
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1007 }
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1008 # endif
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1009 # endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1010 /* Tell the client that it can start sending commands. */
2210
8c6a66e2b3cc Add :nbstart and :nbclose.
Bram Moolenaar <bram@vim.org>
parents: 2209
diff changeset
1011 netbeans_open(netbeansArg + 3, TRUE);
2209
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1012 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1013 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1014
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1015 TIME_MSG("before starting main loop");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1016
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1017 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1018 * Call the main command loop. This never returns.
3348
af4ed13ca541 updated for version 7.3.441
Bram Moolenaar <bram@vim.org>
parents: 3198
diff changeset
1019 */
169
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1020 main_loop(FALSE, FALSE);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1021
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1022 return 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1023 }
3955
509e55bd4a3f updated for version 7.3.733
Bram Moolenaar <bram@vim.org>
parents: 3488
diff changeset
1024 #endif /* NO_VIM_MAIN */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1025 #endif /* PROTO */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1026
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1027 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1028 * Main loop: Execute Normal mode commands until exiting Vim.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1029 * Also used to handle commands in the command-line window, until the window
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1030 * is closed.
169
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1031 * Also used to handle ":visual" command after ":global": execute Normal mode
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1032 * commands, return when entering Ex mode. "noexmode" is TRUE then.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1033 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1034 void
169
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1035 main_loop(cmdwin, noexmode)
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1036 int cmdwin; /* TRUE when working in the command-line window */
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1037 int noexmode; /* TRUE when return on entering Ex mode */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1038 {
1345
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1039 oparg_T oa; /* operator arguments */
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1040 int previous_got_int = FALSE; /* "got_int" was TRUE */
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1041 #ifdef FEAT_CONCEAL
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1042 linenr_T conceal_old_cursor_line = 0;
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1043 linenr_T conceal_new_cursor_line = 0;
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1044 int conceal_update_lines = FALSE;
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1045 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1046
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1047 #if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1048 /* Setup to catch a terminating error from the X server. Just ignore
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1049 * it, restore the state and continue. This might not always work
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1050 * properly, but at least we don't exit unexpectedly when the X server
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1051 * exists while Vim is running in a console. */
169
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1052 if (!cmdwin && !noexmode && SETJMP(x_jump_env))
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1053 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1054 State = NORMAL;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1055 # ifdef FEAT_VISUAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1056 VIsual_active = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1057 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1058 got_int = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1059 need_wait_return = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1060 global_busy = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1061 exmode_active = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1062 skip_redraw = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1063 RedrawingDisabled = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1064 no_wait_return = 0;
3119
abb03be99d66 updated for version 7.3.330
Bram Moolenaar <bram@vim.org>
parents: 2823
diff changeset
1065 vgetc_busy = 0;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1066 # ifdef FEAT_EVAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1067 emsg_skip = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1068 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1069 emsg_off = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1070 # ifdef FEAT_MOUSE
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1071 setmouse();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1072 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1073 settmode(TMODE_RAW);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1074 starttermcap();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1075 scroll_start();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1076 redraw_later_clear();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1077 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1078 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1079
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1080 clear_oparg(&oa);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1081 while (!cmdwin
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1082 #ifdef FEAT_CMDWIN
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1083 || cmdwin_result == 0
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1084 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1085 )
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1086 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1087 if (stuff_empty())
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1088 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1089 did_check_timestamps = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1090 if (need_check_timestamps)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1091 check_timestamps(FALSE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1092 if (need_wait_return) /* if wait_return still needed ... */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1093 wait_return(FALSE); /* ... call it now */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1094 if (need_start_insertmode && goto_im()
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1095 #ifdef FEAT_VISUAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1096 && !VIsual_active
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1097 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1098 )
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1099 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1100 need_start_insertmode = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1101 stuffReadbuff((char_u *)"i"); /* start insert mode next */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1102 /* skip the fileinfo message now, because it would be shown
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1103 * after insert mode finishes! */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1104 need_fileinfo = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1105 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1106 }
1345
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1107
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1108 /* Reset "got_int" now that we got back to the main loop. Except when
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1109 * inside a ":g/pat/cmd" command, then the "got_int" needs to abort
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1110 * the ":g" command.
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1111 * For ":g/pat/vi" we reset "got_int" when used once. When used
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1112 * a second time we go back to Ex mode and abort the ":g" command. */
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1113 if (got_int)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1114 {
1345
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1115 if (noexmode && global_busy && !exmode_active && previous_got_int)
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1116 {
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1117 /* Typed two CTRL-C in a row: go back to ex mode as if "Q" was
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1118 * used and keep "got_int" set, so that it aborts ":g". */
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1119 exmode_active = EXMODE_NORMAL;
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1120 State = NORMAL;
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1121 }
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1122 else if (!global_busy || !exmode_active)
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1123 {
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1124 if (!quit_more)
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1125 (void)vgetc(); /* flush all buffers */
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1126 got_int = FALSE;
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1127 }
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1128 previous_got_int = TRUE;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1129 }
1345
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1130 else
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1131 previous_got_int = FALSE;
c38cdd201cec updated for version 7.1-059
vimboss
parents: 1297
diff changeset
1132
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1133 if (!exmode_active)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1134 msg_scroll = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1135 quit_more = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1136
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1137 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1138 * If skip redraw is set (for ":" in wait_return()), don't redraw now.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1139 * If there is nothing in the stuff_buffer or do_redraw is TRUE,
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1140 * update cursor and redraw.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1141 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1142 if (skip_redraw || exmode_active)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1143 skip_redraw = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1144 else if (do_redraw || stuff_empty())
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1145 {
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1146 #if defined(FEAT_AUTOCMD) || defined(FEAT_CONCEAL)
662
1a85f952cdfe updated for version 7.0195
vimboss
parents: 644
diff changeset
1147 /* Trigger CursorMoved if the cursor moved. */
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1148 if (!finish_op && (
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1149 # ifdef FEAT_AUTOCMD
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1150 has_cursormoved()
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1151 # endif
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1152 # if defined(FEAT_AUTOCMD) && defined(FEAT_CONCEAL)
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1153 ||
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1154 # endif
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1155 # ifdef FEAT_CONCEAL
2378
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
1156 curwin->w_p_cole > 0
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1157 # endif
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1158 )
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1159 && !equalpos(last_cursormoved, curwin->w_cursor))
662
1a85f952cdfe updated for version 7.0195
vimboss
parents: 644
diff changeset
1160 {
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1161 # ifdef FEAT_AUTOCMD
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1162 if (has_cursormoved())
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1163 apply_autocmds(EVENT_CURSORMOVED, NULL, NULL,
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1164 FALSE, curbuf);
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1165 # endif
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1166 # ifdef FEAT_CONCEAL
2378
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
1167 if (curwin->w_p_cole > 0)
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1168 {
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1169 conceal_old_cursor_line = last_cursormoved.lnum;
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1170 conceal_new_cursor_line = curwin->w_cursor.lnum;
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1171 conceal_update_lines = TRUE;
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1172 }
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1173 # endif
662
1a85f952cdfe updated for version 7.0195
vimboss
parents: 644
diff changeset
1174 last_cursormoved = curwin->w_cursor;
1a85f952cdfe updated for version 7.0195
vimboss
parents: 644
diff changeset
1175 }
1a85f952cdfe updated for version 7.0195
vimboss
parents: 644
diff changeset
1176 #endif
1a85f952cdfe updated for version 7.0195
vimboss
parents: 644
diff changeset
1177
4232
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1178 #ifdef FEAT_AUTOCMD
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1179 /* Trigger TextChanged if b_changedtick differs. */
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1180 if (!finish_op && has_textchanged()
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1181 && last_changedtick != curbuf->b_changedtick)
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1182 {
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1183 if (last_changedtick_buf == curbuf)
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1184 apply_autocmds(EVENT_TEXTCHANGED, NULL, NULL,
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1185 FALSE, curbuf);
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1186 last_changedtick_buf = curbuf;
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1187 last_changedtick = curbuf->b_changedtick;
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1188 }
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1189 #endif
0fcb050fd79d updated for version 7.3.867
Bram Moolenaar <bram@vim.org>
parents: 4217
diff changeset
1190
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1191 #if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND)
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1192 /* Scroll-binding for diff mode may have been postponed until
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1193 * here. Avoids doing it for every change. */
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1194 if (diff_need_scrollbind)
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1195 {
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1196 check_scrollbind((linenr_T)0, 0L);
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1197 diff_need_scrollbind = FALSE;
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1198 }
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1199 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1200 #if defined(FEAT_FOLDING) && defined(FEAT_VISUAL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1201 /* Include a closed fold completely in the Visual area. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1202 foldAdjustVisual();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1203 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1204 #ifdef FEAT_FOLDING
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1205 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1206 * When 'foldclose' is set, apply 'foldlevel' to folds that don't
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1207 * contain the cursor.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1208 * When 'foldopen' is "all", open the fold(s) under the cursor.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1209 * This may mark the window for redrawing.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1210 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1211 if (hasAnyFolding(curwin) && !char_avail())
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1212 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1213 foldCheckClose();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1214 if (fdo_flags & FDO_ALL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1215 foldOpenCursor();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1216 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1217 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1218
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1219 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1220 * Before redrawing, make sure w_topline is correct, and w_leftcol
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1221 * if lines don't wrap, and w_skipcol if lines wrap.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1222 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1223 update_topline();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1224 validate_cursor();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1225
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1226 #ifdef FEAT_VISUAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1227 if (VIsual_active)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1228 update_curbuf(INVERTED);/* update inverted part */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1229 else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1230 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1231 if (must_redraw)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1232 update_screen(0);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1233 else if (redraw_cmdline || clear_cmdline)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1234 showmode();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1235 #ifdef FEAT_WINDOWS
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1236 redraw_statuslines();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1237 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1238 #ifdef FEAT_TITLE
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1239 if (need_maketitle)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1240 maketitle();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1241 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1242 /* display message after redraw */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1243 if (keep_msg != NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1244 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1245 char_u *p;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1246
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1247 /* msg_attr_keep() will set keep_msg to NULL, must free the
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1248 * string here. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1249 p = keep_msg;
680
5b101ff9d4c4 updated for version 7.0203
vimboss
parents: 674
diff changeset
1250 keep_msg = NULL;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1251 msg_attr(p, keep_msg_attr);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1252 vim_free(p);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1253 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1254 if (need_fileinfo) /* show file info after redraw */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1255 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1256 fileinfo(FALSE, TRUE, FALSE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1257 need_fileinfo = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1258 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1259
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1260 emsg_on_display = FALSE; /* can delete error message now */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1261 did_emsg = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1262 msg_didany = FALSE; /* reset lines_left in msg_start() */
448
dd9db57ee7ce updated for version 7.0118
vimboss
parents: 446
diff changeset
1263 may_clear_sb_text(); /* clear scroll-back text on next msg */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1264 showruler(FALSE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1265
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1266 # if defined(FEAT_CONCEAL)
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1267 if (conceal_update_lines
2378
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
1268 && (conceal_old_cursor_line != conceal_new_cursor_line
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
1269 || conceal_cursor_line(curwin)
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
1270 || need_cursor_line_redraw))
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1271 {
2706
34f62bcce014 updated for version 7.3.123
Bram Moolenaar <bram@vim.org>
parents: 2666
diff changeset
1272 if (conceal_old_cursor_line != conceal_new_cursor_line
34f62bcce014 updated for version 7.3.123
Bram Moolenaar <bram@vim.org>
parents: 2666
diff changeset
1273 && conceal_old_cursor_line
34f62bcce014 updated for version 7.3.123
Bram Moolenaar <bram@vim.org>
parents: 2666
diff changeset
1274 <= curbuf->b_ml.ml_line_count)
2378
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
1275 update_single_line(curwin, conceal_old_cursor_line);
2282
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1276 update_single_line(curwin, conceal_new_cursor_line);
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1277 curwin->w_valid &= ~VALID_CROW;
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1278 }
a888ed7ba375 Make updating text for conceal mode simpler. A few compiler warning fixes.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
1279 # endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1280 setcursor();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1281 cursor_on();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1282
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1283 do_redraw = FALSE;
1972
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1284
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1285 #ifdef STARTUPTIME
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1286 /* Now that we have drawn the first screen all the startup stuff
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1287 * has been done, close any file for startup messages. */
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1288 if (time_fd != NULL)
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1289 {
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1290 TIME_MSG("first screen update");
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1291 TIME_MSG("--- VIM STARTED ---");
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1292 fclose(time_fd);
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1293 time_fd = NULL;
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1294 }
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
1295 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1296 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1297 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1298 if (need_mouse_correct)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1299 gui_mouse_correct();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1300 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1301
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1302 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1303 * Update w_curswant if w_set_curswant has been set.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1304 * Postponed until here to avoid computing w_virtcol too often.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1305 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1306 update_curswant();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1307
958
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1308 #ifdef FEAT_EVAL
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1309 /*
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1310 * May perform garbage collection when waiting for a character, but
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1311 * only at the very toplevel. Otherwise we may be using a List or
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1312 * Dict internally somewhere.
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1313 * "may_garbage_collect" is reset in vgetc() which is invoked through
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1314 * do_exmode() and normal_cmd().
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1315 */
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1316 may_garbage_collect = (!cmdwin && !noexmode);
e88950f0d4f6 updated for version 7.0-084
vimboss
parents: 944
diff changeset
1317 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1318 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1319 * If we're invoked as ex, do a round of ex commands.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1320 * Otherwise, get and execute a normal mode command.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1321 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1322 if (exmode_active)
169
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1323 {
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1324 if (noexmode) /* End of ":global/path/visual" commands */
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1325 return;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1326 do_exmode(exmode_active == EXMODE_VIM);
169
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1327 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1328 else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1329 normal_cmd(&oa, TRUE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1330 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1331 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1332
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1333
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1334 #if defined(USE_XSMP) || defined(FEAT_GUI_MSWIN) || defined(PROTO)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1335 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1336 * Exit, but leave behind swap files for modified buffers.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1337 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1338 void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1339 getout_preserve_modified(exitval)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1340 int exitval;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1341 {
39
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
1342 # if defined(SIGHUP) && defined(SIG_IGN)
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
1343 /* Ignore SIGHUP, because a dropped connection causes a read error, which
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
1344 * makes Vim exit and then handling SIGHUP causes various reentrance
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
1345 * problems. */
36
125e80798a85 updated for version 7.0021
vimboss
parents: 34
diff changeset
1346 signal(SIGHUP, SIG_IGN);
39
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
1347 # endif
36
125e80798a85 updated for version 7.0021
vimboss
parents: 34
diff changeset
1348
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1349 ml_close_notmod(); /* close all not-modified buffers */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1350 ml_sync_all(FALSE, FALSE); /* preserve all swap files */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1351 ml_close_all(FALSE); /* close all memfiles, without deleting */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1352 getout(exitval); /* exit Vim properly */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1353 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1354 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1355
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1356
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1357 /* Exit properly */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1358 void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1359 getout(exitval)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1360 int exitval;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1361 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1362 #ifdef FEAT_AUTOCMD
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1363 buf_T *buf;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1364 win_T *wp;
671
83a006f81bac updated for version 7.0199
vimboss
parents: 667
diff changeset
1365 tabpage_T *tp, *next_tp;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1366 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1367
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1368 exiting = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1369
169
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1370 /* When running in Ex mode an error causes us to exit with a non-zero exit
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1371 * code. POSIX requires this, although it's not 100% clear from the
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1372 * standard. */
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1373 if (exmode_active)
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1374 exitval += ex_exitval;
0e902b8f511f updated for version 7.0051
vimboss
parents: 164
diff changeset
1375
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1376 /* Position the cursor on the last screen line, below all the text */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1377 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1378 if (!gui.in_use)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1379 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1380 windgoto((int)Rows - 1, 0);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1381
242
a711f7a6852d updated for version 7.0067
vimboss
parents: 237
diff changeset
1382 #if defined(FEAT_EVAL) || defined(FEAT_SYN_HL)
a711f7a6852d updated for version 7.0067
vimboss
parents: 237
diff changeset
1383 /* Optionally print hashtable efficiency. */
a711f7a6852d updated for version 7.0067
vimboss
parents: 237
diff changeset
1384 hash_debug_results();
a711f7a6852d updated for version 7.0067
vimboss
parents: 237
diff changeset
1385 #endif
a711f7a6852d updated for version 7.0067
vimboss
parents: 237
diff changeset
1386
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1387 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1388 msg_didany = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1389 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1390
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1391 #ifdef FEAT_AUTOCMD
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1392 if (get_vim_var_nr(VV_DYING) <= 1)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1393 {
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1394 /* Trigger BufWinLeave for all windows, but only once per buffer. */
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1395 # if defined FEAT_WINDOWS
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1396 for (tp = first_tabpage; tp != NULL; tp = next_tp)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1397 {
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1398 next_tp = tp->tp_next;
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1399 for (wp = (tp == curtab)
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1400 ? firstwin : tp->tp_firstwin; wp != NULL; wp = wp->w_next)
671
83a006f81bac updated for version 7.0199
vimboss
parents: 667
diff changeset
1401 {
4021
915fb3d2dd8f updated for version 7.3.765
Bram Moolenaar <bram@vim.org>
parents: 3955
diff changeset
1402 if (wp->w_buffer == NULL)
915fb3d2dd8f updated for version 7.3.765
Bram Moolenaar <bram@vim.org>
parents: 3955
diff changeset
1403 /* Autocmd must have close the buffer already, skip. */
915fb3d2dd8f updated for version 7.3.765
Bram Moolenaar <bram@vim.org>
parents: 3955
diff changeset
1404 continue;
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1405 buf = wp->w_buffer;
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1406 if (buf->b_changedtick != -1)
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1407 {
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1408 apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname,
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1409 buf->b_fname, FALSE, buf);
3488
2722f11ddc99 updated for version 7.3.508
Bram Moolenaar <bram@vim.org>
parents: 3437
diff changeset
1410 buf->b_changedtick = -1; /* note that we did it already */
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1411 /* start all over, autocommands may mess up the lists */
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1412 next_tp = first_tabpage;
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1413 break;
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1414 }
671
83a006f81bac updated for version 7.0199
vimboss
parents: 667
diff changeset
1415 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1416 }
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1417 # else
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1418 apply_autocmds(EVENT_BUFWINLEAVE, curbuf, curbuf->b_fname,
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1419 FALSE, curbuf);
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1420 # endif
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 626
diff changeset
1421
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1422 /* Trigger BufUnload for buffers that are loaded */
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1423 for (buf = firstbuf; buf != NULL; buf = buf->b_next)
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1424 if (buf->b_ml.ml_mfp != NULL)
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1425 {
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1426 apply_autocmds(EVENT_BUFUNLOAD, buf->b_fname, buf->b_fname,
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1427 FALSE, buf);
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1428 if (!buf_valid(buf)) /* autocmd may delete the buffer */
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1429 break;
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1430 }
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1431 apply_autocmds(EVENT_VIMLEAVEPRE, NULL, NULL, FALSE, curbuf);
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1432 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1433 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1434
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1435 #ifdef FEAT_VIMINFO
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1436 if (*p_viminfo != NUL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1437 /* Write out the registers, history, marks etc, to the viminfo file */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1438 write_viminfo(NULL, FALSE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1439 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1440
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1441 #ifdef FEAT_AUTOCMD
2226
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1442 if (get_vim_var_nr(VV_DYING) <= 1)
36a9ac99e1ca Don't execute some autocommands when v:dying is 2 or more.
Bram Moolenaar <bram@vim.org>
parents: 2215
diff changeset
1443 apply_autocmds(EVENT_VIMLEAVE, NULL, NULL, FALSE, curbuf);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1444 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1445
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 169
diff changeset
1446 #ifdef FEAT_PROFILE
8c60f65311fa updated for version 7.0052
vimboss
parents: 169
diff changeset
1447 profile_dump();
8c60f65311fa updated for version 7.0052
vimboss
parents: 169
diff changeset
1448 #endif
8c60f65311fa updated for version 7.0052
vimboss
parents: 169
diff changeset
1449
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1450 if (did_emsg
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1451 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1452 || (gui.in_use && msg_didany && p_verbose > 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1453 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1454 )
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1455 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1456 /* give the user a chance to read the (error) message */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1457 no_wait_return = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1458 wait_return(FALSE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1459 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1460
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1461 #ifdef FEAT_AUTOCMD
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1462 /* Position the cursor again, the autocommands may have moved it */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1463 # ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1464 if (!gui.in_use)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1465 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1466 windgoto((int)Rows - 1, 0);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1467 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1468
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2312
diff changeset
1469 #ifdef FEAT_LUA
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2312
diff changeset
1470 lua_end();
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2312
diff changeset
1471 #endif
14
946da5994c01 updated for version 7.0006
vimboss
parents: 11
diff changeset
1472 #ifdef FEAT_MZSCHEME
946da5994c01 updated for version 7.0006
vimboss
parents: 11
diff changeset
1473 mzscheme_end();
946da5994c01 updated for version 7.0006
vimboss
parents: 11
diff changeset
1474 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1475 #ifdef FEAT_TCL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1476 tcl_end();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1477 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1478 #ifdef FEAT_RUBY
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1479 ruby_end();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1480 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1481 #ifdef FEAT_PYTHON
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1482 python_end();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1483 #endif
2329
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2320
diff changeset
1484 #ifdef FEAT_PYTHON3
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2320
diff changeset
1485 python3_end();
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2320
diff changeset
1486 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1487 #ifdef FEAT_PERL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1488 perl_end();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1489 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1490 #if defined(USE_ICONV) && defined(DYNAMIC_ICONV)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1491 iconv_end();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1492 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1493 #ifdef FEAT_NETBEANS_INTG
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1494 netbeans_end();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1495 #endif
1385
d0cf8c843186 updated for version 7.1-100
vimboss
parents: 1376
diff changeset
1496 #ifdef FEAT_CSCOPE
d0cf8c843186 updated for version 7.1-100
vimboss
parents: 1376
diff changeset
1497 cs_end();
d0cf8c843186 updated for version 7.1-100
vimboss
parents: 1376
diff changeset
1498 #endif
1405
b63792dadc23 updated for version 7.1-120
vimboss
parents: 1385
diff changeset
1499 #ifdef FEAT_EVAL
b63792dadc23 updated for version 7.1-120
vimboss
parents: 1385
diff changeset
1500 if (garbage_collect_at_exit)
b63792dadc23 updated for version 7.1-120
vimboss
parents: 1385
diff changeset
1501 garbage_collect();
b63792dadc23 updated for version 7.1-120
vimboss
parents: 1385
diff changeset
1502 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1503
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1504 mch_exit(exitval);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1505 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1506
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
1507 #ifndef NO_VIM_MAIN
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1508 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1509 * Get a (optional) count for a Vim argument.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1510 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1511 static int
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1512 get_number_arg(p, idx, def)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1513 char_u *p; /* pointer to argument */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1514 int *idx; /* index in argument, is incremented */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1515 int def; /* default value */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1516 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1517 if (vim_isdigit(p[*idx]))
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1518 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1519 def = atoi((char *)&(p[*idx]));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1520 while (vim_isdigit(p[*idx]))
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1521 *idx = *idx + 1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1522 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1523 return def;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1524 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1525
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1526 #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1527 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1528 * Setup to use the current locale (for ctype() and many other things).
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1529 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1530 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1531 init_locale()
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1532 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1533 setlocale(LC_ALL, "");
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1570
diff changeset
1534
2201
4c6b4298852f Other solution for GTK not changing the locale.
Bram Moolenaar <bram@vim.org>
parents: 2180
diff changeset
1535 # ifdef FEAT_GUI_GTK
4c6b4298852f Other solution for GTK not changing the locale.
Bram Moolenaar <bram@vim.org>
parents: 2180
diff changeset
1536 /* Tell Gtk not to change our locale settings. */
4c6b4298852f Other solution for GTK not changing the locale.
Bram Moolenaar <bram@vim.org>
parents: 2180
diff changeset
1537 gtk_disable_setlocale();
4c6b4298852f Other solution for GTK not changing the locale.
Bram Moolenaar <bram@vim.org>
parents: 2180
diff changeset
1538 # endif
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1570
diff changeset
1539 # if defined(FEAT_FLOAT) && defined(LC_NUMERIC)
18ee39301b82 updated for version 7.2a
vimboss
parents: 1570
diff changeset
1540 /* Make sure strtod() uses a decimal point, not a comma. */
18ee39301b82 updated for version 7.2a
vimboss
parents: 1570
diff changeset
1541 setlocale(LC_NUMERIC, "C");
18ee39301b82 updated for version 7.2a
vimboss
parents: 1570
diff changeset
1542 # endif
18ee39301b82 updated for version 7.2a
vimboss
parents: 1570
diff changeset
1543
534
c6296b0ad9ea updated for version 7.0151
vimboss
parents: 531
diff changeset
1544 # ifdef WIN32
c6296b0ad9ea updated for version 7.0151
vimboss
parents: 531
diff changeset
1545 /* Apparently MS-Windows printf() may cause a crash when we give it 8-bit
c6296b0ad9ea updated for version 7.0151
vimboss
parents: 531
diff changeset
1546 * text while it's expecting text in the current locale. This call avoids
c6296b0ad9ea updated for version 7.0151
vimboss
parents: 531
diff changeset
1547 * that. */
c6296b0ad9ea updated for version 7.0151
vimboss
parents: 531
diff changeset
1548 setlocale(LC_CTYPE, "C");
c6296b0ad9ea updated for version 7.0151
vimboss
parents: 531
diff changeset
1549 # endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1550
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1551 # ifdef FEAT_GETTEXT
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1552 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1553 int mustfree = FALSE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1554 char_u *p;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1555
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1556 # ifdef DYNAMIC_GETTEXT
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1557 /* Initialize the gettext library */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1558 dyn_libintl_init(NULL);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1559 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1560 /* expand_env() doesn't work yet, because chartab[] is not initialized
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1561 * yet, call vim_getenv() directly */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1562 p = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1563 if (p != NULL && *p != NUL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1564 {
1297
e2680bc6a180 updated for version 7.1-011
vimboss
parents: 1226
diff changeset
1565 vim_snprintf((char *)NameBuff, MAXPATHL, "%s/lang", p);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1566 bindtextdomain(VIMPACKAGE, (char *)NameBuff);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1567 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1568 if (mustfree)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1569 vim_free(p);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1570 textdomain(VIMPACKAGE);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1571 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1572 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1573 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1574 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1575
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1576 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1577 * Check for: [r][e][g][vi|vim|view][diff][ex[im]]
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1578 * If the executable name starts with "r" we disable shell commands.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1579 * If the next character is "e" we run in Easy mode.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1580 * If the next character is "g" we run the GUI version.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1581 * If the next characters are "view" we start in readonly mode.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1582 * If the next characters are "diff" or "vimdiff" we start in diff mode.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1583 * If the next characters are "ex" we start in Ex mode. If it's followed
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1584 * by "im" use improved Ex mode.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1585 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1586 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1587 parse_command_name(parmp)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1588 mparm_T *parmp;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1589 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1590 char_u *initstr;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1591
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1592 initstr = gettail((char_u *)parmp->argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1593
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1594 #ifdef MACOS_X_UNIX
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1595 /* An issue has been seen when launching Vim in such a way that
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1596 * $PWD/$ARGV[0] or $ARGV[0] is not the absolute path to the
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1597 * executable or a symbolic link of it. Until this issue is resolved
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1598 * we prohibit the GUI from being used.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1599 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1600 if (STRCMP(initstr, parmp->argv[0]) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1601 disallow_gui = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1602
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1603 /* TODO: On MacOS X default to gui if argv[0] ends in:
769
2f006d0864c1 updated for version 7.0225
vimboss
parents: 754
diff changeset
1604 * /Vim.app/Contents/MacOS/Vim */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1605 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1606
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1607 #ifdef FEAT_EVAL
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1608 set_vim_var_string(VV_PROGNAME, initstr, -1);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1609 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1610
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1611 if (TOLOWER_ASC(initstr[0]) == 'r')
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1612 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1613 restricted = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1614 ++initstr;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1615 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1616
2133
2b273c71a14b updated for version 7.2.415
Bram Moolenaar <bram@zimbu.org>
parents: 2021
diff changeset
1617 /* Use evim mode for "evim" and "egvim", not for "editor". */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1618 if (TOLOWER_ASC(initstr[0]) == 'e'
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1619 && (TOLOWER_ASC(initstr[1]) == 'v'
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1620 || TOLOWER_ASC(initstr[1]) == 'g'))
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1621 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1622 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1623 gui.starting = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1624 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1625 parmp->evim_mode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1626 ++initstr;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1627 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1628
1722
5950b03fc906 updated for version 7.2-020
vimboss
parents: 1684
diff changeset
1629 /* "gvim" starts the GUI. Also accept "Gvim" for MS-Windows. */
5950b03fc906 updated for version 7.2-020
vimboss
parents: 1684
diff changeset
1630 if (TOLOWER_ASC(initstr[0]) == 'g')
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1631 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1632 main_start_gui();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1633 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1634 ++initstr;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1635 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1636 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1637
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1638 if (STRNICMP(initstr, "view", 4) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1639 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1640 readonlymode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1641 curbuf->b_p_ro = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1642 p_uc = 10000; /* don't update very often */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1643 initstr += 4;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1644 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1645 else if (STRNICMP(initstr, "vim", 3) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1646 initstr += 3;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1647
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1648 /* Catch "[r][g]vimdiff" and "[r][g]viewdiff". */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1649 if (STRICMP(initstr, "diff") == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1650 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1651 #ifdef FEAT_DIFF
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1652 parmp->diff_mode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1653 #else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1654 mch_errmsg(_("This Vim was not compiled with the diff feature."));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1655 mch_errmsg("\n");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1656 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1657 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1658 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1659
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1660 if (STRNICMP(initstr, "ex", 2) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1661 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1662 if (STRNICMP(initstr + 2, "im", 2) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1663 exmode_active = EXMODE_VIM;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1664 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1665 exmode_active = EXMODE_NORMAL;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1666 change_compatible(TRUE); /* set 'compatible' */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1667 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1668 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1669
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
1670 /*
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1671 * Get the name of the display, before gui_prepare() removes it from
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1672 * argv[]. Used for the xterm-clipboard display.
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1673 *
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1674 * Also find the --server... arguments and --socketid and --windowid
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1675 */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1676 static void
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1677 early_arg_scan(parmp)
1883
c8f343a465a2 updated for version 7.2-180
vimboss
parents: 1757
diff changeset
1678 mparm_T *parmp UNUSED;
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1679 {
1750
c5e1b4b9016f updated for version 7.2-047
vimboss
parents: 1743
diff changeset
1680 #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER) \
c5e1b4b9016f updated for version 7.2-047
vimboss
parents: 1743
diff changeset
1681 || !defined(FEAT_NETBEANS_INTG)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1682 int argc = parmp->argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1683 char **argv = parmp->argv;
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1684 int i;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1685
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1686 for (i = 1; i < argc; i++)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1687 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1688 if (STRCMP(argv[i], "--") == 0)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1689 break;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1690 # ifdef FEAT_XCLIPBOARD
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1691 else if (STRICMP(argv[i], "-display") == 0
575
f1d46f948241 updated for version 7.0163
vimboss
parents: 541
diff changeset
1692 # if defined(FEAT_GUI_GTK)
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1693 || STRICMP(argv[i], "--display") == 0
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1694 # endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1695 )
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1696 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1697 if (i == argc - 1)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1698 mainerr_arg_missing((char_u *)argv[i]);
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1699 xterm_display = argv[++i];
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1700 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1701 # endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1702 # ifdef FEAT_CLIENTSERVER
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1703 else if (STRICMP(argv[i], "--servername") == 0)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1704 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1705 if (i == argc - 1)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1706 mainerr_arg_missing((char_u *)argv[i]);
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1707 parmp->serverName_arg = (char_u *)argv[++i];
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1708 }
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
1709 else if (STRICMP(argv[i], "--serverlist") == 0)
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1710 parmp->serverArg = TRUE;
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
1711 else if (STRNICMP(argv[i], "--remote", 8) == 0)
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1712 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1713 parmp->serverArg = TRUE;
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
1714 # ifdef FEAT_GUI
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
1715 if (strstr(argv[i], "-wait") != 0)
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
1716 /* don't fork() when starting the GUI to edit files ourself */
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
1717 gui.dofork = FALSE;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
1718 # endif
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1719 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1720 # endif
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1721
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1722 # if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1723 # ifdef FEAT_GUI_W32
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1724 else if (STRICMP(argv[i], "--windowid") == 0)
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1725 # else
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1726 else if (STRICMP(argv[i], "--socketid") == 0)
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1727 # endif
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1728 {
1570
f0cfff4dcc2f updated for version 7.1-283
vimboss
parents: 1509
diff changeset
1729 long_u id;
f0cfff4dcc2f updated for version 7.1-283
vimboss
parents: 1509
diff changeset
1730 int count;
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1731
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1732 if (i == argc - 1)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1733 mainerr_arg_missing((char_u *)argv[i]);
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1734 if (STRNICMP(argv[i+1], "0x", 2) == 0)
1570
f0cfff4dcc2f updated for version 7.1-283
vimboss
parents: 1509
diff changeset
1735 count = sscanf(&(argv[i + 1][2]), SCANF_HEX_LONG_U, &id);
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1736 else
1570
f0cfff4dcc2f updated for version 7.1-283
vimboss
parents: 1509
diff changeset
1737 count = sscanf(argv[i + 1], SCANF_DECIMAL_LONG_U, &id);
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1738 if (count != 1)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1739 mainerr(ME_INVALID_ARG, (char_u *)argv[i]);
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1740 else
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1741 # ifdef FEAT_GUI_W32
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1742 win_socket_id = id;
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1743 # else
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1744 gtk_socket_id = id;
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1745 # endif
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1746 i++;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1747 }
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1748 # endif
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1749 # ifdef FEAT_GUI_GTK
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1750 else if (STRICMP(argv[i], "--echo-wid") == 0)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1751 echo_wid_arg = TRUE;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1752 # endif
1750
c5e1b4b9016f updated for version 7.2-047
vimboss
parents: 1743
diff changeset
1753 # ifndef FEAT_NETBEANS_INTG
c5e1b4b9016f updated for version 7.2-047
vimboss
parents: 1743
diff changeset
1754 else if (strncmp(argv[i], "-nb", (size_t)3) == 0)
2209
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1755 {
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1756 mch_errmsg(_("'-nb' cannot be used: not enabled at compile time\n"));
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1757 mch_exit(2);
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
1758 }
1750
c5e1b4b9016f updated for version 7.2-047
vimboss
parents: 1743
diff changeset
1759 # endif
c5e1b4b9016f updated for version 7.2-047
vimboss
parents: 1743
diff changeset
1760
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1761 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1762 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1763 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1764
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
1765 /*
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1766 * Scan the command line arguments.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1767 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1768 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1769 command_line_scan(parmp)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1770 mparm_T *parmp;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1771 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1772 int argc = parmp->argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1773 char **argv = parmp->argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1774 int argv_idx; /* index in argv[n][] */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1775 int had_minmin = FALSE; /* found "--" argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1776 int want_argument; /* option argument with argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1777 int c;
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
1778 char_u *p = NULL;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1779 long n;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1780
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1781 --argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1782 ++argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1783 argv_idx = 1; /* active option letter is argv[0][argv_idx] */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1784 while (argc > 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1785 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1786 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1787 * "+" or "+{number}" or "+/{pat}" or "+{command}" argument.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1788 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1789 if (argv[0][0] == '+' && !had_minmin)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1790 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1791 if (parmp->n_commands >= MAX_ARG_CMDS)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1792 mainerr(ME_EXTRA_CMD, NULL);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1793 argv_idx = -1; /* skip to next argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1794 if (argv[0][1] == NUL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1795 parmp->commands[parmp->n_commands++] = (char_u *)"$";
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1796 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1797 parmp->commands[parmp->n_commands++] = (char_u *)&(argv[0][1]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1798 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1799
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1800 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1801 * Optional argument.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1802 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1803 else if (argv[0][0] == '-' && !had_minmin)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1804 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1805 want_argument = FALSE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1806 c = argv[0][argv_idx++];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1807 #ifdef VMS
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1808 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1809 * VMS only uses upper case command lines. Interpret "-X" as "-x"
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1810 * and "-/X" as "-X".
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1811 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1812 if (c == '/')
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1813 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1814 c = argv[0][argv_idx++];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1815 c = TOUPPER_ASC(c);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1816 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1817 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1818 c = TOLOWER_ASC(c);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1819 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1820 switch (c)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1821 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1822 case NUL: /* "vim -" read from stdin */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1823 /* "ex -" silent mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1824 if (exmode_active)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1825 silent_mode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1826 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1827 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1828 if (parmp->edit_type != EDIT_NONE)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1829 mainerr(ME_TOO_MANY_ARGS, (char_u *)argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1830 parmp->edit_type = EDIT_STDIN;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1831 read_cmd_fd = 2; /* read from stderr instead of stdin */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1832 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1833 argv_idx = -1; /* skip to next argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1834 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1835
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1836 case '-': /* "--" don't take any more option arguments */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1837 /* "--help" give help message */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1838 /* "--version" give version message */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1839 /* "--literal" take files literally */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1840 /* "--nofork" don't fork */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1841 /* "--noplugin[s]" skip plugins */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1842 /* "--cmd <cmd>" execute cmd before vimrc */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1843 if (STRICMP(argv[0] + argv_idx, "help") == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1844 usage();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1845 else if (STRICMP(argv[0] + argv_idx, "version") == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1846 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1847 Columns = 80; /* need to init Columns */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1848 info_message = TRUE; /* use mch_msg(), not mch_errmsg() */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1849 list_version();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1850 msg_putchar('\n');
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1851 msg_didout = FALSE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1852 mch_exit(0);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1853 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1854 else if (STRNICMP(argv[0] + argv_idx, "literal", 7) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1855 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1856 #if (!defined(UNIX) && !defined(__EMX__)) || defined(ARCHIE)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1857 parmp->literal = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1858 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1859 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1860 else if (STRNICMP(argv[0] + argv_idx, "nofork", 6) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1861 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1862 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1863 gui.dofork = FALSE; /* don't fork() when starting GUI */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1864 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1865 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1866 else if (STRNICMP(argv[0] + argv_idx, "noplugin", 8) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1867 p_lpl = FALSE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1868 else if (STRNICMP(argv[0] + argv_idx, "cmd", 3) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1869 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1870 want_argument = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1871 argv_idx += 3;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1872 }
1989
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
1873 else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
1874 {
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
1875 want_argument = TRUE;
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
1876 argv_idx += 11;
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
1877 }
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1878 #ifdef FEAT_CLIENTSERVER
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1879 else if (STRNICMP(argv[0] + argv_idx, "serverlist", 10) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1880 ; /* already processed -- no arg */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1881 else if (STRNICMP(argv[0] + argv_idx, "servername", 10) == 0
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1882 || STRNICMP(argv[0] + argv_idx, "serversend", 10) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1883 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1884 /* already processed -- snatch the following arg */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1885 if (argc > 1)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1886 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1887 --argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1888 ++argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1889 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1890 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1891 #endif
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1892 #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1893 # ifdef FEAT_GUI_GTK
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1894 else if (STRNICMP(argv[0] + argv_idx, "socketid", 8) == 0)
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1895 # else
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1896 else if (STRNICMP(argv[0] + argv_idx, "windowid", 8) == 0)
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1897 # endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1898 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1899 /* already processed -- snatch the following arg */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1900 if (argc > 1)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1901 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1902 --argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1903 ++argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1904 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1905 }
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1906 #endif
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
1907 #ifdef FEAT_GUI_GTK
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1908 else if (STRNICMP(argv[0] + argv_idx, "echo-wid", 8) == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1909 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1910 /* already processed, skip */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1911 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1912 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1913 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1914 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1915 if (argv[0][argv_idx])
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1916 mainerr(ME_UNKNOWN_OPTION, (char_u *)argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1917 had_minmin = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1918 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1919 if (!want_argument)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1920 argv_idx = -1; /* skip to next argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1921 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1922
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1923 case 'A': /* "-A" start in Arabic mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1924 #ifdef FEAT_ARABIC
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1925 set_option_value((char_u *)"arabic", 1L, NULL, 0);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1926 #else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1927 mch_errmsg(_(e_noarabic));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1928 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1929 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1930 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1931
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1932 case 'b': /* "-b" binary mode */
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
1933 /* Needs to be effective before expanding file names, because
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
1934 * for Win32 this makes us edit a shortcut file itself,
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
1935 * instead of the file it links to. */
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
1936 set_options_bin(curbuf->b_p_bin, 1, 0);
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
1937 curbuf->b_p_bin = 1; /* binary file I/O */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1938 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1939
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1940 case 'C': /* "-C" Compatible */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1941 change_compatible(TRUE);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1942 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1943
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1944 case 'e': /* "-e" Ex mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1945 exmode_active = EXMODE_NORMAL;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1946 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1947
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1948 case 'E': /* "-E" Improved Ex mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1949 exmode_active = EXMODE_VIM;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1950 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1951
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1952 case 'f': /* "-f" GUI: run in foreground. Amiga: open
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1953 window directly, not with newcli */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1954 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1955 gui.dofork = FALSE; /* don't fork() when starting GUI */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1956 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1957 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1958
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1959 case 'g': /* "-g" start GUI */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1960 main_start_gui();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1961 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1962
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1963 case 'F': /* "-F" start in Farsi mode: rl + fkmap set */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1964 #ifdef FEAT_FKMAP
1509
79bba9e6af2b updated for version 7.1-224
vimboss
parents: 1501
diff changeset
1965 p_fkmap = TRUE;
79bba9e6af2b updated for version 7.1-224
vimboss
parents: 1501
diff changeset
1966 set_option_value((char_u *)"rl", 1L, NULL, 0);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1967 #else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1968 mch_errmsg(_(e_nofarsi));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1969 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1970 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1971 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1972
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1973 case 'h': /* "-h" give help message */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1974 #ifdef FEAT_GUI_GNOME
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1975 /* Tell usage() to exit for "gvim". */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1976 gui.starting = FALSE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1977 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1978 usage();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1979 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1980
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1981 case 'H': /* "-H" start in Hebrew mode: rl + hkmap set */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1982 #ifdef FEAT_RIGHTLEFT
1509
79bba9e6af2b updated for version 7.1-224
vimboss
parents: 1501
diff changeset
1983 p_hkmap = TRUE;
79bba9e6af2b updated for version 7.1-224
vimboss
parents: 1501
diff changeset
1984 set_option_value((char_u *)"rl", 1L, NULL, 0);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1985 #else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1986 mch_errmsg(_(e_nohebrew));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1987 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1988 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1989 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1990
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1991 case 'l': /* "-l" lisp mode, 'lisp' and 'showmatch' on */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1992 #ifdef FEAT_LISP
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1993 set_option_value((char_u *)"lisp", 1L, NULL, 0);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1994 p_sm = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1995 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1996 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1997
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1998 case 'M': /* "-M" no changes or writing of files */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
1999 reset_modifiable();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2000 /* FALLTHROUGH */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2001
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2002 case 'm': /* "-m" no writing of files */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2003 p_write = FALSE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2004 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2005
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2006 case 'y': /* "-y" easy mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2007 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2008 gui.starting = TRUE; /* start GUI a bit later */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2009 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2010 parmp->evim_mode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2011 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2012
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2013 case 'N': /* "-N" Nocompatible */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2014 change_compatible(FALSE);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2015 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2016
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2017 case 'n': /* "-n" no swap file */
2209
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2018 #ifdef FEAT_NETBEANS_INTG
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2019 /* checking for "-nb", netbeans parameters */
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2020 if (argv[0][argv_idx] == 'b')
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2021 {
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2022 netbeansArg = argv[0];
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2023 argv_idx = -1; /* skip to next argument */
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2024 }
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2025 else
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 2201
diff changeset
2026 #endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2027 parmp->no_swap_file = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2028 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2029
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2030 case 'p': /* "-p[N]" open N tab pages */
674
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2031 #ifdef TARGET_API_MAC_OSX
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2032 /* For some reason on MacOS X, an argument like:
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2033 -psn_0_10223617 is passed in when invoke from Finder
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2034 or with the 'open' command */
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2035 if (argv[0][argv_idx] == 's')
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2036 {
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2037 argv_idx = -1; /* bypass full -psn */
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2038 main_start_gui();
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2039 break;
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2040 }
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 673
diff changeset
2041 #endif
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2042 #ifdef FEAT_WINDOWS
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2043 /* default is 0: open window for each file */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2044 parmp->window_count = get_number_arg((char_u *)argv[0],
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2045 &argv_idx, 0);
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2046 parmp->window_layout = WIN_TABS;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2047 #endif
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2048 break;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2049
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2050 case 'o': /* "-o[N]" open N horizontal split windows */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2051 #ifdef FEAT_WINDOWS
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2052 /* default is 0: open window for each file */
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2053 parmp->window_count = get_number_arg((char_u *)argv[0],
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2054 &argv_idx, 0);
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2055 parmp->window_layout = WIN_HOR;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2056 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2057 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2058
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2059 case 'O': /* "-O[N]" open N vertical split windows */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2060 #if defined(FEAT_VERTSPLIT) && defined(FEAT_WINDOWS)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2061 /* default is 0: open window for each file */
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2062 parmp->window_count = get_number_arg((char_u *)argv[0],
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2063 &argv_idx, 0);
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2064 parmp->window_layout = WIN_VER;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2065 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2066 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2067
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2068 #ifdef FEAT_QUICKFIX
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2069 case 'q': /* "-q" QuickFix mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2070 if (parmp->edit_type != EDIT_NONE)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2071 mainerr(ME_TOO_MANY_ARGS, (char_u *)argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2072 parmp->edit_type = EDIT_QF;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2073 if (argv[0][argv_idx]) /* "-q{errorfile}" */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2074 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2075 parmp->use_ef = (char_u *)argv[0] + argv_idx;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2076 argv_idx = -1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2077 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2078 else if (argc > 1) /* "-q {errorfile}" */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2079 want_argument = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2080 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2081 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2082
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2083 case 'R': /* "-R" readonly mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2084 readonlymode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2085 curbuf->b_p_ro = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2086 p_uc = 10000; /* don't update very often */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2087 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2088
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2089 case 'r': /* "-r" recovery mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2090 case 'L': /* "-L" recovery mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2091 recoverymode = 1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2092 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2093
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2094 case 's':
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2095 if (exmode_active) /* "-s" silent (batch) mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2096 silent_mode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2097 else /* "-s {scriptin}" read from script file */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2098 want_argument = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2099 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2100
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2101 case 't': /* "-t {tag}" or "-t{tag}" jump to tag */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2102 if (parmp->edit_type != EDIT_NONE)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2103 mainerr(ME_TOO_MANY_ARGS, (char_u *)argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2104 parmp->edit_type = EDIT_TAG;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2105 if (argv[0][argv_idx]) /* "-t{tag}" */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2106 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2107 parmp->tagname = (char_u *)argv[0] + argv_idx;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2108 argv_idx = -1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2109 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2110 else /* "-t {tag}" */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2111 want_argument = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2112 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2113
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2114 #ifdef FEAT_EVAL
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2115 case 'D': /* "-D" Debugging */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2116 parmp->use_debug_break_level = 9999;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2117 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2118 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2119 #ifdef FEAT_DIFF
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2120 case 'd': /* "-d" 'diff' */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2121 # ifdef AMIGA
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2122 /* check for "-dev {device}" */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2123 if (argv[0][argv_idx] == 'e' && argv[0][argv_idx + 1] == 'v')
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2124 want_argument = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2125 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2126 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2127 parmp->diff_mode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2128 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2129 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2130 case 'V': /* "-V{N}" Verbose level */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2131 /* default is 10: a little bit verbose */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2132 p_verbose = get_number_arg((char_u *)argv[0], &argv_idx, 10);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2133 if (argv[0][argv_idx] != NUL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2134 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2135 set_option_value((char_u *)"verbosefile", 0L,
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2136 (char_u *)argv[0] + argv_idx, 0);
835
8bebcabccc2c updated for version 7.0e01
vimboss
parents: 819
diff changeset
2137 argv_idx = (int)STRLEN(argv[0]);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2138 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2139 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2140
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2141 case 'v': /* "-v" Vi-mode (as if called "vi") */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2142 exmode_active = 0;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2143 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2144 gui.starting = FALSE; /* don't start GUI */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2145 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2146 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2147
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2148 case 'w': /* "-w{number}" set window height */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2149 /* "-w {scriptout}" write to script */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2150 if (vim_isdigit(((char_u *)argv[0])[argv_idx]))
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2151 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2152 n = get_number_arg((char_u *)argv[0], &argv_idx, 10);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2153 set_option_value((char_u *)"window", n, NULL, 0);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2154 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2155 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2156 want_argument = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2157 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2158
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2159 #ifdef FEAT_CRYPT
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2160 case 'x': /* "-x" encrypted reading/writing of files */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2161 parmp->ask_for_key = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2162 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2163 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2164
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2165 case 'X': /* "-X" don't connect to X server */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2166 #if (defined(UNIX) || defined(VMS)) && defined(FEAT_X11)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2167 x_no_connect = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2168 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2169 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2170
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2171 case 'Z': /* "-Z" restricted mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2172 restricted = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2173 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2174
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2175 case 'c': /* "-c{command}" or "-c {command}" execute
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2176 command */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2177 if (argv[0][argv_idx] != NUL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2178 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2179 if (parmp->n_commands >= MAX_ARG_CMDS)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2180 mainerr(ME_EXTRA_CMD, NULL);
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2181 parmp->commands[parmp->n_commands++] = (char_u *)argv[0]
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2182 + argv_idx;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2183 argv_idx = -1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2184 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2185 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2186 /*FALLTHROUGH*/
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2187 case 'S': /* "-S {file}" execute Vim script */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2188 case 'i': /* "-i {viminfo}" use for viminfo */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2189 #ifndef FEAT_DIFF
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2190 case 'd': /* "-d {device}" device (for Amiga) */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2191 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2192 case 'T': /* "-T {terminal}" terminal name */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2193 case 'u': /* "-u {vimrc}" vim inits file */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2194 case 'U': /* "-U {gvimrc}" gvim inits file */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2195 case 'W': /* "-W {scriptout}" overwrite */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2196 #ifdef FEAT_GUI_W32
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2197 case 'P': /* "-P {parent title}" MDI parent */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2198 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2199 want_argument = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2200 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2201
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2202 default:
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2203 mainerr(ME_UNKNOWN_OPTION, (char_u *)argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2204 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2205
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2206 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2207 * Handle option arguments with argument.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2208 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2209 if (want_argument)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2210 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2211 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2212 * Check for garbage immediately after the option letter.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2213 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2214 if (argv[0][argv_idx] != NUL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2215 mainerr(ME_GARBAGE, (char_u *)argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2216
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2217 --argc;
1989
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2218 if (argc < 1 && c != 'S') /* -S has an optional argument */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2219 mainerr_arg_missing((char_u *)argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2220 ++argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2221 argv_idx = -1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2222
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2223 switch (c)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2224 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2225 case 'c': /* "-c {command}" execute command */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2226 case 'S': /* "-S {file}" execute Vim script */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2227 if (parmp->n_commands >= MAX_ARG_CMDS)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2228 mainerr(ME_EXTRA_CMD, NULL);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2229 if (c == 'S')
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2230 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2231 char *a;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2232
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2233 if (argc < 1)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2234 /* "-S" without argument: use default session file
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2235 * name. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2236 a = SESSION_FILE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2237 else if (argv[0][0] == '-')
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2238 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2239 /* "-S" followed by another option: use default
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2240 * session file name. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2241 a = SESSION_FILE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2242 ++argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2243 --argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2244 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2245 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2246 a = argv[0];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2247 p = alloc((unsigned)(STRLEN(a) + 4));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2248 if (p == NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2249 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2250 sprintf((char *)p, "so %s", a);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2251 parmp->cmds_tofree[parmp->n_commands] = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2252 parmp->commands[parmp->n_commands++] = p;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2253 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2254 else
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2255 parmp->commands[parmp->n_commands++] =
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2256 (char_u *)argv[0];
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2257 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2258
1989
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2259 case '-':
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2260 if (argv[-1][2] == 'c')
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2261 {
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2262 /* "--cmd {command}" execute command */
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2263 if (parmp->n_pre_commands >= MAX_ARG_CMDS)
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2264 mainerr(ME_EXTRA_CMD, NULL);
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2265 parmp->pre_commands[parmp->n_pre_commands++] =
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2266 (char_u *)argv[0];
1989
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2267 }
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
2268 /* "--startuptime <file>" already handled */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2269 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2270
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2271 /* case 'd': -d {device} is handled in mch_check_win() for the
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2272 * Amiga */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2273
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2274 #ifdef FEAT_QUICKFIX
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2275 case 'q': /* "-q {errorfile}" QuickFix mode */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2276 parmp->use_ef = (char_u *)argv[0];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2277 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2278 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2279
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2280 case 'i': /* "-i {viminfo}" use for viminfo */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2281 use_viminfo = (char_u *)argv[0];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2282 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2283
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2284 case 's': /* "-s {scriptin}" read from script file */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2285 if (scriptin[0] != NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2286 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2287 scripterror:
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2288 mch_errmsg(_("Attempt to open script file again: \""));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2289 mch_errmsg(argv[-1]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2290 mch_errmsg(" ");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2291 mch_errmsg(argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2292 mch_errmsg("\"\n");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2293 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2294 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2295 if ((scriptin[0] = mch_fopen(argv[0], READBIN)) == NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2296 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2297 mch_errmsg(_("Cannot open for reading: \""));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2298 mch_errmsg(argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2299 mch_errmsg("\"\n");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2300 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2301 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2302 if (save_typebuf() == FAIL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2303 mch_exit(2); /* out of memory */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2304 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2305
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2306 case 't': /* "-t {tag}" */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2307 parmp->tagname = (char_u *)argv[0];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2308 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2309
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2310 case 'T': /* "-T {terminal}" terminal name */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2311 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2312 * The -T term argument is always available and when
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2313 * HAVE_TERMLIB is supported it overrides the environment
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2314 * variable TERM.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2315 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2316 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2317 if (term_is_gui((char_u *)argv[0]))
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2318 gui.starting = TRUE; /* start GUI a bit later */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2319 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2320 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2321 parmp->term = (char_u *)argv[0];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2322 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2323
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2324 case 'u': /* "-u {vimrc}" vim inits file */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2325 parmp->use_vimrc = (char_u *)argv[0];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2326 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2327
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2328 case 'U': /* "-U {gvimrc}" gvim inits file */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2329 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2330 use_gvimrc = (char_u *)argv[0];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2331 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2332 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2333
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2334 case 'w': /* "-w {nr}" 'window' value */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2335 /* "-w {scriptout}" append to script file */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2336 if (vim_isdigit(*((char_u *)argv[0])))
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2337 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2338 argv_idx = 0;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2339 n = get_number_arg((char_u *)argv[0], &argv_idx, 10);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2340 set_option_value((char_u *)"window", n, NULL, 0);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2341 argv_idx = -1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2342 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2343 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2344 /*FALLTHROUGH*/
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2345 case 'W': /* "-W {scriptout}" overwrite script file */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2346 if (scriptout != NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2347 goto scripterror;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2348 if ((scriptout = mch_fopen(argv[0],
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2349 c == 'w' ? APPENDBIN : WRITEBIN)) == NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2350 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2351 mch_errmsg(_("Cannot open for script output: \""));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2352 mch_errmsg(argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2353 mch_errmsg("\"\n");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2354 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2355 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2356 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2357
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2358 #ifdef FEAT_GUI_W32
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2359 case 'P': /* "-P {parent title}" MDI parent */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2360 gui_mch_set_parent(argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2361 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2362 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2363 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2364 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2365 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2366
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2367 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2368 * File name argument.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2369 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2370 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2371 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2372 argv_idx = -1; /* skip to next argument */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2373
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2374 /* Check for only one type of editing. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2375 if (parmp->edit_type != EDIT_NONE && parmp->edit_type != EDIT_FILE)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2376 mainerr(ME_TOO_MANY_ARGS, (char_u *)argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2377 parmp->edit_type = EDIT_FILE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2378
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2379 #ifdef MSWIN
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2380 /* Remember if the argument was a full path before changing
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2381 * slashes to backslashes. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2382 if (argv[0][0] != NUL && argv[0][1] == ':' && argv[0][2] == '\\')
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2383 parmp->full_path = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2384 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2385
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2386 /* Add the file to the global argument list. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2387 if (ga_grow(&global_alist.al_ga, 1) == FAIL
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2388 || (p = vim_strsave((char_u *)argv[0])) == NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2389 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2390 #ifdef FEAT_DIFF
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2391 if (parmp->diff_mode && mch_isdir(p) && GARGCOUNT > 0
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2392 && !mch_isdir(alist_name(&GARGLIST[0])))
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2393 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2394 char_u *r;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2395
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2396 r = concat_fnames(p, gettail(alist_name(&GARGLIST[0])), TRUE);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2397 if (r != NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2398 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2399 vim_free(p);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2400 p = r;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2401 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2402 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2403 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2404 #if defined(__CYGWIN32__) && !defined(WIN32)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2405 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2406 * If vim is invoked by non-Cygwin tools, convert away any
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2407 * DOS paths, so things like .swp files are created correctly.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2408 * Look for evidence of non-Cygwin paths before we bother.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2409 * This is only for when using the Unix files.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2410 */
2133
2b273c71a14b updated for version 7.2.415
Bram Moolenaar <bram@zimbu.org>
parents: 2021
diff changeset
2411 if (strpbrk(p, "\\:") != NULL && !path_with_url(p))
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2412 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2413 char posix_path[PATH_MAX];
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2414
1657
c3e225bc213a updated for version 7.2a-009
vimboss
parents: 1624
diff changeset
2415 # if CYGWIN_VERSION_DLL_MAJOR >= 1007
c3e225bc213a updated for version 7.2a-009
vimboss
parents: 1624
diff changeset
2416 cygwin_conv_path(CCP_WIN_A_TO_POSIX, p, posix_path, PATH_MAX);
c3e225bc213a updated for version 7.2a-009
vimboss
parents: 1624
diff changeset
2417 # else
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2418 cygwin_conv_to_posix_path(p, posix_path);
1657
c3e225bc213a updated for version 7.2a-009
vimboss
parents: 1624
diff changeset
2419 # endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2420 vim_free(p);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2421 p = vim_strsave(posix_path);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2422 if (p == NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2423 mch_exit(2);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2424 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2425 #endif
587
3686831cf3da updated for version 7.0166
vimboss
parents: 580
diff changeset
2426
3686831cf3da updated for version 7.0166
vimboss
parents: 580
diff changeset
2427 #ifdef USE_FNAME_CASE
3686831cf3da updated for version 7.0166
vimboss
parents: 580
diff changeset
2428 /* Make the case of the file name match the actual file. */
3686831cf3da updated for version 7.0166
vimboss
parents: 580
diff changeset
2429 fname_case(p, 0);
3686831cf3da updated for version 7.0166
vimboss
parents: 580
diff changeset
2430 #endif
3686831cf3da updated for version 7.0166
vimboss
parents: 580
diff changeset
2431
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2432 alist_add(&global_alist, p,
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2433 #if (!defined(UNIX) && !defined(__EMX__)) || defined(ARCHIE)
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2434 parmp->literal ? 2 : 0 /* add buffer nr after exp. */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2435 #else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2436 2 /* add buffer number now and use curbuf */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2437 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2438 );
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2439
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2440 #if defined(FEAT_MBYTE) && defined(WIN32)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2441 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2442 /* Remember this argument has been added to the argument list.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2443 * Needed when 'encoding' is changed. */
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2444 used_file_arg(argv[0], parmp->literal, parmp->full_path,
1680
0a908b65de1d updated for version 7.2b-012
vimboss
parents: 1668
diff changeset
2445 # ifdef FEAT_DIFF
0a908b65de1d updated for version 7.2b-012
vimboss
parents: 1668
diff changeset
2446 parmp->diff_mode
0a908b65de1d updated for version 7.2b-012
vimboss
parents: 1668
diff changeset
2447 # else
0a908b65de1d updated for version 7.2b-012
vimboss
parents: 1668
diff changeset
2448 FALSE
0a908b65de1d updated for version 7.2b-012
vimboss
parents: 1668
diff changeset
2449 # endif
0a908b65de1d updated for version 7.2b-012
vimboss
parents: 1668
diff changeset
2450 );
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2451 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2452 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2453 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2454
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2455 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2456 * If there are no more letters after the current "-", go to next
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2457 * argument. argv_idx is set to -1 when the current argument is to be
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2458 * skipped.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2459 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2460 if (argv_idx <= 0 || argv[0][argv_idx] == NUL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2461 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2462 --argc;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2463 ++argv;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2464 argv_idx = 1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2465 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2466 }
1093
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2467
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2468 #ifdef FEAT_EVAL
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2469 /* If there is a "+123" or "-c" command, set v:swapcommand to the first
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2470 * one. */
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2471 if (parmp->n_commands > 0)
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2472 {
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2473 p = alloc((unsigned)STRLEN(parmp->commands[0]) + 3);
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2474 if (p != NULL)
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2475 {
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2476 sprintf((char *)p, ":%s\r", parmp->commands[0]);
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2477 set_vim_var_string(VV_SWAPCOMMAND, p, -1);
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2478 vim_free(p);
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2479 }
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2480 }
23d23246742e updated for version 7.0-219
vimboss
parents: 1076
diff changeset
2481 #endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2482 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2483
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2484 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2485 * Print a warning if stdout is not a terminal.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2486 * When starting in Ex mode and commands come from a file, set Silent mode.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2487 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2488 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2489 check_tty(parmp)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2490 mparm_T *parmp;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2491 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2492 int input_isatty; /* is active input a terminal? */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2493
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2494 input_isatty = mch_input_isatty();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2495 if (exmode_active)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2496 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2497 if (!input_isatty)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2498 silent_mode = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2499 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2500 else if (parmp->want_full_screen && (!parmp->stdout_isatty || !input_isatty)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2501 #ifdef FEAT_GUI
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2502 /* don't want the delay when started from the desktop */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2503 && !gui.starting
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2504 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2505 )
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2506 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2507 #ifdef NBDEBUG
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2508 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2509 * This shouldn't be necessary. But if I run netbeans with the log
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2510 * output coming to the console and XOpenDisplay fails, I get vim
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2511 * trying to start with input/output to my console tty. This fills my
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2512 * input buffer so fast I can't even kill the process in under 2
1226
a49d06539452 updated for version 7.1b
vimboss
parents: 1164
diff changeset
2513 * minutes (and it beeps continuously the whole time :-)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2514 */
2210
8c6a66e2b3cc Add :nbstart and :nbclose.
Bram Moolenaar <bram@vim.org>
parents: 2209
diff changeset
2515 if (netbeans_active() && (!parmp->stdout_isatty || !input_isatty))
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2516 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2517 mch_errmsg(_("Vim: Error: Failure to start gvim from NetBeans\n"));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2518 exit(1);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2519 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2520 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2521 if (!parmp->stdout_isatty)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2522 mch_errmsg(_("Vim: Warning: Output is not to a terminal\n"));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2523 if (!input_isatty)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2524 mch_errmsg(_("Vim: Warning: Input is not from a terminal\n"));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2525 out_flush();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2526 if (scriptin[0] == NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2527 ui_delay(2000L, TRUE);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2528 TIME_MSG("Warning delay");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2529 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2530 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2531
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2532 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2533 * Read text from stdin.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2534 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2535 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2536 read_stdin()
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2537 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2538 int i;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2539
580
90ee46d7f492 updated for version 7.0164
vimboss
parents: 575
diff changeset
2540 #if defined(HAS_SWAP_EXISTS_ACTION)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2541 /* When getting the ATTENTION prompt here, use a dialog */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2542 swap_exists_action = SEA_DIALOG;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2543 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2544 no_wait_return = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2545 i = msg_didany;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2546 set_buflisted(TRUE);
2394
a3aca345aafa Add the 'undoreload' option to be able to undo a file reload.
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
2547 (void)open_buffer(TRUE, NULL, 0); /* create memfile and read file */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2548 no_wait_return = FALSE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2549 msg_didany = i;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2550 TIME_MSG("reading stdin");
580
90ee46d7f492 updated for version 7.0164
vimboss
parents: 575
diff changeset
2551 #if defined(HAS_SWAP_EXISTS_ACTION)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2552 check_swap_exists_action();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2553 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2554 #if !(defined(AMIGA) || defined(MACOS))
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2555 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2556 * Close stdin and dup it from stderr. Required for GPM to work
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2557 * properly, and for running external commands.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2558 * Is there any other system that cannot do this?
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2559 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2560 close(0);
1757
f10fe14748e2 updated for version 7.2-055
vimboss
parents: 1750
diff changeset
2561 ignored = dup(2);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2562 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2563 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2564
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2565 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2566 * Create the requested number of windows and edit buffers in them.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2567 * Also does recovery if "recoverymode" set.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2568 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2569 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2570 create_windows(parmp)
1883
c8f343a465a2 updated for version 7.2-180
vimboss
parents: 1757
diff changeset
2571 mparm_T *parmp UNUSED;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2572 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2573 #ifdef FEAT_WINDOWS
944
b2dcb8457067 updated for version 7.0-070
vimboss
parents: 926
diff changeset
2574 int dorewind;
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2575 int done = 0;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2576
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2577 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2578 * Create the number of windows that was requested.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2579 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2580 if (parmp->window_count == -1) /* was not set */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2581 parmp->window_count = 1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2582 if (parmp->window_count == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2583 parmp->window_count = GARGCOUNT;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2584 if (parmp->window_count > 1)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2585 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2586 /* Don't change the windows if there was a command in .vimrc that
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2587 * already split some windows */
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2588 if (parmp->window_layout == 0)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2589 parmp->window_layout = WIN_HOR;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2590 if (parmp->window_layout == WIN_TABS)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2591 {
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2592 parmp->window_count = make_tabpages(parmp->window_count);
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2593 TIME_MSG("making tab pages");
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2594 }
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2595 else if (firstwin->w_next == NULL)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2596 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2597 parmp->window_count = make_windows(parmp->window_count,
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2598 parmp->window_layout == WIN_VER);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2599 TIME_MSG("making windows");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2600 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2601 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2602 parmp->window_count = win_count();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2603 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2604 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2605 parmp->window_count = 1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2606 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2607
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2608 if (recoverymode) /* do recover */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2609 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2610 msg_scroll = TRUE; /* scroll message up */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2611 ml_recover();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2612 if (curbuf->b_ml.ml_mfp == NULL) /* failed */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2613 getout(1);
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 714
diff changeset
2614 do_modelines(0); /* do modelines */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2615 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2616 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2617 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2618 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2619 * Open a buffer for windows that don't have one yet.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2620 * Commands in the .vimrc might have loaded a file or split the window.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2621 * Watch out for autocommands that delete a window.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2622 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2623 #ifdef FEAT_AUTOCMD
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2624 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2625 * Don't execute Win/Buf Enter/Leave autocommands here
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2626 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2627 ++autocmd_no_enter;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2628 ++autocmd_no_leave;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2629 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2630 #ifdef FEAT_WINDOWS
944
b2dcb8457067 updated for version 7.0-070
vimboss
parents: 926
diff changeset
2631 dorewind = TRUE;
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2632 while (done++ < 1000)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2633 {
944
b2dcb8457067 updated for version 7.0-070
vimboss
parents: 926
diff changeset
2634 if (dorewind)
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2635 {
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2636 if (parmp->window_layout == WIN_TABS)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2637 goto_tabpage(1);
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2638 else
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2639 curwin = firstwin;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2640 }
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2641 else if (parmp->window_layout == WIN_TABS)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2642 {
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2643 if (curtab->tp_next == NULL)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2644 break;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2645 goto_tabpage(0);
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2646 }
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2647 else
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2648 {
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2649 if (curwin->w_next == NULL)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2650 break;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2651 curwin = curwin->w_next;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2652 }
944
b2dcb8457067 updated for version 7.0-070
vimboss
parents: 926
diff changeset
2653 dorewind = FALSE;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2654 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2655 curbuf = curwin->w_buffer;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2656 if (curbuf->b_ml.ml_mfp == NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2657 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2658 #ifdef FEAT_FOLDING
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2659 /* Set 'foldlevel' to 'foldlevelstart' if it's not negative. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2660 if (p_fdls >= 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2661 curwin->w_p_fdl = p_fdls;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2662 #endif
580
90ee46d7f492 updated for version 7.0164
vimboss
parents: 575
diff changeset
2663 #if defined(HAS_SWAP_EXISTS_ACTION)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2664 /* When getting the ATTENTION prompt here, use a dialog */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2665 swap_exists_action = SEA_DIALOG;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2666 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2667 set_buflisted(TRUE);
2394
a3aca345aafa Add the 'undoreload' option to be able to undo a file reload.
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
2668
a3aca345aafa Add the 'undoreload' option to be able to undo a file reload.
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
2669 /* create memfile, read file */
a3aca345aafa Add the 'undoreload' option to be able to undo a file reload.
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
2670 (void)open_buffer(FALSE, NULL, 0);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2671
580
90ee46d7f492 updated for version 7.0164
vimboss
parents: 575
diff changeset
2672 #if defined(HAS_SWAP_EXISTS_ACTION)
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2673 if (swap_exists_action == SEA_QUIT)
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2674 {
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2675 if (got_int || only_one_window())
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2676 {
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2677 /* abort selected or quit and only one window */
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2678 did_emsg = FALSE; /* avoid hit-enter prompt */
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2679 getout(1);
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2680 }
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2681 /* We can't close the window, it would disturb what
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2682 * happens next. Clear the file name and set the arg
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2683 * index to -1 to delete it later. */
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2684 setfname(curbuf, NULL, NULL, FALSE);
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2685 curwin->w_arg_idx = -1;
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2686 swap_exists_action = SEA_NONE;
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2687 }
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2688 else
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2689 handle_swap_exists(NULL);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2690 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2691 #ifdef FEAT_AUTOCMD
944
b2dcb8457067 updated for version 7.0-070
vimboss
parents: 926
diff changeset
2692 dorewind = TRUE; /* start again */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2693 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2694 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2695 #ifdef FEAT_WINDOWS
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2696 ui_breakcheck();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2697 if (got_int)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2698 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2699 (void)vgetc(); /* only break the file loading, not the rest */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2700 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2701 }
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2702 }
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2703 #endif
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2704 #ifdef FEAT_WINDOWS
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2705 if (parmp->window_layout == WIN_TABS)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2706 goto_tabpage(1);
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2707 else
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2708 curwin = firstwin;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2709 curbuf = curwin->w_buffer;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2710 #endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2711 #ifdef FEAT_AUTOCMD
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2712 --autocmd_no_enter;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2713 --autocmd_no_leave;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2714 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2715 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2716 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2717
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2718 #ifdef FEAT_WINDOWS
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2719 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2720 * If opened more than one window, start editing files in the other
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2721 * windows. make_windows() has already opened the windows.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2722 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2723 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2724 edit_buffers(parmp)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2725 mparm_T *parmp;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2726 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2727 int arg_idx; /* index in argument list */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2728 int i;
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2729 int advance = TRUE;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2730
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2731 # ifdef FEAT_AUTOCMD
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2732 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2733 * Don't execute Win/Buf Enter/Leave autocommands here
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2734 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2735 ++autocmd_no_enter;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2736 ++autocmd_no_leave;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2737 # endif
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2738
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2739 /* When w_arg_idx is -1 remove the window (see create_windows()). */
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2740 if (curwin->w_arg_idx == -1)
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2741 {
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2742 win_close(curwin, TRUE);
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2743 advance = FALSE;
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2744 }
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2745
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2746 arg_idx = 1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2747 for (i = 1; i < parmp->window_count; ++i)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2748 {
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2749 /* When w_arg_idx is -1 remove the window (see create_windows()). */
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2750 if (curwin->w_arg_idx == -1)
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2751 {
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2752 ++arg_idx;
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2753 win_close(curwin, TRUE);
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2754 advance = FALSE;
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2755 continue;
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2756 }
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2757
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2758 if (advance)
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2759 {
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2760 if (parmp->window_layout == WIN_TABS)
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2761 {
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2762 if (curtab->tp_next == NULL) /* just checking */
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2763 break;
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2764 goto_tabpage(0);
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2765 }
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2766 else
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2767 {
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2768 if (curwin->w_next == NULL) /* just checking */
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2769 break;
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2770 win_enter(curwin->w_next, FALSE);
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2771 }
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2772 }
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2773 advance = TRUE;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2774
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2775 /* Only open the file if there is no file in this window yet (that can
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2776 * happen when .vimrc contains ":sall"). */
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2777 if (curbuf == firstwin->w_buffer || curbuf->b_ffname == NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2778 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2779 curwin->w_arg_idx = arg_idx;
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2780 /* Edit file from arg list, if there is one. When "Quit" selected
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2781 * at the ATTENTION prompt close the window. */
1684
fc8bf5d4051a updated for version 7.2b-017
vimboss
parents: 1680
diff changeset
2782 # ifdef HAS_SWAP_EXISTS_ACTION
fc8bf5d4051a updated for version 7.2b-017
vimboss
parents: 1680
diff changeset
2783 swap_exists_did_quit = FALSE;
fc8bf5d4051a updated for version 7.2b-017
vimboss
parents: 1680
diff changeset
2784 # endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2785 (void)do_ecmd(0, arg_idx < GARGCOUNT
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2786 ? alist_name(&GARGLIST[arg_idx]) : NULL,
1743
734d5bdae499 updated for version 7.2-041
vimboss
parents: 1733
diff changeset
2787 NULL, NULL, ECMD_LASTL, ECMD_HIDE, curwin);
1684
fc8bf5d4051a updated for version 7.2b-017
vimboss
parents: 1680
diff changeset
2788 # ifdef HAS_SWAP_EXISTS_ACTION
fc8bf5d4051a updated for version 7.2b-017
vimboss
parents: 1680
diff changeset
2789 if (swap_exists_did_quit)
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2790 {
1684
fc8bf5d4051a updated for version 7.2b-017
vimboss
parents: 1680
diff changeset
2791 /* abort or quit selected */
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2792 if (got_int || only_one_window())
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2793 {
1684
fc8bf5d4051a updated for version 7.2b-017
vimboss
parents: 1680
diff changeset
2794 /* abort selected and only one window */
1036
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2795 did_emsg = FALSE; /* avoid hit-enter prompt */
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2796 getout(1);
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2797 }
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2798 win_close(curwin, TRUE);
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2799 advance = FALSE;
20308f30826d updated for version 7.0-162
vimboss
parents: 958
diff changeset
2800 }
1684
fc8bf5d4051a updated for version 7.2b-017
vimboss
parents: 1680
diff changeset
2801 # endif
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2802 if (arg_idx == GARGCOUNT - 1)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2803 arg_had_last = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2804 ++arg_idx;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2805 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2806 ui_breakcheck();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2807 if (got_int)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2808 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2809 (void)vgetc(); /* only break the file loading, not the rest */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2810 break;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2811 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2812 }
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2813
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2814 if (parmp->window_layout == WIN_TABS)
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2815 goto_tabpage(1);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2816 # ifdef FEAT_AUTOCMD
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2817 --autocmd_no_enter;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2818 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2819 win_enter(firstwin, FALSE); /* back to first window */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2820 # ifdef FEAT_AUTOCMD
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2821 --autocmd_no_leave;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2822 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2823 TIME_MSG("editing files in windows");
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2824 if (parmp->window_count > 1 && parmp->window_layout != WIN_TABS)
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2825 win_equal(curwin, FALSE, 'b'); /* adjust heights */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2826 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2827 #endif /* FEAT_WINDOWS */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2828
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2829 /*
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2830 * Execute the commands from --cmd arguments "cmds[cnt]".
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2831 */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2832 static void
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2833 exe_pre_commands(parmp)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2834 mparm_T *parmp;
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2835 {
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2836 char_u **cmds = parmp->pre_commands;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2837 int cnt = parmp->n_pre_commands;
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2838 int i;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2839
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2840 if (cnt > 0)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2841 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2842 curwin->w_cursor.lnum = 0; /* just in case.. */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2843 sourcing_name = (char_u *)_("pre-vimrc command line");
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2844 # ifdef FEAT_EVAL
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2845 current_SID = SID_CMDARG;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2846 # endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2847 for (i = 0; i < cnt; ++i)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2848 do_cmdline_cmd(cmds[i]);
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2849 sourcing_name = NULL;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2850 # ifdef FEAT_EVAL
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2851 current_SID = 0;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2852 # endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2853 TIME_MSG("--cmd commands");
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2854 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2855 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2856
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2857 /*
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2858 * Execute "+", "-c" and "-S" arguments.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2859 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2860 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2861 exe_commands(parmp)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2862 mparm_T *parmp;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2863 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2864 int i;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2865
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2866 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2867 * We start commands on line 0, make "vim +/pat file" match a
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2868 * pattern on line 1. But don't move the cursor when an autocommand
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2869 * with g`" was used.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2870 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2871 msg_scroll = TRUE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2872 if (parmp->tagname == NULL && curwin->w_cursor.lnum <= 1)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2873 curwin->w_cursor.lnum = 0;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2874 sourcing_name = (char_u *)"command line";
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2875 #ifdef FEAT_EVAL
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2876 current_SID = SID_CARG;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2877 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2878 for (i = 0; i < parmp->n_commands; ++i)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2879 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2880 do_cmdline_cmd(parmp->commands[i]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2881 if (parmp->cmds_tofree[i])
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2882 vim_free(parmp->commands[i]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2883 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2884 sourcing_name = NULL;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2885 #ifdef FEAT_EVAL
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2886 current_SID = 0;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2887 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2888 if (curwin->w_cursor.lnum == 0)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2889 curwin->w_cursor.lnum = 1;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2890
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2891 if (!exmode_active)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2892 msg_scroll = FALSE;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2893
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2894 #ifdef FEAT_QUICKFIX
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2895 /* When started with "-q errorfile" jump to first error again. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2896 if (parmp->edit_type == EDIT_QF)
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 640
diff changeset
2897 qf_jump(NULL, 0, 0, FALSE);
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2898 #endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2899 TIME_MSG("executing command arguments");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2900 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2901
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2902 /*
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2903 * Source startup scripts.
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2904 */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2905 static void
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2906 source_startup_scripts(parmp)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2907 mparm_T *parmp;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2908 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2909 int i;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2910
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2911 /*
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2912 * For "evim" source evim.vim first of all, so that the user can overrule
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2913 * any things he doesn't like.
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2914 */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2915 if (parmp->evim_mode)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2916 {
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2917 (void)do_source((char_u *)EVIM_FILE, FALSE, DOSO_NONE);
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2918 TIME_MSG("source evim file");
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2919 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2920
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2921 /*
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
2922 * If -u argument given, use only the initializations from that file and
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2923 * nothing else.
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2924 */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2925 if (parmp->use_vimrc != NULL)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2926 {
445
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2927 if (STRCMP(parmp->use_vimrc, "NONE") == 0
c773cb978acf updated for version 7.0116
vimboss
parents: 443
diff changeset
2928 || STRCMP(parmp->use_vimrc, "NORC") == 0)
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2929 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2930 #ifdef FEAT_GUI
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2931 if (use_gvimrc == NULL) /* don't load gvimrc either */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2932 use_gvimrc = parmp->use_vimrc;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2933 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2934 if (parmp->use_vimrc[2] == 'N')
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2935 p_lpl = FALSE; /* don't load plugins either */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2936 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2937 else
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2938 {
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2939 if (do_source(parmp->use_vimrc, FALSE, DOSO_NONE) != OK)
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2940 EMSG2(_("E282: Cannot read from \"%s\""), parmp->use_vimrc);
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2941 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2942 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2943 else if (!silent_mode)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2944 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2945 #ifdef AMIGA
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2946 struct Process *proc = (struct Process *)FindTask(0L);
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2947 APTR save_winptr = proc->pr_WindowPtr;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2948
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2949 /* Avoid a requester here for a volume that doesn't exist. */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2950 proc->pr_WindowPtr = (APTR)-1L;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2951 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2952
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2953 /*
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2954 * Get system wide defaults, if the file name is defined.
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2955 */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2956 #ifdef SYS_VIMRC_FILE
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2957 (void)do_source((char_u *)SYS_VIMRC_FILE, FALSE, DOSO_NONE);
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2958 #endif
720
e180933b876a updated for version 7.0219
vimboss
parents: 717
diff changeset
2959 #ifdef MACOS_X
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2960 (void)do_source((char_u *)"$VIMRUNTIME/macmap.vim", FALSE, DOSO_NONE);
720
e180933b876a updated for version 7.0219
vimboss
parents: 717
diff changeset
2961 #endif
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2962
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2963 /*
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2964 * Try to read initialization commands from the following places:
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2965 * - environment variable VIMINIT
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2966 * - user vimrc file (s:.vimrc for Amiga, ~/.vimrc otherwise)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2967 * - second user vimrc file ($VIM/.vimrc for Dos)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2968 * - environment variable EXINIT
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2969 * - user exrc file (s:.exrc for Amiga, ~/.exrc otherwise)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2970 * - second user exrc file ($VIM/.exrc for Dos)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2971 * The first that exists is used, the rest is ignored.
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2972 */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2973 if (process_env((char_u *)"VIMINIT", TRUE) != OK)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2974 {
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2975 if (do_source((char_u *)USR_VIMRC_FILE, TRUE, DOSO_VIMRC) == FAIL
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2976 #ifdef USR_VIMRC_FILE2
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2977 && do_source((char_u *)USR_VIMRC_FILE2, TRUE,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2978 DOSO_VIMRC) == FAIL
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2979 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2980 #ifdef USR_VIMRC_FILE3
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2981 && do_source((char_u *)USR_VIMRC_FILE3, TRUE,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2982 DOSO_VIMRC) == FAIL
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2983 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2984 && process_env((char_u *)"EXINIT", FALSE) == FAIL
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2985 && do_source((char_u *)USR_EXRC_FILE, FALSE, DOSO_NONE) == FAIL)
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2986 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2987 #ifdef USR_EXRC_FILE2
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
2988 (void)do_source((char_u *)USR_EXRC_FILE2, FALSE, DOSO_NONE);
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2989 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2990 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2991 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2992
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2993 /*
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2994 * Read initialization commands from ".vimrc" or ".exrc" in current
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2995 * directory. This is only done if the 'exrc' option is set.
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2996 * Because of security reasons we disallow shell and write commands
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2997 * now, except for unix if the file is owned by the user or 'secure'
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2998 * option has been reset in environment of global ".exrc" or ".vimrc".
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
2999 * Only do this if VIMRC_FILE is not the same as USR_VIMRC_FILE or
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3000 * SYS_VIMRC_FILE.
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3001 */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3002 if (p_exrc)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3003 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3004 #if defined(UNIX) || defined(VMS)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3005 /* If ".vimrc" file is not owned by user, set 'secure' mode. */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3006 if (!file_owned(VIMRC_FILE))
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3007 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3008 secure = p_secure;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3009
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3010 i = FAIL;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3011 if (fullpathcmp((char_u *)USR_VIMRC_FILE,
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3012 (char_u *)VIMRC_FILE, FALSE) != FPC_SAME
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3013 #ifdef USR_VIMRC_FILE2
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3014 && fullpathcmp((char_u *)USR_VIMRC_FILE2,
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3015 (char_u *)VIMRC_FILE, FALSE) != FPC_SAME
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3016 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3017 #ifdef USR_VIMRC_FILE3
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3018 && fullpathcmp((char_u *)USR_VIMRC_FILE3,
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3019 (char_u *)VIMRC_FILE, FALSE) != FPC_SAME
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3020 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3021 #ifdef SYS_VIMRC_FILE
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3022 && fullpathcmp((char_u *)SYS_VIMRC_FILE,
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3023 (char_u *)VIMRC_FILE, FALSE) != FPC_SAME
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3024 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3025 )
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
3026 i = do_source((char_u *)VIMRC_FILE, TRUE, DOSO_VIMRC);
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3027
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3028 if (i == FAIL)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3029 {
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3030 #if defined(UNIX) || defined(VMS)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3031 /* if ".exrc" is not owned by user set 'secure' mode */
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3032 if (!file_owned(EXRC_FILE))
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3033 secure = p_secure;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3034 else
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3035 secure = 0;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3036 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3037 if ( fullpathcmp((char_u *)USR_EXRC_FILE,
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3038 (char_u *)EXRC_FILE, FALSE) != FPC_SAME
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3039 #ifdef USR_EXRC_FILE2
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3040 && fullpathcmp((char_u *)USR_EXRC_FILE2,
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3041 (char_u *)EXRC_FILE, FALSE) != FPC_SAME
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3042 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3043 )
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
3044 (void)do_source((char_u *)EXRC_FILE, FALSE, DOSO_NONE);
440
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3045 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3046 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3047 if (secure == 2)
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3048 need_wait_return = TRUE;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3049 secure = 0;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3050 #ifdef AMIGA
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3051 proc->pr_WindowPtr = save_winptr;
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3052 #endif
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3053 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3054 TIME_MSG("sourcing vimrc file(s)");
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3055 }
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3056
eb531146be0e updated for version 7.0114
vimboss
parents: 432
diff changeset
3057 /*
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3058 * Setup to start using the GUI. Exit with an error when not available.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3059 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3060 static void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3061 main_start_gui()
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3062 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3063 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3064 gui.starting = TRUE; /* start GUI a bit later */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3065 #else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3066 mch_errmsg(_(e_nogvim));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3067 mch_errmsg("\n");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3068 mch_exit(2);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3069 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3070 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3071
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3072 #endif /* NO_VIM_MAIN */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3073
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3074 /*
1226
a49d06539452 updated for version 7.1b
vimboss
parents: 1164
diff changeset
3075 * Get an environment variable, and execute it as Ex commands.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3076 * Returns FAIL if the environment variable was not executed, OK otherwise.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3077 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3078 int
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3079 process_env(env, is_viminit)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3080 char_u *env;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3081 int is_viminit; /* when TRUE, called for VIMINIT */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3082 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3083 char_u *initstr;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3084 char_u *save_sourcing_name;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3085 linenr_T save_sourcing_lnum;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3086 #ifdef FEAT_EVAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3087 scid_T save_sid;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3088 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3089
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3090 if ((initstr = mch_getenv(env)) != NULL && *initstr != NUL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3091 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3092 if (is_viminit)
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 816
diff changeset
3093 vimrc_found(NULL, NULL);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3094 save_sourcing_name = sourcing_name;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3095 save_sourcing_lnum = sourcing_lnum;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3096 sourcing_name = env;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3097 sourcing_lnum = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3098 #ifdef FEAT_EVAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3099 save_sid = current_SID;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3100 current_SID = SID_ENV;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3101 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3102 do_cmdline_cmd(initstr);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3103 sourcing_name = save_sourcing_name;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3104 sourcing_lnum = save_sourcing_lnum;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3105 #ifdef FEAT_EVAL
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3106 current_SID = save_sid;;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3107 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3108 return OK;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3109 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3110 return FAIL;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3111 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3112
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3113 #if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3114 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3115 * Return TRUE if we are certain the user owns the file "fname".
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3116 * Used for ".vimrc" and ".exrc".
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3117 * Use both stat() and lstat() for extra security.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3118 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3119 static int
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3120 file_owned(fname)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3121 char *fname;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3122 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3123 struct stat s;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3124 # ifdef UNIX
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3125 uid_t uid = getuid();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3126 # else /* VMS */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3127 uid_t uid = ((getgid() << 16) | getuid());
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3128 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3129
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3130 return !(mch_stat(fname, &s) != 0 || s.st_uid != uid
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3131 # ifdef HAVE_LSTAT
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3132 || mch_lstat(fname, &s) != 0 || s.st_uid != uid
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3133 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3134 );
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3135 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3136 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3137
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3138 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3139 * Give an error message main_errors["n"] and exit.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3140 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3141 static void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3142 mainerr(n, str)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3143 int n; /* one of the ME_ defines */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3144 char_u *str; /* extra argument or NULL */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3145 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3146 #if defined(UNIX) || defined(__EMX__) || defined(VMS)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3147 reset_signals(); /* kill us with CTRL-C here, if you like */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3148 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3149
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3150 mch_errmsg(longVersion);
159
389c8abd5925 updated for version 7.0048
vimboss
parents: 155
diff changeset
3151 mch_errmsg("\n");
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3152 mch_errmsg(_(main_errors[n]));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3153 if (str != NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3154 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3155 mch_errmsg(": \"");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3156 mch_errmsg((char *)str);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3157 mch_errmsg("\"");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3158 }
159
389c8abd5925 updated for version 7.0048
vimboss
parents: 155
diff changeset
3159 mch_errmsg(_("\nMore info with: \"vim -h\"\n"));
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3160
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3161 mch_exit(1);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3162 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3163
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3164 void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3165 mainerr_arg_missing(str)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3166 char_u *str;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3167 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3168 mainerr(ME_ARG_MISSING, str);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3169 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3170
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3171 #ifndef NO_VIM_MAIN
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3172 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3173 * print a message with three spaces prepended and '\n' appended.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3174 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3175 static void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3176 main_msg(s)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3177 char *s;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3178 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3179 mch_msg(" ");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3180 mch_msg(s);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3181 mch_msg("\n");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3182 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3183
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3184 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3185 * Print messages for "vim -h" or "vim --help" and exit.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3186 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3187 static void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3188 usage()
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3189 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3190 int i;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3191 static char *(use[]) =
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3192 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3193 N_("[file ..] edit specified file(s)"),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3194 N_("- read text from stdin"),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3195 N_("-t tag edit file where tag is defined"),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3196 #ifdef FEAT_QUICKFIX
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3197 N_("-q [errorfile] edit file with first error")
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3198 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3199 };
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3200
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3201 #if defined(UNIX) || defined(__EMX__) || defined(VMS)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3202 reset_signals(); /* kill us with CTRL-C here, if you like */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3203 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3204
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3205 mch_msg(longVersion);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3206 mch_msg(_("\n\nusage:"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3207 for (i = 0; ; ++i)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3208 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3209 mch_msg(_(" vim [arguments] "));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3210 mch_msg(_(use[i]));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3211 if (i == (sizeof(use) / sizeof(char_u *)) - 1)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3212 break;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3213 mch_msg(_("\n or:"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3214 }
22
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
3215 #ifdef VMS
1164
d0830c09ed10 updated for version 7.1a
vimboss
parents: 1093
diff changeset
3216 mch_msg(_("\nWhere case is ignored prepend / to make flag upper case"));
22
cc049b00ee70 updated for version 7.0014
vimboss
parents: 16
diff changeset
3217 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3218
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3219 mch_msg(_("\n\nArguments:\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3220 main_msg(_("--\t\t\tOnly file names after this"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3221 #if (!defined(UNIX) && !defined(__EMX__)) || defined(ARCHIE)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3222 main_msg(_("--literal\t\tDon't expand wildcards"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3223 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3224 #ifdef FEAT_OLE
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3225 main_msg(_("-register\t\tRegister this gvim for OLE"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3226 main_msg(_("-unregister\t\tUnregister gvim for OLE"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3227 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3228 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3229 main_msg(_("-g\t\t\tRun using GUI (like \"gvim\")"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3230 main_msg(_("-f or --nofork\tForeground: Don't fork when starting GUI"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3231 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3232 main_msg(_("-v\t\t\tVi mode (like \"vi\")"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3233 main_msg(_("-e\t\t\tEx mode (like \"ex\")"));
3437
00fa605e7d7b updated for version 7.3.484
Bram Moolenaar <bram@vim.org>
parents: 3348
diff changeset
3234 main_msg(_("-E\t\t\tImproved Ex mode"));
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3235 main_msg(_("-s\t\t\tSilent (batch) mode (only for \"ex\")"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3236 #ifdef FEAT_DIFF
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3237 main_msg(_("-d\t\t\tDiff mode (like \"vimdiff\")"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3238 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3239 main_msg(_("-y\t\t\tEasy mode (like \"evim\", modeless)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3240 main_msg(_("-R\t\t\tReadonly mode (like \"view\")"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3241 main_msg(_("-Z\t\t\tRestricted mode (like \"rvim\")"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3242 main_msg(_("-m\t\t\tModifications (writing files) not allowed"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3243 main_msg(_("-M\t\t\tModifications in text not allowed"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3244 main_msg(_("-b\t\t\tBinary mode"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3245 #ifdef FEAT_LISP
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3246 main_msg(_("-l\t\t\tLisp mode"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3247 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3248 main_msg(_("-C\t\t\tCompatible with Vi: 'compatible'"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3249 main_msg(_("-N\t\t\tNot fully Vi compatible: 'nocompatible'"));
1164
d0830c09ed10 updated for version 7.1a
vimboss
parents: 1093
diff changeset
3250 main_msg(_("-V[N][fname]\t\tBe verbose [level N] [log messages to fname]"));
d0830c09ed10 updated for version 7.1a
vimboss
parents: 1093
diff changeset
3251 #ifdef FEAT_EVAL
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3252 main_msg(_("-D\t\t\tDebugging mode"));
1164
d0830c09ed10 updated for version 7.1a
vimboss
parents: 1093
diff changeset
3253 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3254 main_msg(_("-n\t\t\tNo swap file, use memory only"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3255 main_msg(_("-r\t\t\tList swap files and exit"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3256 main_msg(_("-r (with file name)\tRecover crashed session"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3257 main_msg(_("-L\t\t\tSame as -r"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3258 #ifdef AMIGA
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3259 main_msg(_("-f\t\t\tDon't use newcli to open window"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3260 main_msg(_("-dev <device>\t\tUse <device> for I/O"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3261 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3262 #ifdef FEAT_ARABIC
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3263 main_msg(_("-A\t\t\tstart in Arabic mode"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3264 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3265 #ifdef FEAT_RIGHTLEFT
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3266 main_msg(_("-H\t\t\tStart in Hebrew mode"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3267 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3268 #ifdef FEAT_FKMAP
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3269 main_msg(_("-F\t\t\tStart in Farsi mode"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3270 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3271 main_msg(_("-T <terminal>\tSet terminal type to <terminal>"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3272 main_msg(_("-u <vimrc>\t\tUse <vimrc> instead of any .vimrc"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3273 #ifdef FEAT_GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3274 main_msg(_("-U <gvimrc>\t\tUse <gvimrc> instead of any .gvimrc"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3275 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3276 main_msg(_("--noplugin\t\tDon't load plugin scripts"));
1164
d0830c09ed10 updated for version 7.1a
vimboss
parents: 1093
diff changeset
3277 #ifdef FEAT_WINDOWS
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
3278 main_msg(_("-p[N]\t\tOpen N tab pages (default: one for each file)"));
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3279 main_msg(_("-o[N]\t\tOpen N windows (default: one for each file)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3280 main_msg(_("-O[N]\t\tLike -o but split vertically"));
1164
d0830c09ed10 updated for version 7.1a
vimboss
parents: 1093
diff changeset
3281 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3282 main_msg(_("+\t\t\tStart at end of file"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3283 main_msg(_("+<lnum>\t\tStart at line <lnum>"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3284 main_msg(_("--cmd <command>\tExecute <command> before loading any vimrc file"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3285 main_msg(_("-c <command>\t\tExecute <command> after loading the first file"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3286 main_msg(_("-S <session>\t\tSource file <session> after loading the first file"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3287 main_msg(_("-s <scriptin>\tRead Normal mode commands from file <scriptin>"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3288 main_msg(_("-w <scriptout>\tAppend all typed commands to file <scriptout>"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3289 main_msg(_("-W <scriptout>\tWrite all typed commands to file <scriptout>"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3290 #ifdef FEAT_CRYPT
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3291 main_msg(_("-x\t\t\tEdit encrypted files"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3292 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3293 #if (defined(UNIX) || defined(VMS)) && defined(FEAT_X11)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3294 # if defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3295 main_msg(_("-display <display>\tConnect vim to this particular X-server"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3296 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3297 main_msg(_("-X\t\t\tDo not connect to X server"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3298 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3299 #ifdef FEAT_CLIENTSERVER
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3300 main_msg(_("--remote <files>\tEdit <files> in a Vim server if possible"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3301 main_msg(_("--remote-silent <files> Same, don't complain if there is no server"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3302 main_msg(_("--remote-wait <files> As --remote but wait for files to have been edited"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3303 main_msg(_("--remote-wait-silent <files> Same, don't complain if there is no server"));
754
3a779b47f235 updated for version 7.0223
vimboss
parents: 734
diff changeset
3304 # ifdef FEAT_WINDOWS
1501
cb6487d683f2 updated for version 7.1-216
vimboss
parents: 1405
diff changeset
3305 main_msg(_("--remote-tab[-wait][-silent] <files> As --remote but use tab page per file"));
754
3a779b47f235 updated for version 7.0223
vimboss
parents: 734
diff changeset
3306 # endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3307 main_msg(_("--remote-send <keys>\tSend <keys> to a Vim server and exit"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3308 main_msg(_("--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3309 main_msg(_("--serverlist\t\tList available Vim server names and exit"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3310 main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3311 #endif
1989
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
3312 #ifdef STARTUPTIME
1999
fff7028d50c8 updated for version 7.2-296
vimboss
parents: 1989
diff changeset
3313 main_msg(_("--startuptime <file>\tWrite startup timing messages to <file>"));
1989
1fbbe04a950f updated for version 7.2-286
vimboss
parents: 1972
diff changeset
3314 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3315 #ifdef FEAT_VIMINFO
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3316 main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3317 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3318 main_msg(_("-h or --help\tPrint Help (this message) and exit"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3319 main_msg(_("--version\t\tPrint version information and exit"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3320
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3321 #ifdef FEAT_GUI_X11
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3322 # ifdef FEAT_GUI_MOTIF
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3323 mch_msg(_("\nArguments recognised by gvim (Motif version):\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3324 # else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3325 # ifdef FEAT_GUI_ATHENA
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3326 # ifdef FEAT_GUI_NEXTAW
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3327 mch_msg(_("\nArguments recognised by gvim (neXtaw version):\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3328 # else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3329 mch_msg(_("\nArguments recognised by gvim (Athena version):\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3330 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3331 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3332 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3333 main_msg(_("-display <display>\tRun vim on <display>"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3334 main_msg(_("-iconic\t\tStart vim iconified"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3335 main_msg(_("-background <color>\tUse <color> for the background (also: -bg)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3336 main_msg(_("-foreground <color>\tUse <color> for normal text (also: -fg)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3337 main_msg(_("-font <font>\t\tUse <font> for normal text (also: -fn)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3338 main_msg(_("-boldfont <font>\tUse <font> for bold text"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3339 main_msg(_("-italicfont <font>\tUse <font> for italic text"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3340 main_msg(_("-geometry <geom>\tUse <geom> for initial geometry (also: -geom)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3341 main_msg(_("-borderwidth <width>\tUse a border width of <width> (also: -bw)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3342 main_msg(_("-scrollbarwidth <width> Use a scrollbar width of <width> (also: -sw)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3343 # ifdef FEAT_GUI_ATHENA
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3344 main_msg(_("-menuheight <height>\tUse a menu bar height of <height> (also: -mh)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3345 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3346 main_msg(_("-reverse\t\tUse reverse video (also: -rv)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3347 main_msg(_("+reverse\t\tDon't use reverse video (also: +rv)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3348 main_msg(_("-xrm <resource>\tSet the specified resource"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3349 #endif /* FEAT_GUI_X11 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3350 #ifdef FEAT_GUI_GTK
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3351 mch_msg(_("\nArguments recognised by gvim (GTK+ version):\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3352 main_msg(_("-font <font>\t\tUse <font> for normal text (also: -fn)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3353 main_msg(_("-geometry <geom>\tUse <geom> for initial geometry (also: -geom)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3354 main_msg(_("-reverse\t\tUse reverse video (also: -rv)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3355 main_msg(_("-display <display>\tRun vim on <display> (also: --display)"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3356 main_msg(_("--role <role>\tSet a unique role to identify the main window"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3357 main_msg(_("--socketid <xid>\tOpen Vim inside another GTK widget"));
3437
00fa605e7d7b updated for version 7.3.484
Bram Moolenaar <bram@vim.org>
parents: 3348
diff changeset
3358 main_msg(_("--echo-wid\t\tMake gvim echo the Window ID on stdout"));
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3359 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3360 #ifdef FEAT_GUI_W32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3361 main_msg(_("-P <parent title>\tOpen Vim inside parent application"));
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1345
diff changeset
3362 main_msg(_("--windowid <HWND>\tOpen Vim inside another win32 widget"));
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3363 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3364
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3365 #ifdef FEAT_GUI_GNOME
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3366 /* Gnome gives extra messages for --help if we continue, but not for -h. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3367 if (gui.starting)
3198
0df9718c45b6 updated for version 7.3.369
Bram Moolenaar <bram@vim.org>
parents: 3119
diff changeset
3368 {
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3369 mch_msg("\n");
3198
0df9718c45b6 updated for version 7.3.369
Bram Moolenaar <bram@vim.org>
parents: 3119
diff changeset
3370 gui.dofork = FALSE;
0df9718c45b6 updated for version 7.3.369
Bram Moolenaar <bram@vim.org>
parents: 3119
diff changeset
3371 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3372 else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3373 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3374 mch_exit(0);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3375 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3376
580
90ee46d7f492 updated for version 7.0164
vimboss
parents: 575
diff changeset
3377 #if defined(HAS_SWAP_EXISTS_ACTION)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3378 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3379 * Check the result of the ATTENTION dialog:
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3380 * When "Quit" selected, exit Vim.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3381 * When "Recover" selected, recover the file.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3382 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3383 static void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3384 check_swap_exists_action()
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3385 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3386 if (swap_exists_action == SEA_QUIT)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3387 getout(1);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3388 handle_swap_exists(NULL);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3389 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3390 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3391
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3392 #endif
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3393
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3394 #if defined(STARTUPTIME) || defined(PROTO)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3395 static void time_diff __ARGS((struct timeval *then, struct timeval *now));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3396
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3397 static struct timeval prev_timeval;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3398
1972
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3399 # ifdef WIN3264
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3400 /*
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3401 * Windows doesn't have gettimeofday(), although it does have struct timeval.
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3402 */
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3403 static int
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3404 gettimeofday(struct timeval *tv, char *dummy)
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3405 {
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3406 long t = clock();
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3407 tv->tv_sec = t / CLOCKS_PER_SEC;
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3408 tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3409 return 0;
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3410 }
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3411 # endif
82f866f19e91 updated for version 7.2-269
vimboss
parents: 1894
diff changeset
3412
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3413 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3414 * Save the previous time before doing something that could nest.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3415 * set "*tv_rel" to the time elapsed so far.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3416 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3417 void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3418 time_push(tv_rel, tv_start)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3419 void *tv_rel, *tv_start;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3420 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3421 *((struct timeval *)tv_rel) = prev_timeval;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3422 gettimeofday(&prev_timeval, NULL);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3423 ((struct timeval *)tv_rel)->tv_usec = prev_timeval.tv_usec
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3424 - ((struct timeval *)tv_rel)->tv_usec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3425 ((struct timeval *)tv_rel)->tv_sec = prev_timeval.tv_sec
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3426 - ((struct timeval *)tv_rel)->tv_sec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3427 if (((struct timeval *)tv_rel)->tv_usec < 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3428 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3429 ((struct timeval *)tv_rel)->tv_usec += 1000000;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3430 --((struct timeval *)tv_rel)->tv_sec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3431 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3432 *(struct timeval *)tv_start = prev_timeval;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3433 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3434
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3435 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3436 * Compute the previous time after doing something that could nest.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3437 * Subtract "*tp" from prev_timeval;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3438 * Note: The arguments are (void *) to avoid trouble with systems that don't
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3439 * have struct timeval.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3440 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3441 void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3442 time_pop(tp)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3443 void *tp; /* actually (struct timeval *) */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3444 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3445 prev_timeval.tv_usec -= ((struct timeval *)tp)->tv_usec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3446 prev_timeval.tv_sec -= ((struct timeval *)tp)->tv_sec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3447 if (prev_timeval.tv_usec < 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3448 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3449 prev_timeval.tv_usec += 1000000;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3450 --prev_timeval.tv_sec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3451 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3452 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3453
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3454 static void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3455 time_diff(then, now)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3456 struct timeval *then;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3457 struct timeval *now;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3458 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3459 long usec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3460 long msec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3461
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3462 usec = now->tv_usec - then->tv_usec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3463 msec = (now->tv_sec - then->tv_sec) * 1000L + usec / 1000L,
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3464 usec = usec % 1000L;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3465 fprintf(time_fd, "%03ld.%03ld", msec, usec >= 0 ? usec : usec + 1000L);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3466 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3467
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3468 void
2271
2b33a7678e7b Fix compiler warnings for shadowed variables. Make 'conceal' a long instead
Bram Moolenaar <bram@vim.org>
parents: 2267
diff changeset
3469 time_msg(mesg, tv_start)
2b33a7678e7b Fix compiler warnings for shadowed variables. Make 'conceal' a long instead
Bram Moolenaar <bram@vim.org>
parents: 2267
diff changeset
3470 char *mesg;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3471 void *tv_start; /* only for do_source: start time; actually
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3472 (struct timeval *) */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3473 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3474 static struct timeval start;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3475 struct timeval now;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3476
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3477 if (time_fd != NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3478 {
2271
2b33a7678e7b Fix compiler warnings for shadowed variables. Make 'conceal' a long instead
Bram Moolenaar <bram@vim.org>
parents: 2267
diff changeset
3479 if (strstr(mesg, "STARTING") != NULL)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3480 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3481 gettimeofday(&start, NULL);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3482 prev_timeval = start;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3483 fprintf(time_fd, "\n\ntimes in msec\n");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3484 fprintf(time_fd, " clock self+sourced self: sourced script\n");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3485 fprintf(time_fd, " clock elapsed: other lines\n\n");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3486 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3487 gettimeofday(&now, NULL);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3488 time_diff(&start, &now);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3489 if (((struct timeval *)tv_start) != NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3490 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3491 fprintf(time_fd, " ");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3492 time_diff(((struct timeval *)tv_start), &now);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3493 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3494 fprintf(time_fd, " ");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3495 time_diff(&prev_timeval, &now);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3496 prev_timeval = now;
2271
2b33a7678e7b Fix compiler warnings for shadowed variables. Make 'conceal' a long instead
Bram Moolenaar <bram@vim.org>
parents: 2267
diff changeset
3497 fprintf(time_fd, ": %s\n", mesg);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3498 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3499 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3500
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3501 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3502
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3503 #if (defined(FEAT_CLIENTSERVER) && !defined(NO_VIM_MAIN)) || defined(PROTO)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3504
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3505 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3506 * Common code for the X command server and the Win32 command server.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3507 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3508
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3509 static char_u *build_drop_cmd __ARGS((int filec, char **filev, int tabs, int sendReply));
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3510
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3511 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3512 * Do the client-server stuff, unless "--servername ''" was used.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3513 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3514 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3515 exec_on_server(parmp)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3516 mparm_T *parmp;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3517 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3518 if (parmp->serverName_arg == NULL || *parmp->serverName_arg != NUL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3519 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3520 # ifdef WIN32
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3521 /* Initialise the client/server messaging infrastructure. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3522 serverInitMessaging();
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3523 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3524
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3525 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3526 * When a command server argument was found, execute it. This may
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3527 * exit Vim when it was successful. Otherwise it's executed further
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3528 * on. Remember the encoding used here in "serverStrEnc".
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3529 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3530 if (parmp->serverArg)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3531 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3532 cmdsrv_main(&parmp->argc, parmp->argv,
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3533 parmp->serverName_arg, &parmp->serverStr);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3534 # ifdef FEAT_MBYTE
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3535 parmp->serverStrEnc = vim_strsave(p_enc);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3536 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3537 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3538
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3539 /* If we're still running, get the name to register ourselves.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3540 * On Win32 can register right now, for X11 need to setup the
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3541 * clipboard first, it's further down. */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3542 parmp->servername = serverMakeName(parmp->serverName_arg,
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3543 parmp->argv[0]);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3544 # ifdef WIN32
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3545 if (parmp->servername != NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3546 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3547 serverSetName(parmp->servername);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3548 vim_free(parmp->servername);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3549 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3550 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3551 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3552 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3553
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3554 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3555 * Prepare for running as a Vim server.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3556 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3557 static void
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3558 prepare_server(parmp)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3559 mparm_T *parmp;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3560 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3561 # if defined(FEAT_X11)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3562 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3563 * Register for remote command execution with :serversend and --remote
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3564 * unless there was a -X or a --servername '' on the command line.
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3565 * Only register nongui-vim's with an explicit --servername argument.
926
bde3b38593f9 updated for version 7.0-052
vimboss
parents: 892
diff changeset
3566 * When running as root --servername is also required.
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3567 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3568 if (X_DISPLAY != NULL && parmp->servername != NULL && (
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3569 # ifdef FEAT_GUI
926
bde3b38593f9 updated for version 7.0-052
vimboss
parents: 892
diff changeset
3570 (gui.in_use
bde3b38593f9 updated for version 7.0-052
vimboss
parents: 892
diff changeset
3571 # ifdef UNIX
1076
17b9587ff6d5 updated for version 7.0-202
vimboss
parents: 1036
diff changeset
3572 && getuid() != ROOT_UID
926
bde3b38593f9 updated for version 7.0-052
vimboss
parents: 892
diff changeset
3573 # endif
bde3b38593f9 updated for version 7.0-052
vimboss
parents: 892
diff changeset
3574 ) ||
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3575 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3576 parmp->serverName_arg != NULL))
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3577 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3578 (void)serverRegisterName(X_DISPLAY, parmp->servername);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3579 vim_free(parmp->servername);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3580 TIME_MSG("register server name");
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3581 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3582 else
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3583 serverDelayedStartName = parmp->servername;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3584 # endif
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3585
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3586 /*
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3587 * Execute command ourselves if we're here because the send failed (or
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3588 * else we would have exited above).
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3589 */
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3590 if (parmp->serverStr != NULL)
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3591 {
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3592 char_u *p;
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3593
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3594 server_to_input_buf(serverConvert(parmp->serverStrEnc,
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3595 parmp->serverStr, &p));
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3596 vim_free(p);
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3597 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3598 }
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3599
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3600 static void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3601 cmdsrv_main(argc, argv, serverName_arg, serverStr)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3602 int *argc;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3603 char **argv;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3604 char_u *serverName_arg;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3605 char_u **serverStr;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3606 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3607 char_u *res;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3608 int i;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3609 char_u *sname;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3610 int ret;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3611 int didone = FALSE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3612 int exiterr = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3613 char **newArgV = argv + 1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3614 int newArgC = 1,
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3615 Argc = *argc;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3616 int argtype;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3617 #define ARGTYPE_OTHER 0
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3618 #define ARGTYPE_EDIT 1
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3619 #define ARGTYPE_EDIT_WAIT 2
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3620 #define ARGTYPE_SEND 3
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3621 int silent = FALSE;
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3622 int tabs = FALSE;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3623 # ifndef FEAT_X11
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3624 HWND srv;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3625 # else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3626 Window srv;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3627
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3628 setup_term_clip();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3629 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3630
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3631 sname = serverMakeName(serverName_arg, argv[0]);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3632 if (sname == NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3633 return;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3634
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3635 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3636 * Execute the command server related arguments and remove them
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3637 * from the argc/argv array; We may have to return into main()
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3638 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3639 for (i = 1; i < Argc; i++)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3640 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3641 res = NULL;
443
43bf0bcf2110 updated for version 7.0115
vimboss
parents: 440
diff changeset
3642 if (STRCMP(argv[i], "--") == 0) /* end of option arguments */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3643 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3644 for (; i < *argc; i++)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3645 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3646 *newArgV++ = argv[i];
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3647 newArgC++;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3648 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3649 break;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3650 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3651
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3652 if (STRICMP(argv[i], "--remote-send") == 0)
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3653 argtype = ARGTYPE_SEND;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3654 else if (STRNICMP(argv[i], "--remote", 8) == 0)
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3655 {
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3656 char *p = argv[i] + 8;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3657
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3658 argtype = ARGTYPE_EDIT;
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3659 while (*p != NUL)
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3660 {
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3661 if (STRNICMP(p, "-wait", 5) == 0)
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3662 {
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3663 argtype = ARGTYPE_EDIT_WAIT;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3664 p += 5;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3665 }
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3666 else if (STRNICMP(p, "-silent", 7) == 0)
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3667 {
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3668 silent = TRUE;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3669 p += 7;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3670 }
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3671 else if (STRNICMP(p, "-tab", 4) == 0)
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3672 {
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3673 tabs = TRUE;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3674 p += 4;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3675 }
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3676 else
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3677 {
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3678 argtype = ARGTYPE_OTHER;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3679 break;
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3680 }
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3681 }
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3682 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3683 else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3684 argtype = ARGTYPE_OTHER;
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3685
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3686 if (argtype != ARGTYPE_OTHER)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3687 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3688 if (i == *argc - 1)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3689 mainerr_arg_missing((char_u *)argv[i]);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3690 if (argtype == ARGTYPE_SEND)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3691 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3692 *serverStr = (char_u *)argv[i + 1];
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3693 i++;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3694 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3695 else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3696 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3697 *serverStr = build_drop_cmd(*argc - i - 1, argv + i + 1,
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3698 tabs, argtype == ARGTYPE_EDIT_WAIT);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3699 if (*serverStr == NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3700 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3701 /* Probably out of memory, exit. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3702 didone = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3703 exiterr = 1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3704 break;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3705 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3706 Argc = i;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3707 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3708 # ifdef FEAT_X11
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3709 if (xterm_dpy == NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3710 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3711 mch_errmsg(_("No display"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3712 ret = -1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3713 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3714 else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3715 ret = serverSendToVim(xterm_dpy, sname, *serverStr,
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3716 NULL, &srv, 0, 0, silent);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3717 # else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3718 /* Win32 always works? */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3719 ret = serverSendToVim(sname, *serverStr, NULL, &srv, 0, silent);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3720 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3721 if (ret < 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3722 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3723 if (argtype == ARGTYPE_SEND)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3724 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3725 /* Failed to send, abort. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3726 mch_errmsg(_(": Send failed.\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3727 didone = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3728 exiterr = 1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3729 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3730 else if (!silent)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3731 /* Let vim start normally. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3732 mch_errmsg(_(": Send failed. Trying to execute locally\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3733 break;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3734 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3735
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3736 # ifdef FEAT_GUI_W32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3737 /* Guess that when the server name starts with "g" it's a GUI
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3738 * server, which we can bring to the foreground here.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3739 * Foreground() in the server doesn't work very well. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3740 if (argtype != ARGTYPE_SEND && TOUPPER_ASC(*sname) == 'G')
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3741 SetForegroundWindow(srv);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3742 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3743
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3744 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3745 * For --remote-wait: Wait until the server did edit each
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3746 * file. Also detect that the server no longer runs.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3747 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3748 if (ret >= 0 && argtype == ARGTYPE_EDIT_WAIT)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3749 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3750 int numFiles = *argc - i - 1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3751 int j;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3752 char_u *done = alloc(numFiles);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3753 char_u *p;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3754 # ifdef FEAT_GUI_W32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3755 NOTIFYICONDATA ni;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3756 int count = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3757 extern HWND message_window;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3758 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3759
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3760 if (numFiles > 0 && argv[i + 1][0] == '+')
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3761 /* Skip "+cmd" argument, don't wait for it to be edited. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3762 --numFiles;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3763
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3764 # ifdef FEAT_GUI_W32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3765 ni.cbSize = sizeof(ni);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3766 ni.hWnd = message_window;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3767 ni.uID = 0;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3768 ni.uFlags = NIF_ICON|NIF_TIP;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3769 ni.hIcon = LoadIcon((HINSTANCE)GetModuleHandle(0), "IDR_VIM");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3770 sprintf(ni.szTip, _("%d of %d edited"), count, numFiles);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3771 Shell_NotifyIcon(NIM_ADD, &ni);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3772 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3773
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3774 /* Wait for all files to unload in remote */
2215
cccb71c2c5c1 Fix uninit memory read in undo code. Fix uint32_t in proto file.
Bram Moolenaar <bram@vim.org>
parents: 2210
diff changeset
3775 vim_memset(done, 0, numFiles);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3776 while (memchr(done, 0, numFiles) != NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3777 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3778 # ifdef WIN32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3779 p = serverGetReply(srv, NULL, TRUE, TRUE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3780 if (p == NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3781 break;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3782 # else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3783 if (serverReadReply(xterm_dpy, srv, &p, TRUE) < 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3784 break;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3785 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3786 j = atoi((char *)p);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3787 if (j >= 0 && j < numFiles)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3788 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3789 # ifdef FEAT_GUI_W32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3790 ++count;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3791 sprintf(ni.szTip, _("%d of %d edited"),
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3792 count, numFiles);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3793 Shell_NotifyIcon(NIM_MODIFY, &ni);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3794 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3795 done[j] = 1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3796 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3797 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3798 # ifdef FEAT_GUI_W32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3799 Shell_NotifyIcon(NIM_DELETE, &ni);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3800 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3801 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3802 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3803 else if (STRICMP(argv[i], "--remote-expr") == 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3804 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3805 if (i == *argc - 1)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3806 mainerr_arg_missing((char_u *)argv[i]);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3807 # ifdef WIN32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3808 /* Win32 always works? */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3809 if (serverSendToVim(sname, (char_u *)argv[i + 1],
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3810 &res, NULL, 1, FALSE) < 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3811 # else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3812 if (xterm_dpy == NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3813 mch_errmsg(_("No display: Send expression failed.\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3814 else if (serverSendToVim(xterm_dpy, sname, (char_u *)argv[i + 1],
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3815 &res, NULL, 1, 1, FALSE) < 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3816 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3817 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3818 if (res != NULL && *res != NUL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3819 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3820 /* Output error from remote */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3821 mch_errmsg((char *)res);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3822 vim_free(res);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3823 res = NULL;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3824 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3825 mch_errmsg(_(": Send expression failed.\n"));
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3826 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3827 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3828 else if (STRICMP(argv[i], "--serverlist") == 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3829 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3830 # ifdef WIN32
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3831 /* Win32 always works? */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3832 res = serverGetVimNames();
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3833 # else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3834 if (xterm_dpy != NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3835 res = serverGetVimNames(xterm_dpy);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3836 # endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3837 if (called_emsg)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3838 mch_errmsg("\n");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3839 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3840 else if (STRICMP(argv[i], "--servername") == 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3841 {
2021
e0e0d1ae6011 updated for version 7.2-318
vimboss
parents: 1999
diff changeset
3842 /* Already processed. Take it out of the command line */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3843 i++;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3844 continue;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3845 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3846 else
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3847 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3848 *newArgV++ = argv[i];
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3849 newArgC++;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3850 continue;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3851 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3852 didone = TRUE;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3853 if (res != NULL && *res != NUL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3854 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3855 mch_msg((char *)res);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3856 if (res[STRLEN(res) - 1] != '\n')
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3857 mch_msg("\n");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3858 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3859 vim_free(res);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3860 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3861
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3862 if (didone)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3863 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3864 display_errors(); /* display any collected messages */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3865 exit(exiterr); /* Mission accomplished - get out */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3866 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3867
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3868 /* Return back into main() */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3869 *argc = newArgC;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3870 vim_free(sname);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3871 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3872
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3873 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3874 * Build a ":drop" command to send to a Vim server.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3875 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3876 static char_u *
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3877 build_drop_cmd(filec, filev, tabs, sendReply)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3878 int filec;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3879 char **filev;
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3880 int tabs; /* Use ":tab drop" instead of ":drop". */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3881 int sendReply;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3882 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3883 garray_T ga;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3884 int i;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3885 char_u *inicmd = NULL;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3886 char_u *p;
2770
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3887 char_u *cwd;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3888
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3889 if (filec > 0 && filev[0][0] == '+')
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3890 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3891 inicmd = (char_u *)filev[0] + 1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3892 filev++;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3893 filec--;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3894 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3895 /* Check if we have at least one argument. */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3896 if (filec <= 0)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3897 mainerr_arg_missing((char_u *)filev[-1]);
2640
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3898
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3899 /* Temporarily cd to the current directory to handle relative file names. */
2770
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3900 cwd = alloc(MAXPATHL);
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3901 if (cwd == NULL)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3902 return NULL;
2770
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3903 if (mch_dirname(cwd, MAXPATHL) != OK)
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3904 {
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3905 vim_free(cwd);
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3906 return NULL;
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3907 }
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3908 p = vim_strsave_escaped_ext(cwd,
1385
d0cf8c843186 updated for version 7.1-100
vimboss
parents: 1376
diff changeset
3909 #ifdef BACKSLASH_IN_FILENAME
d0cf8c843186 updated for version 7.1-100
vimboss
parents: 1376
diff changeset
3910 "", /* rem_backslash() will tell what chars to escape */
d0cf8c843186 updated for version 7.1-100
vimboss
parents: 1376
diff changeset
3911 #else
d0cf8c843186 updated for version 7.1-100
vimboss
parents: 1376
diff changeset
3912 PATH_ESC_CHARS,
d0cf8c843186 updated for version 7.1-100
vimboss
parents: 1376
diff changeset
3913 #endif
2770
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3914 '\\', TRUE);
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3915 vim_free(cwd);
25672ad7f377 updated for version 7.3.161
Bram Moolenaar <bram@vim.org>
parents: 2730
diff changeset
3916 if (p == NULL)
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3917 return NULL;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3918 ga_init2(&ga, 1, 100);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3919 ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3920 ga_concat(&ga, p);
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3921 vim_free(p);
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3922
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3923 /* Call inputsave() so that a prompt for an encryption key works. */
734
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3924 ga_concat(&ga, (char_u *)"<CR>:if exists('*inputsave')|call inputsave()|endif|");
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3925 if (tabs)
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3926 ga_concat(&ga, (char_u *)"tab ");
5220ea46cb9a updated for version 7.0221
vimboss
parents: 720
diff changeset
3927 ga_concat(&ga, (char_u *)"drop");
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3928 for (i = 0; i < filec; i++)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3929 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3930 /* On Unix the shell has already expanded the wildcards, don't want to
40
f1d2a58883b9 updated for version 7.0024
vimboss
parents: 39
diff changeset
3931 * do it again in the Vim server. On MS-Windows only escape
f1d2a58883b9 updated for version 7.0024
vimboss
parents: 39
diff changeset
3932 * non-wildcard characters. */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3933 p = vim_strsave_escaped((char_u *)filev[i],
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3934 #ifdef UNIX
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3935 PATH_ESC_CHARS
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3936 #else
40
f1d2a58883b9 updated for version 7.0024
vimboss
parents: 39
diff changeset
3937 (char_u *)" \t%#"
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3938 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3939 );
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3940 if (p == NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3941 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3942 vim_free(ga.ga_data);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3943 return NULL;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3944 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3945 ga_concat(&ga, (char_u *)" ");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3946 ga_concat(&ga, p);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3947 vim_free(p);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3948 }
2640
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3949 ga_concat(&ga, (char_u *)"|if exists('*inputrestore')|call inputrestore()|endif<CR>");
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3950
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3951 /* The :drop commands goes to Insert mode when 'insertmode' is set, use
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3952 * CTRL-\ CTRL-N again. */
2640
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3953 ga_concat(&ga, (char_u *)"<C-\\><C-N>");
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3954
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3955 /* Switch back to the correct current directory (prior to temporary path
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3956 * switch) unless 'autochdir' is set, in which case it will already be
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3957 * correct after the :drop command. */
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3958 ga_concat(&ga, (char_u *)":if !exists('+acd')||!&acd|cd -|endif<CR>");
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3959
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3960 if (sendReply)
2640
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3961 ga_concat(&ga, (char_u *)":call SetupRemoteReplies()<CR>");
266f9d9f5109 updated for version 7.3.061
Bram Moolenaar <bram@vim.org>
parents: 2592
diff changeset
3962 ga_concat(&ga, (char_u *)":");
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3963 if (inicmd != NULL)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3964 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3965 /* Can't use <CR> after "inicmd", because an "startinsert" would cause
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3966 * the following commands to be inserted as text. Use a "|",
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3967 * hopefully "inicmd" does allow this... */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3968 ga_concat(&ga, inicmd);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3969 ga_concat(&ga, (char_u *)"|");
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3970 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3971 /* Bring the window to the foreground, goto Insert mode when 'im' set and
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3972 * clear command line. */
46
46d39f2eff86 updated for version 7.0027
vimboss
parents: 43
diff changeset
3973 ga_concat(&ga, (char_u *)"cal foreground()|if &im|star|en|redr|f<CR>");
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3974 ga_append(&ga, NUL);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3975 return ga.ga_data;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3976 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3977
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
3978 /*
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3979 * Make our basic server name: use the specified "arg" if given, otherwise use
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3980 * the tail of the command "cmd" we were started with.
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3981 * Return the name in allocated memory. This doesn't include a serial number.
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3982 */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3983 static char_u *
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3984 serverMakeName(arg, cmd)
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3985 char_u *arg;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3986 char *cmd;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3987 {
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3988 char_u *p;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3989
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3990 if (arg != NULL && *arg != NUL)
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3991 p = vim_strsave_up(arg);
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3992 else
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3993 {
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3994 p = vim_strsave_up(gettail((char_u *)cmd));
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3995 /* Remove .exe or .bat from the name. */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3996 if (p != NULL && vim_strchr(p, '.') != NULL)
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3997 *vim_strchr(p, '.') = NUL;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3998 }
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
3999 return p;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
4000 }
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
4001 #endif /* FEAT_CLIENTSERVER */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
4002
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
4003 #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
4004 /*
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4005 * Replace termcodes such as <CR> and insert as key presses if there is room.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4006 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4007 void
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4008 server_to_input_buf(str)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4009 char_u *str;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4010 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4011 char_u *ptr = NULL;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4012 char_u *cpo_save = p_cpo;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4013
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4014 /* Set 'cpoptions' the way we want it.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4015 * B set - backslashes are *not* treated specially
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4016 * k set - keycodes are *not* reverse-engineered
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4017 * < unset - <Key> sequences *are* interpreted
860
2fe516aa3710 updated for version 7.0g02
vimboss
parents: 841
diff changeset
4018 * The last but one parameter of replace_termcodes() is TRUE so that the
2fe516aa3710 updated for version 7.0g02
vimboss
parents: 841
diff changeset
4019 * <lt> sequence is recognised - needed for a real backslash.
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4020 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4021 p_cpo = (char_u *)"Bk";
860
2fe516aa3710 updated for version 7.0g02
vimboss
parents: 841
diff changeset
4022 str = replace_termcodes((char_u *)str, &ptr, FALSE, TRUE, FALSE);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4023 p_cpo = cpo_save;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4024
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4025 if (*ptr != NUL) /* trailing CTRL-V results in nothing */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4026 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4027 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4028 * Add the string to the input stream.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4029 * Can't use add_to_input_buf() here, we now have K_SPECIAL bytes.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4030 *
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4031 * First clear typed characters from the typeahead buffer, there could
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4032 * be half a mapping there. Then append to the existing string, so
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4033 * that multiple commands from a client are concatenated.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4034 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4035 if (typebuf.tb_maplen < typebuf.tb_len)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4036 del_typebuf(typebuf.tb_len - typebuf.tb_maplen, typebuf.tb_maplen);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4037 (void)ins_typebuf(str, REMAP_NONE, typebuf.tb_len, TRUE, FALSE);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4038
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4039 /* Let input_available() know we inserted text in the typeahead
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4040 * buffer. */
841
c2cae213194d updated for version 7.0e07
vimboss
parents: 835
diff changeset
4041 typebuf_was_filled = TRUE;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4042 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4043 vim_free((char_u *)ptr);
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4044 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4045
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4046 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4047 * Evaluate an expression that the client sent to a string.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4048 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4049 char_u *
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4050 eval_client_expr_to_string(expr)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4051 char_u *expr;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4052 {
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4053 char_u *res;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4054 int save_dbl = debug_break_level;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4055 int save_ro = redir_off;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4056
4217
6ce32844727d updated for version 7.3.860
Bram Moolenaar <bram@vim.org>
parents: 4215
diff changeset
4057 /* Disable debugging, otherwise Vim hangs, waiting for "cont" to be
6ce32844727d updated for version 7.3.860
Bram Moolenaar <bram@vim.org>
parents: 4215
diff changeset
4058 * typed. */
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4059 debug_break_level = -1;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4060 redir_off = 0;
4217
6ce32844727d updated for version 7.3.860
Bram Moolenaar <bram@vim.org>
parents: 4215
diff changeset
4061 /* Do not display error message, otherwise Vim hangs, waiting for "cont"
6ce32844727d updated for version 7.3.860
Bram Moolenaar <bram@vim.org>
parents: 4215
diff changeset
4062 * to be typed. Do generate errors so that try/catch works. */
6ce32844727d updated for version 7.3.860
Bram Moolenaar <bram@vim.org>
parents: 4215
diff changeset
4063 ++emsg_silent;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4064
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 694
diff changeset
4065 res = eval_to_string(expr, NULL, TRUE);
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4066
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4067 debug_break_level = save_dbl;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4068 redir_off = save_ro;
4217
6ce32844727d updated for version 7.3.860
Bram Moolenaar <bram@vim.org>
parents: 4215
diff changeset
4069 --emsg_silent;
6ce32844727d updated for version 7.3.860
Bram Moolenaar <bram@vim.org>
parents: 4215
diff changeset
4070 if (emsg_silent < 0)
6ce32844727d updated for version 7.3.860
Bram Moolenaar <bram@vim.org>
parents: 4215
diff changeset
4071 emsg_silent = 0;
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4072
591
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4073 /* A client can tell us to redraw, but not to display the cursor, so do
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4074 * that here. */
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4075 setcursor();
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4076 out_flush();
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4077 #ifdef FEAT_GUI
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4078 if (gui.in_use)
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4079 gui_update_cursor(FALSE, FALSE);
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4080 #endif
36071a92cb76 updated for version 7.0167
vimboss
parents: 587
diff changeset
4081
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4082 return res;
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4083 }
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4084
39
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4085 /*
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4086 * If conversion is needed, convert "data" from "client_enc" to 'encoding' and
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4087 * return an allocated string. Otherwise return "data".
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4088 * "*tofree" is set to the result when it needs to be freed later.
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4089 */
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4090 char_u *
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4091 serverConvert(client_enc, data, tofree)
1883
c8f343a465a2 updated for version 7.2-180
vimboss
parents: 1757
diff changeset
4092 char_u *client_enc UNUSED;
39
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4093 char_u *data;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4094 char_u **tofree;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4095 {
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4096 char_u *res = data;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4097
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4098 *tofree = NULL;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4099 # ifdef FEAT_MBYTE
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4100 if (client_enc != NULL && p_enc != NULL)
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4101 {
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4102 vimconv_T vimconv;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4103
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4104 vimconv.vc_type = CONV_NONE;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4105 if (convert_setup(&vimconv, client_enc, p_enc) != FAIL
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4106 && vimconv.vc_type != CONV_NONE)
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4107 {
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4108 res = string_convert(&vimconv, data, NULL);
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4109 if (res == NULL)
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4110 res = data;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4111 else
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4112 *tofree = res;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4113 }
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4114 convert_setup(&vimconv, NULL, NULL);
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4115 }
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4116 # endif
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4117 return res;
410fa1a31baf updated for version 7.0023
vimboss
parents: 36
diff changeset
4118 }
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2706
diff changeset
4119 #endif
6
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4120
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4121 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4122 * When FEAT_FKMAP is defined, also compile the Farsi source code.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4123 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4124 #if defined(FEAT_FKMAP) || defined(PROTO)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4125 # include "farsi.c"
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4126 #endif
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4127
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4128 /*
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4129 * When FEAT_ARABIC is defined, also compile the Arabic source code.
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4130 */
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4131 #if defined(FEAT_ARABIC) || defined(PROTO)
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4132 # include "arabic.c"
c2daee826b8f updated for version 7.0001
vimboss
parents:
diff changeset
4133 #endif