沿著aptana的腳步,我遇到了Snippets,開始我還以為是aptana所特有的東西,原來Snippets來自Monkey-Eclipse Monkey。
什么是Monkey呢?
官方網址為http://www.eclipse.org/dash/
Monkey是一個用于自動完成繁瑣的編程任務的動枋態腳本工具。他使用javascript的語法,有其自帶的開發庫又可以使用某些java的函數。因為它的簡單性,我認為它是區別于plugs-in的另外一種對eclipse的擴展的好工具。
來,看看Eclipse Monkey Example帶給了我們什么應用。
屬于Editors的命令有:Commont Lines,Leading Spaces to Tabs,Leading Tabs to Spaces。
屬于Experimental的命令有:Colorize as HTML,Exercise Editor,Load Metadata,Show Lexemes,Show Parse Tree.
......
不一一列舉了。
學習的資料是少,我看了看代碼,理解出了用法。仿照著寫了兩個Snippets,分別完成兩個單獨的功能。注意,由我自己的經驗是需要3.2以上版本才對aptana與monkey有很好的支持。如果先裝了aptana之后再裝monkey的話,如monkey的文檔所說到的monkey example很難加載到菜單上,需要手動修改配置,具體方法還沒確定,如果先裝了monkey,就可以先新建出monkey example再裝aptana,這樣我們開發Snippets就簡單多了,直接生成了個workplace中的項目,寫完Snippets保存,馬上就能通過Snippets視圖中雙擊加載上的Snippets來運行。就建出的項目的Snippets也能馬上保存到Snippets視圖中。
一.給某行代碼加上"http://"的注釋符號,這樣類似于eclipse中的Ctrl+?鍵的功能,但簡單實現當以經是"http://"注釋的時候依然加上"http://",文件所處的位置對Snippets沒影響。
/*
* Menu: Editor > lines
* Kudos: Kevin Lindsey
* License: EPL 1.0
* DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
* DOM: http://localhost/com.aptana.ide.scripting
*/
//文件頭必須這樣定義好,在開頭,還有其它可定義的屬性,Menu就是加載到eclipse中的執行命令的位置
//DOM應該是類似于類庫的一樣東西,選擇需要加入
/**
* main
*/
//main是執行的方法的入口
function main()
{
var editor = editors.activeEditor;
var range = editor.selectionRange;
var startLine = editor.getLineAtOffset(range.startingOffset);
editor.beginCompoundChange();
var offset = editor.getOffsetAtLine(startLine)
editor.applyEdit(offset,0,"http://");
editor.endCompoundChange();
}
二.這是一個很有用的功能,打開所編輯文件的所在文件夾,并對該文件選定。不知道為什么 editors.activeEditor.textEditor.getFileContext()只對aptana方式打開的文件有效。
/*
* Menu: File > OpenDir
* Kudos: Kevin Lindsey
* License: EPL 1.0
* DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
* DOM: http://localhost/com.aptana.ide.scripting
*/
/**
* main
*/
function main()
{
try {
//獲取文件路徑
var filename = editors.activeEditor.textEditor.getFileContext().getSourceProvider().getSourceURI();
filename = filename.replace("%20"," ");
//調用系統命令
java.lang.Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL Explorer.exe /select," + filename);
} catch(e) {
Packages.org.eclipse.jface.dialogs.MessageDialog.openInformation(
window.getShell(),
"Monkey Dialog",
e
)
}
}