diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2021-06-09 09:50:19 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2021-06-09 09:50:19 +0200 |
commit | ff8c1d76741f148d5f6efb9a57119dcf11afaec6 (patch) | |
tree | 2717f611f45d2a82d83ae1e320af4f3aa33b4264 /autoload/smt2/solver.vim | |
parent | 27756b129b7a1f9763a0062aafa8fd35b0181b19 (diff) | |
download | vim-polyglot-ff8c1d76741f148d5f6efb9a57119dcf11afaec6.tar.gz vim-polyglot-ff8c1d76741f148d5f6efb9a57119dcf11afaec6.zip |
Update
Diffstat (limited to 'autoload/smt2/solver.vim')
-rw-r--r-- | autoload/smt2/solver.vim | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/autoload/smt2/solver.vim b/autoload/smt2/solver.vim new file mode 100644 index 00000000..39e7d477 --- /dev/null +++ b/autoload/smt2/solver.vim @@ -0,0 +1,56 @@ +if polyglot#init#is_disabled(expand('<sfile>:p'), 'smt2', 'autoload/smt2/solver.vim') + finish +endif + +" ------------------------------------------------------------------------------ +" Config +" ------------------------------------------------------------------------------ +" If no command for invoking a solver is specified in ~/.vimrc, test if either +" 'z3' or 'boolector' is accessible through $PATH (in that order) +if !exists("g:smt2_solver_command") + if executable("z3") + let g:smt2_solver_command = "z3" + elseif executable("boolector") + let g:smt2_solver_command = "boolector" + endif +endif + +" If no command line switch for printing the solver's version is specified in +" ~/.vimrc, use '--version' +if !exists("g:smt2_solver_version_switch") + let g:smt2_solver_version_switch = "--version" +endif + +" ------------------------------------------------------------------------------ +" Public functions +" ------------------------------------------------------------------------------ +" Invokes the solver on current file +function! smt2#solver#Run() + silent !clear + execute "!" . g:smt2_solver_command . " " . bufname("%") +endfunction + +" Puts the solver's output in new split (replaces old split) +function! smt2#solver#RunAndShowResult() + let output = system(g:smt2_solver_command . " " . bufname("%") . " 2>&1") + + " Create split (or reuse existent) + if exists("s:outputbufnr") && bufwinnr(s:outputbufnr) > 0 + execute bufwinnr(s:outputbufnr) . 'wincmd w' + else + silent! vnew + let s:outputbufnr=bufnr('%') + endif + + " Clear & (re-)fill contents + silent! normal! ggdG + setlocal filetype=smt2 buftype=nofile nobuflisted noswapfile + call append(0, split(output, '\v\n')) + normal! gg +endfunction + +" Requests the solver's version +function! smt2#solver#PrintVersion() + silent !clear + execute "!" . g:smt2_solver_command . " " . g:smt2_solver_version_switch +endfunction |