1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 06:20:05 +08:00
SpaceVim/bundle/vim-povray/ftplugin/povray.vim
2022-02-03 17:24:51 +08:00

78 lines
2.1 KiB
VimL

"=============================================================================
" povray.vim --- povray ftplugin
" Copyright (c) 2016-2022 Wang Shidong & Contributors
" Author: Wang Shidong < wsdjeg@outlook.com >
" URL: https://spacevim.org
" License: GPLv3
"=============================================================================
if !exists("g:povray_command")
let g:povray_command = "povray"
endif
if !empty(glob("~/.vim/*/vim-do"))
let g:execute_command = "DoQuietly"
else
let g:execute_command = "silent !"
endif
let s:compilation_failed = 0
function! povray#cleanPreviousImage()
let l:remove = system("rm " . expand("%:r") . ".png")
redraw!
endfunction
function! povray#CompileSilent()
call povray#cleanPreviousImage()
execute 'w!'
let g:compile_output = system(g:povray_command . " "
\ . expand("%"))
if empty(glob(expand("%:r") . ".png"))
let s:compilation_failed = 1
call povray#showCompilationOutput()
else
let s:compilation_failed = 0
endif
endfunction
function! povray#showCompilationOutput()
execute 'silent pedit [POVRAY]' . expand("%:r") . ".png"
wincmd P
setlocal filetype=povray_output
setlocal buftype=nofile
setlocal noswapfile
setlocal bufhidden=wipe
setlocal modifiable
call append(0, split(g:compile_output, '\v\n'))
setlocal nomodifiable
nnoremap <silent> <buffer> q :silent bd!<CR>
endfunction
" Compile asynchronously if vim-do is installed
function! povray#CompileAsync()
call povraycleanPreviousImage()
execute 'w!'
execute g:execute_command . " "
\ . g:povray_command . " "
\ . expand("%")
redraw!
endfunction
function! povray#showImage() abort
if exists("g:image_viewer")
execute "silent ! " . g:image_viewer . " "
\ . expand("%:r") . ".png" . "&"
redraw!
else
echom "Define an image viewer - let g:image_viewer = <viewer>"
endif
endfunction
function! povray#CompileAndShow()
call povray#CompileSilent()
if !s:compilation_failed
call povray#showImage()
endif
endfunction