version.c
上传用户:gddssl
上传日期:2007-01-06
资源大小:1003k
文件大小:9k
源码类别:

编辑器/阅读器

开发平台:

DOS

  1. /* vi:set ts=8 sts=4 sw=4:
  2.  * vi:set comments=sbl:* -,mb:*,el:* -,sr:/*,mb:*,el:*/,fb:- :
  3.  *
  4.  * VIM - Vi IMproved by Bram Moolenaar
  5.  *
  6.  * Do ":help uganda"  in Vim to read copying and usage conditions.
  7.  * Do ":help credits" in Vim to see a list of people who contributed.
  8.  */
  9. #include "vim.h"
  10. /*
  11.  * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
  12.  * It has been changed beyond recognition since then.
  13.  *
  14.  * Differences between version 4.x and 5.0, and between 5.0 and 5.1 can be
  15.  * found with ":help version5".
  16.  * Differences between version 3.0 and 4.x can be found with ":help version4".
  17.  * All the remarks about older versions have been removed, they are not very
  18.  * interesting.
  19.  */
  20. #include "version.h"
  21. char *Version = VIM_VERSION_SHORT;
  22. char *mediumVersion = VIM_VERSION_MEDIUM;
  23. #ifdef HAVE_DATE_TIME
  24. char *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")";
  25. #else
  26. char *longVersion = VIM_VERSION_LONG;
  27. #endif
  28. static void version_msg __ARGS((char *s));
  29.     int
  30. get_version()
  31. {
  32.     return (VIM_VERSION_MAJOR * 100 + VIM_VERSION_MINOR);
  33. }
  34.     void
  35. do_version(arg)
  36.     char_u  *arg;
  37. {
  38.     /*
  39.      * Ignore a ":version 9.99" command.
  40.      */
  41.     if (*arg == NUL)
  42.     {
  43. /*
  44.  * When adding features here, don't forget to update the list of
  45.  * internal variables in eval.c!
  46.  */
  47. msg_putchar('n');
  48. MSG(longVersion);
  49. #ifdef WIN32
  50. # ifdef USE_GUI_WIN32
  51. #  if (_MSC_VER <= 1010)    /* Only MS VC 4.1 and earlier can do Win32s */
  52. MSG_PUTS("nMS-Windows 16/32 bit GUI version");
  53. #  else
  54. MSG_PUTS("nMS-Windows 32 bit GUI version");
  55. #  endif
  56. if (gui_is_win32s())
  57.     MSG_PUTS(" in Win32s mode");
  58. # ifdef HAVE_OLE
  59. MSG_PUTS(" with OLE support");
  60. # endif
  61. # else
  62. MSG_PUTS("nMS-Windows 32 bit console version");
  63. # endif
  64. #endif
  65. #ifdef MSDOS
  66. # ifdef DJGPP
  67. MSG_PUTS("n32 bit MS-DOS version");
  68. # else
  69. MSG_PUTS("n16 bit MS-DOS version");
  70. # endif
  71. #endif
  72. #ifdef macintosh
  73. MSG_PUTS("nMacOS version");
  74. #endif
  75. #ifdef RISCOS
  76. MSG_PUTS("nRISC OS version");
  77. #endif
  78. MSG_PUTS("nCompiled with (+) or without (-):n");
  79. #ifdef AMIGA /* only for Amiga systems */
  80. # ifdef NO_ARP
  81. version_msg("-ARP ");
  82. # else
  83. version_msg("+ARP ");
  84. # endif
  85. #endif
  86. #ifdef AUTOCMD
  87. version_msg("+autocmd ");
  88. #else
  89. version_msg("-autocmd ");
  90. #endif
  91. #ifdef USE_BROWSE
  92. version_msg("+browse ");
  93. #else
  94. version_msg("-browse ");
  95. #endif
  96. #ifdef NO_BUILTIN_TCAPS
  97. version_msg("-builtin_terms ");
  98. #endif
  99. #ifdef SOME_BUILTIN_TCAPS
  100. version_msg("+builtin_terms ");
  101. #endif
  102. #ifdef ALL_BUILTIN_TCAPS
  103. version_msg("++builtin_terms ");
  104. #endif
  105. #ifdef CINDENT
  106. version_msg("+cindent ");
  107. #else
  108. version_msg("-cindent ");
  109. #endif
  110. #ifdef USE_CSCOPE
  111. version_msg("+cscope ");
  112. #else
  113. version_msg("-cscope ");
  114. #endif
  115. #if defined(CON_DIALOG) && defined(GUI_DIALOG)
  116. version_msg("+dialog_con_gui ");
  117. #else
  118. # if defined(CON_DIALOG)
  119. version_msg("+dialog_con ");
  120. # else
  121. #  if defined(GUI_DIALOG)
  122. version_msg("+dialog_gui ");
  123. #  else
  124. version_msg("-dialog ");
  125. #  endif
  126. # endif
  127. #endif
  128. #ifdef DIGRAPHS
  129. version_msg("+digraphs ");
  130. #else
  131. version_msg("-digraphs ");
  132. #endif
  133. #ifdef EMACS_TAGS
  134. version_msg("+emacs_tags ");
  135. #else
  136. version_msg("-emacs_tags ");
  137. #endif
  138. #ifdef WANT_EVAL
  139. version_msg("+eval ");
  140. #else
  141. version_msg("-eval ");
  142. #endif
  143. #ifdef EX_EXTRA
  144. version_msg("+ex_extra ");
  145. #else
  146. version_msg("-ex_extra ");
  147. #endif
  148. #ifdef EXTRA_SEARCH
  149. version_msg("+extra_search ");
  150. #else
  151. version_msg("-extra_search ");
  152. #endif
  153. #ifdef FKMAP
  154. version_msg("+farsi ");
  155. #else
  156. version_msg("-farsi ");
  157. #endif
  158. #ifdef FILE_IN_PATH
  159. version_msg("+file_in_path ");
  160. #else
  161. version_msg("-file_in_path ");
  162. #endif
  163. #ifdef WANT_FILETYPE
  164. version_msg("+filetype ");
  165. #else
  166. version_msg("-filetype ");
  167. #endif
  168. #ifdef FIND_IN_PATH
  169. version_msg("+find_in_path ");
  170. #else
  171. version_msg("-find_in_path ");
  172. #endif
  173.     /* only interesting on Unix systems */
  174. #if !defined(USE_SYSTEM) && defined(UNIX)
  175. version_msg("+fork() ");
  176. #endif
  177. #ifdef UNIX
  178. # ifdef USE_GUI_MOTIF
  179. version_msg("+GUI_Motif ");
  180. # else
  181. #  ifdef USE_GUI_ATHENA
  182. version_msg("+GUI_Athena ");
  183. #  else
  184. #   ifdef USE_GUI_BEOS
  185. version_msg("+GUI_BeOS ");
  186. #    else
  187. version_msg("-GUI ");
  188. #   endif
  189. #  endif
  190. # endif
  191. #endif
  192. #ifdef INSERT_EXPAND
  193. version_msg("+insert_expand ");
  194. #else
  195. version_msg("-insert_expand ");
  196. #endif
  197. #ifdef HAVE_LANGMAP
  198. version_msg("+langmap ");
  199. #else
  200. version_msg("-langmap ");
  201. #endif
  202. #ifdef LISPINDENT
  203. version_msg("+lispindent ");
  204. #else
  205. version_msg("-lispindent ");
  206. #endif
  207. #ifdef WANT_MODIFY_FNAME
  208. version_msg("+modify_fname ");
  209. #else
  210. version_msg("-modify_fname ");
  211. #endif
  212. #ifdef USE_MOUSE
  213. version_msg("+mouse ");
  214. # else
  215. version_msg("-mouse ");
  216. #endif
  217. #ifdef UNIX
  218. # ifdef DEC_MOUSE
  219. version_msg("+mouse_dec ");
  220. # else
  221. version_msg("-mouse_dec ");
  222. # endif
  223. # ifdef NETTERM_MOUSE
  224. version_msg("+mouse_netterm ");
  225. # else
  226. version_msg("-mouse_netterm ");
  227. # endif
  228. # ifdef XTERM_MOUSE
  229. version_msg("+mouse_xterm ");
  230. # else
  231. version_msg("-mouse_xterm ");
  232. # endif
  233. #endif
  234. #ifdef MULTI_BYTE_IME
  235. version_msg("+multi_byte_ime ");
  236. #else
  237. # ifdef MULTI_BYTE
  238. version_msg("+multi_byte ");
  239. # else
  240. version_msg("-multi_byte ");
  241. # endif
  242. #endif
  243. #ifdef USE_GUI_WIN32
  244. # ifdef HAVE_OLE
  245. version_msg("+ole ");
  246. # else
  247. version_msg("-ole ");
  248. # endif
  249. #endif
  250. #ifdef HAVE_PERL_INTERP
  251. version_msg("+perl ");
  252. #else
  253. version_msg("-perl ");
  254. #endif
  255. #ifdef QUICKFIX
  256. version_msg("+quickfix ");
  257. #else
  258. version_msg("-quickfix ");
  259. #endif
  260. #ifdef HAVE_PYTHON
  261. version_msg("+python ");
  262. #else
  263. version_msg("-python ");
  264. #endif
  265. #ifdef RIGHTLEFT
  266. version_msg("+rightleft ");
  267. #else
  268. version_msg("-rightleft ");
  269. #endif
  270. #ifdef SHOWCMD
  271. version_msg("+showcmd ");
  272. #else
  273. version_msg("-showcmd ");
  274. #endif
  275. #ifdef SMARTINDENT
  276. version_msg("+smartindent ");
  277. #else
  278. version_msg("-smartindent ");
  279. #endif
  280. #ifdef USE_SNIFF
  281. version_msg("+sniff ");
  282. #else
  283. version_msg("-sniff ");
  284. #endif
  285. #ifdef SYNTAX_HL
  286. version_msg("+syntax ");
  287. #else
  288. version_msg("-syntax ");
  289. #endif
  290.     /* only interesting on Unix systems */
  291. #if defined(USE_SYSTEM) && (defined(UNIX) || defined(__EMX__))
  292. version_msg("+system() ");
  293. #endif
  294. #ifdef BINARY_TAGS
  295. version_msg("+tag_binary ");
  296. #else
  297. version_msg("-tag_binary ");
  298. #endif
  299. #ifdef OLD_STATIC_TAGS
  300. version_msg("+tag_old_static ");
  301. #else
  302. version_msg("-tag_old_static ");
  303. #endif
  304. #ifdef TAG_ANY_WHITE
  305. version_msg("+tag_any_white ");
  306. #else
  307. version_msg("-tag_any_white ");
  308. #endif
  309. #ifdef HAVE_TCL
  310. version_msg("+tcl ");
  311. #else
  312. version_msg("-tcl ");
  313. #endif
  314. #if defined(UNIX) || defined(__EMX__)
  315. /* only Unix (or OS/2 with EMX!) can have terminfo instead of termcap */
  316. # ifdef TERMINFO
  317. version_msg("+terminfo ");
  318. # else
  319. version_msg("-terminfo ");
  320. # endif
  321. #else     /* unix always includes termcap support */
  322. # ifdef HAVE_TGETENT
  323. version_msg("+tgetent ");
  324. # else
  325. version_msg("-tgetent ");
  326. # endif
  327. #endif
  328. #ifdef TEXT_OBJECTS
  329. version_msg("+textobjects ");
  330. #else
  331. version_msg("-textobjects ");
  332. #endif
  333. #ifdef USER_COMMANDS
  334. version_msg("+user-commands ");
  335. #else
  336. version_msg("-user-commands ");
  337. #endif
  338. #ifdef VIMINFO
  339. version_msg("+viminfo ");
  340. #else
  341. version_msg("-viminfo ");
  342. #endif
  343. #ifdef WILDIGNORE
  344. version_msg("+wildignore ");
  345. #else
  346. version_msg("-wildignore ");
  347. #endif
  348. #ifdef WRITEBACKUP
  349. version_msg("+writebackup ");
  350. #else
  351. version_msg("-writebackup ");
  352. #endif
  353. #ifdef SAVE_XTERM_SCREEN
  354. version_msg("+xterm_save ");
  355. #else
  356. version_msg("-xterm_save ");
  357. #endif
  358. #ifdef UNIX
  359. # if defined(WANT_X11) && defined(HAVE_X11)
  360. version_msg("+X11 ");
  361. # else
  362. version_msg("-X11 ");
  363. # endif
  364. #endif
  365. msg_putchar('n');
  366. #ifdef SYS_VIMRC_FILE
  367. version_msg("   system vimrc file: "");
  368. version_msg(SYS_VIMRC_FILE);
  369. version_msg(""n");
  370. #endif
  371. #ifdef USR_VIMRC_FILE
  372. version_msg("     user vimrc file: "");
  373. version_msg(USR_VIMRC_FILE);
  374. version_msg(""n");
  375. #endif
  376. #ifdef USR_VIMRC_FILE2
  377. version_msg(" 2nd user vimrc file: "");
  378. version_msg(USR_VIMRC_FILE2);
  379. version_msg(""n");
  380. #endif
  381. #ifdef USR_EXRC_FILE
  382. version_msg("      user exrc file: "");
  383. version_msg(USR_EXRC_FILE);
  384. version_msg(""n");
  385. #endif
  386. #ifdef USR_EXRC_FILE2
  387. version_msg("  2nd user exrc file: "");
  388. version_msg(USR_EXRC_FILE2);
  389. version_msg(""n");
  390. #endif
  391. #ifdef USE_GUI
  392. # ifdef SYS_GVIMRC_FILE
  393. version_msg("  system gvimrc file: "");
  394. version_msg(SYS_GVIMRC_FILE);
  395. MSG_PUTS(""n");
  396. # endif
  397. version_msg("    user gvimrc file: "");
  398. version_msg(USR_GVIMRC_FILE);
  399. version_msg(""n");
  400. # ifdef USR_GVIMRC_FILE2
  401. version_msg("2nd user gvimrc file: "");
  402. version_msg(USR_GVIMRC_FILE2);
  403. version_msg(""n");
  404. # endif
  405. #endif
  406. #ifdef USE_GUI
  407. # ifdef SYS_MENU_FILE
  408. version_msg("    system menu file: "");
  409. version_msg(SYS_MENU_FILE);
  410. MSG_PUTS(""n");
  411. # endif
  412. #endif
  413. #ifdef HAVE_PATHDEF
  414. version_msg("    default for $VIM: "");
  415. version_msg((char *)default_vim_dir);
  416. MSG_PUTS(""n");
  417. version_msg("Compilation: ");
  418. version_msg((char *)all_cflags);
  419. msg_putchar('n');
  420. version_msg("Linking: ");
  421. version_msg((char *)all_lflags);
  422. #endif
  423. #ifdef DEBUG
  424. msg_putchar('n');
  425. version_msg("  DEBUG BUILD");
  426. #endif
  427.     }
  428. }
  429. /*
  430.  * Output a string for the version message.  If it's going to wrap, output a
  431.  * newline, unless the message is too long to fit on the screen anyway.
  432.  */
  433.     static void
  434. version_msg(s)
  435.     char *s;
  436. {
  437.     int len = strlen(s);
  438.     if (len < (int)Columns && msg_col + len >= (int)Columns)
  439. msg_putchar('n');
  440.     MSG_PUTS(s);
  441. }