Scite 編號書籤 |
|
ctrl+K 1
設定第一個書籤,以及 Ctrl+Q 1
前往該書籤,依此類推。儘管我偏好的風格是 SciTE 預設值(F2
移動至下一個書籤),有些人可能會覺得這樣有用。這是範例說明如何使用 Scintilla 建立自訂書籤以及如何使用 OnOpen
和 OnSwitchFile
以檔案為基礎管理物件。
儘管我希望清楚說明如何使用最直接的 SciTE/Lua 指令碼執行,但此指令碼為方便起見,會使用 SciteExtMan 載入程式。
-- borland.lua -- Defines borland-style numbered bookmarks. -- Put this in your extman scite_lua directory. scite_Command { 'ctrl-k|do_ctrl_command k|Ctrl+K', 'ctrl-q|do_ctrl_command q|Ctrl+Q', } local gMarksMap = {} local gMarks scite_OnOpen(function(f) gMarksMap[f] = {} end) scite_OnSwitchFile(function(f) gMarks = gMarksMap[f] end) function current_line() return editor:LineFromPosition(editor.CurrentPos)+1 end local markers_defined = false local base = 9 function define_markers() local zero = string.byte('0') for i = 1,9 do editor:MarkerDefine(i+base,SC_MARK_CHARACTER + zero + i) end markers_defined = true end function do_ctrl_command(key) editor:BeginUndoAction() scite_OnChar('once',function (ch) editor:EndUndoAction() editor:Undo() local num = tonumber(ch) local mark = num and gMarks[num] local line = current_line() if key == 'k' and num then if not markers_defined then define_markers() end if mark then -- clear mark gMarks[num] = nil editor:MarkerDelete(line-1,num+base) else gMarks[num] = line editor:MarkerAdd(line-1,num+base) end elseif key == 'q' and mark then editor:GotoLine(mark-1) end return true end) end