jEdit提供了多種擴充機制(BeanShell、JPython等)讓使用者能自行增加功能,原本以為擴增的程序會很複雜,並且可能要使用不熟悉的語法來撰寫,沒想到原來BeanShell根本就是Java的語法,如果你已經會Java了,那麼幾乎不用學習就能馬上用BeanShell寫擴充巨集了。最快學會擴充巨集的方法,就是由閱讀其內建的巨集程式開始。
首先用jEdit開啟C:\Program Files\jEdit\Macros\Text\Insert_Date.bsh,我們看到的就像是一個標準的Java程式,先是定義了一個函數insertDate( ),最後面再叫用此函數,百分之九十五的程式都是一看就懂,在第53~55行的地方才是我們要注意的重點:
// inserting date and internet time to textarea textArea.setSelectedText(Calendar.getInstance().getTime().toString() + " @" + (int)swatch + " /Internet Time/");
此段程式使用系統變數textArea的setSelectedText( ) method把目前時間插入選取文字。
jEdit有幾個預設好了的系統變數,用來表示jEdit的各項主要元件,透過這些變數就能存取jEdit的各個設定並做需要的操作:
- textArea:代表的是編輯區的文字區域
- buffer:代表了目前編輯中的檔案緩衝區
- view:代表了目前編輯中的檢視物件,UI的輸出都要透過此物件
第58~61行出現了另一個jEdit的類別Macros:
if (buffer.isReadOnly()) Macros.error(view, "Buffer is read-only."); else insertDate();
buffer.isReadOnly( )判斷目前編輯檔案是否是唯讀狀態,如果是唯讀的檔案則不能插入時間,而以Macros.error( )於當前的view顯示錯誤對話窗。Macros類別提供了許多放的method,按F1開啟jEdit Help找到‘jEdit API Reference‘裡的org.gjt.sp.jedit package,其內有包含Macros在內的許多系統類別;Macros有幾個method經常會使用到:
- Macros.error(view, "message"): 顯示錯誤訊息窗
- Macros.message(view, "message"); 顯示訊息窗
- Macros.input(view, "message", default-value); 顯示輸入對話窗
再來看另一個巨集:C:\Program Files\jEdit\Macros\Text\Insert_Tag.bsh,這個巨集將選取文字組成HTML標籤。重點解說如下:
| 行號 | 程式碼片段 | 說明 |
| 29 | caret = textArea.getCaretPosition(); | 取得目前游標位置 |
| 30 | tag = Macros.input(view, "Enter name of tag:"); | 讓使用者輸入標籤名稱 |
| 32 | text = textArea.getSelectedText(); | 取得選取文字 |
| 38 | textArea.setSelectedText(sb.toString()); | 把組好的文字寫回選取文字 |
我們可以注意到caret、tag、text等變數都沒有宣告型別而能直接使用,這是BeanShell和Java的一個重大差異,在BeanShell裡的變數可以不用事先宣告且能任意變型,這個特性當然能帶來方便性,但要小心日後的維護性。
##
您可能也會有興趣的類似文章
- [jEdit] 系統畫面組成之說明 (0則留言, 2007/10/26)
- 文字編輯器印象與jEdit (6則留言, 2007/10/24)
- [jEdit] jEdit編輯器的初始設定與必裝插件 (3則留言, 2007/10/25)
- [jEdit] 方便的主控台插件Console (0則留言, 2007/10/28)
- [jEdit] 關鍵字(縮寫)擴展的強大插件:SuperAbbrevs (1則留言, 2007/10/29)
- SVN2CL: 自動產生變動紀錄的腳本–修改 (3則留言, 2006/08/23)
- [jEdit] 指定啟動參數以提升運行效率 (2則留言, 2007/10/25)
- DOS視窗的設定 (0則留言, 2005/01/20)
- [Windows] 以Shell命令開啟系統目錄 (1則留言, 2008/04/04)
- UNIX歷史:網路農夫的UNIX C Shell一文不容錯過 (0則留言, 2006/03/16)
- 自行新增「右鍵功能表選項」的方法 (2則留言, 2006/07/15)
- 重新排列右鍵功能表(Context Menu)的選項 (0則留言, 2006/07/16)
- Subversion與TortoiseSVN釋出新版1.3 (0則留言, 2006/01/05)
- 直接使用TextArea編輯Blog與Wiki時必備的FireFox擴充 (1則留言, 2007/09/05)
- 解決 iReport 升級後的問題 (1則留言, 2005/11/22)















最新留言