├── README.md ├── ftplugin └── elixir.vim └── plugin └── elixir-alternate.vim /README.md: -------------------------------------------------------------------------------- 1 | # vim-elixir-alternative-files 2 | 3 | Vim script for alternating between test and implementation files for Elixir 4 | 5 | ## Installation with Vundle: 6 | 7 | ``` 8 | Plugin 'renderedtext/vim-elixir-alternative-files' 9 | ``` 10 | 11 | Currently, you have to define a shortcut: 12 | 13 | ``` 14 | nnoremap :call ElixirAlternateFile() 15 | ``` 16 | -------------------------------------------------------------------------------- /ftplugin/elixir.vim: -------------------------------------------------------------------------------- 1 | command! -buffer A :call ElixirAlternateFile() 2 | -------------------------------------------------------------------------------- /plugin/elixir-alternate.vim: -------------------------------------------------------------------------------- 1 | function! ElixirGetAlternateFilenameForImplementation(filepath) 2 | let currentFileRoot = split(a:filepath, ".ex$")[0] 3 | 4 | let testPath = substitute(currentFileRoot, "lib/", "test/", "") 5 | let fileToOpen = testPath . "_test.exs" 6 | 7 | return fileToOpen 8 | endfunction 9 | 10 | function! ElixirGetAlternateFilenameForTest(filepath) 11 | let currentFileRoot = split(a:filepath, "_test.exs$")[0] 12 | 13 | let implementationPath = substitute(currentFileRoot, "test/", "lib/", "") 14 | let fileToOpen = implementationPath . ".ex" 15 | 16 | return fileToOpen 17 | endfunction 18 | 19 | function! ElixirGetAlternateFilename(filepath) 20 | let fileToOpen = "" 21 | 22 | if empty(matchstr(a:filepath, "_test")) 23 | let fileToOpen = ElixirGetAlternateFilenameForImplementation(a:filepath) 24 | else 25 | let fileToOpen = ElixirGetAlternateFilenameForTest(a:filepath) 26 | endif 27 | 28 | return fileToOpen 29 | endfunction 30 | 31 | function! ElixirAlternateFile() 32 | let currentFilePath = expand(bufname("%")) 33 | let fileToOpen = ElixirGetAlternateFilename(currentFilePath) 34 | 35 | echo fileToOpen 36 | 37 | if filereadable(fileToOpen) 38 | exec(":e" . " " . fileToOpen) 39 | else 40 | echoerr "couldn't find file " . fileToOpen 41 | endif 42 | endfunction 43 | --------------------------------------------------------------------------------