- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Eclipse

はじめに Edit

Eclipseでファイルを保存すると同時に、ブラウザをリロードしたい、という話。
AutoHotKey+Eclipse Monkeyでできるらしい。

T氏の(非)日常記を参考にしましたが、上手くいかない部分がありましたので、再度まとめてみています。

Eclipse Monkeyはどうもメンテナがいない?ので削除されるっぽい?それはマズイなあ……。

↓もっと簡単な方法を見つけますた。

AutoHotKeyを使った簡単な方法 Edit

Eclipseでファイル保存と同時に、ブラウザを更新する簡単な方法!

Ctrl+Sが通常ファイルの保存なのでそのキーを横取りして、
保存と同時に、ブラウザのリロードを同時にさせるだけ!簡単!

Google ChoromeやFirefoxを更新させる例 Edit

AutoHotkeyを用意して、以下をAutoHotKey.iniなどに書いておきます。

; これはファイルの上の方に書いておく
SetTitleMatchMode, RegEx


; Eclipse or Aptana(RadRails)IDE
#IfWinActive, Eclipse|Aptana\ Studio ahk_class SWT_Window0
;  Ctrl+S to F5 for web browser
^s::
  Send, ^s
  
  ; reload Google Chrome
  WinGet, Chrome,, . ahk_class Chrome_WidgetWin_0
  ControlSend,, {F5}, ahk_id %Chrome%

;  ; reload FireFox
;  ; originaled by mala
;  ; http://la.ma.la/blog/diary_200608281736.htm
;  WinGet, FF,, Mozilla Firefox
;  ControlSend,, {F5}, ahk_id %FF%

return
#IfWinActive

あとは、AutoHotKeyをリロードして下さい。
これで、EclipseでCtrl+S押したら、Google Chromeも更新されます。
楽勝でしょ?

# POSTした場合は、確認ダイアログがでますがそれは仕方ないなあ。

Firefoxは下の方の";"でコメントしてあるのをはずせばいけます。

…IEは、多分同じようにしてできると思います。
ぜひやってみてください。できたら教えてね。

使い方 Edit

  1. Eclipseで.htmlとか.cssとか、.phpとか.rbなどのファイルを読み込む
  2. 適当に何か変更する
  3. Ctrl+Sで保存する
  4. Google ChromeやFirefoxがリロードされる!!
  5. やったーヽ( ´ー`)ノ

上手くいきましたか?

以下は Eclipse Monkey を使ってみたメモ Edit

Ctrl+Sがメッチャ遅くなったのでやめたほうが無難…。
一応メモとして残しておきます

Eclipse Monkeyのインストール Edit

  1. 「ヘルプ→ソフトウェア更新」を開き、「使用可能なソフトウェア」タブをクリックします。
  2. 「サイトの追加」で以下のURLを追加
    http://download.eclipse.org/technology/dash/update/
  3. 追加した項目を右クリックで「リフレッシュ」して(いらないかも)、
    Eclipse Monkeyの項目をチェックし、「インストール」します。
  4. 再起動

EclipseMonkey_install.jpg

Firefoxへの対応 Edit

reload_firefoxのダウンロード Edit

最速インターフェース研究会 :: AutoHotkeyを使ってFirefoxをリロードするだけのexeファイルを作ってみた
http://la.ma.la/misc/ahktool/reload_firefox.exe

をダウンロードして適当にローカルディスク上に置きます。
パスは憶えておきます。

AutoHotKeyを使って 上記のreload_firefox.exe を作る時は、以下のスクリプトから作ることができるようです。
(※.exeをダウンロードしたらいらないですが、一応メモ)

#NoTrayIcon
SetTitleMatchMode, 2
WinGet, FF,, Mozilla Firefox
ControlSend,, {F5}, ahk_id %FF%

スクリプトの貼り付けと変更 Edit

以下のスクリプトをクリップボードにコピーして
メニューから「スクリプト→スクリプトの貼り付け」を行う。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
--- Came wiffling through the eclipsey wood ---
/*
 * Kudos: tomo.snowbug
 * License: EPL 1.0
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 * Listener: commandService().addExecutionListener(this);
 * requre monkeyLogger.js
 */

//include("monkeyLogger.js");

var Setting = {
        targetFileName: "", //for multiple selection, using delimiter as comma.
        targetFileExtension: "html,js,css", //for multiple selection, using delimiter as comma.
        reloadFilefoxExe: "c:\\dev\\reload_firefox.exe",
};

function commandService(){
    var commandServiceClass = Packages.org.eclipse.ui.commands.ICommandService;
    var commandService = Packages.org.eclipse.ui.PlatformUI.getWorkbench().getAdapter(commandServiceClass);
    return commandService;
}

function preExecute(commandId, event){
}

/* Add in all methods required by the interface, even if they are unused */
function postExecuteSuccess(commandId, returnValue){
    // if we see a save command
    if (commandId == "org.eclipse.ui.file.save") {
        execReloadFirefox();
    }
}

function notHandled(commandId, exception){
}

function postExecuteFailure(commandId, exception){
}

function wait(seconds) {
        var thread = java.lang.Thread.currentThread();
        var waitFor = seconds * 1000;
        thread.sleep(waitFor);
}

function execReloadFirefox(){
    var savedFile = editors.activeEditor.title;
//    Logger.debug("call reloadFilefox :" + savedFile);
    if (!isTargetFile(savedFile) ) return;
    wait(2);
//    Logger.debug("exectue reload:" + Setting.reloadFilefoxExe); 
    var runtime = java.lang.Runtime.getRuntime();
    var process = runtime.exec(Setting.reloadFilefoxExe);
}

function isTargetFile(fileName) {
        var targetFileNames = Setting.targetFileName.split(",");
        var targetFileExtensions = Setting.targetFileExtension.split(",");
        var fileExtension = "";
        var flagment = fileName.split(".");
        if (flagment.length > 1) {
                fileExtension = flagment[flagment.length - 1];
        }
        for (var i = 0; i < targetFileNames.length; i++ ) {
                if (targetFileNames[i] == fileName) return true;
        }
        if (fileExtension == "") return false;
        for (var i = 0; i < targetFileExtensions.length; i++) {
                if (targetFileExtensions[i] == fileExtension) return true;
        }
        return false;
}
--- And burbled as it ran! ---

その後、エクスプローラーペインに、"Eclipse Monkey Scripts"ができるはず。
そのプロジェクトのscriptsフォルダにscript.jsができるので、
それを、「ファイル→別名保管」でreloadFirefox.js として保存しておきます。
script.jsはコンテキスト(右クリック)メニューから削除しておきます。

あとは、以下のSettingを環境に合わせて変更します。
例えば、拡張子.phpを追加して、FilefoxExeのパスを変更した場合です。

var Setting = {
	targetFileName: "", //for multiple selection, using delimiter as comma.
	targetFileExtension: "html,js,css,php", //for multiple selection, using delimiter as comma.
	reloadFilefoxExe: "d:\\software\\ReloadBrower\\reload_firefox.exe",
};

問題点 Edit

Ctrl+Sが妙に遅くなった orz

参考リンク Edit


No comment. Comments/Eclipse/保存と同時にブラウザを自動リロードする方法?

Name:


Attach file: fileEclipseMonkey_install.jpg 48 download [Information]
Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2009-05-20 Wed 19:43:59 JST (3011d)