diff --git a/Filelist b/Filelist index e82988a5fa7007b818a096674cce4913a209ccab..ed315fc61dfd97df7e9615ebd7185336785967ba 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 2b7276b0134079ece6249938fad8b068367dd2c1..bcd71c0a1f86c817816b027b972ee9a1c6d410e5 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 27ff7757bb4db51832de69001891b09af85f7520..83b8a592df7a8e17cf53db1efaff126e6d615526 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 bd1629e16d9824810c92170f27965867ce49aa6f..04226d4ada27bc90eaf891278b7d3b7aab25eceb 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,9 +55,8 @@ 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 @@ -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 1d27081a16e040d94236552ddb3f6cf2c11111c1..df219ba609bac81311bed94c5dc0cc6b38e193ee 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 75b0f1d057a1f20d69f70bfb1f5945303e527652..d05d836942c6a06c64d90022c909d2d6ebec3dd8 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 4687ef1d3d0faa85ddfc43111ef63f5178a1372e..962e22e6bd770609873c590aa0c5cf36e27c0b77 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 77f6cba2253ce79e72344ed0746e7ea078a8a91a..f2b090749b17ae30ffdad56dfcaf4e85b34a4143 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 94a15306005444c6178e97a09175b6a5c6dfd3cd..0c32793f2d33dd48836c5741312a36c72ee6413e 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 b90cf79fb08d236fc57e8d760654ba8e12934bf0..2d8bbaf5c3598fa86d61d479398238aaa03ca043 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 8a98d68a07554cb2b0c5da5848a887f723e111e8..cd366e47f9c38dc2bc2f0a988867834ddb10b835 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 "{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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 :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 62e875650b7f6278b9fca110230521b747479019..5cc0a92f5d69292a3e1424afccd8fe8a52867541 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 4d21dc620077c9f0e8c61cfe362ae33e685b60a6..1750e71f20289d6eda323f44414d95887d6839f4 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 82708f41fe0e3a42e91fc1b89d9f41cc1655e9ed..65f176cd487bd6902fdfa56c23b787c9347bd346 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 827903bbc3f226afce287c71bac65742d08b60d9..1751d8ae8d11514c225bbaa8891f241d9c68dde6 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 53793539ba1bf6c279d0b2cb759f231c7695ddd9..b44855247678de12f9aec358c9d8263545edc509 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 ecaafb0bb3a887c2cbab028ac928889bdd255932..8c949b5e49accb6e3ab73f4d13d6bd0b56cf269a 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 cf4bc58a3a0a750ea2269f54949292bc49bc05a7..effb4e2b1aa1cb47ebc34c015165d25ed41aecaa 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 3b785795e5d7ee7bb33883e8e9279f55ff1aced2..9356dd9e80d7299600f396a5aba0ab0c55de9002 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 1633b2ae31e68f04ae20bbfae084855dff602a14..d647fc7ac0dd4bf1d5dfed09976022b7e66e1a56 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 d1eb0257c61bf0f6bf14f4820c78aef2cb4345eb..2fc2260560d6ab5eed78a75b355adaebb7c92687 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 ed16258484db777b705300acb877d1dd7473b4ab..f8920dae0ec9f5d54b0c4e348921b4583482d1d7 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 882587e55a562bacb898afceeb713efc7e24d4a1..afe38dc2b4bb2a92ea9e67e1dcebb85fe11b1450 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 47ffc54bd97538746fc5b8cc5197131e59488044..af33ef5ce6b2f58e4a64eef66fbd193c30072c88 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 625d19d0c37956613ee4ae14b61aba3dbefc0005..8bb2bbe76069524a5a27712e8d21414af6bf71f3 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 ef7a87f9d73d27990092cb4e48482f78645b3794..0435eb57bdfa202d1abd72c4ba2c0e37f042eaa6 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 4ceb0ce4fce5b534415c96ca94bdbcb81ba605de..051eb2df061aa42b8852cc22c5fff7d16fd4dbf8 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 01304c0e764f1598b6dedcf87867a3f887eda26e..5b147399378af795971909fa6e7d938844c87535 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 8678b5dadb34c635b125714d6b08e29416729cbe..d961e0a4526660d68d8bb7890d603ca75277aceb 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 e1ca8dcb37e11c3e5d5963d89b649cfabfc8b7b6..235e1477a1ffd8a616de957177dd4387e9d45052 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 24c28735776e8b9c643f224e0d29157464f26c7f..97db66d331e812c496ac394de845fe34bb636dda 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 0000000000000000000000000000000000000000..a757dae1258915c700fa10463303dd1e1b464a68 --- /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 0000000000000000000000000000000000000000..407b7a1b5f737ebb0c675c10fcc51b163bb505e3 --- /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 84e377cb8e0826b374de053d7115891602e272ea..18f33b7d485b1d677189c95bd467a176672f5148 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 "