summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-01-19 22:18:32 +0000
committerBram Moolenaar <Bram@vim.org>2005-01-19 22:18:32 +0000
commit383f9bc30278b6d803d98e496b14cc867ce651ad (patch)
treefa0fcae7ec276ae69800b64ca7997d961158a94e
parentc92ad2e2c2451365d25d84c52dbcbac811797171 (diff)
downloadvim-git-383f9bc30278b6d803d98e496b14cc867ce651ad.tar.gz
updated for version 7.0042
-rw-r--r--Filelist2
-rw-r--r--runtime/doc/eval.txt17
-rw-r--r--runtime/syntax/sh.vim32
-rw-r--r--runtime/syntax/vim.vim21
-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
34 files changed, 463 insertions, 56 deletions
diff --git a/Filelist b/Filelist
index e82988a5f..ed315fc61 100644
--- a/Filelist
+++ b/Filelist
@@ -30,6 +30,7 @@ SRC_ALL1 = \
src/gui.h \
src/gui_beval.c \
src/gui_beval.h \
+ src/hashtable.c \
src/keymap.h \
src/macros.h \
src/main.c \
@@ -92,6 +93,7 @@ SRC_ALL2 = \
src/proto/getchar.pro \
src/proto/gui.pro \
src/proto/gui_beval.pro \
+ src/proto/hashtable.pro \
src/proto/main.pro \
src/proto/mark.pro \
src/proto/mbyte.pro \
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 2b7276b01..bcd71c0a1 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.0aa. Last change: 2005 Jan 17
+*eval.txt* For Vim version 7.0aa. Last change: 2005 Jan 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -118,11 +118,11 @@ A Funcref can also be used with the |:call| command: >
:call dict.init()
The name of the referenced function can be obtained with |string()|. >
- :let func = string(Myfunc)
+ :let func = string(Fn)
You can use |call()| to invoke a Funcref and use a list variable for the
arguments: >
- :let r = call(Myfunc, mylist)
+ :let r = call(Fn, mylist)
1.3 Lists ~
@@ -170,6 +170,7 @@ List concatenation ~
Two lists can be concatenated with the "+" operator: >
:let longlist = mylist + [5, 6]
+ :let mylist += [7, 8]
To prepend or append an item turn the item into a list by putting [] around
it. To change a list in-place see |list-modification| below.
@@ -439,6 +440,9 @@ Merging a Dictionary with another is done with |extend()|: >
:call extend(adict, bdict)
This extends adict with all entries from bdict. Duplicate keys cause entries
in adict to be overwritten. An optional third argument can change this.
+Note that the order of entries in a Dictionary is irrelevant, thus don't
+expect ":echo adict" to show the items from bdict after the older entries in
+adict.
Weeding out entries from a Dictionary can be done with |filter()|: >
:call filter(dict 'v:val =~ "x"')
@@ -2119,7 +2123,7 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
used to decide what to do:
{expr3} = "keep": keep the value of {expr1}
{expr3} = "force": use the value of {expr2}
- {expr3} = "error": give an error message
+ {expr3} = "error": give an error message *E737*
When {expr3} is omitted then "force" is assumed.
{expr1} is changed when {expr2} is not empty. If necessary
@@ -3075,7 +3079,7 @@ nr2char({expr}) *nr2char()*
< Note that a NUL character in the file is specified with
nr2char(10), because NULs are represented with newline
characters. nr2char(0) is a real NUL and terminates the
- string, thus isn't very useful.
+ string, thus results in an empty string.
prevnonblank({lnum}) *prevnonblank()*
Return the line number of the first line at or above {lnum}
@@ -3230,7 +3234,7 @@ reverse({list}) Reverse the order of items in {list} in-place. Returns
search({pattern} [, {flags}]) *search()*
Search for regexp pattern {pattern}. The search starts at the
- cursor position.
+ cursor position (you can use |cursor()| to set it).
{flags} is a String, which can contain these character flags:
'b' search backward instead of forward
'n' do Not move the cursor
@@ -4302,6 +4306,7 @@ This would call the function "my_func_whizz(parameter)".
When the selected range of items is partly past the
end of the list, items will be added.
+ *:let+=* *:let-=* *:let.=*
:let {var} += {expr1} Like ":let {var} = {var} + {expr1}".
:let {var} -= {expr1} Like ":let {var} = {var} - {expr1}".
:let {var} .= {expr1} Like ":let {var} = {var} . {expr1}".
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index 27ff7757b..83b8a592d 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,8 +2,8 @@
" Language: shell (sh) Korn shell (ksh) bash (sh)
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change: Oct 17, 2004
-" Version: 70
+" Last Change: Dec 28, 2004
+" Version: 71
" URL: http://www.erols.com/astronaut/vim/index.html#vimlinks_syntax
"
" Using the following VIM variables: {{{1
@@ -66,21 +66,21 @@ syn case match
syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseSingleQuote,shCaseDoubleQuote,shSpecial
syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,bkshFunction,shSpecial
syn cluster shColonList contains=@shCaseList
-syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shNumber,shOperator,shPosnParm,shSpecial,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias
+syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shNumber,shOperator,shPosnParm,shSpecial,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest
syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shSpecial,shPosnParm
syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError
syn cluster shDerefVarList contains=shDerefOp,shDerefVarArray,shDerefOpError
syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shSingleQuote,shDoubleQuote,shSpecial
syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shSingleQuote,shDoubleQuote,shSpecial,shExpr,shDblBrace,shDeref,shDerefSimple
-syn cluster shExprList2 contains=@shExprList1,@shCaseList
+syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest
syn cluster shFunctionList contains=@shCaseList,shOperator
syn cluster shHereBeginList contains=@shCommandSubList
syn cluster shHereList contains=shBeginHere,shHerePayload
syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload
syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shIdWhiteSpace,shDeref,shDerefSimple,shSpecial,shRedir,shSingleQuote,shDoubleQuote,shExpr
-syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac
+syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest
syn cluster shSubShList contains=@shCaseList
-syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shSingleQuote,shSpecial,shTestOpr
+syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shSingleQuote,shSpecial,shTestOpr,shTest
" Echo: {{{1
@@ -135,7 +135,7 @@ syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")" contai
"=======
"syn region shExpr transparent matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
-syn region shExpr transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
+syn region shTest transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
syn match shTestOpr contained "<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!=<>]"
if exists("b:is_kornshell") || exists("b:is_bash")
syn region shDblBrace matchgroup=Delimiter start="\[\[" skip=+\\\\\|\\$+ end="\]\]" contains=@shTestList
@@ -285,6 +285,9 @@ else
syn region shHereDoc start="\(<<-\s*\\\_$\_s*'\z(\S*\)'\)\@=" matchgroup=shRedir end="^\s*\z1$" contains=@shHereList keepend
syn region shHereDoc start="\(<<-\s*\\\_$\_s*\z(\S*\)\)\@=" matchgroup=shRedir end="^\s*\z1$" contains=@shHereList keepend
syn region shHereDoc start="\(<<-\s*\\\_$\_s*\"\z(\S*\)\"\)\@=" matchgroup=shRedir end="^\s*\z1$" contains=@shHereList keepend
+ syn match shHerePayload "^.*$" contained skipnl nextgroup=shHerePayload contains=@shDblQuoteList
+ syn match shBeginLine ".*$" contained skipnl nextgroup=shHerePayload contains=@shCommandSubList
+ syn match shBeginHere "<<-\=\s*\S\+" contained nextgroup=shBeginLine
else
syn region shHereDoc matchgroup=shRedir start="<<\s*\\\=\z(\S*\)" matchgroup=shRedir end="^\z1$" contains=@shDblQuoteList
syn region shHereDoc matchgroup=shRedir start="<<\s*\"\z(\S*\)\"" matchgroup=shRedir end="^\z1$"
@@ -299,11 +302,6 @@ else
syn region shHereDoc matchgroup=shRedir start="<<\s*\\\_$\_s*\"\z(\S*\)\"" matchgroup=shRedir end="^\z1$"
syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\_$\_s*\"\z(\S*\)\"" matchgroup=shRedir end="^\s*\z1$"
endif
- if v:version > 602 || (v:version == 602 && has("patch219"))
- syn match shHerePayload "^.*$" contained skipnl nextgroup=shHerePayload contains=@shDblQuoteList
- syn match shBeginLine ".*$" contained skipnl nextgroup=shHerePayload contains=@shCommandSubList
- syn match shBeginHere "<<-\=\s*\S\+" contained nextgroup=shBeginLine
- endif
endif
" Here Strings: {{{1
@@ -318,15 +316,15 @@ syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSe
syn match shIdWhiteSpace contained "\s"
syn match shSetIdentifier contained "=" nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote
if exists("b:is_bash")
- syn region shSetList matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>[^/]"me=e-1 end="$" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="#\|="me=e-1 contains=@shIdList
- syn region shSetList matchgroup=shSet start="\<set\>[^/]"me=e-1 end="$" end="[|)]"me=e-1 matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
+ syn region shSetList matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="#\|="me=e-1 contains=@shIdList
+ syn region shSetList matchgroup=shSet start="\<set\>[^/]"me=e-1 end="$" end="\\ze[|)]" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
syn match shSet "\<\(declare\|typeset\|local\|export\|set\|unset\)$"
elseif exists("b:is_kornshell")
- syn region shSetList matchgroup=shSet start="\<\(typeset\|export\|unset\)\>[^/]"me=e-1 end="$" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
- syn region shSetList matchgroup=shSet start="\<set\>[^/]"me=e-1 end="$" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
+ syn region shSetList matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
+ syn region shSetList matchgroup=shSet start="\<set\>\ze[^/]" end="$\|\ze[})]" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
syn match shSet "\<\(typeset\|set\|export\|unset\)$"
else
- syn region shSetList matchgroup=shSet start="\<\(set\|export\|unset\)\>[^/]"me=e-1 end="$" end="[)|]"me=e-1 matchgroup=shOperator end="[;&]" matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
+ syn region shSetList matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$\|\ze[|)]" matchgroup=shOperator end="[;&]" matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList
syn match shStatement "\<\(set\|export\|unset\)$"
endif
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index bd1629e16..04226d4ad 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Vim 7.0 script
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: December 07, 2004
-" Version: 7.0-02 NOT RELEASED
+" Last Change: January 19, 2005
+" Version: 7.0-2
" Automatically generated keyword lists: {{{1
" Quit when a syntax file was already loaded {{{2
@@ -16,11 +16,11 @@ syn keyword vimTodo contained COMBAK NOT RELEASED TODO WIP
syn cluster vimCommentGroup contains=vimTodo
" regular vim commands {{{2
-syn keyword vimCommand contained ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] cal[l] cat[ch] cc ccl[ose] cd ce[nter] cf[ile] cfir[st] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] DeleteFirst delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] fu[nction] g[lobal] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] hid[e] his[tory] I ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] lan[guage] la[st] lc[d] lch[dir] le[ft] lefta[bove] l[ist] lm[ap] lmapc[lear] ln[oremap] lo[adview] loc[kmarks] ls lu[nmap] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] Nread nu[mber] nun[map] Nw omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] prompt promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] sandbox sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] sf[ind] sfir[st sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sn[ext] sN[ext] sni[ff] sno[magic] so[urce] sp[lit] spr[evious] sre[wind] sta[g] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sus[pend] sv[iew] syncbind t ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] unh[ide] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] v[global] vie[w] vi[sual] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] winpos* win[size] wn[ext] wN[ext] wp[revous] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] y[ank]
+syn keyword vimCommand contained ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cf[ile] cfir[st] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] DeleteFirst delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] g[lobal] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] hid[e] his[tory] I ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] lan[guage] la[st] lc[d] lch[dir] le[ft] lefta[bove] l[ist] lm[ap] lmapc[lear] ln[oremap] lo[adview] loc[kmarks] ls lu[nmap] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] Nread nu[mber] nun[map] Nw omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] prompt promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] sandbox sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] sf[ind] sfir[st sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sn[ext] sN[ext] sni[ff] sno[magic] so[urce] sp[lit] spr[evious] sre[wind] sta[g] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sus[pend] sv[iew] syncbind t ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] unh[ide] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] v[global] vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] winpos* win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] y[ank]
syn match vimCommand contained "\<z[-+^.=]"
" vimOptions are caught only when contained in a vimSet {{{2
-syn keyword vimOption contained : acd ai akm al aleph allowrevins altkeymap ambiwidth ambw anti antialias ar arab arabic arabicshape ari arshape autochdir autoindent autoread autowrite autowriteall aw awa background backspace backup backupcopy backupdir backupext backupskip balloondelay ballooneval bdir bdlay beval bex bg bh bin binary biosk bioskey bk bkc bl bomb breakat brk browsedir bs bsdir bsk bt bufhidden buflisted buftype casemap cb ccv cd cdpath cedit cf cfu ch charconvert ci cin cindent cink cinkeys cino cinoptions cinw cinwords clipboard cmdheight cmdwinheight cmp cms co columns com comments commentstring compatible complete completefunc confirm consk conskey copyindent cp cpo cpoptions cpt cscopepathcomp cscopeprg cscopequickfix cscopetag cscopetagorder cscopeverbose cspc csprg csqf cst csto csverb cwh debug deco def define delcombine dex dg dict dictionary diff diffexpr diffopt digraph dip dir directory display dy ea ead eadirection eb ed edcompatible ef efm ei ek enc encoding endofline eol ep equalalways equalprg errorbells errorfile errorformat esckeys et eventignore ex expandtab exrc fcl fcs fdc fde fdi fdl fdls fdm fdn fdo fdt fen fenc fencs ff ffs fileencoding fileencodings fileformat fileformats filetype fillchars fk fkmap fml fmr fo foldclose foldcolumn foldenable foldexpr foldignore foldlevel foldlevelstart foldmarker foldmethod foldminlines foldnestmax foldopen foldtext formatoptions formatprg fp ft gcr gd gdefault gfm gfn gfs gfw ghr go gp grepformat grepprg guicursor guifont guifontset guifontwide guiheadroom guioptions guipty helpfile helpheight helplang hf hh hi hid hidden highlight history hk hkmap hkmapp hkp hl hlg hls hlsearch ic icon iconstring ignorecase im imactivatekey imak imc imcmdline imd imdisable imi iminsert ims imsearch inc include includeexpr incsearch inde indentexpr indentkeys indk inex inf infercase insertmode is isf isfname isi isident isk iskeyword isp isprint joinspaces js key keymap keymodel keywordprg km kmp kp langmap langmenu laststatus lazyredraw lbr lcs linebreak lines linespace lisp lispwords list listchars lm lmap loadplugins lpl ls lsp lw lz ma magic makeef makeprg mat matchpairs matchtime maxfuncdepth maxmapdepth maxmem maxmemtot mef menuitems mfd mh mis ml mls mm mmd mmt mod modeline modelines modifiable modified more mouse mousef mousefocus mousehide mousem mousemodel mouses mouseshape mouset mousetime mp mps mzq mzquantum nf nrformats nu number numberwidth nuw oft osfiletype pa para paragraphs paste pastetoggle patchexpr patchmode path pdev penc pex pexpr pfn pheader pi pm pmbcs pmbfn popt preserveindent previewheight previewwindow printdevice printencoding printexpr printfont printheader printmbcharset printmbfont printoptions pt pvh pvw qe quoteescape readonly remap report restorescreen revins ri rightleft rightleftcmd rl rlc ro rs rtp ru ruf ruler rulerformat runtimepath sb sbo sbr sc scb scr scroll scrollbind scrolljump scrolloff scrollopt scs sect sections secure sel selection selectmode sessionoptions sft sh shcf shell shellcmdflag shellpipe shellquote shellredir shellslash shelltype shellxquote shiftround shiftwidth shm shortmess shortname showbreak showcmd showfulltag showmatch showmode shq si sidescroll sidescrolloff siso sj slm sm smartcase smartindent smarttab smd sn so softtabstop sol sp splitbelow splitright spr sr srr ss ssl ssop st sta startofline statusline stl sts su sua suffixes suffixesadd sw swapfile swapsync swb swf switchbuf sws sxq syn syntax ta tabstop tag tagbsearch taglength tagrelative tags tagstack tb tbi tbidi tbis tbs tenc term termbidi termencoding terse textauto textmode textwidth tf tgst thesaurus tildeop timeout timeoutlen title titlelen titleold titlestring tl tm to toolbar toolbariconsize top tr ts tsl tsr ttimeout ttimeoutlen ttm tty ttybuiltin ttyfast ttym ttymouse ttyscroll ttytype tw tx uc ul undolevels updatecount updatetime ut vb vbs vdir ve verbose vi viewdir viewoptions viminfo virtualedit visualbell vop wa wak warn wb wc wcm wd weirdinvert wfh wh whichwrap wig wildchar wildcharm wildignore wildmenu wildmode wim winaltkeys winfixheight winheight winminheight winminwidth winwidth wiv wiw wm wmh wmnu wmw wrap wrapmargin wrapscan write writeany writebackup writedelay ws ww
+syn keyword vimOption contained : acd ai akm al aleph allowrevins altkeymap ambiwidth ambw anti antialias ar arab arabic arabicshape ari arshape autochdir autoindent autoread autowrite autowriteall aw awa background backspace backup backupcopy backupdir backupext backupskip balloondelay ballooneval bdir bdlay beval bex bg bh bin binary biosk bioskey bk bkc bl bomb breakat brk browsedir bs bsdir bsk bt bufhidden buflisted buftype casemap cb ccv cd cdpath cedit cf cfu ch charconvert ci cin cindent cink cinkeys cino cinoptions cinw cinwords clipboard cmdheight cmdwinheight cmp cms co columns com comments commentstring compatible complete completefunc confirm consk conskey copyindent cp cpo cpoptions cpt cscopepathcomp cscopeprg cscopequickfix cscopetag cscopetagorder cscopeverbose cspc csprg csqf cst csto csverb cwh debug deco def define delcombine dex dg dict dictionary diff diffexpr diffopt digraph dip dir directory display dy ea ead eadirection eb ed edcompatible ef efm ei ek enc encoding endofline eol ep equalalways equalprg errorbells errorfile errorformat esckeys et eventignore ex expandtab exrc fcl fcs fdc fde fdi fdl fdls fdm fdn fdo fdt fen fenc fencs ff ffs fileencoding fileencodings fileformat fileformats filetype fillchars fk fkmap flp fml fmr fo foldclose foldcolumn foldenable foldexpr foldignore foldlevel foldlevelstart foldmarker foldmethod foldminlines foldnestmax foldopen foldtext formatlistpat formatoptions formatprg fp fs fsync ft gcr gd gdefault gfm gfn gfs gfw ghr go gp grepformat grepprg guicursor guifont guifontset guifontwide guiheadroom guioptions guipty helpfile helpheight helplang hf hh hi hid hidden highlight history hk hkmap hkmapp hkp hl hlg hls hlsearch ic icon iconstring ignorecase im imactivatekey imak imc imcmdline imd imdisable imi iminsert ims imsearch inc include includeexpr incsearch inde indentexpr indentkeys indk inex inf infercase insertmode is isf isfname isi isident isk iskeyword isp isprint joinspaces js key keymap keymodel keywordprg km kmp kp langmap langmenu laststatus lazyredraw lbr lcs linebreak lines linespace lisp lispwords list listchars lm lmap loadplugins lpl ls lsp lw lz ma magic makeef makeprg mat matchpairs matchtime maxfuncdepth maxmapdepth maxmem maxmemtot mef menuitems mfd mh mis ml mls mm mmd mmt mod modeline modelines modifiable modified more mouse mousef mousefocus mousehide mousem mousemodel mouses mouseshape mouset mousetime mp mps mzq mzquantum nf nrformats nu number numberwidth nuw oft osfiletype pa para paragraphs paste pastetoggle patchexpr patchmode path pdev penc pex pexpr pfn pheader pi pm pmbcs pmbfn popt preserveindent previewheight previewwindow printdevice printencoding printexpr printfont printheader printmbcharset printmbfont printoptions pt pvh pvw qe quoteescape readonly remap report restorescreen revins ri rightleft rightleftcmd rl rlc ro rs rtp ru ruf ruler rulerformat runtimepath sb sbo sbr sc scb scr scroll scrollbind scrolljump scrolloff scrollopt scs sect sections secure sel selection selectmode sessionoptions sft sh shcf shell shellcmdflag shellpipe shellquote shellredir shellslash shelltype shellxquote shiftround shiftwidth shm shortmess shortname showbreak showcmd showfulltag showmatch showmode shq si sidescroll sidescrolloff siso sj slm sm smartcase smartindent smarttab smd sn so softtabstop sol sp splitbelow splitright spr sr srr ss ssl ssop st sta startofline statusline stl sts su sua suffixes suffixesadd sw swapfile swapsync swb swf switchbuf sws sxq syn syntax ta tabstop tag tagbsearch taglength tagrelative tags tagstack tb tbi tbidi tbis tbs tenc term termbidi termencoding terse textauto textmode textwidth tf tgst thesaurus tildeop timeout timeoutlen title titlelen titleold titlestring tl tm to toolbar toolbariconsize top tr ts tsl tsr ttimeout ttimeoutlen ttm tty ttybuiltin ttyfast ttym ttymouse ttyscroll ttytype tw tx uc ul undolevels updatecount updatetime ut vb vbs vdir ve verbose vi viewdir viewoptions viminfo virtualedit visualbell vop wa wak warn wb wc wcm wd weirdinvert wfh wh whichwrap wig wildchar wildcharm wildignore wildmenu wildmode wildoptions wim winaltkeys winfixheight winheight winminheight winminwidth winwidth wiv wiw wm wmh wmnu wmw wop wrap wrapmargin wrapscan write writeany writebackup writedelay ws ww
" vimOptions: These are the turn-off setting variants {{{2
syn keyword vimOption contained noacd noai noakm noallowrevins noaltkeymap noanti noantialias noar noarab noarabic noarabicshape noari noarshape noautochdir noautoindent noautoread noautowrite noautowriteall noaw noawa nobackup noballooneval nobeval nobin nobinary nobiosk nobioskey nobk nobl nobomb nobuflisted nocf noci nocin nocindent nocompatible noconfirm noconsk noconskey nocopyindent nocp nocscopetag nocscopeverbose nocst nocsverb nodeco nodelcombine nodg nodiff nodigraph nodisable noea noeb noed noedcompatible noek noendofline noeol noequalalways noerrorbells noesckeys noet noex noexpandtab noexrc nofen nofk nofkmap nofoldenable nogd nogdefault noguipty nohid nohidden nohk nohkmap nohkmapp nohkp nohls nohlsearch noic noicon noignorecase noim noimc noimcmdline noimd noincsearch noinf noinfercase noinsertmode nois nojoinspaces nojs nolazyredraw nolbr nolinebreak nolisp nolist noloadplugins nolpl nolz noma nomagic nomh noml nomod nomodeline nomodifiable nomodified nomore nomousef nomousefocus nomousehide nonu nonumber nopaste nopi nopreserveindent nopreviewwindow nopvw noreadonly noremap norestorescreen norevins nori norightleft norightleftcmd norl norlc noro nors noru noruler nosb nosc noscb noscrollbind noscs nosecure nosft noshellslash noshiftround noshortname noshowcmd noshowfulltag noshowmatch noshowmode nosi nosm nosmartcase nosmartindent nosmarttab nosmd nosn nosol nosplitbelow nosplitright nospr nosr nossl nosta nostartofline noswapfile noswf nota notagbsearch notagrelative notagstack notbi notbidi notbs notermbidi noterse notextauto notextmode notf notgst notildeop notimeout notitle noto notop notr nottimeout nottybuiltin nottyfast notx novb novisualbell nowa nowarn nowb noweirdinvert nowfh nowildmenu nowinfixheight nowiv nowmnu nowrap nowrapscan nowrite nowriteany nowritebackup nows
@@ -29,7 +29,7 @@ syn keyword vimOption contained noacd noai noakm noallowrevins noaltkeymap noant
syn keyword vimOption contained invacd invai invakm invallowrevins invaltkeymap invanti invantialias invar invarab invarabic invarabicshape invari invarshape invautochdir invautoindent invautoread invautowrite invautowriteall invaw invawa invbackup invballooneval invbeval invbin invbinary invbiosk invbioskey invbk invbl invbomb invbuflisted invcf invci invcin invcindent invcompatible invconfirm invconsk invconskey invcopyindent invcp invcscopetag invcscopeverbose invcst invcsverb invdeco invdelcombine invdg invdiff invdigraph invdisable invea inveb inved invedcompatible invek invendofline inveol invequalalways inverrorbells invesckeys invet invex invexpandtab invexrc invfen invfk invfkmap invfoldenable invgd invgdefault invguipty invhid invhidden invhk invhkmap invhkmapp invhkp invhls invhlsearch invic invicon invignorecase invim invimc invimcmdline invimd invincsearch invinf invinfercase invinsertmode invis invjoinspaces invjs invlazyredraw invlbr invlinebreak invlisp invlist invloadplugins invlpl invlz invma invmagic invmh invml invmod invmodeline invmodifiable invmodified invmore invmousef invmousefocus invmousehide invnu invnumber invpaste invpi invpreserveindent invpreviewwindow invpvw invreadonly invremap invrestorescreen invrevins invri invrightleft invrightleftcmd invrl invrlc invro invrs invru invruler invsb invsc invscb invscrollbind invscs invsecure invsft invshellslash invshiftround invshortname invshowcmd invshowfulltag invshowmatch invshowmode invsi invsm invsmartcase invsmartindent invsmarttab invsmd invsn invsol invsplitbelow invsplitright invspr invsr invssl invsta invstartofline invswapfile invswf invta invtagbsearch invtagrelative invtagstack invtbi invtbidi invtbs invtermbidi invterse invtextauto invtextmode invtf invtgst invtildeop invtimeout invtitle invto invtop invtr invttimeout invttybuiltin invttyfast invtx invvb invvisualbell invwa invwarn invwb invweirdinvert invwfh invwildmenu invwinfixheight invwiv invwmnu invwrap invwrapscan invwrite invwriteany invwritebackup invws
" termcap codes (which can also be set) {{{2
-syn keyword vimOption contained t_AB t_AF t_al t_AL t_bc t_cd t_ce t_cl t_cm t_Co t_cs t_CS t_CV t_da t_db t_dl t_DL t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RI t_RV t_Sb t_se t_Sf t_so t_sr t_te t_ti t_ts t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xs t_ZH t_ZR
+syn keyword vimOption contained t_AB t_AF t_al t_AL t_bc t_cd t_ce t_cl t_cm t_Co t_cs t_CS t_CV t_da t_db t_dl t_DL t_EI end insert mode (block cursor shape) *t_EI* *'t_EI'* t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RI t_RV t_Sb t_se t_Sf t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* t_so t_sr t_te t_ti t_ts t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xs t_ZH t_ZR
syn match vimOption contained "t_%1"
syn match vimOption contained "t_#2"
syn match vimOption contained "t_#4"
@@ -55,10 +55,9 @@ syn match vimHLGroup contained "Conceal"
syn case match
" Function Names {{{2
-syn keyword vimFuncName contained append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx char2nr cindent col confirm cscope_connection cursor delete did_filetype diff_filler diff_hlID escape eventhandler executable exists expand filereadable filewritable finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function getbufvar getchar getcharmod getcmdline getcmdpos getcwd getfperm getfsize getftime getftype getline getreg getregtype getwinposx getwinposy getwinvar glob globpath has hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent input inputdialog inputrestore inputsave inputsecret isdirectory libcall libcallnr line line2byte lispindent localtime maparg mapcheck match matchend matchstr mode nextnonblank nr2char prevnonblank remote_expr remote_foreground remote_peek remote_read remote_send rename repeat resolve search searchpair server2client serverlist setbufvar setcmdpos setline setreg setwinvar simplify strftime stridx strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system tempname tolower toupper tr type virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winwidth
+syn keyword vimFuncName contained add append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call char2nr cindent col confirm copy count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty escape eval eventhandler executable exists expand expr8 extend filereadable filewritable filter finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function get getbufvar getchar getcharmod getcmdline getcmdpos getcwd getfontname getfperm getfsize getftime getftype getline getreg getregtype getwinposx getwinposy getwinvar glob globpath has has_key hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputrestore inputsave inputsecret insert isdirectory join keys len libcall libcallnr line line2byte lispindent localtime map maparg mapcheck match matchend matchstr max min mode nextnonblank nr2char prevnonblank range remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse search searchpair server2client serverlist setbufvar setcmdpos setline setreg setwinvar simplify sort split strftime stridx string strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system tempname tolower toupper tr type virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winwidth
"--- syntax above generated by mkvimvim ---
-"--- syntax above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1
" Numbers {{{2
@@ -186,11 +185,12 @@ syn match vimEnvvar "\${\I\i*}"
" In-String Specials: {{{2
" Try to catch strings, if nothing else matches (therefore it must precede the others!)
" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
+" COMBAK: I don't know why the \ze is needed in vimPatSepZone
syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\^\=\]\=" skip="\\\\\|\\\]" end="\]"me=e-1
syn match vimPatSepErr contained "\\)"
syn match vimPatSep contained "\\|"
-syn region vimPatSepZone oneline contained matchgroup=vimPatSep start="\\%\=(" skip="\\\\" end="\\)\|[^\]['"]" contains=@vimStringGroup
-syn region vimPatRegion contained transparent matchgroup=vimPatSep start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
+syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]" contains=@vimStringGroup
+syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
syn match vimNotPatSep contained "\\\\"
syn cluster vimStringGroup contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone
syn region vimString oneline keepend start=+[^:a-zA-Z>!\\]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup
@@ -537,7 +537,6 @@ hi def link vimSubst1 vimSubst
hi def link vimBehaveModel vimBehave
if !exists("g:vimsyntax_noerror")
-" hi def link vimAugroupError vimError
hi def link vimBehaveError vimError
hi def link vimCollClassErr vimError
hi def link vimErrSetting vimError
@@ -594,6 +593,8 @@ hi def link vimMenuNameMore vimMenuName
hi def link vimMtchComment vimComment
hi def link vimNotFunc vimCommand
hi def link vimNotPatSep vimString
+hi def link vimPatSepR vimPatSep
+hi def link vimPatSepZ vimPatSep
hi def link vimPatSepErr vimPatSep
hi def link vimPatSepZone vimString
hi def link vimPlainMark vimMark
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 "