Hatena::ブログ(Diary)

WDF RSSフィード

2006-10-05

[]Vimでファイル保存時にFirefoxをリロードする(with MozLab) 15:50

この記事(http://la.ma.la/blog/diary_200609280045.htm)を参考に、MozLab(http://dev.hyperstruct.net/trac/mozlab)のMozReplを使って、Vimでファイル(*.html,*.htm,*.js,*.css)保存時にFirefoxをリロードするVimスクリプトを作ってみた。

:SetreloadfirefoxVimでファイルを保存するたびにFirefox(MozReplを開始しておく)がリロードされます。

もう一度:Setreloadfirefoxと入力すると解除されます。

rubyが必要です。

※perl, python を使ったスクリプトを公開しました。Vimでファイル保存時にFirefoxをリロードする(with MozLab) : Serendip - Webデザイン・ホームページ制作

demo flash movie[12MB]

~/bin/mozrepl_reload_firefox.rb

require 'net/telnet'
telnet = Net::Telnet.new({
    "Host" => "localhost",
    "Port" => 4242
})
telnet.puts("content.location.reload(true)")
telnet.close

~/.vim/plugin/reloadfirefox.vim

if exists('g:reload_firefox')
    finish
endif

command -nargs=0 Setreloadfirefox :call SetMozreplReloadFirefox()

function! ReloadFirefox()
    if has('ruby')
        :ruby <<EOF
            require "net/telnet"

            telnet = Net::Telnet.new({
                "Host" => "localhost",
                "Port" => 4242
            })

            telnet.puts("content.location.reload(true)")
            telnet.close
EOF
    else
        if has('gui_win32')
            " for Windows
            let ruby_script_file = 'c:/cygwin/home/username/bin/mozrepl_reload_firefox.rb'
        else
            " for Linux, Cygwin
            let ruby_script_file = $HOME . '/bin/mozrepl_reload_firefox.rb'
        endif

        if filereadable(ruby_script_file)
            call system(ruby_script_file)
        else
            echo "ERROR : File \"" . ruby_script_file . "\" is NOT found."
        endif
    endif
endfunction

function! SetMozreplReloadFirefox()
    if exists('g:reload_firefox')
        autocmd! mozreplreloadfirefox
        unlet g:reload_firefox
        echo "\"mozreplreloadfirefox\" of augroup has been deleted."
    else
        augroup mozreplreloadfirefox
           autocmd BufWritePost *.html,*.htm,*.js,*.css call ReloadFirefox()
        augroup END
        let g:reload_firefox=1
        echo "Firefox browser content is reloaded when file(*.html,*htm,*.js,*.css) is saved."
    endif
endfunction