Scite 文字摺疊 |
|
scite_lua
目錄中。文字文件當然有很多形式;此擴充套件會擷取一些摺疊資訊常見模式。預設值將會使用 Wiki 慣例,也就是以等號 (=) 起頭的行代表標題
=Main Heading ==Subheading 1 ==Subheading 2 ===Sub 2 1 ===Sub 2 2你當然可以變更所使用的字元。若要使用 Emacs 風格的大綱檔案,請將這段文字放入你的屬性檔案中
text.outline.char=*你可以指定哪些檔案將會被視為文字,以及要使用哪個字型,方法如下:舉例來說,我喜歡使用系統的固定字型編輯文字(這是因為多年來使用記事本的關係!)
text.ext=*.txt;*.doc text.font.name=Fixedsys另一種常見的風格則是要使用編號的區段,像是 1.2.1。(這也許是個官僚主義的詛咒,不過有些人喜歡它)。以下是如何設定資料夾來辨識此樣式
text.outline.number=1
檢視 | 切換所有摺疊
指令現在會作用於你的文件,當然你也還是可以用一般的方式手動摺疊和展開。Wiki 型式文件通常從 '==' 開始,而且不會有頂層標題。在這種情況下,你可以指定起始層級text.outline.start=1這會讓你能夠正確地檢視此頁面的標記大綱。
工具 | 顯示大綱
會顯示所有 摺疊行。
工具 | 重新掃描
指令,萬一你的文件出了問題時,它能將文件整理好;請注意,當切換緩衝區時會自動執行這項動作。這些函式能讓你設定 Scintilla 控制項的摺疊層級,然後提取它。基本層級必須從 SC_FOLDLEVELBASE
開始,而且所有摺疊行必須另外具有 SC_FOLDLEVELHEADERFLAG
。請注意 gerçek 詞法分析器所產生的摺疊資訊較為複雜,而且你必須偽造位元運算。
local function set_level(i,lev,fold) local foldlevel = lev + SC_FOLDLEVELBASE if fold then foldlevel = foldlevel + SC_FOLDLEVELHEADERFLAG editor.FoldExpanded[i] = true end editor.FoldLevel[i] = foldlevel end local function get_level(i) local fold = false local level_flags = editor.FoldLevel[i] - SC_FOLDLEVELBASE if level_flags - SC_FOLDLEVELHEADERFLAG >= 0 then fold = true level_flags = level_flags - SC_FOLDLEVELHEADERFLAG end return level_flags, fold end我將這設定成 SciteExtMan 腳本,以處理設定指令處理常式和(最重要)
OnEditorLine
事件的繁瑣事。它 可能會 讓 OnOutputLine
事件感到困惑,因此如果你正在使用 Lua 主控台擴充套件,請預期輸出窗格會偶爾出現奇怪的錯誤訊息。我曾玩過自動層級編號生成的點子,但要妥善執行並非易事;必須在新增項目時重新編列項目的編號,等等(MS Word 就會搞錯)。這是定義文件(使用 Emacs 術語)的「主要」模式的開端,而且顯然也有「次要」模式,例如 Wiki 標示。举例来说,如果它可以自动检测诸如 editor.FoldLevel[i]
的表达式并将其置于定距字体标记中,那将很酷。