[jEdit] 使用BeanShell巨集自行擴充功能
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裡的變數可以不用事先宣告且能任意變型,這個特性當然能帶來方便性,但要小心日後的維護性。
##
類似主題的文章
撰寫留言
隨機文章
- 超方便下載[Google圖書]的資料 (21 人次, 2010-02-27)
- 超簡單MSN下載檔案自動分類 (21 人次, 2010-02-27)
- 令人動容的日劇《不毛地帶》片尾曲:Tom Traubert's Blue[修訂] (21 人次, 2009-11-22)
- DOS命令使用技巧4:由DOS視窗迅速切換資料夾的方法 (20 人次, 2010-02-27)
- 使用Memory Fox附加元件為Firefox進行定期記憶體瘦身 (19 人次, 2010-02-27)
- 另一套適用手機的影片轉檔工具:WinAVI 3GP/MP4/PSP/iPod Video Converter (19 人次, 2009-04-18)
- 將Google Buzz、Twitter與Facebook在Gmail裡合而為一的步驟 (17 人次, 2010-02-18)
- [轉貼] 转:容易弄错的繁体字 (17 人次, 2010-02-18)
- 日劇《仁醫 JIN》與漫畫《仁者俠醫》觀後雜感 (17 人次, 2009-10-29)
- Plurk CSS樣式自訂修改全攻略 (16 人次, 2009-07-04)
- 將噗浪的視窗高度變大,加上分隔線,以方便閱讀 (16 人次, 2009-06-06)
- DOS命令使用技巧3:由DOS視窗將目前資料夾用檔案總管開啟的方法 (16 人次, 2010-02-27)
- 強化HTC Touch HD的工具軟體 (15 人次, 2009-02-25)
- 使用IMETOOL有效控制中文輸入法 (15 人次, 2010-02-27)
- DOS命令使用技巧1:最快把文字檔案貼入剪貼簿的方法 (15 人次, 2010-02-27)
- DOS使用技巧2:檢視超大檔案檔尾內容的指令WinTail.exe (14 人次, 2010-02-27)
- Windows Mobile使用的完美聯絡人軟體:Inesoft Phone [修訂] (13 人次, 2009-02-28)
- 把HTC Touch HD操作介面換成Spb Mobile Shell,美觀又便利! (13 人次, 2009-02-18)
- jQuery選擇器測試與範例 (13 人次, 2007-09-29)
- 用FinchSync同步Thunderbird與HTC Touch HD的聯絡人資料 (12 人次, 2009-02-01)
- 從韓劇《市政廳》笑看韓國選舉花招 (12 人次, 2009-09-05)
- Spb Mobile Shell設定備忘 (12 人次, 2009-02-19)
- 強化閱讀第2噗:變更噗浪回應的字體與背景顏色 (12 人次, 2009-06-07)
- 第4個jqGrid範例: 資料列處理 (11 人次, 2010-02-14)
- [Vista] 把桌面行事曆Rainlendar鎖定在Vista桌面上 (11 人次, 2008-04-27)
- [WM6] 自動再次提醒未接來電等事件:ReRemind (11 人次, 2009-04-19)
- jQuery神奇的選擇器(Selector) (11 人次, 2007-09-28)
- 用AutoHotkey輕鬆製作螢幕小鍵盤 (11 人次, 2008-03-16)
- 用WordPress的WPtouch外掛顯示iPhone與HTC Touch HD的精簡樣式[修訂] (11 人次, 2009-02-02)
- 第2個jqGrid範例:增加額外選項設定 (10 人次, 2010-02-13)
- 第一個jqGrid範例:Local array (10 人次, 2010-02-13)
- 開始使用Cygwin以取代cmd.exe (10 人次, 2007-01-11)
- Windows 7的常用快速鍵速查表 (10 人次, 2010-01-05)
- 第3個jqGrid範例: XML與XML STRING格式 (10 人次, 2010-02-14)
- ZScreen:一氣呵成的單鍵「抓圖與傳檔」工具 (10 人次, 2010-01-24)
- 變更資料夾與檔案的屬性:Attribute Changer 6.0 Beta (10 人次, 2008-02-10)
- Vista IE8的window.open異常 (10 人次, 2009-11-04)
- Subversion權限設定範例說明 (9 人次, 2009-09-09)
- 支持國片-《賽德克‧巴萊》的開鏡紀念套票到貨了! (9 人次, 2009-11-10)
- 初試TortoiseSVN的收穫 (9 人次, 2005-09-16)
- 增加Spb Mobile Shell 3.0生活化桌面頁數的小技巧 (9 人次, 2009-04-27)
- Joomla! 1.0.12網站建置2-安裝佈景主題樣板(多圖) (9 人次, 2008-07-05)
- [Java] 終於解決IntelliJ-IDEA 8.0.1的中文輸入法問題 (9 人次, 2008-12-04)
- 能在HD手機上順暢運行的3D賽車+射擊遊戲:Xtrackt (9 人次, 2009-09-12)
- [iReport] Text Field中引用的欄位、變數與參數 (9 人次, 2005-04-16)
- 改寫AutoHotkey輸出中文字串的寫法http://jdev.tw/blog/1434/autohotkey-sendinput-asc (9 人次, 2009-06-20)
- [Tools] 幫Skype加上影像功能:vSkype (9 人次, 2005-06-20)
- 使用QNAP TS-109 NAS設備的心得 (8 人次, 2007-10-18)
- AutoHotkey:在FireFox裡用鍵盤瀏覽網頁 (8 人次, 2008-03-27)
- [Cygwin] 用c:、d:切換磁碟機目錄 (8 人次, 2007-01-18)



您必須保留原作姓名標示
您不得為商業使用本著作
您不得改變或改作本著作
最新留言