替 SmartWonder 加上重新編號的功能

前一陣子在研究如何在 textarea刪除目前所在列的功能時,找到利用 document.selection 來取得目前選取的文字的方法,所以才想進一步完成這個重新編號的功能。

其實平時在打報告時倒不見得很常會需要重新編號,但需要的時候,第一點、第二點⋯⋯這樣一路打下來也是蠻花心力的,最常運用到的時機大概是跟賴主任打報告的時候吧,每次整理完 findings 要 copy & past 到 conclusions 時,總是得多做一個編號的動作,能省的時間當然要省囉,積少成多嘛!

功能示範

運作的方式大概是:

  1. 算出目前選取的範圍行數
  2. 擴充選取範圍至整行
  3. 用 Regular Expression 的方式將內容替換掉

目前 code 放在 GitHub 未來應該還會做一些修改。

奇怪的 Hack

AutoHotKeyArray 的用法有點詭異,Array0 表示個數,Array[1…] 代表的各個項目,但利用像是 StringSplit1 output 出來的 Array,似乎不會把 Array[1…] 這些項目清掉,導致重複執行這個 script 時,會用到錯誤的資料,因此在跑這個 function 前,都必須先手動把這些變數 reset。

可以加強的部分

因為目前 SmartWonder 系統只能限定在舊版 IE(或相容性模式)下運行,所以還可以用已經被 IE 10 後續版本廢棄的 document.selection,理論上如果要能在後續版本中使用,應該要同時併用 window.getSelection2,反正沒有急迫性,先暫時不動。^^a

單一檔案版本

因為許多 AutoHotKey Script 間都互有相依關係,如果只對這個功能有興趣的,可以使用下列版本,裡面包含會用到的相關函數

Footnotes


  1. http://www.autohotkey.com/docs/commands/StringSplit.htm 
  2. http://connect.microsoft.com/IE/feedback/details/795325/window-getselection-and-document-selection-legacy-support