diff --git a/CMakeLists.txt b/CMakeLists.txt index 06db4f473e..700bfdf7cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,11 +266,6 @@ if(NOT BUSTED_OUTPUT_TYPE) set(BUSTED_OUTPUT_TYPE "utfTerminal") endif() -# CMake is painful here. It will create the destination using the user's -# current umask, and we don't want that. And we don't just want to install -# the target directory, as it will mess with existing permissions. So this -# seems like the best compromise. If we create it, then everyone can see it. -# If it's preexisting, leave it alone. include(InstallHelpers) file(GLOB MANPAGES @@ -281,24 +276,6 @@ install_helper( FILES ${MANPAGES} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) -install_helper( - DIRECTORY runtime - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim) - -file(GLOB_RECURSE RUNTIME_PROGRAMS - RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} - runtime/*.awk runtime/*.sh) - -foreach(PROG ${RUNTIME_PROGRAMS}) - get_filename_component(BASEDIR ${PROG} PATH) - install_helper(PROGRAMS ${PROG} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/${BASEDIR}) -endforeach() - -configure_file(${PROJECT_SOURCE_DIR}/cmake/GenerateHelptags.cmake.in - ${PROJECT_BINARY_DIR}/cmake/GenerateHelptags.cmake @ONLY) -install(SCRIPT ${PROJECT_BINARY_DIR}/cmake/GenerateHelptags.cmake) - - # Go down the tree. add_subdirectory(src/nvim) @@ -310,6 +287,7 @@ get_compile_flags(NVIM_VERSION_CFLAGS) add_subdirectory(test/includes) add_subdirectory(config) add_subdirectory(test/functional/fixtures) # compile pty/shell test programs +add_subdirectory(runtime) # Setup some test-related bits. We do this after going down the tree because we diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt new file mode 100644 index 0000000000..6efd876d4f --- /dev/null +++ b/runtime/CMakeLists.txt @@ -0,0 +1,78 @@ +set(SYN_VIM_GENERATOR ${PROJECT_SOURCE_DIR}/scripts/genvimvim.lua) +set(GENERATED_RUNTIME_DIR ${PROJECT_BINARY_DIR}/runtime) +set(GENERATED_SYN_VIM ${GENERATED_RUNTIME_DIR}/syntax/vim/generated.vim) +set(GENERATED_HELP_TAGS ${GENERATED_RUNTIME_DIR}/doc/tags) + +file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR}) +file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR}/syntax) +file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR}/syntax/vim) + +add_custom_command(OUTPUT ${GENERATED_SYN_VIM} + COMMAND ${LUA_PRG} ${SYN_VIM_GENERATOR} + ${PROJECT_SOURCE_DIR}/src/nvim ${GENERATED_SYN_VIM} + DEPENDS + ${SYN_VIM_GENERATOR} + ${PROJECT_SOURCE_DIR}/src/nvim/ex_cmds.lua + ${PROJECT_SOURCE_DIR}/src/nvim/auevents.lua + ${PROJECT_SOURCE_DIR}/src/nvim/options.lua + ${PROJECT_SOURCE_DIR}/src/nvim/eval.c +) + +file(GLOB DOCFILES ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt) + +set(BUILDDOCFILES) +foreach(DF ${DOCFILES}) + get_filename_component(F ${DF} NAME) + list(APPEND BUILDDOCFILES ${GENERATED_RUNTIME_DIR}/doc/${F}) +endforeach() + +add_custom_command(OUTPUT ${BUILDDOCFILES} + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PROJECT_SOURCE_DIR}/runtime/doc ${GENERATED_RUNTIME_DIR}/doc + DEPENDS + ${DOCFILES}) + +add_custom_command(OUTPUT ${GENERATED_HELP_TAGS} + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PROJECT_SOURCE_DIR}/runtime/doc ${GENERATED_RUNTIME_DIR}/doc + COMMAND "${PROJECT_BINARY_DIR}/bin/nvim" + -u NONE + -i NONE + -esX + -c "helptags ++t ." + -c quit + DEPENDS + ${BUILDDOCFILES} + nvim + WORKING_DIRECTORY "${GENERATED_RUNTIME_DIR}/doc" +) + +add_custom_target( + runtime ALL + DEPENDS + ${GENERATED_SYN_VIM} + ${GENERATED_HELP_TAGS} +) + +# CMake is painful here. It will create the destination using the user's +# current umask, and we don't want that. And we don't just want to install +# the target directory, as it will mess with existing permissions. So this +# seems like the best compromise. If we create it, then everyone can see it. +# If it's preexisting, leave it alone. + +install_helper( + DIRECTORY ${PROJECT_SOURCE_DIR}/runtime + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim) +install_helper( + DIRECTORY ${GENERATED_RUNTIME_DIR} + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim) + +file(GLOB_RECURSE RUNTIME_PROGRAMS + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + *.awk *.sh) + +foreach(PROG ${RUNTIME_PROGRAMS}) + get_filename_component(BASEDIR ${PROG} PATH) + install_helper(PROGRAMS ${PROG} + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/${BASEDIR}) +endforeach() diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 198c159dee..e23232bbbe 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -17,41 +17,19 @@ set cpo&vim syn keyword vimTodo contained COMBAK FIXME TODO XXX syn cluster vimCommentGroup contains=vimTodo,@Spell -" regular vim commands {{{2 -syn keyword vimCommand contained a arga[dd] ar[gs] bd[elete] bN[ext] breakd[el] bufdo cabc[lear] cat[ch] cex[pr] c[hange] cla[st] cnew[er] cNf[ile] con cp[revious] cuna[bbrev] del deletep delm[arks] diffp[atch] dig[raphs] do e echon endf endw[hile] f[ile] fin[d] folddoc[losed] fu[nction] gvim helpt[ags] iabc[lear] intro k l lan lc[d] lefta[bove] lg[etfile] lla[st] lnew[er] lNf[ile] lockv[ar] ls lvimgrepa[dd] mat[ch] mk[exrc] mo n n[ext] o ownsyntax pre[serve] promptf[ind] ptl[ast] ptr[ewind] py3do qa[ll] r[ead] redr[aw] retu[rn] rub[y] rv[iminfo] sba[ll] sbN[ext] scripte[ncoding] setf[iletype] sh[ell] sim[alt] sm[ap] sni[ff] sor[t] spelli[nfo] spr[evious] start st[op] sunmenu syn ta tabf[ind] tabnew tabr[ewind] tj[ump] tN tr tu[nmenu] undoj[oin] uns[ilent] ve[rsion] vimgrepa[dd] vs[plit] winc[md] wN[ext] ws[verb] x[it] xnoremenu -syn keyword vimCommand contained ab argd[elete] argu[ment] bel[owright] bo[tright] breakl[ist] b[uffer] cb[uffer] cf[ile] changes cl[ist] cn[ext] col[der] conf[irm] cq[uit] cw[indow] delc[ommand] deletl delp diffpu[t] dir doau ea e[dit] endfo[r] ene[w] files fini[sh] foldd[oopen] g h hi if is[earch] keepa la lan[guage] lch[dir] lex[pr] lgr[ep] lli[st] lne[xt] lo lol[der] lt[ag] lw[indow] menut mks[ession] mod[e] nbc[lose] nmapc[lear] ol[dfiles] p po[p] prev[ious] promptr[epl] ptn pts[elect] pydo q[uit] rec[over] redraws[tatus] rew[ind] sal[l] sbf[irst] sbp[revious] scrip[tnames] setg[lobal] si sl sme sno[magic] so[urce] spellr[epall] sre[wind] startg[replace] stopi[nsert] sus[pend] sync tab tabfir[st] tabn[ext] tabs tl[ast] tn[ext] tr[ewind] u undol[ist] up[date] vert[ical] vi[sual] w windo wp[revious] wundo xmapc[lear] xunme -syn keyword vimCommand contained abc[lear] argdo as[cii] bf[irst] bp[revious] br[ewind] buffers cad[dbuffer] cc cfir[st] chd[ir] clo[se] cN[ext] colo[rscheme] con[tinue] cr[ewind] d delel deletp dep diffs[plit] di[splay] dp earlier el[se] endfun ex filet fir[st] foldo[pen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepalt lad la[st] lcl[ose] lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lop[en] ma menut[ranslate] mksp[ell] m[ove] nb[key] noa omapc[lear] pc[lose] popu p[rint] ps[earch] ptN pu[t] pyf[ile] quita[ll] red reg[isters] ri[ght] san[dbox] sbl[ast] sbr[ewind] scs setl[ocal] sig sla[st] smenu snoreme spe spellu[ndo] st star[tinsert] sts[elect] sv[iew] syncbind tabc[lose] tabl[ast] tabN[ext] ta[g] te[aroff] tm tN[ext] try un unh[ide] v vi viu[sage] wa[ll] winp[os] wq wv[iminfo] xme xunmenu -syn keyword vimCommand contained abo[veleft] arge[dit] au bl[ast] br bro[wse] bun[load] cadde[xpr] ccl[ose] cgetb[uffer] che[ckpath] cmapc[lear] cnf com cope[n] cs de delep delf di difft[his] dj[ump] dr[op] ec elsei[f] endf[unction] exi[t] filetype fix[del] for gr[ep] h[elp] his[tory] il[ist] iuna[bbrev] keepj[umps] laddb[uffer] lat lcs lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lpf[ile] mak[e] mes mkv nbs[tart] noautocmd on[ly] pe popu[p] pro pta[g] ptn[ext] pw[d] py[thon] r redi[r] res[ize] rightb[elow] rundo sa[rgument] sbm[odified] sb[uffer] scscope sf[ind] sign sl[eep] sn[ext] snoremenu spelld[ump] spellw[rong] sta[g] startr[eplace] sun[hide] sw[apname] syntime tabd[o] tabm[ove] tabo[nly] tags tf[irst] tm[enu] to[pleft] ts[elect] una[bbreviate] unl ve vie[w] vmapc[lear] wh[ile] win[size] wqa[ll] x xmenu xwininfo -syn keyword vimCommand contained al[l] argg[lobal] bad[d] bm[odified] brea[k] bu bw[ipeout] caddf[ile] cd cgete[xpr] checkt[ime] cn cNf comc[lear] co[py] cscope debug d[elete] delf[unction] diffg[et] diffu[pdate] dl ds[earch] echoe[rr] em[enu] en[dif] exu[sage] fin fo[ld] fu grepa[dd] helpf[ind] i imapc[lear] j[oin] kee[pmarks] lad[dexpr] later lcscope lgetb[uffer] l[ist] lN lNf lo[adview] lp[revious] ma[rk] messages mkvie[w] ne noh[lsearch] o[pen] ped[it] pp[op] profd[el] ptf[irst] ptN[ext] py python3 re red[o] ret[ab] ru ru[ntime] sav[eas] sbn[ext] scrip se[t] sfir[st] sil[ent] sm[agic] sN[ext] so spe[llgood] sp[lit] star stj[ump] sunme sy t tabe[dit] tabN tabp[revious] tc[l] th[row] tn tp[revious] tu u[ndo] unlo[ckvar] verb[ose] vim[grep] vne[w] win wn[ext] w[rite] xa[ll] xnoreme y[ank] -syn keyword vimCommand contained ar argl[ocal] ba[ll] bn[ext] breaka[dd] buf c cal[l] ce[nter] cg[etfile] cl cN cnf[ile] comp[iler] cpf[ile] cstag debugg[reedy] deletel dell diffo[ff] dig dli[st] dsp[lit] echom[sg] en endt[ry] f fina[lly] foldc[lose] fun gui helpg[rep] ia in ju[mps] keepp[atterns] laddf[ile] lb[uffer] le[ft] lgete[xpr] ll lne lnf[ile] loc[kmarks] lr[ewind] lv[imgrep] marks mk mkv[imrc] new nu[mber] opt[ions] pe[rl] pr prof[ile] ptj[ump] ptp[revious] py3 q -syn keyword vimCommand contained helpc[lose] nos[wapfile] +" Special and plugin vim commands {{{2 syn match vimCommand contained "\