summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Make_bc3.mak1
-rw-r--r--src/Make_bc5.mak1
-rw-r--r--src/Make_cyg.mak3
-rw-r--r--src/Make_dice.mak4
-rw-r--r--src/Make_ivc.mak5
-rw-r--r--src/Make_ming.mak1
-rw-r--r--src/Make_mpw.mak128
-rw-r--r--src/Make_mvc.mak4
-rw-r--r--src/Make_os2.mak2
-rw-r--r--src/Make_ro.mak4
-rw-r--r--src/Make_sas.mak5
-rw-r--r--src/Make_vms.mms10
-rw-r--r--src/Makefile10
-rw-r--r--src/globals.h9
-rw-r--r--src/main.aap1
-rw-r--r--src/misc2.c2
-rw-r--r--src/move.c5
-rw-r--r--src/proto.h1
-rw-r--r--src/proto/gui_gtk.pro1
-rw-r--r--src/proto/gui_photon.pro2
-rw-r--r--src/quickfix.c2
-rw-r--r--src/screen.c8
-rw-r--r--src/structs.h35
-rw-r--r--src/testdir/Make_amiga.mak3
-rw-r--r--src/testdir/Make_dos.mak2
-rw-r--r--src/testdir/Make_os2.mak2
-rw-r--r--src/testdir/test49.vim5
-rw-r--r--src/testdir/test55.in156
-rw-r--r--src/testdir/test55.ok31
-rw-r--r--src/version.h4
30 files changed, 424 insertions, 23 deletions
diff --git a/src/Make_bc3.mak b/src/Make_bc3.mak
index 1d27081a1..df219ba60 100644
--- a/src/Make_bc3.mak
+++ b/src/Make_bc3.mak
@@ -65,6 +65,7 @@ EXE_dependencies = \
fileio.obj \
fold.obj \
getchar.obj \
+ hashtable.obj \
main.obj \
mark.obj \
memfile.obj \
diff --git a/src/Make_bc5.mak b/src/Make_bc5.mak
index 75b0f1d05..d05d83694 100644
--- a/src/Make_bc5.mak
+++ b/src/Make_bc5.mak
@@ -546,6 +546,7 @@ vimobj = \
$(OBJDIR)\fileio.obj \
$(OBJDIR)\fold.obj \
$(OBJDIR)\getchar.obj \
+ $(OBJDIR)\hashtable.obj \
$(OBJDIR)\main.obj \
$(OBJDIR)\mark.obj \
$(OBJDIR)\memfile.obj \
diff --git a/src/Make_cyg.mak b/src/Make_cyg.mak
index 4687ef1d3..962e22e6b 100644
--- a/src/Make_cyg.mak
+++ b/src/Make_cyg.mak
@@ -1,6 +1,6 @@
#
# Makefile for VIM on Win32, using Cygnus gcc
-# Last updated by Dan Sharp. Last Change: 2005 Jan 16
+# Last updated by Dan Sharp. Last Change: 2005 Jan 19
#
# This compiles Vim as a Windows application. If you want Vim to run as a
# Cygwin application use the Makefile (just like on Unix).
@@ -370,6 +370,7 @@ OBJ = \
$(OUTDIR)/fileio.o \
$(OUTDIR)/fold.o \
$(OUTDIR)/getchar.o \
+ $(OUTDIR)/hashtable.o \
$(OUTDIR)/main.o \
$(OUTDIR)/mark.o \
$(OUTDIR)/memfile.o \
diff --git a/src/Make_dice.mak b/src/Make_dice.mak
index 77f6cba22..f2b090749 100644
--- a/src/Make_dice.mak
+++ b/src/Make_dice.mak
@@ -40,6 +40,7 @@ SRC = \
fileio.c \
fold.c \
getchar.c \
+ hashtable.c \
main.c \
mark.c \
memfile.c \
@@ -80,6 +81,7 @@ OBJ = o/buffer.o \
o/fileio.o \
o/fold.o \
o/getchar.o \
+ o/hashtable.o \
o/main.o \
o/mark.o \
o/memfile.o \
@@ -153,6 +155,8 @@ o/fold.o: fold.c $(SYMS)
o/getchar.o: getchar.c $(SYMS)
+o/hashtable.o: hashtable.c $(SYMS)
+
o/main.o: main.c $(SYMS)
o/mark.o: mark.c $(SYMS)
diff --git a/src/Make_ivc.mak b/src/Make_ivc.mak
index 94a153060..0c32793f2 100644
--- a/src/Make_ivc.mak
+++ b/src/Make_ivc.mak
@@ -224,6 +224,7 @@ LINK32_OBJS= \
"$(INTDIR)/fileio.obj" \
"$(INTDIR)/fold.obj" \
"$(INTDIR)/getchar.obj" \
+ "$(INTDIR)/hashtable.obj" \
"$(INTDIR)/main.obj" \
"$(INTDIR)/mark.obj" \
"$(INTDIR)/mbyte.obj" \
@@ -376,6 +377,10 @@ SOURCE=.\getchar.c
# End Source File
# Begin Source File
+SOURCE=.\hashtable.c
+# End Source File
+# Begin Source File
+
SOURCE=.\gui.c
!IF "$(CFG)" == "Vim - Win32 Release vim"
diff --git a/src/Make_ming.mak b/src/Make_ming.mak
index b90cf79fb..2d8bbaf5c 100644
--- a/src/Make_ming.mak
+++ b/src/Make_ming.mak
@@ -360,6 +360,7 @@ OBJ = \
$(OUTDIR)/fileio.o \
$(OUTDIR)/fold.o \
$(OUTDIR)/getchar.o \
+ $(OUTDIR)/hashtable.o \
$(OUTDIR)/main.o \
$(OUTDIR)/mark.o \
$(OUTDIR)/memfile.o \
diff --git a/src/Make_mpw.mak b/src/Make_mpw.mak
index 8a98d68a0..cd366e47f 100644
--- a/src/Make_mpw.mak
+++ b/src/Make_mpw.mak
@@ -32,6 +32,7 @@ SrcFiles = ¶
:src:fileio.c ¶
:src:fold.c ¶
:src:getchar.c ¶
+ :src:hashtable.c ¶
:src:gui.c ¶
:src:gui_mac.c ¶
:src:if_cscope.c ¶
@@ -82,6 +83,7 @@ ObjFiles-PPC = ¶
"{ObjDir}fileio.c.x" ¶
"{ObjDir}fold.c.x" ¶
"{ObjDir}getchar.c.x" ¶
+ "{ObjDir}hashtable.c.x" ¶
"{ObjDir}gui.c.x" ¶
"{ObjDir}gui_mac.c.x" ¶
"{ObjDir}if_cscope.c.x" ¶
@@ -163,6 +165,7 @@ VIm ÄÄ {ObjFiles-PPC} {LibFiles-PPC} {¥MondoBuild¥}
"{ObjDir}fileio.c.x" Ä :src:fileio.c
"{ObjDir}fold.c.x" Ä :src:fold.c
"{ObjDir}getchar.c.x" Ä :src:getchar.c
+"{ObjDir}hashtable.c.x" Ä :src:hashtable.c
"{ObjDir}gui.c.x" Ä :src:gui.c
"{ObjDir}gui_mac.c.x" Ä :src:gui_mac.c
"{ObjDir}if_cscope.c.x" Ä :src:if_cscope.c
@@ -251,6 +254,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -331,6 +335,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -411,6 +416,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -491,6 +497,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -571,6 +578,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -652,6 +660,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -732,6 +741,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -812,6 +822,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -892,6 +903,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -972,6 +984,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1052,6 +1065,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1132,6 +1146,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1212,6 +1227,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1333,6 +1349,87 @@ Dependencies Ä $OutOfDate
:src:proto:if_perl.pro ¶
:src:proto:if_perlsfio.pro
+:obj:hashtable.c.x Ä ¶
+ :src:hashtable.c ¶
+ :src:vim.h ¶
+ :src:auto:config.h ¶
+ :src:feature.h ¶
+ :src:os_unix.h ¶
+ :src:os_mac.h ¶
+ :src:workshop.h ¶
+ :src:ascii.h ¶
+ :src:keymap.h ¶
+ :src:term.h ¶
+ :src:macros.h ¶
+ :src:structs.h ¶
+ :src:globals.h ¶
+ :src:option.h ¶
+ :src:ex_cmds.h ¶
+ :src:proto.h ¶
+ :src:integration.h ¶
+ :src:wsdebug.h ¶
+ :src:regexp.h ¶
+ :src:gui.h ¶
+ :src:farsi.h ¶
+ :src:proto:os_unix.pro ¶
+ :src:proto:os_mac.pro ¶
+ :src:proto:buffer.pro ¶
+ :src:proto:charset.pro ¶
+ :src:proto:if_cscope.pro ¶
+ :src:proto:diff.pro ¶
+ :src:proto:digraph.pro ¶
+ :src:proto:edit.pro ¶
+ :src:proto:eval.pro ¶
+ :src:proto:ex_cmds.pro ¶
+ :src:proto:ex_cmds2.pro ¶
+ :src:proto:ex_docmd.pro ¶
+ :src:proto:ex_eval.pro ¶
+ :src:proto:ex_getln.pro ¶
+ :src:proto:fileio.pro ¶
+ :src:proto:fold.pro ¶
+ :src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
+ :src:proto:hangulin.pro ¶
+ :src:proto:main.pro ¶
+ :src:proto:mark.pro ¶
+ :src:proto:memfile.pro ¶
+ :src:proto:memline.pro ¶
+ :src:proto:menu.pro ¶
+ :src:proto:message.pro ¶
+ :src:proto:misc1.pro ¶
+ :src:proto:misc2.pro ¶
+ :src:proto:move.pro ¶
+ :src:proto:multibyte.pro ¶
+ :src:proto:normal.pro ¶
+ :src:proto:ops.pro ¶
+ :src:proto:option.pro ¶
+ :src:proto:quickfix.pro ¶
+ :src:proto:regexp.pro ¶
+ :src:proto:screen.pro ¶
+ :src:proto:search.pro ¶
+ :src:proto:syntax.pro ¶
+ :src:proto:tag.pro ¶
+ :src:proto:term.pro ¶
+ :src:proto:termlib.pro ¶
+ :src:proto:ui.pro ¶
+ :src:proto:undo.pro ¶
+ :src:proto:version.pro ¶
+ :src:proto:window.pro ¶
+ :src:proto:if_python.pro ¶
+ :src:proto:if_tcl.pro ¶
+ :src:proto:if_ruby.pro ¶
+ :src:proto:gui.pro ¶
+ :src:proto:pty.pro ¶
+ :src:proto:gui_gtk.pro ¶
+ :src:proto:gui_gtk_x11.pro ¶
+ :src:proto:gui_motif.pro ¶
+ :src:proto:gui_athena.pro ¶
+ :src:proto:gui_mac.pro ¶
+ :src:proto:gui_x11.pro ¶
+ :src:proto:workshop.pro ¶
+ :src:proto:if_perl.pro ¶
+ :src:proto:if_perlsfio.pro
+
:obj:gui.c.x Ä ¶
:src:gui.c ¶
:src:vim.h ¶
@@ -1372,6 +1469,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1452,6 +1550,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1558,6 +1657,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1639,6 +1739,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1719,6 +1820,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1799,6 +1901,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1879,6 +1982,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -1959,6 +2063,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2039,6 +2144,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2120,6 +2226,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2200,6 +2307,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2280,6 +2388,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2360,6 +2469,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2440,6 +2550,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2520,6 +2631,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2600,6 +2712,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2680,6 +2793,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2760,6 +2874,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2840,6 +2955,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -2920,6 +3036,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3000,6 +3117,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3080,6 +3198,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3160,6 +3279,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3240,6 +3360,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3320,6 +3441,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3401,6 +3523,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3480,6 +3603,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3560,6 +3684,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3641,6 +3766,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3721,6 +3847,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
@@ -3801,6 +3928,7 @@ Dependencies Ä $OutOfDate
:src:proto:fileio.pro ¶
:src:proto:fold.pro ¶
:src:proto:getchar.pro ¶
+ :src:proto:hashtable.pro ¶
:src:proto:hangulin.pro ¶
:src:proto:main.pro ¶
:src:proto:mark.pro ¶
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index 62e875650..5cc0a92f5 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -347,6 +347,7 @@ OBJ = \
$(OUTDIR)\fileio.obj \
$(OUTDIR)\fold.obj \
$(OUTDIR)\getchar.obj \
+ $(OUTDIR)\hashtable.obj \
$(OUTDIR)\main.obj \
$(OUTDIR)\mark.obj \
$(OUTDIR)\mbyte.obj \
@@ -754,6 +755,8 @@ $(OUTDIR)/fold.obj: $(OUTDIR) fold.c $(INCL)
$(OUTDIR)/getchar.obj: $(OUTDIR) getchar.c $(INCL)
+$(OUTDIR)/hashtable.obj: $(OUTDIR) hashtable.c $(INCL)
+
$(OUTDIR)/gui.obj: $(OUTDIR) gui.c $(INCL) $(GUI_INCL)
$(OUTDIR)/gui_w32.obj: $(OUTDIR) gui_w32.c gui_w48.c $(INCL) $(GUI_INCL)
@@ -892,6 +895,7 @@ proto.h: \
proto/ex_getln.pro \
proto/fileio.pro \
proto/getchar.pro \
+ proto/hashtable.pro \
proto/main.pro \
proto/mark.pro \
proto/memfile.pro \
diff --git a/src/Make_os2.mak b/src/Make_os2.mak
index 4d21dc620..1750e71f2 100644
--- a/src/Make_os2.mak
+++ b/src/Make_os2.mak
@@ -53,6 +53,7 @@ OBJ = \
fileio.o \
fold.o \
getchar.o \
+ hashtable.o \
main.o \
mark.o \
memfile.o \
@@ -122,6 +123,7 @@ ex_getln.o: ex_getln.c $(INCL)
fileio.o: fileio.c $(INCL)
fold.o: fold.c $(INCL)
getchar.o: getchar.c $(INCL)
+hashtable.o: hashtable.c $(INCL)
main.o: main.c $(INCL)
mark.o: mark.c $(INCL)
memfile.o: memfile.c $(INCL)
diff --git a/src/Make_ro.mak b/src/Make_ro.mak
index 82708f41f..65f176cd4 100644
--- a/src/Make_ro.mak
+++ b/src/Make_ro.mak
@@ -12,7 +12,7 @@ TERMFLAG = -DUP_BC_PC_EXTERN
ASMFLAGS = -throwback -objasm -gcc
OBJS = o.buffer o.charset o.diff o.digraph o.edit o.eval o.ex_cmds o.ex_cmds2 \
- o.ex_docmd o.ex_eval o.ex_getln o.fileio o.fold o.getchar o.main o.mark o.mbyte \
+ o.ex_docmd o.ex_eval o.ex_getln o.fileio o.fold o.getchar o.hashtable o.main o.mark o.mbyte \
o.memfile o.memline o.menu o.message o.misc1 o.misc2 o.move \
o.normal o.ops o.option o.quickfix o.regexp o.screen o.search \
o.syntax o.tag o.term o.termlib o.ui o.undo o.version o.window \
@@ -65,6 +65,8 @@ o.fold: c.fold
o.getchar: c.getchar
+o.hashtable: c.hashtable
+
o.gui: c.gui
o.gui_riscos: c.gui_riscos
diff --git a/src/Make_sas.mak b/src/Make_sas.mak
index 827903bbc..1751d8ae8 100644
--- a/src/Make_sas.mak
+++ b/src/Make_sas.mak
@@ -103,6 +103,7 @@ SRC = \
fileio.c \
fold.c \
getchar.c \
+ hashtable.c \
main.c \
mark.c \
memfile.c \
@@ -144,6 +145,7 @@ OBJ = \
fileio.o \
fold.o \
getchar.o \
+ hashtable.o \
main.o \
mark.o \
memfile.o \
@@ -185,6 +187,7 @@ PRO = \
proto/fileio.pro \
proto/fold.pro \
proto/getchar.pro \
+ proto/hashtable.pro \
proto/main.pro \
proto/mark.pro \
proto/memfile.pro \
@@ -294,6 +297,8 @@ fold.o: fold.c
proto/fold.pro: fold.c
getchar.o: getchar.c
proto/getchar.pro: getchar.c
+hashtable.o: hashtable.c
+proto/hashtable.pro: hashtable.c
main.o: main.c
proto/main.pro: main.c
mark.o: mark.c
diff --git a/src/Make_vms.mms b/src/Make_vms.mms
index 53793539b..b44855247 100644
--- 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: 2004 Dec 16
+# Last change: 2005 Jan 19
#
# This has script been tested on VMS 6.2 to 7.3 on DEC Alpha, VAX and IA64
# with MMS and MMK
@@ -274,7 +274,7 @@ ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \
SRC = buffer.c charset.c diff.c digraph.c edit.c eval.c ex_cmds.c ex_cmds2.c \
ex_docmd.c ex_eval.c ex_getln.c if_xcmdsrv.c fileio.c fold.c getchar.c \
- main.c mark.c menu.c mbyte.c memfile.c memline.c message.c misc1.c \
+ hashtable.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 quickfix.c regexp.c search.c \
syntax.c tag.c term.c termlib.c ui.c undo.c version.c screen.c \
window.c os_unix.c os_vms.c pathdef.c \
@@ -283,7 +283,7 @@ SRC = buffer.c charset.c diff.c digraph.c edit.c eval.c ex_cmds.c ex_cmds2.c \
OBJ = buffer.obj charset.obj diff.obj digraph.obj edit.obj eval.obj \
ex_cmds.obj ex_cmds2.obj ex_docmd.obj ex_eval.obj ex_getln.obj \
- if_xcmdsrv.obj fileio.obj fold.obj getchar.obj main.obj mark.obj \
+ if_xcmdsrv.obj fileio.obj fold.obj getchar.obj hashtable.obj main.obj mark.obj \
menu.obj memfile.obj memline.obj message.obj misc1.obj misc2.obj \
move.obj mbyte.obj normal.obj ops.obj option.obj quickfix.obj \
regexp.obj search.obj syntax.obj tag.obj term.obj termlib.obj \
@@ -510,6 +510,10 @@ 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 \
globals.h farsi.h arabic.h
+hashtable.obj : hashtable.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 \
+ 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 \
diff --git a/src/Makefile b/src/Makefile
index ecaafb0bb..8c949b5e4 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1298,6 +1298,7 @@ BASIC_SRC = \
fileio.c \
fold.c \
getchar.c \
+ hashtable.c \
if_cscope.c \
if_xcmdsrv.c \
main.c \
@@ -1364,6 +1365,7 @@ OBJ = \
objects/fileio.o \
objects/fold.o \
objects/getchar.o \
+ objects/hashtable.o \
$(HANGULIN_OBJ) \
objects/if_cscope.o \
objects/if_xcmdsrv.o \
@@ -1419,6 +1421,7 @@ PRO_AUTO = \
fileio.pro \
fold.pro \
getchar.pro \
+ hashtable.pro \
hangulin.pro \
if_cscope.pro \
if_xcmdsrv.pro \
@@ -2153,6 +2156,9 @@ objects/fold.o: fold.c
objects/getchar.o: getchar.c
$(CCC) -o $@ getchar.c
+objects/hashtable.o: hashtable.c
+ $(CCC) -o $@ hashtable.c
+
objects/gui.o: gui.c
$(CCC) -o $@ gui.c
@@ -2492,6 +2498,10 @@ 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 structs.h regexp.h \
gui.h gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h \
globals.h farsi.h arabic.h
+objects/hashtable.o: hashtable.c vim.h auto/config.h feature.h os_unix.h \
+ auto/osdef.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 \
+ 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 structs.h regexp.h \
gui.h gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h \
diff --git a/src/globals.h b/src/globals.h
index cf4bc58a3..effb4e2b1 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -279,6 +279,12 @@ EXTERN scid_T current_SID INIT(= 0); /* ID of script being sourced or
was sourced to define the
current function. */
#endif
+
+/* Magic number used for hashitem "hi_key" value indicating a deleted item.
+ * Only the address is used. */
+EXTERN char_u hash_removed;
+
+
EXTERN int scroll_region INIT(= FALSE); /* term supports scroll region */
EXTERN int t_colors INIT(= 0); /* int value of T_CCO */
@@ -1390,6 +1396,9 @@ EXTERN char_u e_invexprmsg[] INIT(=N_("E449: Invalid expression received"));
EXTERN char_u e_guarded[] INIT(=N_("E463: Region is guarded, cannot modify"));
EXTERN char_u e_nbreadonly[] INIT(=N_("E680: NetBeans does not allow changes in read-only files"));
#endif
+EXTERN char_u e_intern2[] INIT(=N_("E685: Internal error: %s"));
+
+
#ifdef MACOS_X_UNIX
EXTERN short disallow_gui INIT(= FALSE);
#endif
diff --git a/src/main.aap b/src/main.aap
index 3b785795e..9356dd9e8 100644
--- a/src/main.aap
+++ b/src/main.aap
@@ -247,6 +247,7 @@ Source =
fileio.c
fold.c
getchar.c
+ hashtable.c
if_cscope.c
if_xcmdsrv.c
main.c
diff --git a/src/misc2.c b/src/misc2.c
index 1633b2ae3..d647fc7ac 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1488,7 +1488,7 @@ vim_isspace(x)
}
/************************************************************************
- * Functions for hanlding growing arrays.
+ * Functions for handling growing arrays.
*/
/*
diff --git a/src/move.c b/src/move.c
index d1eb0257c..2fc226056 100644
--- a/src/move.c
+++ b/src/move.c
@@ -871,10 +871,7 @@ validate_cursor_col()
/* long line wrapping, adjust curwin->w_wrow */
if (curwin->w_p_wrap && col >= (colnr_T)W_WIDTH(curwin)
-#ifdef FEAT_VERTSPLIT
- && curwin->w_width != 0
-#endif
- )
+ && W_WIDTH(curwin) - off + curwin_col_off2() > 0)
{
col -= W_WIDTH(curwin);
col = col % (W_WIDTH(curwin) - off + curwin_col_off2());
diff --git a/src/proto.h b/src/proto.h
index ed1625848..f8920dae0 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -92,6 +92,7 @@ extern int _stricoll __ARGS((char *a, char *b));
# ifdef FEAT_HANGULIN
# include "hangulin.pro"
# endif
+# include "hashtable.pro"
# include "main.pro"
# include "mark.pro"
# if !defined MESSAGE_FILE || defined(HAVE_STDARG_H)
diff --git a/src/proto/gui_gtk.pro b/src/proto/gui_gtk.pro
index 882587e55..afe38dc2b 100644
--- a/src/proto/gui_gtk.pro
+++ b/src/proto/gui_gtk.pro
@@ -14,7 +14,6 @@ void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield));
void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
void gui_make_popup __ARGS((char_u *path_name));
void gui_mch_find_dialog __ARGS((exarg_T *eap));
diff --git a/src/proto/gui_photon.pro b/src/proto/gui_photon.pro
index 47ffc54bd..af33ef5ce 100644
--- a/src/proto/gui_photon.pro
+++ b/src/proto/gui_photon.pro
@@ -23,7 +23,7 @@ void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
void mch_set_mouse_shape __ARGS((int shape));
void gui_mch_mousehide __ARGS((int hide));
-int gui_mch_getmouse __ARGS((int *x, int *y));
+void gui_mch_getmouse __ARGS((int *x, int *y));
void gui_mch_setmouse __ARGS((int x, int y));
long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
void gui_mch_new_colors __ARGS((void));
diff --git a/src/quickfix.c b/src/quickfix.c
index 625d19d0c..8bb2bbe76 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -1775,8 +1775,10 @@ ex_copen(eap)
else if (buf != curbuf)
set_curbuf(buf, DOBUF_GOTO);
+#ifdef FEAT_VERTSPLIT
/* Only set the height when there is no window to the side. */
if (curwin->w_width == Columns)
+#endif
win_setheight(height);
curwin->w_p_wfh = TRUE; /* set 'winfixheight' */
if (win_valid(win))
diff --git a/src/screen.c b/src/screen.c
index ef7a87f9d..0435eb57b 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1924,8 +1924,8 @@ win_draw_end(wp, c1, c2, row, endrow, hl)
if (n > 0)
{
/* draw the fold column at the right */
- if (n > wp->w_width)
- n = wp->w_width;
+ if (n > W_WIDTH(wp))
+ n = W_WIDTH(wp);
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_ENDCOL(wp) - n, (int)W_ENDCOL(wp),
' ', ' ', hl_attr(HLF_FC));
@@ -1937,8 +1937,8 @@ win_draw_end(wp, c1, c2, row, endrow, hl)
int nn = n + 2;
/* draw the sign column left of the fold column */
- if (nn > wp->w_width)
- nn = wp->w_width;
+ if (nn > W_WIDTH(wp))
+ nn = W_WIDTH(wp);
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_ENDCOL(wp) - nn, (int)W_ENDCOL(wp) - n,
' ', ' ', hl_attr(HLF_SC));
diff --git a/src/structs.h b/src/structs.h
index 4ceb0ce4f..051eb2df0 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1929,3 +1929,38 @@ typedef struct
} prt_settings_T;
#define PRINT_NUMBER_WIDTH 8
+
+/* Item for a hashtable. "hi_key" can be one of three values:
+ * NULL: Never been used
+ * HI_KEY_REMOVED: Entry was removed
+ * Otherwise: Used item, pointer to the actual key; this usually is
+ * inside the item, subtract an offset to locate the item.
+ * This reduces the size of hashitem by 1/3.
+ */
+typedef struct hashitem_S
+{
+ long_u hi_hash; /* cached hash number of hi_key */
+ char_u *hi_key;
+} hashitem;
+
+/* The address of "hash_removed" is used as a magic number for hi_key to
+ * indicate a removed item. */
+#define HI_KEY_REMOVED &hash_removed
+#define HASHITEM_EMPTY(hi) ((hi)->hi_key == NULL || (hi)->hi_key == &hash_removed)
+
+/* Initial size for a hashtable. Our items are relatively small and growing
+ * is expensive, thus use 16 as a start. Must be a power of 2. */
+#define HT_INIT_SIZE 16
+
+typedef struct hashtable_S
+{
+ long_u ht_mask; /* mask used for hash value (nr of items in
+ * array is "ht_mask" + 1) */
+ int ht_used; /* number of items used */
+ int ht_filled; /* number of items used + removed */
+ int ht_error; /* when set growing failed, can't add more
+ items before growing works */
+ hashitem *ht_array; /* points to the array, allocated when it's
+ not "ht_smallarray" */
+ hashitem ht_smallarray[HT_INIT_SIZE]; /* initial array */
+} hashtable;
diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak
index 01304c0e7..5b1473993 100644
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -23,7 +23,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test33.out test34.out test35.out test36.out test37.out \
test38.out test39.out test40.out test41.out test42.out \
test43.out test44.out test45.out test46.out test47.out \
- test48.out test51.out test53.out test54.out
+ test48.out test51.out test53.out test54.out test55.out
.SUFFIXES: .in .out
@@ -97,3 +97,4 @@ test48.out: test48.in
test51.out: test51.in
test53.out: test53.in
test54.out: test54.in
+test55.out: test55.in
diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak
index 8678b5dad..d961e0a45 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -17,7 +17,7 @@ SCRIPTS16 = test1.out test19.out test20.out test22.out \
test23.out test24.out test28.out test29.out \
test35.out test36.out test43.out \
test44.out test45.out test46.out test47.out \
- test48.out test51.out test53.out test54.out
+ test48.out test51.out test53.out test54.out test55.out
SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test8.out test9.out test11.out test13.out test14.out \
diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak
index e1ca8dcb3..235e1477a 100644
--- a/src/testdir/Make_os2.mak
+++ b/src/testdir/Make_os2.mak
@@ -23,7 +23,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test33.out test34.out test35.out test36.out test37.out \
test38.out test39.out test40.out test41.out test42.out \
test43.out test44.out test45.out test46.out test47.out \
- test48.out test51.out test53.out test54.out
+ test48.out test51.out test53.out test54.out test55.out
.SUFFIXES: .in .out
diff --git a/src/testdir/test49.vim b/src/testdir/test49.vim
index 24c287357..97db66d33 100644
--- a/src/testdir/test49.vim
+++ b/src/testdir/test49.vim
@@ -1,6 +1,6 @@
" Vim script language tests
" Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
-" Last Change: 2005 Jan 16
+" Last Change: 2005 Jan 18
"-------------------------------------------------------------------------------
" Test environment {{{1
@@ -8314,6 +8314,7 @@ if ExtraVim()
else
let v:errmsg = escape(v:errmsg, '"')
Xout "Expr" a:n.": Unexpected message:" v:errmsg
+ Xout "Expected: " . a:enr . ': ' . a:emsg
let g:taken = g:taken . "X"
endif
endif
@@ -8377,7 +8378,7 @@ if ExtraVim()
call MSG(t, 'E15', "Invalid expression")
endif
else
- if t == 2 || t == 4
+ if t <= 2 || t == 4 || t == 5 || t == 6 || t == 8
call MSG(t, 'E475', 'Invalid argument\>')
else
call MSG(t, 'E121', "Undefined variable")
diff --git a/src/testdir/test55.in b/src/testdir/test55.in
new file mode 100644
index 000000000..a757dae12
--- /dev/null
+++ b/src/testdir/test55.in
@@ -0,0 +1,156 @@
+Tests for List and Dictionary types. vim: set ft=vim :
+
+STARTTEST
+:so small.vim
+:fun Test()
+:" Creating List directly with different types
+:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
+:$put =string(l)
+:$put =string(l[-1])
+:$put =string(l[-4])
+:try
+: $put =string(l[-5])
+:catch
+: $put =v:exception[:14]
+:endtry
+:"
+:" List identity
+:let ll = l
+:let lx = copy(l)
+:try
+: $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l isnot lx)
+:catch
+: $put =v:exception
+:endtry
+:"
+:" Creating Dictionary directly with different types
+:let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}
+:$put =string(d) . d.1
+:$put =string(sort(keys(d)))
+:$put =string(values(d))
+:for [key, val] in items(d)
+: $put =key . ':' . string(val)
+: unlet key val
+:endfor
+:call extend(d, {3:33, 1:99})
+:call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")
+:try
+: call extend(d, {3:333,4:444}, "error")
+:catch
+: $put =v:exception[:15] . v:exception[-1:-1]
+:endtry
+:$put =string(d)
+:call filter(d, 'v:key =~ ''[ac391]''')
+:$put =string(d)
+:"
+:" Dictionary identity
+:let dd = d
+:let dx = copy(d)
+:try
+: $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d isnot dx)
+:catch
+: $put =v:exception
+:endtry
+:"
+:" Changing var type should fail
+:try
+: let d = []
+:catch
+: $put =v:exception[:14] . v:exception[-1:-1]
+:endtry
+:try
+: let l = {}
+:catch
+: $put =v:exception[:14] . v:exception[-1:-1]
+:endtry
+:"
+:" removing items with :unlet
+:unlet l[2]
+:$put =string(l)
+:let l = range(8)
+:unlet l[:3]
+:unlet l[1:]
+:$put =string(l)
+:"
+:unlet d.c
+:unlet d[-1]
+:$put =string(d)
+:"
+:" manipulating a big Dictionary
+:let d = {}
+:for i in range(15000)
+: let d[i] = 30000 - i
+:endfor
+:$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[14000] . ' ' . d[14999]
+:try
+: let n = d[15000]
+:catch
+: $put =v:exception[:14] . v:exception[-5:-1]
+:endtry
+:" lookup each items
+:for i in range(15000)
+: if d[i] != 30000 - i
+: $put =d[i]
+: endif
+:endfor
+: let i += 1
+:" delete even items
+:while i >= 2
+: let i -= 2
+: unlet d[i]
+:endwhile
+:$put =get(d, 15000 - 100, 'NONE') . ' ' . d[1]
+:" delete odd items, checking value, one intentionally wrong
+:let d[33] = 999
+:let i = 1
+:while i < 15000
+: if d[i] != 30000 - i
+: $put =i . '=' . d[i]
+: else
+: unlet d[i]
+: endif
+: let i += 2
+:endwhile
+:$put =string(d) " must be almost empty now
+:unlet d
+:"
+:" Dictionary function
+:let dict = {}
+:func dict.func(a) dict
+: $put =a:a . len(self.data)
+:endfunc
+:let dict.data = [1,2,3]
+:call dict.func("len: ")
+:echo dict.func("again: ")
+:try
+: let Fn = dict.func
+: call Fn('xxx')
+:catch
+: $put =v:exception[:15]
+:endtry
+:sleep 5
+:"
+:" Nasty: remove func from Dict that's being called (works)
+:let d = {1:1}
+:func d.func(a)
+: return "a:". a:a
+:endfunc
+:$put = d.func(string(remove(d, 'func')))
+:"
+:" Nasty: deepcopy() dict that refers to itself (fails)
+:let d = {1:1, 2:2}
+:let l = [4, d, 6]
+:let d[3] = l
+:try
+: let x = deepcopy(d)
+:catch
+: $put =v:exception[:14]
+:endtry
+:"
+:endfun
+:call Test()
+:"
+:/^start:/,$wq! test.out
+ENDTEST
+
+start:
diff --git a/src/testdir/test55.ok b/src/testdir/test55.ok
new file mode 100644
index 000000000..407b7a1b5
--- /dev/null
+++ b/src/testdir/test55.ok
@@ -0,0 +1,31 @@
+start:
+[1, 'as''d', [1, 2, function('strlen')], {'a': 1}]
+{'a': 1}
+1
+Vim(put):E684:
+101101
+{'1': 'asd', 'b': [1, 2, function('strlen')], '-1': {'a': 1}}asd
+['-1', '1', 'b']
+['asd', [1, 2, function('strlen')], {'a': 1}]
+1:'asd'
+b:[1, 2, function('strlen')]
+-1:{'a': 1}
+Vim(call):E737: 3
+{'c': 'ccc', '1': 99, 'b': [1, 2, function('strlen')], '3': 33, '-1': {'a': 1}}
+{'c': 'ccc', '1': 99, '3': 33, '-1': {'a': 1}}
+101101
+Vim(let):E706: d
+Vim(let):E706: l
+[1, 'as''d', {'a': 1}]
+[4]
+{'1': 99, '3': 33}
+30000 29900 29001 16000 15001
+Vim(let):E716: 15000
+NONE 29999
+33=999
+{'33': 999}
+len: 3
+again: 3
+Vim(call):E725:
+a:function('2')
+Vim(let):E698:
diff --git a/src/version.h b/src/version.h
index 84e377cb8..18f33b7d4 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
#define VIM_VERSION_NODOT "vim70aa"
#define VIM_VERSION_SHORT "7.0aa"
#define VIM_VERSION_MEDIUM "7.0aa ALPHA"
-#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 17)"
-#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 17, compiled "
+#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 19)"
+#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 19, compiled "