1 nmap <silent> <Leader>fi :FactorVocabImpl<CR>
2 nmap <silent> <Leader>fd :FactorVocabDocs<CR>
3 nmap <silent> <Leader>ft :FactorVocabTests<CR>
5 let g:FactorRoot = "/Users/joe/Documents/Code/others/factor"
6 let g:FactorVocabRoots = ["core", "basis", "extra", "work", "/Users/joe/Documents/Code/Factor"]
8 command! -nargs=1 FactorVocab :call GoToFactorVocab("<args>")
9 command! FactorVocabImpl :call GoToFactorVocabImpl()
10 command! FactorVocabDocs :call GoToFactorVocabDocs()
11 command! FactorVocabTests :call GoToFactorVocabTests()
13 function! FactorVocabRoot(root)
15 exe "lcd " fnameescape(g:FactorRoot)
16 let vocabroot = fnamemodify(a:root, ":p")
17 exe "lcd " fnameescape(cwd)
21 function! FactorVocabFile(root, vocab)
22 let vocabpath = substitute(a:vocab, "\\.", "/", "g")
23 let vocabfile = FactorVocabRoot(a:root) . vocabpath . "/" . fnamemodify(vocabpath, ":t") . ".factor"
25 if getftype(vocabfile) != ""
32 function! GoToFactorVocab(vocab)
33 for root in g:FactorVocabRoots
34 let vocabfile = FactorVocabFile(root, a:vocab)
36 exe "edit " fnameescape(vocabfile)
40 echo "Vocabulary " vocab " not found"
43 function! FactorFileBase()
44 let filename = expand("%:r")
45 let filename = substitute(filename, "-docs", "", "")
46 let filename = substitute(filename, "-tests", "", "")
50 function! GoToFactorVocabImpl()
51 exe "edit " fnameescape(FactorFileBase() . ".factor")
54 function! GoToFactorVocabDocs()
55 exe "edit " fnameescape(FactorFileBase() . "-docs.factor")
58 function! GoToFactorVocabTests()
59 exe "edit " fnameescape(FactorFileBase() . "-tests.factor")