SATySFiを,ファイル保存時にbuildしたい.
1. LaTeX
LaTeXの場合は,latexmk
に-pvc
オプションをつけると,保存時に自動でlatexmk
してくれる.
例:
latexmk -pvc -pdfdvi main.tex
Makefileに以下のように書いておくと便利.
watch:
latexmk -pvc -pdfdvi main.tex
2. SATySFi
SATySFiの場合は,現時点では監視オプションはないため,他の方法を考える必要がある.
2.1. entr
entr
を使うと,ファイルの変更を検知してコマンドを実行できる.
ls *.saty | entr -c satysfi main.saty
Makefileに以下のように書いておくと便利.
all:
satysfi slide/slide.saty
watch:
ls slide/slide.saty | entr make
(こんな書き方しても許されるんだ.)
2.2 エディタの機能を使う
大抵のエディタには,ファイル保存時にコマンドを実行する機能がある.
例.Vimの場合:
autocmd bufWritePost *.saty :call AutoSATySFi()<CR>
function! AutoSATySFi()
let targetName = expand('%t')
let result = system('satysfi ' . targetName)
if empty(matchlist(result, '\!', 1))
call Echomsg("succ")
else
let error_message = split(result,'!')[1]
echo error_message
split test.txt
call Echomsg("err")
endif
endfunction
function! Echomsg(type)
if a:type == "succ"
echohl StatusLine | echo "autoSATy:" | echohl ModeMsg | echon " Compilation complete" | echohl None
endif
if a:type == "err"
echohl StatusLine | echon "autoSATy:" | echohl ErrorMsg | echon " Compilation failed!" | echohl None
endif
endfunction
エラー時の処理はもっと凝ったほうが良い.(quickfixに流すなど.)
3. まとめ
VSCodeを使ったほうがいい.