changeset 12871:1a450ce6980c v8.0.1312

patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI commit https://github.com/vim/vim/commit/c3719bd87beca9f72d2e9f11e36d561c2c3b57b0 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Nov 18 22:13:31 2017 +0100 patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI Problem: balloon_show() only works in terminal when compiled with the GUI. Solution: Add FEAT_BEVAL_GUI and refactor to move common code out of the GUI specific file.
author Christian Brabandt <cb@256bit.org>
date Sat, 18 Nov 2017 22:15:05 +0100
parents 0469872186f5
children d92adf8c5630
files Filelist src/Make_cyg_ming.mak src/Make_mvc.mak src/Make_vms.mms src/Makefile src/beval.c src/beval.h src/evalfunc.c src/ex_cmds2.c src/feature.h src/getchar.c src/globals.h src/gui.c src/gui.h src/gui_athena.c src/gui_beval.c src/gui_beval.h src/gui_motif.c src/gui_w32.c src/gui_x11.c src/integration.c src/menu.c src/netbeans.c src/normal.c src/option.c src/option.h src/os_unix.c src/os_win32.c src/popupmnu.c src/proto/beval.pro src/proto/gui_beval.pro src/syntax.c src/ui.c src/version.c src/vim.h src/workshop.c
diffstat 36 files changed, 650 insertions(+), 585 deletions(-) [+]
line wrap: on
line diff
--- a/Filelist
+++ b/Filelist
@@ -12,6 +12,8 @@ SRC_ALL =	\
 		src/arabic.c \
 		src/arabic.h \
 		src/ascii.h \
+		src/beval.c \
+		src/beval.h \
 		src/blowfish.c \
 		src/buffer.c \
 		src/channel.c \
@@ -41,7 +43,6 @@ SRC_ALL =	\
 		src/gui.c \
 		src/gui.h \
 		src/gui_beval.c \
-		src/gui_beval.h \
 		src/hardcopy.c \
 		src/hashtab.c \
 		src/json.c \
--- a/src/Make_cyg_ming.mak
+++ b/src/Make_cyg_ming.mak
@@ -642,6 +642,7 @@ GUIOBJ =  $(OUTDIR)/gui.o $(OUTDIR)/gui_
 CUIOBJ = $(OUTDIR)/iscygpty.o
 OBJ = \
 	$(OUTDIR)/arabic.o \
+	$(OUTDIR)/beval.o \
 	$(OUTDIR)/blowfish.o \
 	$(OUTDIR)/buffer.o \
 	$(OUTDIR)/charset.o \
@@ -920,8 +921,8 @@ endif
 ###########################################################################
 INCL =	vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
 	keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
-	spell.h structs.h term.h $(NBDEBUG_INCL)
-GUI_INCL = gui.h gui_beval.h
+	spell.h structs.h term.h beval.h $(NBDEBUG_INCL)
+GUI_INCL = gui.h
 CUI_INCL = iscygpty.h
 
 $(OUTDIR)/if_python.o:	if_python.c if_py_both.h $(INCL)
@@ -946,6 +947,9 @@ CUI_INCL = iscygpty.h
 $(OUTDIR)/gui.o:	gui.c $(INCL) $(GUI_INCL)
 	$(CC) -c $(CFLAGS) gui.c -o $(OUTDIR)/gui.o
 
+$(OUTDIR)/beval.o:	beval.c $(INCL) $(GUI_INCL)
+	$(CC) -c $(CFLAGS) beval.c -o $(OUTDIR)/beval.o
+
 $(OUTDIR)/gui_beval.o:	gui_beval.c $(INCL) $(GUI_INCL)
 	$(CC) -c $(CFLAGS) gui_beval.c -o $(OUTDIR)/gui_beval.o
 
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -683,10 +683,11 @@ CFLAGS = $(CFLAGS) /Zl /MTd
 
 INCL =	vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
 	keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
-	spell.h structs.h term.h $(NBDEBUG_INCL)
+	spell.h structs.h term.h beval.h $(NBDEBUG_INCL)
 
 OBJ = \
 	$(OUTDIR)\arabic.obj \
+	$(OUTDIR)\beval.obj \
 	$(OUTDIR)\blowfish.obj \
 	$(OUTDIR)\buffer.obj \
 	$(OUTDIR)\charset.obj \
@@ -781,8 +782,7 @@ CFLAGS = $(CFLAGS) -DFEAT_GUI_W32
 RCFLAGS = $(RCFLAGS) -DFEAT_GUI_W32
 VIM = g$(VIM)
 GUI_INCL = \
-	gui.h \
-	gui_beval.h
+	gui.h
 GUI_OBJ = \
 	$(OUTDIR)\gui.obj \
 	$(OUTDIR)\gui_beval.obj \
@@ -1297,6 +1297,8 @@ testclean:
 
 $(OUTDIR)/arabic.obj:	$(OUTDIR) arabic.c  $(INCL)
 
+$(OUTDIR)/beval.obj:	$(OUTDIR) beval.c  $(INCL)
+
 $(OUTDIR)/blowfish.obj:	$(OUTDIR) blowfish.c  $(INCL)
 
 $(OUTDIR)/buffer.obj:	$(OUTDIR) buffer.c  $(INCL)
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -2,7 +2,7 @@
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change:  2016 Nov 04
+# Last change:  2017 Nov 18
 #
 # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
 # with MMS and MMK
@@ -299,7 +299,7 @@ ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEF
 ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \
 	   $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(RUBY_LIB)
 
-SRC =	arabic.c blowfish.c buffer.c charset.c crypt.c crypt_zip.c dict.c diff.c digraph.c edit.c eval.c evalfunc.c \
+SRC =	arabic.c beval.obj blowfish.c buffer.c charset.c crypt.c crypt_zip.c dict.c diff.c digraph.c edit.c eval.c evalfunc.c \
 	ex_cmds.c ex_cmds2.c ex_docmd.c ex_eval.c ex_getln.c if_cscope.c if_xcmdsrv.c farsi.c fileio.c fold.c getchar.c \
 	hardcopy.c hashtab.c json.c list.c main.c mark.c menu.c mbyte.c memfile.c memline.c message.c misc1.c \
 	misc2.c move.c normal.c ops.c option.c popupmnu.c quickfix.c regexp.c search.c sha256.c\
@@ -308,7 +308,7 @@ SRC =	arabic.c blowfish.c buffer.c chars
 	$(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) \
 	$(RUBY_SRC) $(HANGULIN_SRC) $(MZSCH_SRC)
 
-OBJ = 	arabic.obj blowfish.obj buffer.obj charset.obj crypt.obj crypt_zip.obj dict.obj diff.obj digraph.obj edit.obj eval.obj \
+OBJ = 	arabic.obj beval.obj blowfish.obj buffer.obj charset.obj crypt.obj crypt_zip.obj dict.obj diff.obj digraph.obj edit.obj eval.obj \
 	evalfunc.obj ex_cmds.obj ex_cmds2.obj ex_docmd.obj ex_eval.obj ex_getln.obj if_cscope.obj \
 	if_xcmdsrv.obj farsi.obj fileio.obj fold.obj getchar.obj hardcopy.obj hashtab.obj json.obj list.obj main.obj mark.obj \
 	menu.obj memfile.obj memline.obj message.obj misc1.obj misc2.obj \
@@ -490,266 +490,266 @@ arabic.obj : arabic.c vim.h
 blowfish.obj : blowfish.c vim.h
 buffer.obj : buffer.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h version.h
 charset.obj : charset.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 crypt.obj : crypt.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 crypt_zip.obj : crypt_zip.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 dict.obj : dict.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 diff.obj : diff.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 digraph.obj : digraph.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 edit.obj : edit.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 eval.obj : eval.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h version.h
 evalfunc.obj : evalfunc.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h version.h
 ex_cmds.obj : ex_cmds.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h version.h
 ex_cmds2.obj : ex_cmds2.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h version.h
 ex_docmd.obj : ex_docmd.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 ex_eval.obj : ex_eval.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 ex_getln.obj : ex_getln.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 farsi.obj : farsi.c vim.h
 fileio.obj : fileio.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 fold.obj : fold.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 getchar.obj : getchar.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 hardcopy.obj : hardcopy.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 hashtab.obj : hashtab.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 if_cscope.obj : if_cscope.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h if_cscope.h
 if_xcmdsrv.obj : if_xcmdsrv.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h version.h
 if_mzsch.obj : if_mzsch.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h [.proto]gui_beval.pro ex_cmds.h proto.h \
+ regexp.h gui.h beval.h [.proto]gui_beval.pro ex_cmds.h proto.h \
  globals.h farsi.h arabic.h if_mzsch.h 
 json.obj : json.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h version.h
 list.obj : list.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 main.obj : main.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h farsi.c arabic.c
 mark.obj : mark.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 memfile.obj : memfile.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 memline.obj : memline.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 menu.obj : menu.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 message.obj : message.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 misc1.obj : misc1.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h version.h
 misc2.obj : misc2.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 move.obj : move.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 mbyte.obj : mbyte.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 normal.obj : normal.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 ops.obj : ops.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 option.obj : option.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 os_unix.obj : os_unix.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h os_unixx.h
 os_vms.obj : os_vms.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h os_unixx.h
 pathdef.obj : pathdef.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 popupmnu.obj : popupmnu.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 quickfix.obj : quickfix.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 regexp.obj : regexp.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 screen.obj : screen.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 search.obj : search.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 sha256.obj : sha256.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 spell.obj : spell.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 spellfile.obj : spellfile.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 syntax.obj : syntax.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 tag.obj : tag.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 term.obj : term.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 termlib.obj : termlib.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 ui.obj : ui.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 undo.obj : undo.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 userfunc.obj : userfunc.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 version.obj : version.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h version.h
 window.obj : window.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 gui.obj : gui.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 gui_gtk.obj : gui_gtk.c gui_gtk_f.h vim.h [.auto]config.h feature.h \
  os_unix.h   ascii.h keymap.h term.h macros.h structs.h \
- regexp.h gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h \
+ regexp.h gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h \
  proto.h globals.h farsi.h arabic.h [-.pixmaps]stock_icons.h
 gui_gtk_f.obj : gui_gtk_f.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h gui_gtk_f.h
 gui_motif.obj : gui_motif.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h [-.pixmaps]alert.xpm [-.pixmaps]error.xpm \
  [-.pixmaps]generic.xpm [-.pixmaps]info.xpm [-.pixmaps]quest.xpm
 gui_athena.obj : gui_athena.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h gui_at_sb.h
 gui_gtk_x11.obj : gui_gtk_x11.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h gui_gtk_f.h [-.runtime]vim32x32.xpm \
  [-.runtime]vim16x16.xpm [-.runtime]vim48x48.xpm
 gui_x11.obj : gui_x11.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h [-.runtime]vim32x32.xpm \
  [-.runtime]vim16x16.xpm [-.runtime]vim48x48.xpm [-.pixmaps]tb_new.xpm \
  [-.pixmaps]tb_open.xpm [-.pixmaps]tb_close.xpm [-.pixmaps]tb_save.xpm \
@@ -769,56 +769,60 @@ gui_x11.obj : gui_x11.c vim.h [.auto]con
  [-.pixmaps]tb_minwidth.xpm
 gui_at_sb.obj : gui_at_sb.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h gui_at_sb.h
 gui_at_fs.obj : gui_at_fs.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h gui_at_sb.h
 pty.obj : pty.c vim.h [.auto]config.h feature.h os_unix.h   \
- ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
  arabic.h
 hangulin.obj : hangulin.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 if_perl.obj : [.auto]if_perl.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 if_perlsfio.obj : if_perlsfio.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 if_python.obj : if_python.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 if_tcl.obj : if_tcl.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 if_ruby.obj : if_ruby.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h version.h
+beval.obj : beval.c vim.h [.auto]config.h feature.h os_unix.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h \
+ gui.h beval.h option.h ex_cmds.h proto.h \
+ globals.h farsi.h arabic.h
 gui_beval.obj : gui_beval.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
 workshop.obj : workshop.c [.auto]config.h integration.h vim.h feature.h \
  os_unix.h ascii.h keymap.h term.h macros.h structs.h \
- regexp.h gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h \
+ regexp.h gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h \
  proto.h globals.h farsi.h arabic.h version.h workshop.h
 wsdebug.obj : wsdebug.c
 integration.obj : integration.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h integration.h
 netbeans.obj : netbeans.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h version.h
 gui_xmdlg.obj : gui_xmdlg.c
 gui_xmebw.obj : gui_xmebw.c
--- a/src/Makefile
+++ b/src/Makefile
@@ -1529,6 +1529,7 @@ TAGS_INCL = *.h
 
 BASIC_SRC = \
 	arabic.c \
+	beval.c \
 	blowfish.c \
 	buffer.c \
 	charset.c \
@@ -1641,6 +1642,7 @@ LINT_SRC = $(BASIC_SRC) $(GUI_SRC) $(HAN
 
 OBJ_COMMON = \
 	objects/arabic.o \
+	objects/beval.o \
 	objects/buffer.o \
 	objects/blowfish.o \
 	objects/crypt.o \
@@ -1829,6 +1831,7 @@ PRO_AUTO = \
 	userfunc.pro \
 	version.pro \
 	window.pro \
+	beval.pro \
 	gui_beval.pro \
 	workshop.pro \
 	netbeans.pro \
@@ -3088,6 +3091,9 @@ objects/gui_at_sb.o: gui_at_sb.c
 objects/gui_athena.o: gui_athena.c
 	$(CCC) -o $@ gui_athena.c
 
+objects/beval.o: beval.c
+	$(CCC) -o $@ beval.c
+
 objects/gui_beval.o: gui_beval.c
 	$(CCC) -o $@ gui_beval.c
 
@@ -3432,255 +3438,255 @@ bundle-language: bundle-dir
 ### Dependencies:
 objects/arabic.o: arabic.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/blowfish.o: blowfish.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/buffer.o: buffer.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h version.h
 objects/charset.o: charset.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/crypt.o: crypt.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/crypt_zip.o: crypt_zip.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/dict.o: dict.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/diff.o: diff.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/digraph.o: digraph.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/edit.o: edit.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/eval.o: eval.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h version.h
 objects/evalfunc.o: evalfunc.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h version.h
 objects/ex_cmds.o: ex_cmds.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h version.h
 objects/ex_cmds2.o: ex_cmds2.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h version.h
 objects/ex_docmd.o: ex_docmd.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h ex_cmdidxs.h
 objects/ex_eval.o: ex_eval.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/ex_getln.o: ex_getln.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/farsi.o: farsi.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/fileio.o: fileio.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/fold.o: fold.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/getchar.o: getchar.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/hardcopy.o: hardcopy.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h version.h
 objects/hashtab.o: hashtab.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/if_cscope.o: if_cscope.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h if_cscope.h
 objects/if_xcmdsrv.o: if_xcmdsrv.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h version.h
 objects/json.o: json.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/list.o: list.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/main.o: main.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/mark.o: mark.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/memfile.o: memfile.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/memline.o: memline.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/menu.o: menu.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/message.o: message.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/misc1.o: misc1.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h version.h
 objects/misc2.o: misc2.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/move.o: move.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/mbyte.o: mbyte.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/normal.o: normal.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/ops.o: ops.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
- keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+ keymap.h term.h macros.h option.h structs.h regexp.h gui.h beval.h \
  proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h globals.h farsi.h \
  arabic.h
 objects/option.o: option.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h os_unixx.h
 objects/pathdef.o: auto/pathdef.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/popupmnu.o: popupmnu.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/quickfix.o: quickfix.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/regexp.o: regexp.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h regexp_nfa.c
 objects/screen.o: screen.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/search.o: search.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/sha256.o: sha256.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/spell.o: spell.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/spellfile.o: spellfile.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/syntax.o: syntax.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/tag.o: tag.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
- keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+ keymap.h term.h macros.h option.h structs.h regexp.h gui.h beval.h \
  proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h globals.h farsi.h \
  arabic.h
 objects/term.o: term.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/terminal.o: terminal.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/ui.o: ui.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
- keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+ keymap.h term.h macros.h option.h structs.h regexp.h gui.h beval.h \
  proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h globals.h farsi.h \
  arabic.h
 objects/undo.o: undo.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/userfunc.o: userfunc.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/version.o: version.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h version.h
 objects/window.o: window.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/gui.o: gui.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
- keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+ keymap.h term.h macros.h option.h structs.h regexp.h gui.h beval.h \
  proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h globals.h farsi.h \
  arabic.h
 objects/gui_gtk.o: gui_gtk.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h gui_gtk_f.h
 objects/gui_gtk_f.o: gui_gtk_f.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h gui_gtk_f.h
 objects/gui_motif.o: gui_motif.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h gui_xmebw.h ../pixmaps/alert.xpm \
  ../pixmaps/error.xpm ../pixmaps/generic.xpm ../pixmaps/info.xpm \
  ../pixmaps/quest.xpm gui_x11_pm.h ../pixmaps/tb_new.xpm \
@@ -3701,15 +3707,15 @@ objects/gui_motif.o: gui_motif.c vim.h a
  ../pixmaps/tb_minwidth.xpm
 objects/gui_xmdlg.o: gui_xmdlg.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/gui_xmebw.o: gui_xmebw.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h gui_xmebwp.h gui_xmebw.h
 objects/gui_athena.o: gui_athena.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h gui_at_sb.h gui_x11_pm.h \
  ../pixmaps/tb_new.xpm ../pixmaps/tb_open.xpm ../pixmaps/tb_close.xpm \
  ../pixmaps/tb_save.xpm ../pixmaps/tb_print.xpm ../pixmaps/tb_cut.xpm \
@@ -3728,98 +3734,98 @@ objects/gui_athena.o: gui_athena.c vim.h
  ../pixmaps/tb_minwidth.xpm
 objects/gui_gtk_x11.o: gui_gtk_x11.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h auto/gui_gtk_gresources.h gui_gtk_f.h \
  ../runtime/vim32x32.xpm ../runtime/vim16x16.xpm ../runtime/vim48x48.xpm
 objects/gui_x11.o: gui_x11.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h ../runtime/vim32x32.xpm \
  ../runtime/vim16x16.xpm ../runtime/vim48x48.xpm
 objects/gui_at_sb.o: gui_at_sb.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h gui_at_sb.h
 objects/gui_at_fs.o: gui_at_fs.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h gui_at_sb.h
 objects/pty.o: pty.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
- keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+ keymap.h term.h macros.h option.h structs.h regexp.h gui.h beval.h \
  proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h globals.h farsi.h \
  arabic.h
 objects/json_test.o: json_test.c main.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h json.c
 objects/kword_test.o: kword_test.c main.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h charset.c
 objects/memfile_test.o: memfile_test.c main.c vim.h auto/config.h feature.h \
  os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h \
- structs.h regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h \
+ structs.h regexp.h gui.h beval.h proto/gui_beval.pro alloc.h \
  ex_cmds.h spell.h proto.h globals.h farsi.h arabic.h memfile.c
 objects/message_test.o: message_test.c main.c vim.h auto/config.h feature.h \
  os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h \
- structs.h regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h \
+ structs.h regexp.h gui.h beval.h proto/gui_beval.pro alloc.h \
  ex_cmds.h spell.h proto.h globals.h farsi.h arabic.h message.c
 objects/hangulin.o: hangulin.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/if_lua.o: if_lua.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h if_mzsch.h
 objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/if_perlsfio.o: if_perlsfio.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/if_python.o: if_python.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h if_py_both.h
 objects/if_python3.o: if_python3.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h if_py_both.h
 objects/if_tcl.o: if_tcl.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/if_ruby.o: if_ruby.c auto/config.h vim.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h version.h
 objects/gui_beval.o: gui_beval.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h
 objects/workshop.o: workshop.c auto/config.h integration.h vim.h feature.h \
  os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h \
- structs.h regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h \
+ structs.h regexp.h gui.h beval.h proto/gui_beval.pro alloc.h \
  ex_cmds.h spell.h proto.h globals.h farsi.h arabic.h version.h \
  workshop.h
 objects/wsdebug.o: wsdebug.c
 objects/integration.o: integration.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h integration.h
 objects/netbeans.o: netbeans.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
+ regexp.h gui.h beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h globals.h farsi.h arabic.h version.h
 objects/channel.o: channel.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
- gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
+ beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  globals.h farsi.h arabic.h
 objects/gui_gtk_gresources.o: auto/gui_gtk_gresources.c
new file mode 100644
--- /dev/null
+++ b/src/beval.c
@@ -0,0 +1,280 @@
+/* vi:set ts=8 sts=4 sw=4 noet:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *			Visual Workshop integration by Gordon Prieur
+ *
+ * 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"
+
+#if defined(FEAT_BEVAL) || defined(PROTO)
+
+/*
+ * Get the text and position to be evaluated for "beval".
+ * If "getword" is true the returned text is not the whole line but the
+ * relevant word in allocated memory.
+ * Returns OK or FAIL.
+ */
+    int
+get_beval_info(
+    BalloonEval	*beval,
+    int		getword,
+    win_T	**winp,
+    linenr_T	*lnump,
+    char_u	**textp,
+    int		*colp)
+{
+    win_T	*wp;
+    int		row, col;
+    char_u	*lbuf;
+    linenr_T	lnum;
+
+    *textp = NULL;
+# ifdef FEAT_BEVAL_TERM
+#  ifdef FEAT_GUI
+    if (!gui.in_use)
+#  endif
+    {
+	row = mouse_row;
+	col = mouse_col;
+    }
+# endif
+# ifdef FEAT_GUI
+    if (gui.in_use)
+    {
+	row = Y_2_ROW(beval->y);
+	col = X_2_COL(beval->x);
+    }
+#endif
+    wp = mouse_find_win(&row, &col);
+    if (wp != NULL && row < wp->w_height && col < wp->w_width)
+    {
+	/* Found a window and the cursor is in the text.  Now find the line
+	 * number. */
+	if (!mouse_comp_pos(wp, &row, &col, &lnum))
+	{
+	    /* Not past end of the file. */
+	    lbuf = ml_get_buf(wp->w_buffer, lnum, FALSE);
+	    if (col <= win_linetabsize(wp, lbuf, (colnr_T)MAXCOL))
+	    {
+		/* Not past end of line. */
+		if (getword)
+		{
+		    /* For Netbeans we get the relevant part of the line
+		     * instead of the whole line. */
+		    int		len;
+		    pos_T	*spos = NULL, *epos = NULL;
+
+		    if (VIsual_active)
+		    {
+			if (LT_POS(VIsual, curwin->w_cursor))
+			{
+			    spos = &VIsual;
+			    epos = &curwin->w_cursor;
+			}
+			else
+			{
+			    spos = &curwin->w_cursor;
+			    epos = &VIsual;
+			}
+		    }
+
+		    col = vcol2col(wp, lnum, col);
+
+		    if (VIsual_active
+			    && wp->w_buffer == curwin->w_buffer
+			    && (lnum == spos->lnum
+				? col >= (int)spos->col
+				: lnum > spos->lnum)
+			    && (lnum == epos->lnum
+				? col <= (int)epos->col
+				: lnum < epos->lnum))
+		    {
+			/* Visual mode and pointing to the line with the
+			 * Visual selection: return selected text, with a
+			 * maximum of one line. */
+			if (spos->lnum != epos->lnum || spos->col == epos->col)
+			    return FAIL;
+
+			lbuf = ml_get_buf(curwin->w_buffer, VIsual.lnum, FALSE);
+			len = epos->col - spos->col;
+			if (*p_sel != 'e')
+			    len += MB_PTR2LEN(lbuf + epos->col);
+			lbuf = vim_strnsave(lbuf + spos->col, len);
+			lnum = spos->lnum;
+			col = spos->col;
+		    }
+		    else
+		    {
+			/* Find the word under the cursor. */
+			++emsg_off;
+			len = find_ident_at_pos(wp, lnum, (colnr_T)col, &lbuf,
+					FIND_IDENT + FIND_STRING + FIND_EVAL);
+			--emsg_off;
+			if (len == 0)
+			    return FAIL;
+			lbuf = vim_strnsave(lbuf, len);
+		    }
+		}
+
+		*winp = wp;
+		*lnump = lnum;
+		*textp = lbuf;
+		*colp = col;
+		beval->ts = wp->w_buffer->b_p_ts;
+		return OK;
+	    }
+	}
+    }
+
+    return FAIL;
+}
+
+/*
+ * Show a balloon with "mesg".
+ */
+    void
+post_balloon(BalloonEval *beval UNUSED, char_u *mesg)
+{
+# ifdef FEAT_BEVAL_TERM
+#  ifdef FEAT_GUI
+    if (!gui.in_use)
+#  endif
+	ui_post_balloon(mesg);
+# endif
+# ifdef FEAT_BEVAL_GUI
+    if (gui.in_use)
+	gui_mch_post_balloon(beval, mesg);
+# endif
+}
+
+/*
+ * Returns TRUE if the balloon eval has been enabled:
+ * 'ballooneval' for the GUI and 'balloonevalterm' for the terminal.
+ * Also checks if the screen isn't scrolled up.
+ */
+    int
+can_use_beval(void)
+{
+    return (0
+#ifdef FEAT_BEVAL_GUI
+		|| (gui.in_use && p_beval)
+#endif
+#ifdef FEAT_BEVAL_TERM
+		|| (
+# ifdef FEAT_GUI
+		    !gui.in_use &&
+# endif
+		    p_bevalterm)
+#endif
+	     ) && msg_scrolled == 0;
+}
+
+/*
+ * Common code, invoked when the mouse is resting for a moment.
+ */
+    void
+general_beval_cb(BalloonEval *beval, int state UNUSED)
+{
+#ifdef FEAT_EVAL
+    win_T	*wp;
+    int		col;
+    int		use_sandbox;
+    linenr_T	lnum;
+    char_u	*text;
+    static char_u  *result = NULL;
+    long	winnr = 0;
+    char_u	*bexpr;
+    buf_T	*save_curbuf;
+    size_t	len;
+    win_T	*cw;
+#endif
+    static int	recursive = FALSE;
+
+    /* Don't do anything when 'ballooneval' is off, messages scrolled the
+     * windows up or we have no beval area. */
+    if (!can_use_beval() || beval == NULL)
+	return;
+
+    /* Don't do this recursively.  Happens when the expression evaluation
+     * takes a long time and invokes something that checks for CTRL-C typed. */
+    if (recursive)
+	return;
+    recursive = TRUE;
+
+#ifdef FEAT_EVAL
+    if (get_beval_info(beval, TRUE, &wp, &lnum, &text, &col) == OK)
+    {
+	bexpr = (*wp->w_buffer->b_p_bexpr == NUL) ? p_bexpr
+						    : wp->w_buffer->b_p_bexpr;
+	if (*bexpr != NUL)
+	{
+	    /* Convert window pointer to number. */
+	    for (cw = firstwin; cw != wp; cw = cw->w_next)
+		++winnr;
+
+	    set_vim_var_nr(VV_BEVAL_BUFNR, (long)wp->w_buffer->b_fnum);
+	    set_vim_var_nr(VV_BEVAL_WINNR, winnr);
+	    set_vim_var_nr(VV_BEVAL_WINID, wp->w_id);
+	    set_vim_var_nr(VV_BEVAL_LNUM, (long)lnum);
+	    set_vim_var_nr(VV_BEVAL_COL, (long)(col + 1));
+	    set_vim_var_string(VV_BEVAL_TEXT, text, -1);
+	    vim_free(text);
+
+	    /*
+	     * Temporarily change the curbuf, so that we can determine whether
+	     * the buffer-local balloonexpr option was set insecurely.
+	     */
+	    save_curbuf = curbuf;
+	    curbuf = wp->w_buffer;
+	    use_sandbox = was_set_insecurely((char_u *)"balloonexpr",
+				 *curbuf->b_p_bexpr == NUL ? 0 : OPT_LOCAL);
+	    curbuf = save_curbuf;
+	    if (use_sandbox)
+		++sandbox;
+	    ++textlock;
+
+	    vim_free(result);
+	    result = eval_to_string(bexpr, NULL, TRUE);
+
+	    /* Remove one trailing newline, it is added when the result was a
+	     * list and it's hardly ever useful.  If the user really wants a
+	     * trailing newline he can add two and one remains. */
+	    if (result != NULL)
+	    {
+		len = STRLEN(result);
+		if (len > 0 && result[len - 1] == NL)
+		    result[len - 1] = NUL;
+	    }
+
+	    if (use_sandbox)
+		--sandbox;
+	    --textlock;
+
+	    set_vim_var_string(VV_BEVAL_TEXT, NULL, -1);
+	    if (result != NULL && result[0] != NUL)
+	    {
+		post_balloon(beval, result);
+		recursive = FALSE;
+		return;
+	    }
+	}
+    }
+#endif
+#ifdef FEAT_NETBEANS_INTG
+    if (bevalServers & BEVAL_NETBEANS)
+	netbeans_beval_cb(beval, state);
+#endif
+#ifdef FEAT_SUN_WORKSHOP
+    if (bevalServers & BEVAL_WORKSHOP)
+	workshop_beval_cb(beval, state);
+#endif
+
+    recursive = FALSE;
+}
+
+#endif
+
new file mode 100644
--- /dev/null
+++ b/src/beval.h
@@ -0,0 +1,83 @@
+/* vi:set ts=8 sts=4 sw=4 noet:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *			Visual Workshop integration by Gordon Prieur
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ */
+
+#if !defined(BEVAL__H) && (defined(FEAT_BEVAL) || defined(PROTO))
+#define BEVAL__H
+
+#ifdef FEAT_GUI_GTK
+# ifdef USE_GTK3
+#  include <gtk/gtk.h>
+# else
+#  include <gtk/gtkwidget.h>
+# endif
+#else
+# if defined(FEAT_GUI_X11)
+#  include <X11/Intrinsic.h>
+# endif
+#endif
+
+typedef enum
+{
+    ShS_NEUTRAL,			/* nothing showing or pending */
+    ShS_PENDING,			/* data requested from debugger */
+    ShS_UPDATE_PENDING,			/* switching information displayed */
+    ShS_SHOWING				/* the balloon is being displayed */
+} BeState;
+
+typedef struct BalloonEvalStruct
+{
+#ifdef FEAT_GUI_GTK
+    GtkWidget		*target;	/* widget we are monitoring */
+    GtkWidget		*balloonShell;
+    GtkWidget		*balloonLabel;
+    unsigned int	timerID;	/* timer for run */
+    BeState		showState;	/* tells us whats currently going on */
+    int			x;
+    int			y;
+    unsigned int	state;		/* Button/Modifier key state */
+#else
+# if !defined(FEAT_GUI_W32)
+    Widget		target;		/* widget we are monitoring */
+    Widget		balloonShell;
+    Widget		balloonLabel;
+    XtIntervalId	timerID;	/* timer for run */
+    BeState		showState;	/* tells us whats currently going on */
+    XtAppContext	appContext;	/* used in event handler */
+    Position		x;
+    Position		y;
+    Position		x_root;
+    Position		y_root;
+    int			state;		/* Button/Modifier key state */
+# else
+    HWND		target;
+    HWND		balloon;
+    int			x;
+    int			y;
+    BeState		showState;	/* tells us whats currently going on */
+# endif
+#endif
+    int			ts;		/* tabstop setting for this buffer */
+    char_u		*msg;
+    void		(*msgCB)(struct BalloonEvalStruct *, int);
+    void		*clientData;	/* For callback */
+#if !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)
+    Dimension		screen_width;	/* screen width in pixels */
+    Dimension		screen_height;	/* screen height in pixels */
+#endif
+} BalloonEval;
+
+#define EVAL_OFFSET_X 15 /* displacement of beval topleft corner from pointer */
+#define EVAL_OFFSET_Y 10
+
+#include "beval.pro"
+#ifdef FEAT_BEVAL_GUI
+# include "gui_beval.pro"
+#endif
+
+#endif /* BEVAL__H and FEAT_BEVAL_GUI */
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5583,13 +5583,13 @@ f_has(typval_T *argvars, typval_T *rettv
 #ifdef FEAT_AUTOSERVERNAME
 	"autoservername",
 #endif
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	"balloon_eval",
 # ifndef FEAT_GUI_W32 /* other GUIs always have multiline balloons */
 	"balloon_multiline",
 # endif
 #endif
-#ifdef FEAT_BEVALTERM
+#ifdef FEAT_BEVAL_TERM
 	"balloon_eval_term",
 #endif
 #if defined(SOME_BUILTIN_TCAPS) || defined(ALL_BUILTIN_TCAPS)
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1291,7 +1291,7 @@ check_due_timer(void)
     if (did_one)
 	redraw_after_callback(need_update_screen);
 
-#ifdef FEAT_BEVALTERM
+#ifdef FEAT_BEVAL_TERM
     if (bevalexpr_due_set)
     {
 	this_due = proftime_time_left(&bevalexpr_due, &now);
--- a/src/feature.h
+++ b/src/feature.h
@@ -1317,22 +1317,26 @@
 		&& !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)) \
 	    || defined(FEAT_SUN_WORKSHOP) \
 	    || defined(FEAT_NETBEANS_INTG) || defined(FEAT_EVAL))
-# define FEAT_BEVAL
+# define FEAT_BEVAL_GUI
 # if !defined(FEAT_XFONTSET) && !defined(FEAT_GUI_GTK) \
 	&& !defined(FEAT_GUI_W32)
 #  define FEAT_XFONTSET
 # endif
 #endif
 
-#if defined(FEAT_BEVAL) && (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA))
+#if defined(FEAT_BEVAL_GUI) && (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA))
 # define FEAT_BEVAL_TIP		/* balloon eval used for toolbar tooltip */
 #endif
 
 /*
  * +balloon_eval_term	Allow balloon expression evaluation in the terminal.
  */
-#if defined(FEAT_BEVAL) && defined(UNIX) && defined(FEAT_TIMERS)
-# define FEAT_BEVALTERM
+#if defined(FEAT_HUGE) && defined(UNIX) && defined(FEAT_TIMERS)
+# define FEAT_BEVAL_TERM
+#endif
+
+#if defined(FEAT_BEVAL_GUI) || defined(FEAT_BEVAL_TERM)
+# define FEAT_BEVAL
 #endif
 
 /* both Motif and Athena are X11 and share some code */
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1792,7 +1792,7 @@ vgetc(void)
      */
     may_garbage_collect = FALSE;
 #endif
-#ifdef FEAT_BEVALTERM
+#ifdef FEAT_BEVAL_TERM
     if (c != K_MOUSEMOVE && c != K_IGNORE)
     {
 	/* Don't trigger 'balloonexpr' unless only the mouse was moved. */
--- a/src/globals.h
+++ b/src/globals.h
@@ -1649,7 +1649,7 @@ EXTERN int  did_add_timer INIT(= FALSE);
 EXTERN int  timer_busy INIT(= 0);   /* when timer is inside vgetc() then > 0 */
 #endif
 
-#ifdef FEAT_BEVALTERM
+#ifdef FEAT_BEVAL_TERM
 EXTERN int  bevalexpr_due_set INIT(= FALSE);
 EXTERN proftime_T bevalexpr_due;
 #endif
--- a/src/gui.c
+++ b/src/gui.c
@@ -738,7 +738,7 @@ gui_init(void)
 	 * resized. */
 	win_new_shellsize();
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	/* Always create the Balloon Evaluation area, but disable it when
 	 * 'ballooneval' is off. */
 	if (balloonEval != NULL)
--- a/src/gui.h
+++ b/src/gui.h
@@ -16,10 +16,6 @@
 # include <X11/StringDefs.h>
 #endif
 
-#if defined(FEAT_BEVAL) || defined(PROTO)
-# include "gui_beval.h"
-#endif
-
 #ifdef FEAT_GUI_GTK
 # ifdef VMS /* undef MIN and MAX because Intrinsic.h redefines them anyway */
 #  ifdef MAX
--- a/src/gui_athena.c
+++ b/src/gui_athena.c
@@ -1019,7 +1019,7 @@ gui_mch_new_menu_font(void)
 	XFreePixmap(gui.dpy, oldpuller);
 }
 
-#if defined(FEAT_BEVAL) || defined(PROTO)
+#if defined(FEAT_BEVAL_GUI) || defined(PROTO)
     void
 gui_mch_new_tooltip_font(void)
 {
@@ -1076,7 +1076,7 @@ gui_mch_submenu_change(
 			XtVaSetValues(mp->id, XtNbitmap, mp->image, NULL);
 		}
 
-# ifdef FEAT_BEVAL
+# ifdef FEAT_BEVAL_GUI
 		/* If we have a tooltip, then we need to change it's colors */
 		if (mp->tip != NULL)
 		{
@@ -1094,7 +1094,7 @@ gui_mch_submenu_change(
 	    else
 	    {
 		gui_athena_menu_font(mp->id);
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 		/* If we have a tooltip, then we need to change it's font */
 		/* Assume XtNinternational == True (in createBalloonEvalWindow)
 		 */
@@ -1201,7 +1201,7 @@ gui_mch_add_menu_item(vimmenu_T *menu, i
 	    XtSetValues(menu->id, args, n);
 	gui_athena_menu_colors(menu->id);
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	gui_mch_menu_set_tip(menu);
 #endif
 
@@ -1538,7 +1538,7 @@ gui_mch_destroy_menu(vimmenu_T *menu)
 	XtVaGetValues(menu->id,
 		XtNheight,	&height,
 		NULL);
-#if defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL)
+#if defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL_GUI)
 	if (parent == toolBar && menu->tip != NULL)
 	{
 	    /* We try to destroy this before the actual menu, because there are
@@ -1843,7 +1843,7 @@ gui_mch_def_colors(void)
 	gui.menu_bg_pixel = gui_get_color((char_u *)gui.rsrc_menu_bg_name);
 	gui.scroll_fg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_fg_name);
 	gui.scroll_bg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_bg_name);
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	gui.tooltip_fg_pixel = gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
 	gui.tooltip_bg_pixel = gui_get_color((char_u *)gui.rsrc_tooltip_bg_name);
 #endif
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -10,114 +10,7 @@
 
 #include "vim.h"
 
-#if defined(FEAT_BEVAL) || defined(PROTO)
-
-/*
- * Common code, invoked when the mouse is resting for a moment.
- */
-    void
-general_beval_cb(BalloonEval *beval, int state UNUSED)
-{
-#ifdef FEAT_EVAL
-    win_T	*wp;
-    int		col;
-    int		use_sandbox;
-    linenr_T	lnum;
-    char_u	*text;
-    static char_u  *result = NULL;
-    long	winnr = 0;
-    char_u	*bexpr;
-    buf_T	*save_curbuf;
-    size_t	len;
-    win_T	*cw;
-#endif
-    static int	recursive = FALSE;
-
-    /* Don't do anything when 'ballooneval' is off, messages scrolled the
-     * windows up or we have no beval area. */
-    if (!((gui.in_use && p_beval)
-# ifdef FEAT_BEVALTERM
-		|| (!gui.in_use && p_bevalterm)
-# endif
-		) || beval == NULL || msg_scrolled > 0)
-	return;
-
-    /* Don't do this recursively.  Happens when the expression evaluation
-     * takes a long time and invokes something that checks for CTRL-C typed. */
-    if (recursive)
-	return;
-    recursive = TRUE;
-
-#ifdef FEAT_EVAL
-    if (get_beval_info(beval, TRUE, &wp, &lnum, &text, &col) == OK)
-    {
-	bexpr = (*wp->w_buffer->b_p_bexpr == NUL) ? p_bexpr
-						    : wp->w_buffer->b_p_bexpr;
-	if (*bexpr != NUL)
-	{
-	    /* Convert window pointer to number. */
-	    for (cw = firstwin; cw != wp; cw = cw->w_next)
-		++winnr;
-
-	    set_vim_var_nr(VV_BEVAL_BUFNR, (long)wp->w_buffer->b_fnum);
-	    set_vim_var_nr(VV_BEVAL_WINNR, winnr);
-	    set_vim_var_nr(VV_BEVAL_WINID, wp->w_id);
-	    set_vim_var_nr(VV_BEVAL_LNUM, (long)lnum);
-	    set_vim_var_nr(VV_BEVAL_COL, (long)(col + 1));
-	    set_vim_var_string(VV_BEVAL_TEXT, text, -1);
-	    vim_free(text);
-
-	    /*
-	     * Temporarily change the curbuf, so that we can determine whether
-	     * the buffer-local balloonexpr option was set insecurely.
-	     */
-	    save_curbuf = curbuf;
-	    curbuf = wp->w_buffer;
-	    use_sandbox = was_set_insecurely((char_u *)"balloonexpr",
-				 *curbuf->b_p_bexpr == NUL ? 0 : OPT_LOCAL);
-	    curbuf = save_curbuf;
-	    if (use_sandbox)
-		++sandbox;
-	    ++textlock;
-
-	    vim_free(result);
-	    result = eval_to_string(bexpr, NULL, TRUE);
-
-	    /* Remove one trailing newline, it is added when the result was a
-	     * list and it's hardly ever useful.  If the user really wants a
-	     * trailing newline he can add two and one remains. */
-	    if (result != NULL)
-	    {
-		len = STRLEN(result);
-		if (len > 0 && result[len - 1] == NL)
-		    result[len - 1] = NUL;
-	    }
-
-	    if (use_sandbox)
-		--sandbox;
-	    --textlock;
-
-	    set_vim_var_string(VV_BEVAL_TEXT, NULL, -1);
-	    if (result != NULL && result[0] != NUL)
-	    {
-		post_balloon(beval, result);
-		recursive = FALSE;
-		return;
-	    }
-	}
-    }
-#endif
-#ifdef FEAT_NETBEANS_INTG
-    if (bevalServers & BEVAL_NETBEANS)
-	netbeans_beval_cb(beval, state);
-#endif
-#ifdef FEAT_SUN_WORKSHOP
-    if (bevalServers & BEVAL_WORKSHOP)
-	workshop_beval_cb(beval, state);
-#endif
-
-    recursive = FALSE;
-}
+#if defined(FEAT_BEVAL_GUI) || defined(PROTO)
 
 /* on Win32 only get_beval_info() is required */
 #if !defined(FEAT_GUI_W32) || defined(PROTO)
@@ -149,8 +42,6 @@ general_beval_cb(BalloonEval *beval, int
 # endif
 #endif
 
-#include "gui_beval.h"
-
 #ifndef FEAT_GUI_GTK
 extern Widget vimShell;
 
@@ -192,8 +83,6 @@ static void drawBalloon(BalloonEval *);
 static void undrawBalloon(BalloonEval *beval);
 static void createBalloonEvalWindow(BalloonEval *);
 
-
-
 /*
  * Create a balloon-evaluation area for a Widget.
  * There can be either a "mesg" for a fixed string or "mesgCB" to generate a
@@ -318,137 +207,6 @@ gui_mch_currently_showing_beval(void)
 
 #if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) \
     || defined(FEAT_EVAL) || defined(PROTO)
-/*
- * Get the text and position to be evaluated for "beval".
- * If "getword" is true the returned text is not the whole line but the
- * relevant word in allocated memory.
- * Returns OK or FAIL.
- */
-    int
-get_beval_info(
-    BalloonEval	*beval,
-    int		getword,
-    win_T	**winp,
-    linenr_T	*lnump,
-    char_u	**textp,
-    int		*colp)
-{
-    win_T	*wp;
-    int		row, col;
-    char_u	*lbuf;
-    linenr_T	lnum;
-
-    *textp = NULL;
-# ifdef FEAT_BEVALTERM
-    if (!gui.in_use)
-    {
-	row = mouse_row;
-	col = mouse_col;
-    }
-    else
-# endif
-    {
-	row = Y_2_ROW(beval->y);
-	col = X_2_COL(beval->x);
-    }
-    wp = mouse_find_win(&row, &col);
-    if (wp != NULL && row < wp->w_height && col < wp->w_width)
-    {
-	/* Found a window and the cursor is in the text.  Now find the line
-	 * number. */
-	if (!mouse_comp_pos(wp, &row, &col, &lnum))
-	{
-	    /* Not past end of the file. */
-	    lbuf = ml_get_buf(wp->w_buffer, lnum, FALSE);
-	    if (col <= win_linetabsize(wp, lbuf, (colnr_T)MAXCOL))
-	    {
-		/* Not past end of line. */
-		if (getword)
-		{
-		    /* For Netbeans we get the relevant part of the line
-		     * instead of the whole line. */
-		    int		len;
-		    pos_T	*spos = NULL, *epos = NULL;
-
-		    if (VIsual_active)
-		    {
-			if (LT_POS(VIsual, curwin->w_cursor))
-			{
-			    spos = &VIsual;
-			    epos = &curwin->w_cursor;
-			}
-			else
-			{
-			    spos = &curwin->w_cursor;
-			    epos = &VIsual;
-			}
-		    }
-
-		    col = vcol2col(wp, lnum, col);
-
-		    if (VIsual_active
-			    && wp->w_buffer == curwin->w_buffer
-			    && (lnum == spos->lnum
-				? col >= (int)spos->col
-				: lnum > spos->lnum)
-			    && (lnum == epos->lnum
-				? col <= (int)epos->col
-				: lnum < epos->lnum))
-		    {
-			/* Visual mode and pointing to the line with the
-			 * Visual selection: return selected text, with a
-			 * maximum of one line. */
-			if (spos->lnum != epos->lnum || spos->col == epos->col)
-			    return FAIL;
-
-			lbuf = ml_get_buf(curwin->w_buffer, VIsual.lnum, FALSE);
-			len = epos->col - spos->col;
-			if (*p_sel != 'e')
-			    len += MB_PTR2LEN(lbuf + epos->col);
-			lbuf = vim_strnsave(lbuf + spos->col, len);
-			lnum = spos->lnum;
-			col = spos->col;
-		    }
-		    else
-		    {
-			/* Find the word under the cursor. */
-			++emsg_off;
-			len = find_ident_at_pos(wp, lnum, (colnr_T)col, &lbuf,
-					FIND_IDENT + FIND_STRING + FIND_EVAL);
-			--emsg_off;
-			if (len == 0)
-			    return FAIL;
-			lbuf = vim_strnsave(lbuf, len);
-		    }
-		}
-
-		*winp = wp;
-		*lnump = lnum;
-		*textp = lbuf;
-		*colp = col;
-		beval->ts = wp->w_buffer->b_p_ts;
-		return OK;
-	    }
-	}
-    }
-
-    return FAIL;
-}
-
-/*
- * Show a balloon with "mesg".
- */
-    void
-post_balloon(BalloonEval *beval, char_u *mesg)
-{
-# ifdef FEAT_BEVALTERM
-    if (!gui.in_use)
-	ui_post_balloon(mesg);
-    else
-# endif
-	gui_mch_post_balloon(beval, mesg);
-}
-
 # if !defined(FEAT_GUI_W32) || defined(PROTO)
 
 /*
@@ -463,7 +221,7 @@ gui_mch_post_balloon(BalloonEval *beval,
     else
 	undrawBalloon(beval);
 }
-# endif /* FEAT_GUI_W32 */
+# endif /* !FEAT_GUI_W32 */
 #endif /* FEAT_SUN_WORKSHOP || FEAT_NETBEANS_INTG || PROTO */
 
 #if !defined(FEAT_GUI_W32) || defined(PROTO)
@@ -1519,4 +1277,4 @@ createBalloonEvalWindow(BalloonEval *bev
 #endif /* !FEAT_GUI_GTK */
 #endif /* !FEAT_GUI_W32 */
 
-#endif /* FEAT_BEVAL */
+#endif /* FEAT_BEVAL_GUI */
deleted file mode 100644
--- a/src/gui_beval.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4 noet:
- *
- * VIM - Vi IMproved	by Bram Moolenaar
- *			Visual Workshop integration by Gordon Prieur
- *
- * Do ":help uganda"  in Vim to read copying and usage conditions.
- * Do ":help credits" in Vim to see a list of people who contributed.
- */
-
-#if !defined(GUI_BEVAL_H) && (defined(FEAT_BEVAL) || defined(PROTO))
-#define GUI_BEVAL_H
-
-#ifdef FEAT_GUI_GTK
-# ifdef USE_GTK3
-#  include <gtk/gtk.h>
-# else
-#  include <gtk/gtkwidget.h>
-# endif
-#else
-# if defined(FEAT_GUI_X11)
-#  include <X11/Intrinsic.h>
-# endif
-#endif
-
-typedef enum
-{
-    ShS_NEUTRAL,			/* nothing showing or pending */
-    ShS_PENDING,			/* data requested from debugger */
-    ShS_UPDATE_PENDING,			/* switching information displayed */
-    ShS_SHOWING				/* the balloon is being displayed */
-} BeState;
-
-typedef struct BalloonEvalStruct
-{
-#ifdef FEAT_GUI_GTK
-    GtkWidget		*target;	/* widget we are monitoring */
-    GtkWidget		*balloonShell;
-    GtkWidget		*balloonLabel;
-    unsigned int	timerID;	/* timer for run */
-    BeState		showState;	/* tells us whats currently going on */
-    int			x;
-    int			y;
-    unsigned int	state;		/* Button/Modifier key state */
-#else
-# if !defined(FEAT_GUI_W32)
-    Widget		target;		/* widget we are monitoring */
-    Widget		balloonShell;
-    Widget		balloonLabel;
-    XtIntervalId	timerID;	/* timer for run */
-    BeState		showState;	/* tells us whats currently going on */
-    XtAppContext	appContext;	/* used in event handler */
-    Position		x;
-    Position		y;
-    Position		x_root;
-    Position		y_root;
-    int			state;		/* Button/Modifier key state */
-# else
-    HWND		target;
-    HWND		balloon;
-    int			x;
-    int			y;
-    BeState		showState;	/* tells us whats currently going on */
-# endif
-#endif
-    int			ts;		/* tabstop setting for this buffer */
-    char_u		*msg;
-    void		(*msgCB)(struct BalloonEvalStruct *, int);
-    void		*clientData;	/* For callback */
-#if !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)
-    Dimension		screen_width;	/* screen width in pixels */
-    Dimension		screen_height;	/* screen height in pixels */
-#endif
-} BalloonEval;
-
-#define EVAL_OFFSET_X 15 /* displacement of beval topleft corner from pointer */
-#define EVAL_OFFSET_Y 10
-
-#include "gui_beval.pro"
-
-#endif /* GUI_BEVAL_H and FEAT_BEVAL */
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -1360,7 +1360,7 @@ gui_mch_add_menu_item(vimmenu_T *menu, i
 	if (xms != NULL)
 	    XmStringFree(xms);
 
-# ifdef FEAT_BEVAL
+# ifdef FEAT_BEVAL_GUI
 	gui_mch_menu_set_tip(menu);
 # endif
 
@@ -1509,7 +1509,7 @@ gui_mch_new_menu_font(void)
     ui_new_shellsize();
 }
 
-#if defined(FEAT_BEVAL) || defined(PROTO)
+#if defined(FEAT_BEVAL_GUI) || defined(PROTO)
     void
 gui_mch_new_tooltip_font(void)
 {
@@ -1566,7 +1566,7 @@ submenu_change(
 		    n = add_pixmap_args(mp, args, n);
 		    XtSetValues(mp->id, args, n);
 		}
-# ifdef FEAT_BEVAL
+# ifdef FEAT_BEVAL_GUI
 		/* If we have a tooltip, then we need to change it's font */
 		if (mp->tip != NULL)
 		{
@@ -1584,7 +1584,7 @@ submenu_change(
 	    else
 	    {
 		gui_motif_menu_fontlist(mp->id);
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 		/* If we have a tooltip, then we need to change it's font */
 		if (mp->tip != NULL)
 		{
@@ -1642,7 +1642,7 @@ gui_mch_destroy_menu(vimmenu_T *menu)
 	Widget	    parent;
 
 	parent = XtParent(menu->id);
-#if defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL)
+#if defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL_GUI)
 	if (parent == toolBar && menu->tip != NULL)
 	{
 	    /* We try to destroy this before the actual menu, because there are
@@ -1703,7 +1703,7 @@ gui_mch_def_colors(void)
 	gui.menu_bg_pixel = gui.menu_def_bg_pixel;
 	gui.scroll_fg_pixel = gui.scroll_def_fg_pixel;
 	gui.scroll_bg_pixel = gui.scroll_def_bg_pixel;
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	gui.tooltip_fg_pixel =
 			gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
 	gui.tooltip_bg_pixel =
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -197,7 +197,7 @@ gui_mch_set_rendering_options(char_u *s)
 #ifndef __MINGW32__
 # include <shellapi.h>
 #endif
-#if defined(FEAT_TOOLBAR) || defined(FEAT_BEVAL) || defined(FEAT_GUI_TABLINE)
+#if defined(FEAT_TOOLBAR) || defined(FEAT_BEVAL_GUI) || defined(FEAT_GUI_TABLINE)
 # include <commctrl.h>
 #endif
 #include <windowsx.h>
@@ -473,7 +473,7 @@ static UINT	s_wait_timer = 0;   /* Timer
 static int	s_timed_out = FALSE;
 static int	dead_key = 0;	/* 0: no dead key, 1: dead key pressed */
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 /* balloon-eval WM_NOTIFY_HANDLER */
 static void Handle_WM_Notify(HWND hwnd, LPNMHDR pnmh);
 static void TrackUserActivity(UINT uMsg);
@@ -1216,7 +1216,7 @@ HandleMouseHide(UINT uMsg, LPARAM lParam
     s_wParam = wParam;
     s_lParam = lParam;
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
     TrackUserActivity(uMsg);
 #endif
 
@@ -1237,7 +1237,7 @@ HandleMouseHide(UINT uMsg, LPARAM lParam
 	HANDLE_MSG(hwnd, WM_XBUTTONDOWN,_OnMouseButtonDown);
 	HANDLE_MSG(hwnd, WM_XBUTTONUP,	_OnMouseMoveOrRelease);
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
 	    return TRUE;
 #endif
@@ -4231,7 +4231,7 @@ done:
 #endif
 
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 # define ID_BEVAL_TOOLTIP   200
 # define BEVAL_TEXT_LEN	    MAXPATHL
 
@@ -4310,7 +4310,7 @@ typedef HRESULT (WINAPI* DLLGETVERSIONPR
 # define TTN_GETDISPINFO	(TTN_FIRST - 0)
 #endif
 
-#endif /* defined(FEAT_BEVAL) */
+#endif /* defined(FEAT_BEVAL_GUI) */
 
 #if defined(FEAT_TOOLBAR) || defined(FEAT_GUI_TABLINE)
 /* Older MSVC compilers don't have LPNMTTDISPINFO[AW] thus we need to define
@@ -8517,12 +8517,12 @@ gui_mch_destroy_sign(void *sign)
 }
 #endif
 
-#if defined(FEAT_BEVAL) || defined(PROTO)
+#if defined(FEAT_BEVAL_GUI) || defined(PROTO)
 
 /* BALLOON-EVAL IMPLEMENTATION FOR WINDOWS.
  *  Added by Sergey Khorev <sergey.khorev@gmail.com>
  *
- * The only reused thing is gui_beval.h and get_beval_info()
+ * The only reused thing is beval.h and get_beval_info()
  * from gui_beval.c (note it uses x and y of the BalloonEval struct
  * to get current mouse position).
  *
@@ -8847,7 +8847,7 @@ gui_mch_destroy_beval_area(BalloonEval *
 {
     vim_free(beval);
 }
-#endif /* FEAT_BEVAL */
+#endif /* FEAT_BEVAL_GUI */
 
 #if defined(FEAT_NETBEANS_INTG) || defined(PROTO)
 /*
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -50,10 +50,6 @@
 # include <X11/Xmu/Editres.h>
 #endif
 
-#ifdef FEAT_BEVAL_TIP
-# include "gui_beval.h"
-#endif
-
 #define VIM_NAME	"vim"
 #define VIM_CLASS	"Vim"
 
@@ -446,7 +442,7 @@ static XtResource vim_resources[] =
 	XtRString,
 	DFLT_SCROLL_BG_COLOR
     },
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
     {
 	XtNtooltipForeground,
 	XtCTooltipForeground,
@@ -484,7 +480,7 @@ static XtResource vim_resources[] =
 	XtRImmediate,
 	(XtPointer)NOFONTSET
     },
-#endif /* FEAT_BEVAL */
+#endif /* FEAT_BEVAL_GUI */
 #ifdef FEAT_XIM
     {
 	"preeditType",
@@ -1355,7 +1351,7 @@ gui_mch_init(void)
     gui.menu_bg_pixel = gui_get_color((char_u *)gui.rsrc_menu_bg_name);
     gui.scroll_fg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_fg_name);
     gui.scroll_bg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_bg_name);
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
     gui.tooltip_fg_pixel = gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
     gui.tooltip_bg_pixel = gui_get_color((char_u *)gui.rsrc_tooltip_bg_name);
 #endif
@@ -1544,7 +1540,7 @@ gui_mch_init(void)
 	workshop_connect(app_context);
 #endif
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
     gui_init_tooltip_font();
 #endif
 #ifdef FEAT_MENU
@@ -1685,7 +1681,7 @@ gui_mch_open(void)
     return OK;
 }
 
-#if defined(FEAT_BEVAL) || defined(PROTO)
+#if defined(FEAT_BEVAL_GUI) || defined(PROTO)
 /*
  * Convert the tooltip fontset name to an XFontSet.
  */
@@ -3411,7 +3407,7 @@ mch_set_mouse_shape(int shape)
 }
 #endif
 
-#if (defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL)) || defined(PROTO)
+#if (defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL_GUI)) || defined(PROTO)
 /*
  * Set the balloon-eval used for the tooltip of a toolbar menu item.
  * The check for a non-toolbar item was added, because there is a crash when
--- a/src/integration.c
+++ b/src/integration.c
@@ -1077,7 +1077,7 @@ void workshop_perform_verb(char *verb, v
 }
 
 /* Send a message to eserve */
-#if defined(NOHANDS_SUPPORT_FUNCTIONS) || defined(FEAT_BEVAL)
+#if defined(NOHANDS_SUPPORT_FUNCTIONS) || defined(FEAT_BEVAL_GUI)
 void workshop_send_message(char *buf)
 {
 	dummy = write(sd, buf, strlen(buf));
--- a/src/menu.c
+++ b/src/menu.c
@@ -815,7 +815,7 @@ add_menu_path(
 	    }
 	}
 #if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32) \
-	&& (defined(FEAT_BEVAL) || defined(FEAT_GUI_GTK))
+	&& (defined(FEAT_BEVAL_GUI) || defined(FEAT_GUI_GTK))
 	/* Need to update the menu tip. */
 	if (modes & MENU_TIP_MODE)
 	    gui_mch_menu_set_tip(menu);
@@ -1010,7 +1010,7 @@ remove_menu(
 	{
 	    free_menu_string(menu, MENU_INDEX_TIP);
 #if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32) \
-	    && (defined(FEAT_BEVAL) || defined(FEAT_GUI_GTK))
+	    && (defined(FEAT_BEVAL_GUI) || defined(FEAT_GUI_GTK))
 	    /* Need to update the menu tip. */
 	    if (gui.in_use)
 		gui_mch_menu_set_tip(menu);
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -107,7 +107,7 @@ netbeans_close(void)
 	nb_channel = NULL;
     }
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
     bevalServers &= ~BEVAL_NETBEANS;
 #endif
 
@@ -220,7 +220,7 @@ netbeans_connect(char *params, int doabo
 	if (nb_channel != NULL)
 	{
 	    /* success */
-# ifdef FEAT_BEVAL
+# ifdef FEAT_BEVAL_GUI
 	    bevalServers |= BEVAL_NETBEANS;
 # endif
 
@@ -1788,7 +1788,7 @@ nb_do_cmd(
 	}
 	else if (streq((char *)cmd, "showBalloon"))
 	{
-#if defined(FEAT_BEVAL)
+#if defined(FEAT_BEVAL_GUI)
 	    static char	*text = NULL;
 
 	    /*
@@ -2506,7 +2506,7 @@ netbeans_beval_cb(
 
     /* Don't do anything when 'ballooneval' is off, messages scrolled the
      * windows up or we have no connection. */
-    if (!p_beval || msg_scrolled > 0 || !NETBEANS_OPEN)
+    if (!can_use_beval() || !NETBEANS_OPEN)
 	return;
 
     if (get_beval_info(beval, TRUE, &wp, &lnum, &text, &col) == OK)
--- a/src/normal.c
+++ b/src/normal.c
@@ -2400,7 +2400,7 @@ do_mouse(
     if (c == K_MOUSEMOVE)
     {
 	/* Mouse moved without a button pressed. */
-#ifdef FEAT_BEVALTERM
+#ifdef FEAT_BEVAL_TERM
 	ui_may_remove_balloon();
 	if (p_bevalterm && !VIsual_active)
 	{
--- a/src/option.c
+++ b/src/option.c
@@ -634,7 +634,7 @@ static struct vimoption options[] =
 #endif
 			    SCRIPTID_INIT},
     {"ballooneval", "beval",P_BOOL|P_VI_DEF|P_NO_MKRC,
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 			    (char_u *)&p_beval, PV_NONE,
 			    {(char_u *)FALSE, (char_u *)0L}
 #else
@@ -643,7 +643,7 @@ static struct vimoption options[] =
 #endif
 			    SCRIPTID_INIT},
     {"balloonevalterm", "bevalterm",P_BOOL|P_VI_DEF|P_NO_MKRC,
-#ifdef FEAT_BEVALTERM
+#ifdef FEAT_BEVAL_TERM
 			    (char_u *)&p_bevalterm, PV_NONE,
 			    {(char_u *)FALSE, (char_u *)0L}
 #else
@@ -8429,7 +8429,7 @@ set_bool_option(
 	p_wiv = (*T_XS != NUL);
     }
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
     else if ((int *)varp == &p_beval)
     {
 	if (!balloonEvalForTerm)
@@ -8441,12 +8441,12 @@ set_bool_option(
 	}
     }
 #endif
-# ifdef FEAT_BEVALTERM
+#ifdef FEAT_BEVAL_TERM
     else if ((int *)varp == &p_bevalterm)
     {
 	mch_bevalterm_changed();
     }
-# endif
+#endif
 
 #ifdef FEAT_AUTOCHDIR
     else if ((int *)varp == &p_acd)
--- a/src/option.h
+++ b/src/option.h
@@ -376,15 +376,17 @@ EXTERN char_u	*p_bsk;		/* 'backupskip' *
 EXTERN char_u	*p_cm;		/* 'cryptmethod' */
 #endif
 #ifdef FEAT_BEVAL
+# ifdef FEAT_BEVAL_GUI
+EXTERN int	p_beval;	/* 'ballooneval' */
+# endif
 EXTERN long	p_bdlay;	/* 'balloondelay' */
-EXTERN int	p_beval;	/* 'ballooneval' */
 # ifdef FEAT_EVAL
 EXTERN char_u	*p_bexpr;
 # endif
-#endif
-# ifdef FEAT_BEVALTERM
+# ifdef FEAT_BEVAL_TERM
 EXTERN int	p_bevalterm;	/* 'balloonevalterm' */
 # endif
+#endif
 #ifdef FEAT_BROWSE
 EXTERN char_u	*p_bsdir;	/* 'browsedir' */
 #endif
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -475,7 +475,7 @@ mch_inchar(
 	if ((wait_time < 0 || wait_time > 100L) && channel_any_readahead())
 	    wait_time = 10L;
 #endif
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	if (p_beval && wait_time > 100L)
 	    /* The 'balloonexpr' may indirectly invoke a callback while waiting
 	     * for a character, need to check often. */
@@ -3572,13 +3572,13 @@ static int	mouse_ison = FALSE;
     void
 mch_setmouse(int on)
 {
-# ifdef FEAT_BEVALTERM
+# ifdef FEAT_BEVAL_TERM
     static int	bevalterm_ison = FALSE;
 # endif
     int		xterm_mouse_vers;
 
     if (on == mouse_ison
-# ifdef FEAT_BEVALTERM
+# ifdef FEAT_BEVAL_TERM
 	    && p_bevalterm == bevalterm_ison
 # endif
 	    )
@@ -3610,7 +3610,7 @@ mch_setmouse(int on)
     }
 # endif
 
-# ifdef FEAT_BEVALTERM
+# ifdef FEAT_BEVAL_TERM
     if (bevalterm_ison != (p_bevalterm && on))
     {
 	bevalterm_ison = (p_bevalterm && on);
@@ -3627,7 +3627,7 @@ mch_setmouse(int on)
 	    out_str_nf((char_u *)
 		       (xterm_mouse_vers > 1
 			? (
-# ifdef FEAT_BEVALTERM
+# ifdef FEAT_BEVAL_TERM
 			    bevalterm_ison
 			       ? IF_EB("\033[?1003h", ESC_STR "[?1003h") :
 # endif
@@ -3735,7 +3735,7 @@ mch_setmouse(int on)
 # endif
 }
 
-#if defined(FEAT_BEVALTERM) || defined(PROTO)
+#if defined(FEAT_BEVAL_TERM) || defined(PROTO)
 /*
  * Called when 'balloonevalterm' changed.
  */
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1469,7 +1469,7 @@ WaitForChar(long msec, int ignore_input)
 		    dwWaitTime = 10;
 	    }
 #endif
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	    if (p_beval && dwWaitTime > 100)
 		/* The 'balloonexpr' may indirectly invoke a callback while
 		 * waiting for a character, need to check often. */
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -760,7 +760,7 @@ pum_get_height(void)
     return pum_height;
 }
 
-# if defined(FEAT_BEVALTERM) || defined(PROTO)
+# if defined(FEAT_BEVAL_TERM) || defined(PROTO)
 static pumitem_T *balloon_array = NULL;
 static int balloon_arraysize;
 static int balloon_mouse_row = 0;
new file mode 100644
--- /dev/null
+++ b/src/proto/beval.pro
@@ -0,0 +1,6 @@
+/* beval.c */
+int get_beval_info(BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp);
+void post_balloon(BalloonEval *beval, char_u *mesg);
+int can_use_beval(void);
+void general_beval_cb(BalloonEval *beval, int state);
+/* vim: set ft=c : */
--- a/src/proto/gui_beval.pro
+++ b/src/proto/gui_beval.pro
@@ -1,12 +1,9 @@
 /* gui_beval.c */
-void general_beval_cb(BalloonEval *beval, int state);
 BalloonEval *gui_mch_create_beval_area(void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData);
 void gui_mch_destroy_beval_area(BalloonEval *beval);
 void gui_mch_enable_beval_area(BalloonEval *beval);
 void gui_mch_disable_beval_area(BalloonEval *beval);
 BalloonEval *gui_mch_currently_showing_beval(void);
-int get_beval_info(BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp);
-void post_balloon(BalloonEval *beval, char_u *mesg);
 void gui_mch_post_balloon(BalloonEval *beval, char_u *mesg);
 void gui_mch_unpost_balloon(BalloonEval *beval);
 /* vim: set ft=c : */
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -7561,7 +7561,7 @@ do_highlight(
 	    if (gui.in_use)
 	    {
 		gui_new_scrollbar_colors();
-#  ifdef FEAT_BEVAL
+#  ifdef FEAT_BEVAL_GUI
 		gui_mch_new_tooltip_colors();
 #  endif
 #  ifdef FEAT_MENU
@@ -8015,7 +8015,7 @@ do_highlight(
 			gui.scroll_fg_pixel = i;
 			do_colors = TRUE;
 		    }
-#   ifdef FEAT_BEVAL
+#   ifdef FEAT_BEVAL_GUI
 		    if (is_tooltip_group && gui.tooltip_fg_pixel != i)
 		    {
 			gui.tooltip_fg_pixel = i;
@@ -8066,7 +8066,7 @@ do_highlight(
 			gui.scroll_bg_pixel = i;
 			do_colors = TRUE;
 		    }
-#   ifdef FEAT_BEVAL
+#   ifdef FEAT_BEVAL_GUI
 		    if (is_tooltip_group && gui.tooltip_bg_pixel != i)
 		    {
 			gui.tooltip_bg_pixel = i;
@@ -8252,7 +8252,7 @@ do_highlight(
 	    if (gui.in_use && do_colors)
 		gui_new_scrollbar_colors();
 	}
-# ifdef FEAT_BEVAL
+# ifdef FEAT_BEVAL_GUI
 	else if (is_tooltip_group)
 	{
 	    if (gui.in_use && do_colors)
@@ -8431,7 +8431,7 @@ set_normal_colors(void)
 #  endif
 	    must_redraw = CLEAR;
 	}
-#  ifdef FEAT_BEVAL
+#  ifdef FEAT_BEVAL_GUI
 	if (set_group_colors((char_u *)"Tooltip",
 			     &gui.tooltip_fg_pixel, &gui.tooltip_bg_pixel,
 			     FALSE, FALSE, TRUE))
@@ -8673,7 +8673,7 @@ hl_do_font(
 #    endif
 	    gui_mch_new_menu_font();
 	}
-#    ifdef FEAT_BEVAL
+#    ifdef FEAT_BEVAL_GUI
 	if (do_tooltip)
 	{
 	    /* The Athena widget set cannot currently handle switching between
--- a/src/ui.c
+++ b/src/ui.c
@@ -3208,7 +3208,11 @@ get_fpos_of_mouse(pos_T *mpos)
 #endif
     return IN_BUFFER;
 }
+#endif
 
+#if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_MAC) \
+	|| defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MSWIN) \
+	|| defined(FEAT_GUI_PHOTON) || defined(FEAT_BEVAL) || defined(PROTO)
 /*
  * Convert a virtual (screen) column to a character column.
  * The first column is one.
--- a/src/version.c
+++ b/src/version.c
@@ -88,12 +88,12 @@ static char *(features[]) =
 #else
 	"-autoservername",
 #endif
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 	"+balloon_eval",
 #else
 	"-balloon_eval",
 #endif
-#ifdef FEAT_BEVALTERM
+#ifdef FEAT_BEVAL_TERM
 	"+balloon_eval_term",
 #else
 	"-balloon_eval_term",
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1312,
+/**/
     1311,
 /**/
     1310,
--- a/src/vim.h
+++ b/src/vim.h
@@ -1816,6 +1816,7 @@ typedef int sock_T;
 #include "structs.h"	    /* file that defines many structures */
 
 #include "alloc.h"
+#include "beval.h"
 
 /* Values for "do_profiling". */
 #define PROF_NONE	0	/* profiling not started */
--- a/src/workshop.c
+++ b/src/workshop.c
@@ -33,7 +33,6 @@
 
 #include "vim.h"
 #include "version.h"
-#include "gui_beval.h"
 #include "workshop.h"
 
 void		 workshop_hotkeys(Boolean);
@@ -48,7 +47,7 @@ static char	*append_selection(int, char 
 static void	 load_buffer_by_name(char *, int);
 static void	 load_window(char *, int lnum);
 static void	 warp_to_pc(int);
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
 void		 workshop_beval_cb(BalloonEval *, int);
 static int	 computeIndex(int, char_u *, int);
 #endif
@@ -208,7 +207,7 @@ workshop_load_file(
 	wstrace("workshop_load_file(%s, %d)\n", filename, line);
 #endif
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
     bevalServers |= BEVAL_WORKSHOP;
 #endif
 
@@ -1497,7 +1496,7 @@ fixAccelText(
 	return NULL;
 }
 
-#ifdef FEAT_BEVAL
+#ifdef FEAT_BEVAL_GUI
     void
 workshop_beval_cb(
 	BalloonEval	*beval,