summaryrefslogtreecommitdiff
path: root/usr.bin/vim/version.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/vim/version.c')
-rw-r--r--usr.bin/vim/version.c361
1 files changed, 361 insertions, 0 deletions
diff --git a/usr.bin/vim/version.c b/usr.bin/vim/version.c
new file mode 100644
index 00000000000..18a45015bd2
--- /dev/null
+++ b/usr.bin/vim/version.c
@@ -0,0 +1,361 @@
+/* $OpenBSD: version.c,v 1.1 1996/09/07 21:40:24 downsj Exp $ */
+/* vi:set ts=4 sw=4:
+ *
+ * VIM - Vi IMproved by Bram Moolenaar
+ *
+ * Do ":help uganda" in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ */
+
+#include "vim.h"
+#include "globals.h"
+#include "proto.h"
+
+/*
+ * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
+ * It has been changed beyond recognition since then.
+ *
+ * All the remarks about older versions have been removed, they are not very
+ * interesting. Differences between version 3.0 and 4.0 can be found in
+ * "../doc/vim_40.txt".
+ *
+ * Changes between version 4.1 and 4.2:
+ * - Included ctags version 1.3.
+ * - Included xxd.c version 1.4 (only one change since 1.3m)
+ * - Unix: Adjusted check for child finished again. Now use != ECHILD
+ * instead of == EINTR.
+ * - Fixed: loading compressed files (with autocommands) didn't work when
+ * 'textmode' was previously set.
+ * - Fixed: When executing a shell, a window resize was not recognized for
+ * Unix.
+ * - Fixed: For GUI, when executing an external command, a window resize
+ * caused the buffer to be redrawn.
+ * - Fixed: Error message for not being able to open the .viminfo file could
+ * report the wrong filename.
+ * - MS-DOS, Win32, OS/2: When $HOME is not set, use "C:/".
+ * - OS/2: Improved handling of wildcards again. Didn't ignore case, didn't
+ * work with backslashes.
+ * - Fixed: ":s/pat<Tab>" could cause a core dump or other problems.
+ * - Fixed: When entering a hidden buffer with ":e", the BufEnter autocommands
+ * were not executed.
+ * - Fixed: Ignoring a CTRL-Z at end-of-file was only done on MS-DOS. Now it
+ * also works on other systems, but only in textmode.
+ * - Fixed: In the GUI special characters were not passed on to external
+ * commands, typeahead was truncated.
+ * - Added "gq" as an alias to "Q". Should be used when "Q" is made to be Vi
+ * compatible: go to Ex mode.
+ * - Fixed: "gu" in Visual mode could not be redone with "." correctly.
+ * - Fixed: ":normal" command made any typeahead executed right away, causing
+ * unpredictable problems.
+ * - Fixed: ":normal atest^[" didn't update the screen.
+ * - Fixed: Redoing blockwise visual delete at the end of the file could cause
+ * "invalid line number" errors.
+ * - Fixed: vim_rename() didn't open the output file in binary mode, could
+ * cause the .viminfo file to contain CR-LF on OS/2.
+ * - Fixed: OS/2 was using /tmp/xxx for temporary file name, would fail if
+ * there is no /tmp directory. Now use $TMP/xxx, defaulting to c:/ if $TMP
+ * is not set.
+ * - Fixed: When USE_TMPNAM was defined, was using the wrong array size for
+ * the viminfo temporary file.
+ *
+ * Changes between version 4.0 and 4.1:
+ *
+ * - Included xxd.c version 1.3m.
+ * - Included ctags version 1.2.
+ * - Included tools/efm_filt.er.
+ * - Included changes for port to Atari MiNT, including makefile.mint.
+ * - Included a few changes for OS/2: Improved executing external commands,
+ * depending on the shell; Handle resize after executing an external
+ * command; Handle wildcard expansion for more than one argument (e.g.
+ * ":n *.c *.h").
+ * - Include a lot of small changes to the docs.
+ * - Fixed: GUI version would busy-loop and mappings didn't work. Was caused
+ * by gui_mch_wait_for_chars() not working properly. This fix was the main
+ * reason for releasing 4.1.
+ * - Fixed: setting 'term' while GUI is active was possible, and caused
+ * problems.
+ * - Fixed: When the "to" part of a mapping or menu command was long (more
+ * than 24 chars on 32 bit MS-DOS, 128 chars on other systems), any <> were
+ * not translated and CTRL-Vs not removed.
+ * - Fixed: 'modified' option was included for ":mkvimrc", it shouldn't.
+ * - Included a few changes for that Atari MiNT port (vt52 builtin term
+ * entry).
+ * - Fixed: on MS-DOS a file name pattern for an autocommand that contains
+ * "\*" or "\?" didn't work.
+ * - On MS-DOS and Amiga, ignore case when matching the file name pattern for
+ * autocommands.
+ * - Fixed: using :set to show the value of two options gave an error message
+ * (e.g. ":set so sj").
+ * - Fixed: Non-printable characters in a file name caused trouble when
+ * displayed in a status line.
+ * - Pack the MS-DOS zip files with Infozip, under Unix. Preserves the long
+ * filenames and case. Files with two dots don't work though, the first dot
+ * is replaced with an underscore.
+ * - Fixed: Pasting more than one line with the mouse in insert mode, didn't
+ * put the cursor after the last pasted character.
+ * - When pasting linewise text, put the '] mark on the last character of the
+ * last line, instead of the first character of the last line.
+ * - Fixed: on some Unix systems, when resizing the window while in a external
+ * command (e.g., ":!cat"), Vim would stop waiting for the child, causing
+ * trouble, because the child is still running.
+ * - Fixed: resizing the window while executing an external command, and
+ * 't_ti' and 't_te' are defined to swap display buffers, Vim would redraw
+ * in the wrong display buffer after the "hit RETURN" message.
+ * - Fixed: "va", "vA", "Vp", "VP", "Vs" and "VS" didn't set the cursor
+ * position used for up/down movements (e.g., when using "j" after them).
+ * - Fixed: in GUI version, after using "cw" visual selection by dragging the
+ * mouse didn't work.
+ * - Fixed: setting 'ttyscroll' to 0 caused scrolling of message to stop
+ * working.
+ * - Fixed: the "WARNING: file changed" message caused buffers to be flushed
+ * and subsequent commands not to be executed.
+ * - Fixed: in Insert mode, the message from "^O^G" would be
+ * overwritten by the mode message if 'showmode' set.
+ * - Fixed: Using ":bdel" when there is only one buffer with two windows,
+ * could cause a crash.
+ * - Changed: the '<' flag in 'cpoptions' now only switches off the
+ * recognizing of the <> form of key codes. The 'k' flag is now used for
+ * the recognizing of raw key codes.
+ * - Fixed: Typing ':' at the --more-- prompt, when displaying autocommands,
+ * caused extra linefeeds to be produced.
+ * - Fixed: Using 'tagrelative' and ":set tags=./../tags", filenames would
+ * contain "../" as many times as CTRL-] would be used. These are removed
+ * now.
+ * - Fixed: Extremely long error message could cause a crash (e.g., when
+ * using ":help ^A<CR>").
+ * - Added check for negative value of 'textwidth'.
+ * - Fixed: On MS-DOS, getting the value of $HOME would cause the current
+ * directory for the drive to be changed.
+ */
+
+/*
+ * Version[] is copied into the swap file (max. length is 10 chars).
+ * longVersion[] is used for the ":version" command and "Vim -h".
+ * Don't forget to update the numbers in version.h for Win32!!!
+ */
+
+char *Version = "VIM 4.2";
+#ifdef HAVE_DATE_TIME
+char *longVersion = "VIM - Vi IMproved 4.2 (1996 June 17, compiled " __DATE__ " " __TIME__ ")";
+#else
+char *longVersion = "VIM - Vi IMproved 4.2 (1996 June 17)";
+#endif
+
+static void version_msg __ARGS((char *s));
+
+ void
+do_version(arg)
+ char_u *arg;
+{
+ long n;
+
+ if (*arg != NUL)
+ {
+ found_version = getdigits(&arg) * 100;
+ if (*arg == '.' && isdigit(arg[1]))
+ {
+ /* "4.1" -> 401, "4.10" -> 410 */
+ n = arg[1] - '0';
+ if (isdigit(arg[2]))
+ found_version += (arg[2] - '0') + n * 10;
+ else
+ found_version += n;
+ }
+ if (found_version > 400)
+ {
+ MSG("Warning: Found newer version command");
+ if (sourcing_name != NULL)
+ {
+ MSG_OUTSTR(" in: \"");
+ msg_outstr(sourcing_name);
+ MSG_OUTSTR("\" line: ");
+ msg_outnum((long)sourcing_lnum);
+ }
+ }
+ }
+ else
+ {
+ msg_outchar('\n');
+ MSG(longVersion);
+#ifdef WIN32
+ MSG_OUTSTR("\nWindows NT / Windows 95 version");
+#endif
+#ifdef MSDOS
+# ifdef DJGPP
+ MSG_OUTSTR("\n32 bit MS-DOS version");
+# else
+ MSG_OUTSTR("\n16 bit MS-DOS version");
+# endif
+#endif
+ MSG_OUTSTR("\nCompiled with (+) or without (-):\n");
+#ifdef AMIGA /* only for Amiga systems */
+# ifdef NO_ARP
+ version_msg("-ARP ");
+# else
+ version_msg("+ARP ");
+# endif
+#endif
+#ifdef AUTOCMD
+ version_msg("+autocmd ");
+#else
+ version_msg("-autocmd ");
+#endif
+#ifdef NO_BUILTIN_TCAPS
+ version_msg("-builtin_terms ");
+#endif
+#ifdef SOME_BUILTIN_TCAPS
+ version_msg("+builtin_terms ");
+#endif
+#ifdef ALL_BUILTIN_TCAPS
+ version_msg("++builtin_terms ");
+#endif
+#ifdef CINDENT
+ version_msg("+cindent ");
+#else
+ version_msg("-cindent ");
+#endif
+#ifdef COMPATIBLE
+ version_msg("+compatible ");
+#else
+ version_msg("-compatible ");
+#endif
+#ifdef DEBUG
+ version_msg("+debug ");
+#endif
+#ifdef DIGRAPHS
+ version_msg("+digraphs ");
+#else
+ version_msg("-digraphs ");
+#endif
+#ifdef EMACS_TAGS
+ version_msg("+emacs_tags ");
+#else
+ version_msg("-emacs_tags ");
+#endif
+ /* only interesting on Unix systems */
+#if !defined(USE_SYSTEM) && defined(UNIX)
+ version_msg("+fork() ");
+#endif
+#ifdef UNIX
+# ifdef USE_GUI_MOTIF
+ version_msg("+GUI_Motif ");
+# else
+# ifdef USE_GUI_ATHENA
+ version_msg("+GUI_Athena ");
+# else
+ version_msg("-GUI ");
+# endif
+# endif
+#endif
+#ifdef INSERT_EXPAND
+ version_msg("+insert_expand ");
+#else
+ version_msg("-insert_expand ");
+#endif
+#ifdef HAVE_LANGMAP
+ version_msg("+langmap ");
+#else
+ version_msg("-langmap ");
+#endif
+#ifdef LISPINDENT
+ version_msg("+lispindent ");
+#else
+ version_msg("-lispindent ");
+#endif
+#ifdef RIGHTLEFT
+ version_msg("+rightleft ");
+#else
+ version_msg("-rightleft ");
+#endif
+#ifdef SMARTINDENT
+ version_msg("+smartindent ");
+#else
+ version_msg("-smartindent ");
+#endif
+ /* only interesting on Unix systems */
+#if defined(USE_SYSTEM) && (defined(UNIX) || defined(__EMX__))
+ version_msg("+system() ");
+#endif
+#if defined(UNIX) || defined(__EMX__)
+/* only unix (or OS/2 with EMX!) can have terminfo instead of termcap */
+# ifdef TERMINFO
+ version_msg("+terminfo ");
+# else
+ version_msg("-terminfo ");
+# endif
+#else /* unix always includes termcap support */
+# ifdef HAVE_TGETENT
+ version_msg("+tgetent ");
+# else
+ version_msg("-tgetent ");
+# endif
+#endif
+#ifdef VIMINFO
+ version_msg("+viminfo ");
+#else
+ version_msg("-viminfo ");
+#endif
+#ifdef WRITEBACKUP
+ version_msg("+writebackup ");
+#else
+ version_msg("-writebackup ");
+#endif
+#ifdef UNIX
+# if defined(WANT_X11) && defined(HAVE_X11)
+ version_msg("+X11 ");
+# else
+ version_msg("-X11 ");
+# endif
+#endif
+ msg_outchar('\n');
+#ifdef USR_VIMRC_FILE
+ version_msg("user vimrc file: \"");
+ version_msg(USR_VIMRC_FILE);
+ version_msg("\" ");
+#endif
+#ifdef USR_EXRC_FILE
+ version_msg("user exrc file: \"");
+ version_msg(USR_EXRC_FILE);
+ version_msg("\" ");
+#endif
+#ifdef USE_GUI
+ version_msg("user gvimrc file: \"");
+ version_msg(USR_GVIMRC_FILE);
+ version_msg("\" ");
+#endif
+#if defined(HAVE_CONFIG_H) || defined(OS2)
+ msg_outchar('\n');
+ version_msg("system vimrc file: \"");
+ version_msg((char *)sys_vimrc_fname);
+ version_msg("\"");
+ msg_outchar('\n');
+ version_msg("system compatrc file: \"");
+ version_msg((char *)sys_compatrc_fname);
+ version_msg("\"");
+# ifdef USE_GUI
+ msg_outchar('\n');
+ version_msg("system gvimrc file: \"");
+ version_msg((char *)sys_gvimrc_fname);
+ MSG_OUTSTR("\"");
+# endif
+ msg_outchar('\n');
+ version_msg("Compilation: ");
+ version_msg((char *)all_cflags);
+#endif
+ }
+}
+
+/*
+ * Output a string for the version message. If it's going to wrap, output a
+ * newline, unless the message is too long to fit on the screen anyway.
+ */
+ static void
+version_msg(s)
+ char *s;
+{
+ int len = strlen(s);
+
+ if (len < (int)Columns && msg_col + len >= (int)Columns)
+ msg_outchar('\n');
+ MSG_OUTSTR(s);
+}