summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/eval.txt1
-rw-r--r--runtime/doc/starting.txt7
-rw-r--r--runtime/doc/various.txt1
-rw-r--r--src/eval.c3
-rw-r--r--src/main.c31
-rw-r--r--src/version.c7
6 files changed, 36 insertions, 14 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 6a57ae524..ba498af2f 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -5869,6 +5869,7 @@ showcmd Compiled with 'showcmd' support.
signs Compiled with |:sign| support.
smartindent Compiled with 'smartindent' support.
sniff Compiled with SNiFF interface support.
+startuptime Compiled with |--startuptime| support.
statusline Compiled with support for 'statusline', 'rulerformat'
and special formats of 'titlestring' and 'iconstring'.
sun_workshop Compiled with support for Sun |workshop|.
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index c1ed1b80c..4c126516c 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -144,12 +144,13 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
-u NORC no yes
--noplugin yes no
---startuptime={fname} *--startuptime*
+--startuptime {fname} *--startuptime*
During startup write timing messages to the file {fname}.
This can be used to find out where time is spent while loading
- your .vimrc and plugins.
+ your .vimrc, plugins and opening the first file.
When {fname} already exists new messages are appended.
- {only when compiled with this feature}
+ (Only available when compiled with the |+startuptime|
+ feature).
*--literal*
--literal Take file names literally, don't expand wildcards. Not needed
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index ffb9f2682..1755e4ca0 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -374,6 +374,7 @@ N *+scrollbind* |'scrollbind'|
B *+signs* |:sign|
N *+smartindent* |'smartindent'|
m *+sniff* SniFF interface |sniff|
+N *+startuptime* |--startuptime| argument
N *+statusline* Options 'statusline', 'rulerformat' and special
formats of 'titlestring' and 'iconstring'
m *+sun_workshop* |workshop|
diff --git a/src/eval.c b/src/eval.c
index aff6152ec..40fcfefbf 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -11736,6 +11736,9 @@ f_has(argvars, rettv)
#ifdef FEAT_SNIFF
"sniff",
#endif
+#ifdef STARTUPTIME
+ "startuptime",
+#endif
#ifdef FEAT_STL_OPT
"statusline",
#endif
diff --git a/src/main.c b/src/main.c
index 5bb81a600..13707ce11 100644
--- a/src/main.c
+++ b/src/main.c
@@ -204,9 +204,9 @@ main
#ifdef STARTUPTIME
for (i = 1; i < argc; ++i)
{
- if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
+ if (STRICMP(argv[i], "--startuptime") == 0 && i + 1 < argc)
{
- time_fd = mch_fopen(argv[i] + 14, "a");
+ time_fd = mch_fopen(argv[i + 1], "a");
TIME_MSG("--- VIM STARTING ---");
break;
}
@@ -1726,6 +1726,11 @@ command_line_scan(parmp)
want_argument = TRUE;
argv_idx += 3;
}
+ else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
+ {
+ want_argument = TRUE;
+ argv_idx += 11;
+ }
#ifdef FEAT_CLIENTSERVER
else if (STRNICMP(argv[0] + argv_idx, "serverlist", 10) == 0)
; /* already processed -- no arg */
@@ -1761,10 +1766,6 @@ command_line_scan(parmp)
/* already processed, skip */
}
#endif
- else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
- {
- /* already processed, skip */
- }
else
{
if (argv[0][argv_idx])
@@ -2061,7 +2062,7 @@ command_line_scan(parmp)
mainerr(ME_GARBAGE, (char_u *)argv[0]);
--argc;
- if (argc < 1 && c != 'S')
+ if (argc < 1 && c != 'S') /* -S has an optional argument */
mainerr_arg_missing((char_u *)argv[0]);
++argv;
argv_idx = -1;
@@ -2102,11 +2103,16 @@ command_line_scan(parmp)
(char_u *)argv[0];
break;
- case '-': /* "--cmd {command}" execute command */
- if (parmp->n_pre_commands >= MAX_ARG_CMDS)
- mainerr(ME_EXTRA_CMD, NULL);
- parmp->pre_commands[parmp->n_pre_commands++] =
+ case '-':
+ if (argv[-1][2] == 'c')
+ {
+ /* "--cmd {command}" execute command */
+ if (parmp->n_pre_commands >= MAX_ARG_CMDS)
+ mainerr(ME_EXTRA_CMD, NULL);
+ parmp->pre_commands[parmp->n_pre_commands++] =
(char_u *)argv[0];
+ }
+ /* "--startuptime <file>" already handled */
break;
/* case 'd': -d {device} is handled in mch_check_win() for the
@@ -3144,6 +3150,9 @@ usage()
main_msg(_("--serverlist\t\tList available Vim server names and exit"));
main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
#endif
+#ifdef STARTUPTIME
+ main_msg(_("--startuptime=<file>\tWrite startup timing messages to <file>"));
+#endif
#ifdef FEAT_VIMINFO
main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
#endif
diff --git a/src/version.c b/src/version.c
index fbb9f44af..15ffd8e4d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -494,6 +494,11 @@ static char *(features[]) =
#else
"-sniff",
#endif
+#ifdef STARTUPTIME
+ "+startuptime",
+#else
+ "-startuptime",
+#endif
#ifdef FEAT_STL_OPT
"+statusline",
#else
@@ -677,6 +682,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 286,
+/**/
285,
/**/
284,