2004-06-13 20:20:40 +00:00
|
|
|
/* vi:set ts=8 sts=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.
|
|
|
|
* See README.txt for an overview of the Vim source code.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "vim.h"
|
|
|
|
|
|
|
|
#ifdef AMIGA
|
|
|
|
# include <time.h> /* for time() */
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
|
|
|
|
* It has been changed beyond recognition since then.
|
|
|
|
*
|
2004-10-07 21:02:47 +00:00
|
|
|
* Differences between version 6.x and 7.x can be found with ":help version7".
|
2004-06-13 20:20:40 +00:00
|
|
|
* Differences between version 5.x and 6.x can be found with ":help version6".
|
|
|
|
* Differences between version 4.x and 5.x can be found with ":help version5".
|
|
|
|
* Differences between version 3.0 and 4.x can be found with ":help version4".
|
|
|
|
* All the remarks about older versions have been removed, they are not very
|
|
|
|
* interesting.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "version.h"
|
|
|
|
|
2005-06-30 22:04:15 +00:00
|
|
|
char *Version = VIM_VERSION_SHORT;
|
|
|
|
static char *mediumVersion = VIM_VERSION_MEDIUM;
|
2004-06-13 20:20:40 +00:00
|
|
|
|
|
|
|
#if defined(HAVE_DATE_TIME) || defined(PROTO)
|
|
|
|
# if (defined(VMS) && defined(VAXC)) || defined(PROTO)
|
|
|
|
char longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__)
|
|
|
|
+ sizeof(__TIME__) + 3];
|
|
|
|
void
|
|
|
|
make_version()
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
* Construct the long version string. Necessary because
|
|
|
|
* VAX C can't catenate strings in the preprocessor.
|
|
|
|
*/
|
|
|
|
strcpy(longVersion, VIM_VERSION_LONG_DATE);
|
|
|
|
strcat(longVersion, __DATE__);
|
|
|
|
strcat(longVersion, " ");
|
|
|
|
strcat(longVersion, __TIME__);
|
|
|
|
strcat(longVersion, ")");
|
|
|
|
}
|
|
|
|
# else
|
|
|
|
char *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")";
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
char *longVersion = VIM_VERSION_LONG;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
static void version_msg __ARGS((char *s));
|
|
|
|
|
|
|
|
static char *(features[]) =
|
|
|
|
{
|
|
|
|
#ifdef AMIGA /* only for Amiga systems */
|
|
|
|
# ifdef FEAT_ARP
|
|
|
|
"+ARP",
|
|
|
|
# else
|
|
|
|
"-ARP",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_ARABIC
|
|
|
|
"+arabic",
|
|
|
|
#else
|
|
|
|
"-arabic",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_AUTOCMD
|
|
|
|
"+autocmd",
|
|
|
|
#else
|
|
|
|
"-autocmd",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_BEVAL
|
|
|
|
"+balloon_eval",
|
|
|
|
#else
|
|
|
|
"-balloon_eval",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_BROWSE
|
|
|
|
"+browse",
|
|
|
|
#else
|
|
|
|
"-browse",
|
|
|
|
#endif
|
|
|
|
#ifdef NO_BUILTIN_TCAPS
|
|
|
|
"-builtin_terms",
|
|
|
|
#endif
|
|
|
|
#ifdef SOME_BUILTIN_TCAPS
|
|
|
|
"+builtin_terms",
|
|
|
|
#endif
|
|
|
|
#ifdef ALL_BUILTIN_TCAPS
|
|
|
|
"++builtin_terms",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_BYTEOFF
|
|
|
|
"+byte_offset",
|
|
|
|
#else
|
|
|
|
"-byte_offset",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_CINDENT
|
|
|
|
"+cindent",
|
|
|
|
#else
|
|
|
|
"-cindent",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_CLIENTSERVER
|
|
|
|
"+clientserver",
|
|
|
|
#else
|
|
|
|
"-clientserver",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_CLIPBOARD
|
|
|
|
"+clipboard",
|
|
|
|
#else
|
|
|
|
"-clipboard",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_CMDL_COMPL
|
|
|
|
"+cmdline_compl",
|
|
|
|
#else
|
|
|
|
"-cmdline_compl",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_CMDHIST
|
|
|
|
"+cmdline_hist",
|
|
|
|
#else
|
|
|
|
"-cmdline_hist",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_CMDL_INFO
|
|
|
|
"+cmdline_info",
|
|
|
|
#else
|
|
|
|
"-cmdline_info",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_COMMENTS
|
|
|
|
"+comments",
|
|
|
|
#else
|
|
|
|
"-comments",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_CRYPT
|
|
|
|
"+cryptv",
|
|
|
|
#else
|
|
|
|
"-cryptv",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_CSCOPE
|
|
|
|
"+cscope",
|
|
|
|
#else
|
|
|
|
"-cscope",
|
|
|
|
#endif
|
2006-01-26 22:25:15 +00:00
|
|
|
#ifdef CURSOR_SHAPE
|
|
|
|
"+cursorshape",
|
|
|
|
#else
|
|
|
|
"-cursorshape",
|
|
|
|
#endif
|
2004-06-13 20:20:40 +00:00
|
|
|
#if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG)
|
|
|
|
"+dialog_con_gui",
|
|
|
|
#else
|
|
|
|
# if defined(FEAT_CON_DIALOG)
|
|
|
|
"+dialog_con",
|
|
|
|
# else
|
|
|
|
# if defined(FEAT_GUI_DIALOG)
|
|
|
|
"+dialog_gui",
|
|
|
|
# else
|
|
|
|
"-dialog",
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_DIFF
|
|
|
|
"+diff",
|
|
|
|
#else
|
|
|
|
"-diff",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_DIGRAPHS
|
|
|
|
"+digraphs",
|
|
|
|
#else
|
|
|
|
"-digraphs",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_DND
|
|
|
|
"+dnd",
|
|
|
|
#else
|
|
|
|
"-dnd",
|
|
|
|
#endif
|
|
|
|
#ifdef EBCDIC
|
|
|
|
"+ebcdic",
|
|
|
|
#else
|
|
|
|
"-ebcdic",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_EMACS_TAGS
|
|
|
|
"+emacs_tags",
|
|
|
|
#else
|
|
|
|
"-emacs_tags",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_EVAL
|
|
|
|
"+eval",
|
|
|
|
#else
|
|
|
|
"-eval",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_EX_EXTRA
|
|
|
|
"+ex_extra",
|
|
|
|
#else
|
|
|
|
"-ex_extra",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SEARCH_EXTRA
|
|
|
|
"+extra_search",
|
|
|
|
#else
|
|
|
|
"-extra_search",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_FKMAP
|
|
|
|
"+farsi",
|
|
|
|
#else
|
|
|
|
"-farsi",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SEARCHPATH
|
|
|
|
"+file_in_path",
|
|
|
|
#else
|
|
|
|
"-file_in_path",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_FIND_ID
|
|
|
|
"+find_in_path",
|
|
|
|
#else
|
|
|
|
"-find_in_path",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_FOLDING
|
|
|
|
"+folding",
|
|
|
|
#else
|
|
|
|
"-folding",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_FOOTER
|
|
|
|
"+footer",
|
|
|
|
#else
|
|
|
|
"-footer",
|
|
|
|
#endif
|
|
|
|
/* only interesting on Unix systems */
|
|
|
|
#if !defined(USE_SYSTEM) && defined(UNIX)
|
|
|
|
"+fork()",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_GETTEXT
|
|
|
|
# ifdef DYNAMIC_GETTEXT
|
|
|
|
"+gettext/dyn",
|
|
|
|
# else
|
|
|
|
"+gettext",
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
"-gettext",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_HANGULIN
|
|
|
|
"+hangul_input",
|
|
|
|
#else
|
|
|
|
"-hangul_input",
|
|
|
|
#endif
|
|
|
|
#if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV)
|
|
|
|
# ifdef DYNAMIC_ICONV
|
|
|
|
"+iconv/dyn",
|
|
|
|
# else
|
|
|
|
"+iconv",
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
"-iconv",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_INS_EXPAND
|
|
|
|
"+insert_expand",
|
|
|
|
#else
|
|
|
|
"-insert_expand",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_JUMPLIST
|
|
|
|
"+jumplist",
|
|
|
|
#else
|
|
|
|
"-jumplist",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_KEYMAP
|
|
|
|
"+keymap",
|
|
|
|
#else
|
|
|
|
"-keymap",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_LANGMAP
|
|
|
|
"+langmap",
|
|
|
|
#else
|
|
|
|
"-langmap",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_LIBCALL
|
|
|
|
"+libcall",
|
|
|
|
#else
|
|
|
|
"-libcall",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_LINEBREAK
|
|
|
|
"+linebreak",
|
|
|
|
#else
|
|
|
|
"-linebreak",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_LISP
|
|
|
|
"+lispindent",
|
|
|
|
#else
|
|
|
|
"-lispindent",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_LISTCMDS
|
|
|
|
"+listcmds",
|
|
|
|
#else
|
|
|
|
"-listcmds",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_LOCALMAP
|
|
|
|
"+localmap",
|
|
|
|
#else
|
|
|
|
"-localmap",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_MENU
|
|
|
|
"+menu",
|
|
|
|
#else
|
|
|
|
"-menu",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SESSION
|
|
|
|
"+mksession",
|
|
|
|
#else
|
|
|
|
"-mksession",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_MODIFY_FNAME
|
|
|
|
"+modify_fname",
|
|
|
|
#else
|
|
|
|
"-modify_fname",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_MOUSE
|
|
|
|
"+mouse",
|
|
|
|
# ifdef FEAT_MOUSESHAPE
|
|
|
|
"+mouseshape",
|
|
|
|
# else
|
|
|
|
"-mouseshape",
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
"-mouse",
|
|
|
|
#endif
|
|
|
|
#if defined(UNIX) || defined(VMS)
|
|
|
|
# ifdef FEAT_MOUSE_DEC
|
|
|
|
"+mouse_dec",
|
|
|
|
# else
|
|
|
|
"-mouse_dec",
|
|
|
|
# endif
|
|
|
|
# ifdef FEAT_MOUSE_GPM
|
|
|
|
"+mouse_gpm",
|
|
|
|
# else
|
|
|
|
"-mouse_gpm",
|
|
|
|
# endif
|
|
|
|
# ifdef FEAT_MOUSE_JSB
|
|
|
|
"+mouse_jsbterm",
|
|
|
|
# else
|
|
|
|
"-mouse_jsbterm",
|
|
|
|
# endif
|
|
|
|
# ifdef FEAT_MOUSE_NET
|
|
|
|
"+mouse_netterm",
|
|
|
|
# else
|
|
|
|
"-mouse_netterm",
|
|
|
|
# endif
|
|
|
|
# ifdef FEAT_MOUSE_XTERM
|
|
|
|
"+mouse_xterm",
|
|
|
|
# else
|
|
|
|
"-mouse_xterm",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef __QNX__
|
|
|
|
# ifdef FEAT_MOUSE_PTERM
|
|
|
|
"+mouse_pterm",
|
|
|
|
# else
|
|
|
|
"-mouse_pterm",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_MBYTE_IME
|
|
|
|
# ifdef DYNAMIC_IME
|
|
|
|
"+multi_byte_ime/dyn",
|
|
|
|
# else
|
|
|
|
"+multi_byte_ime",
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
# ifdef FEAT_MBYTE
|
|
|
|
"+multi_byte",
|
|
|
|
# else
|
|
|
|
"-multi_byte",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_MULTI_LANG
|
|
|
|
"+multi_lang",
|
|
|
|
#else
|
|
|
|
"-multi_lang",
|
|
|
|
#endif
|
2004-07-05 15:58:32 +00:00
|
|
|
#ifdef FEAT_MZSCHEME
|
2005-01-25 22:07:05 +00:00
|
|
|
# ifdef DYNAMIC_MZSCHEME
|
|
|
|
"+mzscheme/dyn",
|
|
|
|
# else
|
2004-07-05 15:58:32 +00:00
|
|
|
"+mzscheme",
|
2005-01-25 22:07:05 +00:00
|
|
|
# endif
|
2004-07-05 15:58:32 +00:00
|
|
|
#else
|
|
|
|
"-mzscheme",
|
|
|
|
#endif
|
2004-06-13 20:20:40 +00:00
|
|
|
#ifdef FEAT_NETBEANS_INTG
|
|
|
|
"+netbeans_intg",
|
|
|
|
#else
|
|
|
|
"-netbeans_intg",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_GUI_W32
|
|
|
|
# ifdef FEAT_OLE
|
|
|
|
"+ole",
|
|
|
|
# else
|
|
|
|
"-ole",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_OSFILETYPE
|
|
|
|
"+osfiletype",
|
|
|
|
#else
|
|
|
|
"-osfiletype",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_PATH_EXTRA
|
|
|
|
"+path_extra",
|
|
|
|
#else
|
|
|
|
"-path_extra",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_PERL
|
|
|
|
# ifdef DYNAMIC_PERL
|
|
|
|
"+perl/dyn",
|
|
|
|
# else
|
|
|
|
"+perl",
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
"-perl",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_PRINTER
|
|
|
|
# ifdef FEAT_POSTSCRIPT
|
|
|
|
"+postscript",
|
|
|
|
# else
|
|
|
|
"-postscript",
|
|
|
|
# endif
|
|
|
|
"+printer",
|
|
|
|
#else
|
|
|
|
"-printer",
|
|
|
|
#endif
|
2005-02-26 23:04:13 +00:00
|
|
|
#ifdef FEAT_PROFILE
|
|
|
|
"+profile",
|
|
|
|
#else
|
|
|
|
"-profile",
|
|
|
|
#endif
|
2004-06-13 20:20:40 +00:00
|
|
|
#ifdef FEAT_PYTHON
|
|
|
|
# ifdef DYNAMIC_PYTHON
|
|
|
|
"+python/dyn",
|
|
|
|
# else
|
|
|
|
"+python",
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
"-python",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_QUICKFIX
|
|
|
|
"+quickfix",
|
|
|
|
#else
|
|
|
|
"-quickfix",
|
|
|
|
#endif
|
2006-05-02 22:08:30 +00:00
|
|
|
#ifdef FEAT_RELTIME
|
|
|
|
"+reltime",
|
|
|
|
#else
|
|
|
|
"-reltime",
|
|
|
|
#endif
|
2004-06-13 20:20:40 +00:00
|
|
|
#ifdef FEAT_RIGHTLEFT
|
|
|
|
"+rightleft",
|
|
|
|
#else
|
|
|
|
"-rightleft",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_RUBY
|
|
|
|
# ifdef DYNAMIC_RUBY
|
|
|
|
"+ruby/dyn",
|
|
|
|
# else
|
|
|
|
"+ruby",
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
"-ruby",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SCROLLBIND
|
|
|
|
"+scrollbind",
|
|
|
|
#else
|
|
|
|
"-scrollbind",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SIGNS
|
|
|
|
"+signs",
|
|
|
|
#else
|
|
|
|
"-signs",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SMARTINDENT
|
|
|
|
"+smartindent",
|
|
|
|
#else
|
|
|
|
"-smartindent",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SNIFF
|
|
|
|
"+sniff",
|
|
|
|
#else
|
|
|
|
"-sniff",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_STL_OPT
|
|
|
|
"+statusline",
|
|
|
|
#else
|
|
|
|
"-statusline",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SUN_WORKSHOP
|
|
|
|
"+sun_workshop",
|
|
|
|
#else
|
|
|
|
"-sun_workshop",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_SYN_HL
|
|
|
|
"+syntax",
|
|
|
|
#else
|
|
|
|
"-syntax",
|
|
|
|
#endif
|
|
|
|
/* only interesting on Unix systems */
|
|
|
|
#if defined(USE_SYSTEM) && (defined(UNIX) || defined(__EMX__))
|
|
|
|
"+system()",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_TAG_BINS
|
|
|
|
"+tag_binary",
|
|
|
|
#else
|
|
|
|
"-tag_binary",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_TAG_OLDSTATIC
|
|
|
|
"+tag_old_static",
|
|
|
|
#else
|
|
|
|
"-tag_old_static",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_TAG_ANYWHITE
|
|
|
|
"+tag_any_white",
|
|
|
|
#else
|
|
|
|
"-tag_any_white",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_TCL
|
|
|
|
# ifdef DYNAMIC_TCL
|
|
|
|
"+tcl/dyn",
|
|
|
|
# else
|
|
|
|
"+tcl",
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
"-tcl",
|
|
|
|
#endif
|
|
|
|
#if defined(UNIX) || defined(__EMX__)
|
|
|
|
/* only Unix (or OS/2 with EMX!) can have terminfo instead of termcap */
|
|
|
|
# ifdef TERMINFO
|
|
|
|
"+terminfo",
|
|
|
|
# else
|
|
|
|
"-terminfo",
|
|
|
|
# endif
|
|
|
|
#else /* unix always includes termcap support */
|
|
|
|
# ifdef HAVE_TGETENT
|
|
|
|
"+tgetent",
|
|
|
|
# else
|
|
|
|
"-tgetent",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_TERMRESPONSE
|
|
|
|
"+termresponse",
|
|
|
|
#else
|
|
|
|
"-termresponse",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_TEXTOBJ
|
|
|
|
"+textobjects",
|
|
|
|
#else
|
|
|
|
"-textobjects",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_TITLE
|
|
|
|
"+title",
|
|
|
|
#else
|
|
|
|
"-title",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_TOOLBAR
|
|
|
|
"+toolbar",
|
|
|
|
#else
|
|
|
|
"-toolbar",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_USR_CMDS
|
|
|
|
"+user_commands",
|
|
|
|
#else
|
|
|
|
"-user_commands",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_VERTSPLIT
|
|
|
|
"+vertsplit",
|
|
|
|
#else
|
|
|
|
"-vertsplit",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_VIRTUALEDIT
|
|
|
|
"+virtualedit",
|
|
|
|
#else
|
|
|
|
"-virtualedit",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_VISUAL
|
|
|
|
"+visual",
|
|
|
|
# ifdef FEAT_VISUALEXTRA
|
|
|
|
"+visualextra",
|
|
|
|
# else
|
|
|
|
"-visualextra",
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
"-visual",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_VIMINFO
|
|
|
|
"+viminfo",
|
|
|
|
#else
|
|
|
|
"-viminfo",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_VREPLACE
|
|
|
|
"+vreplace",
|
|
|
|
#else
|
|
|
|
"-vreplace",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_WILDIGN
|
|
|
|
"+wildignore",
|
|
|
|
#else
|
|
|
|
"-wildignore",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_WILDMENU
|
|
|
|
"+wildmenu",
|
|
|
|
#else
|
|
|
|
"-wildmenu",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_WINDOWS
|
|
|
|
"+windows",
|
|
|
|
#else
|
|
|
|
"-windows",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_WRITEBACKUP
|
|
|
|
"+writebackup",
|
|
|
|
#else
|
|
|
|
"-writebackup",
|
|
|
|
#endif
|
|
|
|
#if defined(UNIX) || defined(VMS)
|
|
|
|
# ifdef FEAT_X11
|
|
|
|
"+X11",
|
|
|
|
# else
|
|
|
|
"-X11",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_XFONTSET
|
|
|
|
"+xfontset",
|
|
|
|
#else
|
|
|
|
"-xfontset",
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_XIM
|
|
|
|
"+xim",
|
|
|
|
#else
|
|
|
|
"-xim",
|
|
|
|
#endif
|
|
|
|
#if defined(UNIX) || defined(VMS)
|
|
|
|
# ifdef USE_XSMP_INTERACT
|
|
|
|
"+xsmp_interact",
|
|
|
|
# else
|
|
|
|
# ifdef USE_XSMP
|
|
|
|
"+xsmp",
|
|
|
|
# else
|
|
|
|
"-xsmp",
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# ifdef FEAT_XCLIPBOARD
|
|
|
|
"+xterm_clipboard",
|
|
|
|
# else
|
|
|
|
"-xterm_clipboard",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_XTERM_SAVE
|
|
|
|
"+xterm_save",
|
|
|
|
#else
|
|
|
|
"-xterm_save",
|
|
|
|
#endif
|
|
|
|
#ifdef WIN3264
|
|
|
|
# ifdef FEAT_XPM_W32
|
|
|
|
"+xpm_w32",
|
|
|
|
# else
|
|
|
|
"-xpm_w32",
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static int included_patches[] =
|
|
|
|
{ /* Add new patch number below this line */
|
2008-01-01 14:43:35 +00:00
|
|
|
/**/
|
|
|
|
178,
|
2008-01-01 13:17:56 +00:00
|
|
|
/**/
|
|
|
|
177,
|
2007-12-31 15:42:13 +00:00
|
|
|
/**/
|
|
|
|
176,
|
2007-12-09 19:26:44 +00:00
|
|
|
/**/
|
|
|
|
175,
|
2007-12-09 18:38:35 +00:00
|
|
|
/**/
|
|
|
|
174,
|
2007-12-09 18:26:22 +00:00
|
|
|
/**/
|
|
|
|
173,
|
2007-12-08 21:21:18 +00:00
|
|
|
/**/
|
|
|
|
172,
|
2007-12-07 19:28:58 +00:00
|
|
|
/**/
|
|
|
|
171,
|
2007-12-07 16:30:42 +00:00
|
|
|
/**/
|
|
|
|
170,
|
2007-12-07 16:09:32 +00:00
|
|
|
/**/
|
|
|
|
169,
|
2007-12-03 21:21:03 +00:00
|
|
|
/**/
|
|
|
|
168,
|
2007-12-03 20:32:43 +00:00
|
|
|
/**/
|
|
|
|
167,
|
2007-12-01 20:13:05 +00:00
|
|
|
/**/
|
|
|
|
166,
|
2007-12-01 16:19:33 +00:00
|
|
|
/**/
|
|
|
|
165,
|
2007-11-29 20:27:21 +00:00
|
|
|
/**/
|
|
|
|
164,
|
2007-11-29 16:46:44 +00:00
|
|
|
/**/
|
|
|
|
163,
|
2007-11-24 20:50:24 +00:00
|
|
|
/**/
|
|
|
|
162,
|
2007-11-24 20:28:24 +00:00
|
|
|
/**/
|
|
|
|
161,
|
2007-11-24 14:44:58 +00:00
|
|
|
/**/
|
|
|
|
160,
|
2007-11-20 17:04:29 +00:00
|
|
|
/**/
|
|
|
|
159,
|
2007-11-20 16:22:16 +00:00
|
|
|
/**/
|
|
|
|
158,
|
2007-11-20 11:31:26 +00:00
|
|
|
/**/
|
|
|
|
157,
|
2007-11-11 18:17:28 +00:00
|
|
|
/**/
|
|
|
|
156,
|
2007-11-10 21:51:15 +00:00
|
|
|
/**/
|
|
|
|
155,
|
2007-11-08 20:24:19 +00:00
|
|
|
/**/
|
|
|
|
154,
|
2007-11-08 19:49:02 +00:00
|
|
|
/**/
|
|
|
|
153,
|
2007-11-08 13:51:42 +00:00
|
|
|
/**/
|
|
|
|
152,
|
2007-11-08 12:04:26 +00:00
|
|
|
/**/
|
|
|
|
151,
|
2007-11-08 09:35:50 +00:00
|
|
|
/**/
|
|
|
|
150,
|
2007-11-06 21:27:31 +00:00
|
|
|
/**/
|
|
|
|
149,
|
2007-11-04 14:36:18 +00:00
|
|
|
/**/
|
|
|
|
148,
|
2007-10-30 16:37:15 +00:00
|
|
|
/**/
|
|
|
|
147,
|
2007-10-29 21:38:54 +00:00
|
|
|
/**/
|
|
|
|
146,
|
2007-10-19 18:40:51 +00:00
|
|
|
/**/
|
|
|
|
145,
|
2007-10-19 16:58:12 +00:00
|
|
|
/**/
|
|
|
|
144,
|
2007-10-19 15:33:39 +00:00
|
|
|
/**/
|
|
|
|
143,
|
2007-10-19 14:20:54 +00:00
|
|
|
/**/
|
|
|
|
142,
|
2007-10-19 12:33:44 +00:00
|
|
|
/**/
|
|
|
|
141,
|
2007-10-14 15:16:27 +00:00
|
|
|
/**/
|
|
|
|
140,
|
2007-10-14 13:33:20 +00:00
|
|
|
/**/
|
|
|
|
139,
|
2007-10-09 08:47:27 +00:00
|
|
|
/**/
|
|
|
|
138,
|
2007-10-07 13:45:08 +00:00
|
|
|
/**/
|
|
|
|
137,
|
2007-10-07 13:22:19 +00:00
|
|
|
/**/
|
|
|
|
136,
|
2007-10-03 12:31:33 +00:00
|
|
|
/**/
|
|
|
|
135,
|
2007-10-03 11:29:44 +00:00
|
|
|
/**/
|
|
|
|
134,
|
2007-10-03 10:50:10 +00:00
|
|
|
/**/
|
|
|
|
133,
|
2007-10-02 20:08:54 +00:00
|
|
|
/**/
|
|
|
|
132,
|
2007-10-02 18:40:57 +00:00
|
|
|
/**/
|
|
|
|
131,
|
2007-10-01 20:54:15 +00:00
|
|
|
/**/
|
|
|
|
130,
|
2007-10-01 18:34:34 +00:00
|
|
|
/**/
|
|
|
|
129,
|
2007-09-30 20:28:48 +00:00
|
|
|
/**/
|
|
|
|
128,
|
2007-09-30 20:11:26 +00:00
|
|
|
/**/
|
|
|
|
127,
|
2007-09-30 12:02:55 +00:00
|
|
|
/**/
|
|
|
|
126,
|
2007-09-29 12:16:41 +00:00
|
|
|
/**/
|
|
|
|
125,
|
2007-09-29 11:16:17 +00:00
|
|
|
/**/
|
|
|
|
124,
|
2007-09-26 20:36:32 +00:00
|
|
|
/**/
|
|
|
|
123,
|
2007-09-25 20:13:54 +00:00
|
|
|
/**/
|
|
|
|
122,
|
2007-09-25 18:40:14 +00:00
|
|
|
/**/
|
|
|
|
121,
|
2007-09-25 16:00:00 +00:00
|
|
|
/**/
|
|
|
|
120,
|
2007-09-25 12:51:28 +00:00
|
|
|
/**/
|
|
|
|
119,
|
2007-09-25 12:20:19 +00:00
|
|
|
/**/
|
|
|
|
118,
|
2007-09-25 10:51:12 +00:00
|
|
|
/**/
|
|
|
|
117,
|
2007-09-17 20:39:42 +00:00
|
|
|
/**/
|
|
|
|
116,
|
2007-09-17 20:21:33 +00:00
|
|
|
/**/
|
|
|
|
115,
|
2007-09-17 19:56:01 +00:00
|
|
|
/**/
|
|
|
|
114,
|
2007-09-17 19:38:08 +00:00
|
|
|
/**/
|
|
|
|
113,
|
2007-09-16 12:21:16 +00:00
|
|
|
/**/
|
|
|
|
112,
|
2007-09-16 11:27:42 +00:00
|
|
|
/**/
|
|
|
|
111,
|
2007-09-15 12:49:35 +00:00
|
|
|
/**/
|
|
|
|
110,
|
2007-09-15 12:07:46 +00:00
|
|
|
/**/
|
|
|
|
109,
|
2007-09-14 17:56:59 +00:00
|
|
|
/**/
|
|
|
|
108,
|
2007-09-13 20:41:32 +00:00
|
|
|
/**/
|
|
|
|
107,
|
2007-09-13 20:05:18 +00:00
|
|
|
/**/
|
|
|
|
106,
|
2007-09-13 18:40:54 +00:00
|
|
|
/**/
|
|
|
|
105,
|
2007-09-13 16:26:47 +00:00
|
|
|
/**/
|
|
|
|
104,
|
2007-09-13 13:34:02 +00:00
|
|
|
/**/
|
|
|
|
103,
|
2007-09-13 13:20:16 +00:00
|
|
|
/**/
|
|
|
|
102,
|
2007-09-13 13:01:18 +00:00
|
|
|
/**/
|
|
|
|
101,
|
2007-09-06 15:39:22 +00:00
|
|
|
/**/
|
|
|
|
100,
|
2007-09-06 14:35:35 +00:00
|
|
|
/**/
|
|
|
|
99,
|
2007-09-06 12:26:44 +00:00
|
|
|
/**/
|
|
|
|
98,
|
2007-09-06 11:33:37 +00:00
|
|
|
/**/
|
|
|
|
97,
|
2007-09-06 10:54:51 +00:00
|
|
|
/**/
|
|
|
|
96,
|
2007-09-05 19:47:23 +00:00
|
|
|
/**/
|
|
|
|
95,
|
2007-08-30 17:37:40 +00:00
|
|
|
/**/
|
|
|
|
94,
|
2007-08-30 11:53:22 +00:00
|
|
|
/**/
|
|
|
|
93,
|
2007-08-30 10:51:14 +00:00
|
|
|
/**/
|
|
|
|
92,
|
2007-08-30 10:26:19 +00:00
|
|
|
/**/
|
|
|
|
91,
|
2007-08-30 09:47:38 +00:00
|
|
|
/**/
|
|
|
|
90,
|
2007-08-30 09:12:23 +00:00
|
|
|
/**/
|
|
|
|
89,
|
2007-08-30 08:35:35 +00:00
|
|
|
/**/
|
|
|
|
88,
|
2007-08-21 16:03:51 +00:00
|
|
|
/**/
|
|
|
|
87,
|
2007-08-21 15:29:56 +00:00
|
|
|
/**/
|
|
|
|
86,
|
2007-08-21 13:29:28 +00:00
|
|
|
/**/
|
|
|
|
85,
|
2007-08-21 13:07:12 +00:00
|
|
|
/**/
|
|
|
|
84,
|
|
|
|
/**/
|
|
|
|
83,
|
2007-08-18 16:21:50 +00:00
|
|
|
/**/
|
|
|
|
82,
|
2007-08-18 15:47:34 +00:00
|
|
|
/**/
|
|
|
|
81,
|
2007-08-18 15:00:42 +00:00
|
|
|
/**/
|
|
|
|
80,
|
2007-08-15 18:41:34 +00:00
|
|
|
/**/
|
|
|
|
79,
|
2007-08-15 18:08:50 +00:00
|
|
|
/**/
|
|
|
|
78,
|
2007-08-14 21:07:36 +00:00
|
|
|
/**/
|
|
|
|
77,
|
2007-08-14 20:54:49 +00:00
|
|
|
/**/
|
|
|
|
76,
|
2007-08-14 20:41:13 +00:00
|
|
|
/**/
|
|
|
|
75,
|
2007-08-14 20:29:31 +00:00
|
|
|
/**/
|
|
|
|
74,
|
2007-08-14 20:16:42 +00:00
|
|
|
/**/
|
|
|
|
73,
|
2007-08-14 15:55:42 +00:00
|
|
|
/**/
|
|
|
|
72,
|
2007-08-14 15:29:16 +00:00
|
|
|
/**/
|
|
|
|
71,
|
2007-08-14 14:57:55 +00:00
|
|
|
/**/
|
|
|
|
70,
|
2007-08-14 13:00:40 +00:00
|
|
|
/**/
|
|
|
|
69,
|
2007-08-12 14:55:56 +00:00
|
|
|
/**/
|
|
|
|
68,
|
2007-08-12 14:38:46 +00:00
|
|
|
/**/
|
|
|
|
67,
|
2007-08-12 13:51:26 +00:00
|
|
|
/**/
|
|
|
|
66,
|
2007-08-12 13:25:01 +00:00
|
|
|
/**/
|
|
|
|
65,
|
2007-08-11 20:24:10 +00:00
|
|
|
/**/
|
|
|
|
64,
|
2007-08-11 14:00:30 +00:00
|
|
|
/**/
|
|
|
|
63,
|
2007-08-11 12:32:57 +00:00
|
|
|
/**/
|
|
|
|
62,
|
2007-08-11 11:58:23 +00:00
|
|
|
/**/
|
|
|
|
61,
|
2007-08-11 11:39:45 +00:00
|
|
|
/**/
|
|
|
|
60,
|
2007-08-10 19:33:47 +00:00
|
|
|
/**/
|
|
|
|
59,
|
2007-08-08 20:49:37 +00:00
|
|
|
/**/
|
|
|
|
58,
|
2007-08-08 19:42:05 +00:00
|
|
|
/**/
|
|
|
|
57,
|
2007-08-07 20:00:31 +00:00
|
|
|
/**/
|
|
|
|
56,
|
2007-08-06 20:28:43 +00:00
|
|
|
/**/
|
|
|
|
55,
|
2007-08-05 18:10:54 +00:00
|
|
|
/**/
|
|
|
|
54,
|
2007-08-05 17:20:43 +00:00
|
|
|
/**/
|
|
|
|
53,
|
2007-08-05 16:49:43 +00:00
|
|
|
/**/
|
|
|
|
52,
|
2007-08-05 16:33:12 +00:00
|
|
|
/**/
|
|
|
|
51,
|
2007-08-04 10:14:52 +00:00
|
|
|
/**/
|
|
|
|
50,
|
2007-08-03 20:02:28 +00:00
|
|
|
/**/
|
|
|
|
49,
|
2007-08-02 21:00:50 +00:00
|
|
|
/**/
|
|
|
|
48,
|
2007-08-01 13:47:46 +00:00
|
|
|
/**/
|
|
|
|
47,
|
2007-07-30 20:32:53 +00:00
|
|
|
/**/
|
|
|
|
46,
|
2007-07-30 20:00:38 +00:00
|
|
|
/**/
|
|
|
|
45,
|
2007-07-29 13:03:35 +00:00
|
|
|
/**/
|
|
|
|
44,
|
2007-07-28 12:21:47 +00:00
|
|
|
/**/
|
|
|
|
43,
|
2007-07-27 19:33:14 +00:00
|
|
|
/**/
|
|
|
|
42,
|
2007-07-26 21:11:52 +00:00
|
|
|
/**/
|
|
|
|
41,
|
2007-07-26 20:58:42 +00:00
|
|
|
/**/
|
|
|
|
40,
|
2007-07-25 20:56:39 +00:00
|
|
|
/**/
|
|
|
|
39,
|
2007-07-24 13:26:15 +00:00
|
|
|
/**/
|
|
|
|
38,
|
2007-07-24 12:58:01 +00:00
|
|
|
/**/
|
|
|
|
37,
|
2007-07-24 12:34:30 +00:00
|
|
|
/**/
|
|
|
|
36,
|
2007-07-24 09:16:38 +00:00
|
|
|
/**/
|
|
|
|
35,
|
2007-07-24 08:45:13 +00:00
|
|
|
/**/
|
|
|
|
34,
|
2007-07-24 07:51:18 +00:00
|
|
|
/**/
|
|
|
|
33,
|
2007-07-17 16:15:36 +00:00
|
|
|
/**/
|
|
|
|
32,
|
2007-07-17 14:32:23 +00:00
|
|
|
/**/
|
|
|
|
31,
|
2007-07-17 12:33:46 +00:00
|
|
|
/**/
|
|
|
|
30,
|
2007-07-16 18:39:49 +00:00
|
|
|
/**/
|
|
|
|
29,
|
2007-07-10 15:26:20 +00:00
|
|
|
/**/
|
|
|
|
28,
|
2007-07-10 15:10:54 +00:00
|
|
|
/**/
|
|
|
|
27,
|
2007-07-10 12:03:33 +00:00
|
|
|
/**/
|
|
|
|
26,
|
2007-07-10 11:28:55 +00:00
|
|
|
/**/
|
|
|
|
25,
|
2007-07-10 11:09:36 +00:00
|
|
|
/**/
|
|
|
|
24,
|
2007-07-10 10:38:02 +00:00
|
|
|
/**/
|
|
|
|
23,
|
2007-07-07 11:58:28 +00:00
|
|
|
/**/
|
|
|
|
22,
|
2007-07-06 17:43:08 +00:00
|
|
|
/**/
|
|
|
|
21,
|
2007-07-05 08:11:42 +00:00
|
|
|
/**/
|
|
|
|
20,
|
2007-07-05 07:54:17 +00:00
|
|
|
/**/
|
|
|
|
19,
|
2007-06-28 20:18:51 +00:00
|
|
|
/**/
|
|
|
|
18,
|
2007-06-28 20:02:32 +00:00
|
|
|
/**/
|
|
|
|
17,
|
2007-06-28 19:33:43 +00:00
|
|
|
/**/
|
|
|
|
16,
|
2007-06-28 11:07:21 +00:00
|
|
|
/**/
|
|
|
|
15,
|
2007-06-28 10:49:22 +00:00
|
|
|
/**/
|
|
|
|
14,
|
2007-06-28 10:03:45 +00:00
|
|
|
/**/
|
|
|
|
13,
|
2007-06-19 18:52:53 +00:00
|
|
|
/**/
|
|
|
|
12,
|
2007-06-19 18:27:18 +00:00
|
|
|
/**/
|
|
|
|
11,
|
2007-06-19 16:03:50 +00:00
|
|
|
/**/
|
|
|
|
10,
|
2007-06-19 15:44:58 +00:00
|
|
|
/**/
|
|
|
|
9,
|
2007-06-19 15:31:05 +00:00
|
|
|
/**/
|
|
|
|
8,
|
2007-06-19 14:29:43 +00:00
|
|
|
/**/
|
|
|
|
7,
|
2007-06-19 13:36:52 +00:00
|
|
|
/**/
|
|
|
|
6,
|
2007-06-19 10:56:05 +00:00
|
|
|
/**/
|
|
|
|
5,
|
2007-06-19 09:51:25 +00:00
|
|
|
/**/
|
|
|
|
4,
|
2007-06-19 08:06:18 +00:00
|
|
|
/**/
|
|
|
|
3,
|
2007-05-15 07:12:25 +00:00
|
|
|
/**/
|
|
|
|
2,
|
2007-05-14 17:38:30 +00:00
|
|
|
/**/
|
|
|
|
1,
|
2004-06-13 20:20:40 +00:00
|
|
|
/**/
|
|
|
|
0
|
|
|
|
};
|
|
|
|
|
|
|
|
int
|
|
|
|
highest_patch()
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
int h = 0;
|
|
|
|
|
|
|
|
for (i = 0; included_patches[i] != 0; ++i)
|
|
|
|
if (included_patches[i] > h)
|
|
|
|
h = included_patches[i];
|
|
|
|
return h;
|
|
|
|
}
|
|
|
|
|
|
|
|
#if defined(FEAT_EVAL) || defined(PROTO)
|
|
|
|
/*
|
|
|
|
* Return TRUE if patch "n" has been included.
|
|
|
|
*/
|
|
|
|
int
|
|
|
|
has_patch(n)
|
|
|
|
int n;
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for (i = 0; included_patches[i] != 0; ++i)
|
|
|
|
if (included_patches[i] == n)
|
|
|
|
return TRUE;
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void
|
|
|
|
ex_version(eap)
|
|
|
|
exarg_T *eap;
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
* Ignore a ":version 9.99" command.
|
|
|
|
*/
|
|
|
|
if (*eap->arg == NUL)
|
|
|
|
{
|
|
|
|
msg_putchar('\n');
|
|
|
|
list_version();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
list_version()
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
int first;
|
|
|
|
char *s = "";
|
|
|
|
|
|
|
|
/*
|
|
|
|
* When adding features here, don't forget to update the list of
|
|
|
|
* internal variables in eval.c!
|
|
|
|
*/
|
|
|
|
MSG(longVersion);
|
|
|
|
#ifdef WIN3264
|
|
|
|
# ifdef FEAT_GUI_W32
|
|
|
|
# if defined(_MSC_VER) && (_MSC_VER <= 1010)
|
|
|
|
/* Only MS VC 4.1 and earlier can do Win32s */
|
|
|
|
MSG_PUTS(_("\nMS-Windows 16/32 bit GUI version"));
|
|
|
|
# else
|
2006-10-03 14:30:41 +00:00
|
|
|
# ifdef _WIN64
|
|
|
|
MSG_PUTS(_("\nMS-Windows 64 bit GUI version"));
|
|
|
|
# else
|
2004-06-13 20:20:40 +00:00
|
|
|
MSG_PUTS(_("\nMS-Windows 32 bit GUI version"));
|
2006-10-03 14:30:41 +00:00
|
|
|
# endif
|
2004-06-13 20:20:40 +00:00
|
|
|
# endif
|
|
|
|
if (gui_is_win32s())
|
|
|
|
MSG_PUTS(_(" in Win32s mode"));
|
|
|
|
# ifdef FEAT_OLE
|
|
|
|
MSG_PUTS(_(" with OLE support"));
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
MSG_PUTS(_("\nMS-Windows 32 bit console version"));
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef WIN16
|
|
|
|
MSG_PUTS(_("\nMS-Windows 16 bit version"));
|
|
|
|
#endif
|
|
|
|
#ifdef MSDOS
|
|
|
|
# ifdef DJGPP
|
|
|
|
MSG_PUTS(_("\n32 bit MS-DOS version"));
|
|
|
|
# else
|
|
|
|
MSG_PUTS(_("\n16 bit MS-DOS version"));
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef MACOS
|
|
|
|
# ifdef MACOS_X
|
|
|
|
# ifdef MACOS_X_UNIX
|
|
|
|
MSG_PUTS(_("\nMacOS X (unix) version"));
|
|
|
|
# else
|
|
|
|
MSG_PUTS(_("\nMacOS X version"));
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
MSG_PUTS(_("\nMacOS version"));
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef RISCOS
|
|
|
|
MSG_PUTS(_("\nRISC OS version"));
|
|
|
|
#endif
|
|
|
|
#ifdef VMS
|
|
|
|
MSG_PUTS("\nOpenVMS version");
|
2006-11-28 16:43:58 +00:00
|
|
|
# ifdef HAVE_PATHDEF
|
|
|
|
if (*compiled_arch != NUL)
|
|
|
|
{
|
|
|
|
MSG_PUTS(" - ");
|
|
|
|
MSG_PUTS(compiled_arch);
|
|
|
|
}
|
|
|
|
# endif
|
|
|
|
|
2004-06-13 20:20:40 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Print the list of patch numbers if there is at least one. */
|
|
|
|
/* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */
|
|
|
|
if (included_patches[0] != 0)
|
|
|
|
{
|
|
|
|
MSG_PUTS(_("\nIncluded patches: "));
|
|
|
|
first = -1;
|
|
|
|
/* find last one */
|
|
|
|
for (i = 0; included_patches[i] != 0; ++i)
|
|
|
|
;
|
|
|
|
while (--i >= 0)
|
|
|
|
{
|
|
|
|
if (first < 0)
|
|
|
|
first = included_patches[i];
|
|
|
|
if (i == 0 || included_patches[i - 1] != included_patches[i] + 1)
|
|
|
|
{
|
|
|
|
MSG_PUTS(s);
|
|
|
|
s = ", ";
|
|
|
|
msg_outnum((long)first);
|
|
|
|
if (first != included_patches[i])
|
|
|
|
{
|
|
|
|
MSG_PUTS("-");
|
|
|
|
msg_outnum((long)included_patches[i]);
|
|
|
|
}
|
|
|
|
first = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#ifdef MODIFIED_BY
|
|
|
|
MSG_PUTS("\n");
|
|
|
|
MSG_PUTS(_("Modified by "));
|
|
|
|
MSG_PUTS(MODIFIED_BY);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef HAVE_PATHDEF
|
|
|
|
if (*compiled_user != NUL || *compiled_sys != NUL)
|
|
|
|
{
|
|
|
|
MSG_PUTS(_("\nCompiled "));
|
|
|
|
if (*compiled_user != NUL)
|
|
|
|
{
|
|
|
|
MSG_PUTS(_("by "));
|
|
|
|
MSG_PUTS(compiled_user);
|
|
|
|
}
|
|
|
|
if (*compiled_sys != NUL)
|
|
|
|
{
|
|
|
|
MSG_PUTS("@");
|
|
|
|
MSG_PUTS(compiled_sys);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef FEAT_HUGE
|
|
|
|
MSG_PUTS(_("\nHuge version "));
|
|
|
|
#else
|
|
|
|
# ifdef FEAT_BIG
|
|
|
|
MSG_PUTS(_("\nBig version "));
|
|
|
|
# else
|
|
|
|
# ifdef FEAT_NORMAL
|
|
|
|
MSG_PUTS(_("\nNormal version "));
|
|
|
|
# else
|
|
|
|
# ifdef FEAT_SMALL
|
|
|
|
MSG_PUTS(_("\nSmall version "));
|
|
|
|
# else
|
|
|
|
MSG_PUTS(_("\nTiny version "));
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifndef FEAT_GUI
|
|
|
|
MSG_PUTS(_("without GUI."));
|
|
|
|
#else
|
|
|
|
# ifdef FEAT_GUI_GTK
|
|
|
|
# ifdef FEAT_GUI_GNOME
|
|
|
|
# ifdef HAVE_GTK2
|
|
|
|
MSG_PUTS(_("with GTK2-GNOME GUI."));
|
|
|
|
# else
|
|
|
|
MSG_PUTS(_("with GTK-GNOME GUI."));
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
# ifdef HAVE_GTK2
|
|
|
|
MSG_PUTS(_("with GTK2 GUI."));
|
|
|
|
# else
|
|
|
|
MSG_PUTS(_("with GTK GUI."));
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
# ifdef FEAT_GUI_MOTIF
|
|
|
|
MSG_PUTS(_("with X11-Motif GUI."));
|
|
|
|
# else
|
|
|
|
# ifdef FEAT_GUI_ATHENA
|
|
|
|
# ifdef FEAT_GUI_NEXTAW
|
|
|
|
MSG_PUTS(_("with X11-neXtaw GUI."));
|
|
|
|
# else
|
|
|
|
MSG_PUTS(_("with X11-Athena GUI."));
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
# ifdef FEAT_GUI_PHOTON
|
|
|
|
MSG_PUTS(_("with Photon GUI."));
|
|
|
|
# else
|
|
|
|
# if defined(MSWIN)
|
|
|
|
MSG_PUTS(_("with GUI."));
|
|
|
|
# else
|
|
|
|
# if defined (TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON
|
|
|
|
MSG_PUTS(_("with Carbon GUI."));
|
|
|
|
# else
|
|
|
|
# if defined (TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX
|
|
|
|
MSG_PUTS(_("with Cocoa GUI."));
|
|
|
|
# else
|
|
|
|
# if defined (MACOS)
|
|
|
|
MSG_PUTS(_("with (classic) GUI."));
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
version_msg(_(" Features included (+) or not (-):\n"));
|
|
|
|
|
|
|
|
/* print all the features */
|
|
|
|
for (i = 0; features[i] != NULL; ++i)
|
|
|
|
{
|
|
|
|
version_msg(features[i]);
|
|
|
|
if (msg_col > 0)
|
|
|
|
version_msg(" ");
|
|
|
|
}
|
|
|
|
|
|
|
|
version_msg("\n");
|
|
|
|
#ifdef SYS_VIMRC_FILE
|
|
|
|
version_msg(_(" system vimrc file: \""));
|
|
|
|
version_msg(SYS_VIMRC_FILE);
|
|
|
|
version_msg("\"\n");
|
|
|
|
#endif
|
|
|
|
#ifdef USR_VIMRC_FILE
|
|
|
|
version_msg(_(" user vimrc file: \""));
|
|
|
|
version_msg(USR_VIMRC_FILE);
|
|
|
|
version_msg("\"\n");
|
|
|
|
#endif
|
|
|
|
#ifdef USR_VIMRC_FILE2
|
|
|
|
version_msg(_(" 2nd user vimrc file: \""));
|
|
|
|
version_msg(USR_VIMRC_FILE2);
|
|
|
|
version_msg("\"\n");
|
|
|
|
#endif
|
|
|
|
#ifdef USR_VIMRC_FILE3
|
|
|
|
version_msg(_(" 3rd user vimrc file: \""));
|
|
|
|
version_msg(USR_VIMRC_FILE3);
|
|
|
|
version_msg("\"\n");
|
|
|
|
#endif
|
|
|
|
#ifdef USR_EXRC_FILE
|
|
|
|
version_msg(_(" user exrc file: \""));
|
|
|
|
version_msg(USR_EXRC_FILE);
|
|
|
|
version_msg("\"\n");
|
|
|
|
#endif
|
|
|
|
#ifdef USR_EXRC_FILE2
|
|
|
|
version_msg(_(" 2nd user exrc file: \""));
|
|
|
|
version_msg(USR_EXRC_FILE2);
|
|
|
|
version_msg("\"\n");
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_GUI
|
|
|
|
# ifdef SYS_GVIMRC_FILE
|
|
|
|
version_msg(_(" system gvimrc file: \""));
|
|
|
|
version_msg(SYS_GVIMRC_FILE);
|
|
|
|
version_msg("\"\n");
|
|
|
|
# endif
|
|
|
|
version_msg(_(" user gvimrc file: \""));
|
|
|
|
version_msg(USR_GVIMRC_FILE);
|
|
|
|
version_msg("\"\n");
|
|
|
|
# ifdef USR_GVIMRC_FILE2
|
|
|
|
version_msg(_("2nd user gvimrc file: \""));
|
|
|
|
version_msg(USR_GVIMRC_FILE2);
|
|
|
|
version_msg("\"\n");
|
|
|
|
# endif
|
|
|
|
# ifdef USR_GVIMRC_FILE3
|
|
|
|
version_msg(_("3rd user gvimrc file: \""));
|
|
|
|
version_msg(USR_GVIMRC_FILE3);
|
|
|
|
version_msg("\"\n");
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef FEAT_GUI
|
|
|
|
# ifdef SYS_MENU_FILE
|
|
|
|
version_msg(_(" system menu file: \""));
|
|
|
|
version_msg(SYS_MENU_FILE);
|
|
|
|
version_msg("\"\n");
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_PATHDEF
|
|
|
|
if (*default_vim_dir != NUL)
|
|
|
|
{
|
|
|
|
version_msg(_(" fall-back for $VIM: \""));
|
|
|
|
version_msg((char *)default_vim_dir);
|
|
|
|
version_msg("\"\n");
|
|
|
|
}
|
|
|
|
if (*default_vimruntime_dir != NUL)
|
|
|
|
{
|
|
|
|
version_msg(_(" f-b for $VIMRUNTIME: \""));
|
|
|
|
version_msg((char *)default_vimruntime_dir);
|
|
|
|
version_msg("\"\n");
|
|
|
|
}
|
|
|
|
version_msg(_("Compilation: "));
|
|
|
|
version_msg((char *)all_cflags);
|
|
|
|
version_msg("\n");
|
|
|
|
#ifdef VMS
|
|
|
|
if (*compiler_version != NUL)
|
|
|
|
{
|
|
|
|
version_msg(_("Compiler: "));
|
|
|
|
version_msg((char *)compiler_version);
|
|
|
|
version_msg("\n");
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
version_msg(_("Linking: "));
|
|
|
|
version_msg((char *)all_lflags);
|
|
|
|
#endif
|
|
|
|
#ifdef DEBUG
|
|
|
|
version_msg("\n");
|
|
|
|
version_msg(_(" DEBUG BUILD"));
|
|
|
|
#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 = (int)STRLEN(s);
|
|
|
|
|
|
|
|
if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns
|
|
|
|
&& *s != '\n')
|
|
|
|
msg_putchar('\n');
|
|
|
|
if (!got_int)
|
|
|
|
MSG_PUTS(s);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void do_intro_line __ARGS((int row, char_u *mesg, int add_version, int attr));
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Give an introductory message about Vim.
|
|
|
|
* Only used when starting Vim on an empty file, without a file name.
|
|
|
|
* Or with the ":intro" command (for Sven :-).
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
intro_message(colon)
|
|
|
|
int colon; /* TRUE for ":intro" */
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
int row;
|
|
|
|
int blanklines;
|
|
|
|
int sponsor;
|
|
|
|
char *p;
|
|
|
|
static char *(lines[]) =
|
|
|
|
{
|
|
|
|
N_("VIM - Vi IMproved"),
|
|
|
|
"",
|
|
|
|
N_("version "),
|
|
|
|
N_("by Bram Moolenaar et al."),
|
|
|
|
#ifdef MODIFIED_BY
|
|
|
|
" ",
|
|
|
|
#endif
|
|
|
|
N_("Vim is open source and freely distributable"),
|
|
|
|
"",
|
|
|
|
N_("Help poor children in Uganda!"),
|
|
|
|
N_("type :help iccf<Enter> for information "),
|
|
|
|
"",
|
|
|
|
N_("type :q<Enter> to exit "),
|
|
|
|
N_("type :help<Enter> or <F1> for on-line help"),
|
2004-10-07 21:02:47 +00:00
|
|
|
N_("type :help version7<Enter> for version info"),
|
2004-06-13 20:20:40 +00:00
|
|
|
NULL,
|
|
|
|
"",
|
|
|
|
N_("Running in Vi compatible mode"),
|
|
|
|
N_("type :set nocp<Enter> for Vim defaults"),
|
|
|
|
N_("type :help cp-default<Enter> for info on this"),
|
|
|
|
};
|
|
|
|
#ifdef FEAT_GUI
|
|
|
|
static char *(gui_lines[]) =
|
|
|
|
{
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
#ifdef MODIFIED_BY
|
|
|
|
NULL,
|
|
|
|
#endif
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
N_("menu Help->Orphans for information "),
|
|
|
|
NULL,
|
|
|
|
N_("Running modeless, typed text is inserted"),
|
|
|
|
N_("menu Edit->Global Settings->Toggle Insert Mode "),
|
|
|
|
N_(" for two modes "),
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
N_("menu Edit->Global Settings->Toggle Vi Compatible"),
|
|
|
|
N_(" for Vim defaults "),
|
|
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* blanklines = screen height - # message lines */
|
|
|
|
blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1);
|
|
|
|
if (!p_cp)
|
|
|
|
blanklines += 4; /* add 4 for not showing "Vi compatible" message */
|
|
|
|
#if defined(WIN3264) && !defined(FEAT_GUI_W32)
|
|
|
|
if (mch_windows95())
|
|
|
|
blanklines -= 3; /* subtract 3 for showing "Windows 95" message */
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef FEAT_WINDOWS
|
|
|
|
/* Don't overwrite a statusline. Depends on 'cmdheight'. */
|
|
|
|
if (p_ls > 1)
|
|
|
|
blanklines -= Rows - topframe->fr_height;
|
|
|
|
#endif
|
|
|
|
if (blanklines < 0)
|
|
|
|
blanklines = 0;
|
|
|
|
|
|
|
|
/* Show the sponsor and register message one out of four times, the Uganda
|
|
|
|
* message two out of four times. */
|
2005-12-22 22:47:02 +00:00
|
|
|
sponsor = (int)time(NULL);
|
2004-06-13 20:20:40 +00:00
|
|
|
sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0);
|
|
|
|
|
|
|
|
/* start displaying the message lines after half of the blank lines */
|
|
|
|
row = blanklines / 2;
|
|
|
|
if ((row >= 2 && Columns >= 50) || colon)
|
|
|
|
{
|
|
|
|
for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i)
|
|
|
|
{
|
|
|
|
p = lines[i];
|
|
|
|
#ifdef FEAT_GUI
|
|
|
|
if (p_im && gui.in_use && gui_lines[i] != NULL)
|
|
|
|
p = gui_lines[i];
|
|
|
|
#endif
|
|
|
|
if (p == NULL)
|
|
|
|
{
|
|
|
|
if (!p_cp)
|
|
|
|
break;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
if (sponsor != 0)
|
|
|
|
{
|
|
|
|
if (strstr(p, "children") != NULL)
|
|
|
|
p = sponsor < 0
|
|
|
|
? N_("Sponsor Vim development!")
|
|
|
|
: N_("Become a registered Vim user!");
|
|
|
|
else if (strstr(p, "iccf") != NULL)
|
|
|
|
p = sponsor < 0
|
|
|
|
? N_("type :help sponsor<Enter> for information ")
|
|
|
|
: N_("type :help register<Enter> for information ");
|
|
|
|
else if (strstr(p, "Orphans") != NULL)
|
|
|
|
p = N_("menu Help->Sponsor/Register for information ");
|
|
|
|
}
|
|
|
|
if (*p != NUL)
|
|
|
|
do_intro_line(row, (char_u *)_(p), i == 2, 0);
|
|
|
|
++row;
|
|
|
|
}
|
|
|
|
#if defined(WIN3264) && !defined(FEAT_GUI_W32)
|
|
|
|
if (mch_windows95())
|
|
|
|
{
|
|
|
|
do_intro_line(++row,
|
|
|
|
(char_u *)_("WARNING: Windows 95/98/ME detected"),
|
|
|
|
FALSE, hl_attr(HLF_E));
|
|
|
|
do_intro_line(++row,
|
|
|
|
(char_u *)_("type :help windows95<Enter> for info on this"),
|
|
|
|
FALSE, 0);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Make the wait-return message appear just below the text. */
|
|
|
|
if (colon)
|
|
|
|
msg_row = row;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
do_intro_line(row, mesg, add_version, attr)
|
|
|
|
int row;
|
|
|
|
char_u *mesg;
|
|
|
|
int add_version;
|
|
|
|
int attr;
|
|
|
|
{
|
|
|
|
char_u vers[20];
|
|
|
|
int col;
|
|
|
|
char_u *p;
|
|
|
|
int l;
|
|
|
|
int clen;
|
|
|
|
#ifdef MODIFIED_BY
|
|
|
|
# define MODBY_LEN 150
|
|
|
|
char_u modby[MODBY_LEN];
|
|
|
|
|
|
|
|
if (*mesg == ' ')
|
|
|
|
{
|
2005-07-18 21:58:11 +00:00
|
|
|
vim_strncpy(modby, _("Modified by "), MODBY_LEN - 1);
|
2004-06-13 20:20:40 +00:00
|
|
|
l = STRLEN(modby);
|
2005-07-18 21:58:11 +00:00
|
|
|
vim_strncpy(modby + l, MODIFIED_BY, MODBY_LEN - l - 1);
|
2004-06-13 20:20:40 +00:00
|
|
|
mesg = modby;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Center the message horizontally. */
|
|
|
|
col = vim_strsize(mesg);
|
|
|
|
if (add_version)
|
|
|
|
{
|
|
|
|
STRCPY(vers, mediumVersion);
|
|
|
|
if (highest_patch())
|
|
|
|
{
|
|
|
|
/* Check for 9.9x or 9.9xx, alpha/beta version */
|
|
|
|
if (isalpha((int)mediumVersion[3]))
|
|
|
|
{
|
|
|
|
if (isalpha((int)mediumVersion[4]))
|
|
|
|
sprintf((char *)vers + 5, ".%d%s", highest_patch(),
|
|
|
|
mediumVersion + 5);
|
|
|
|
else
|
|
|
|
sprintf((char *)vers + 4, ".%d%s", highest_patch(),
|
|
|
|
mediumVersion + 4);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
sprintf((char *)vers + 3, ".%d", highest_patch());
|
|
|
|
}
|
|
|
|
col += (int)STRLEN(vers);
|
|
|
|
}
|
|
|
|
col = (Columns - col) / 2;
|
|
|
|
if (col < 0)
|
|
|
|
col = 0;
|
|
|
|
|
|
|
|
/* Split up in parts to highlight <> items differently. */
|
|
|
|
for (p = mesg; *p != NUL; p += l)
|
|
|
|
{
|
|
|
|
clen = 0;
|
|
|
|
for (l = 0; p[l] != NUL
|
|
|
|
&& (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l)
|
|
|
|
{
|
|
|
|
#ifdef FEAT_MBYTE
|
|
|
|
if (has_mbyte)
|
|
|
|
{
|
|
|
|
clen += ptr2cells(p + l);
|
2005-08-10 21:07:57 +00:00
|
|
|
l += (*mb_ptr2len)(p + l) - 1;
|
2004-06-13 20:20:40 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
#endif
|
|
|
|
clen += byte2cells(p[l]);
|
|
|
|
}
|
|
|
|
screen_puts_len(p, l, row, col, *p == '<' ? hl_attr(HLF_8) : attr);
|
|
|
|
col += clen;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Add the version number to the version line. */
|
|
|
|
if (add_version)
|
|
|
|
screen_puts(vers, row, col, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* ":intro": clear screen, display intro screen and wait for return.
|
|
|
|
*/
|
|
|
|
/*ARGSUSED*/
|
|
|
|
void
|
|
|
|
ex_intro(eap)
|
|
|
|
exarg_T *eap;
|
|
|
|
{
|
|
|
|
screenclear();
|
|
|
|
intro_message(TRUE);
|
|
|
|
wait_return(TRUE);
|
|
|
|
}
|