summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2009-11-03 11:11:11 +0000
committerBram Moolenaar <Bram@vim.org>2009-11-03 11:11:11 +0000
commit3f269675d47dead291679bde9268aef174f8a9b7 (patch)
tree4125dd9a82beb898e6776ba30c256851e473a0c4
parentbadfde1bfe756d529389bee7084341e4adbdf495 (diff)
downloadvim-3f269675d47dead291679bde9268aef174f8a9b7.zip
updated for version 7.2-269
-rw-r--r--runtime/doc/starting.txt8
-rw-r--r--src/feature.h10
-rw-r--r--src/globals.h4
-rw-r--r--src/macros.h2
-rw-r--r--src/main.c62
-rw-r--r--src/version.c2
6 files changed, 64 insertions, 24 deletions
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index 2326985b4..c1ed1b80c 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -144,6 +144,13 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
-u NORC no yes
--noplugin yes no
+--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.
+ When {fname} already exists new messages are appended.
+ {only when compiled with this feature}
+
*--literal*
--literal Take file names literally, don't expand wildcards. Not needed
for Unix, because Vim always takes file names literally (the
@@ -471,6 +478,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
window title and copy/paste using the X clipboard. This
avoids a long startup time when running Vim in a terminal
emulator and the connection to the X server is slow.
+ See |--startuptime| to find out if affects you.
Only makes a difference on Unix or VMS, when compiled with the
|+X11| feature. Otherwise it's ignored.
To disable the connection only for specific terminals, see the
diff --git a/src/feature.h b/src/feature.h
index ae1675035..ea2e5887d 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -844,10 +844,14 @@
/* #define DEBUG */
/*
- * STARTUPTIME Time the startup process. Writes a "vimstartup" file
- * with timestamps.
+ * STARTUPTIME Time the startup process. Writes a file with
+ * timestamps.
*/
-/* #define STARTUPTIME "vimstartup" */
+#if defined(FEAT_NORMAL) \
+ && ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \
+ || defined(WIN3264))
+# define STARTUPTIME 1
+#endif
/*
* MEM_PROFILE Debugging of memory allocation and freeing.
diff --git a/src/globals.h b/src/globals.h
index 2ff31740e..bfe48caf0 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1567,6 +1567,10 @@ EXTERN int xsmp_icefd INIT(= -1); /* The actual connection */
/* For undo we need to know the lowest time possible. */
EXTERN time_t starttime;
+#ifdef STARTUPTIME
+EXTERN FILE *time_fd INIT(= NULL); /* where to write startup timing */
+#endif
+
/*
* Some compilers warn for not using a return value, but in some situations we
* can't do anything useful with the value. Assign to this variable to avoid
diff --git a/src/macros.h b/src/macros.h
index 68ea6bcf1..51e4dd423 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -243,7 +243,7 @@
#endif
#ifdef STARTUPTIME
-# define TIME_MSG(s) time_msg(s, NULL)
+# define TIME_MSG(s) { if (time_fd != NULL) time_msg(s, NULL); }
#else
# define TIME_MSG(s)
#endif
diff --git a/src/main.c b/src/main.c
index 84aa146e7..5bb81a600 100644
--- a/src/main.c
+++ b/src/main.c
@@ -130,10 +130,6 @@ static char_u *serverMakeName __ARGS((char_u *arg, char *cmd));
#endif
-#ifdef STARTUPTIME
-static FILE *time_fd = NULL;
-#endif
-
/*
* Different types of error messages.
*/
@@ -173,6 +169,9 @@ main
char_u *fname = NULL; /* file name from command line */
mparm_T params; /* various parameters passed between
* main() and other functions. */
+#ifdef STARTUPTIME
+ int i;
+#endif
/*
* Do any system-specific initialisations. These can NOT use IObuff or
@@ -203,8 +202,15 @@ main
#endif
#ifdef STARTUPTIME
- time_fd = mch_fopen(STARTUPTIME, "a");
- TIME_MSG("--- VIM STARTING ---");
+ for (i = 1; i < argc; ++i)
+ {
+ if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
+ {
+ time_fd = mch_fopen(argv[i] + 14, "a");
+ TIME_MSG("--- VIM STARTING ---");
+ break;
+ }
+ }
#endif
starttime = time(NULL);
@@ -1150,6 +1156,18 @@ main_loop(cmdwin, noexmode)
cursor_on();
do_redraw = FALSE;
+
+#ifdef STARTUPTIME
+ /* Now that we have drawn the first screen all the startup stuff
+ * has been done, close any file for startup messages. */
+ if (time_fd != NULL)
+ {
+ TIME_MSG("first screen update");
+ TIME_MSG("--- VIM STARTED ---");
+ fclose(time_fd);
+ time_fd = NULL;
+ }
+#endif
}
#ifdef FEAT_GUI
if (need_mouse_correct)
@@ -1743,6 +1761,10 @@ 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])
@@ -3211,6 +3233,20 @@ static void time_diff __ARGS((struct timeval *then, struct timeval *now));
static struct timeval prev_timeval;
+# ifdef WIN3264
+/*
+ * Windows doesn't have gettimeofday(), although it does have struct timeval.
+ */
+ static int
+gettimeofday(struct timeval *tv, char *dummy)
+{
+ long t = clock();
+ tv->tv_sec = t / CLOCKS_PER_SEC;
+ tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
+ return 0;
+}
+# endif
+
/*
* Save the previous time before doing something that could nest.
* set "*tv_rel" to the time elapsed so far.
@@ -3299,20 +3335,6 @@ time_msg(msg, tv_start)
}
}
-# ifdef WIN3264
-/*
- * Windows doesn't have gettimeofday(), although it does have struct timeval.
- */
- int
-gettimeofday(struct timeval *tv, char *dummy)
-{
- long t = clock();
- tv->tv_sec = t / CLOCKS_PER_SEC;
- tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
- return 0;
-}
-# endif
-
#endif
#if defined(FEAT_CLIENTSERVER) || defined(PROTO)
diff --git a/src/version.c b/src/version.c
index 923057108..73d2300d1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -677,6 +677,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 269,
+/**/
268,
/**/
267,