scriptencoding utf-8 "#-=- -=- -=- -=- -=- -=- -=- -=- -=-#" function! s:writefile_with_erlang_module(lines, filepath) abort let l:module_defined_line = match(a:lines, '-module') if l:module_defined_line is -1 throw "REPL_VIM: repl.vim couldn't -module difinition !" endif let a:lines[l:module_defined_line] = printf('-module(%s).', fnamemodify(a:filepath, ':t:r')) call writefile(a:lines, a:filepath) endfunction "#--- --- ---#" function! repl#erlang#open_repl() abort " FIXME: this function messes current directly with a .bean file. let l:pwd = getcwd() " Setting up the file for the current file if &modified " Create new file temporary " -module don't allow module name number start let l:tempname = tempname() let l:filename = 't' . fnamemodify(l:tempname, ':t') . '.erl' let l:dirpath = fnamemodify(l:tempname, ':h') let l:module_file = l:dirpath . '/' . l:filename try call s:writefile_with_erlang_module(getline(1, expand('$')), l:module_file) catch /^REPL_VIM/ call repl#echo_error('REPL_VIM: fatal error') call repl#echo_error(v:exception) return endtry " Change current directory temporary execute 'cd' l:dirpath else let l:module_file = expand('%:p') " Change current directory temporary cd %:p:h endif let l:repl = get(g:, 'repl_filetype_repl.erlang.repl', g:repl#default_filetype_repl.erlang['repl']) let l:opt = get(g:, 'repl_filetype_repl.erlang.opt', g:repl#default_filetype_repl.erlang['opt']) if !executable(l:repl) call repl#echo_error(printf("You don't have repl: '%s'", l:repl)) return endif let l:args = printf('%s %s %s', l:repl, l:opt, l:module_file) execute ':VimShellInteractive' l:args call vimshell#interactive#send(printf('c(%s).', fnamemodify(l:module_file, ':t:r'))) execute 'cd' l:pwd endfunction