" VHDL filetype plugin " Language: VHDL " Maintainer: R.Shankar " Modified By: Gerald Lai " Last Change: 2011 Dec 11 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") finish endif " Don't load another plugin for this buffer let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim " Set 'formatoptions' to break comment lines but not other lines, " and insert the comment leader when hitting or using "o". "setlocal fo-=t fo+=croqlm1 " Set 'comments' to format dashed lists in comments. "setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// " Format comments to be up to 78 characters long "setlocal tw=75 " Win32 can filter files in the browse dialog "if has("gui_win32") && !exists("b:browsefilter") " let b:browsefilter = "Verilog Source Files (*.v)\t*.v\n" . " \ "All Files (*.*)\t*.*\n" "endif " Let the matchit plugin know what items can be matched. if ! exists("b:match_words") && exists("loaded_matchit") let b:match_ignorecase=1 let s:notend = '\%(\:\:\:\,'. \ s:notend.'\:\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\,'. \ s:notend.'\:\' endif " count repeat function! CountWrapper(cmd) let i = v:count1 if a:cmd[0] == ":" while i > 0 execute a:cmd let i = i - 1 endwhile else execute "normal! gv\" execute "normal ".i.a:cmd let curcol = col(".") let curline = line(".") normal! gv call cursor(curline, curcol) endif endfunction " explore motion " keywords: "architecture", "block", "configuration", "component", "entity", "function", "package", "procedure", "process", "record", "units" let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)' noremap [[ :cal CountWrapper(':cal search("\\%(--.*\\)\\@\\c\\\\%^","bW")') noremap ]] :cal CountWrapper(':cal search("\\%(--.*\\)\\@\\c\\\\%$","W")') noremap [] :cal CountWrapper(':cal search("\\%(--.*\\)\\@\\c\\\\%^","bW")') noremap ][ :cal CountWrapper(':cal search("\\%(--.*\\)\\@\\c\\\\%$","W")') vnoremap [[ :cal CountWrapper('[[') vnoremap ]] :cal CountWrapper(']]') vnoremap [] :cal CountWrapper('[]') vnoremap ][ :cal CountWrapper('][') let &cpo = s:cpo_save unlet s:cpo_save