集成文本編輯器 link

Ren’Py允許用戶從啟動器(launcher)載入一個文本編輯器編輯遊戲腳本,同時也使用這個文本編輯器向用戶匯報錯誤。 默認情況下,Ren’Py從啟動器和系統默認編輯器等路徑啟動時,都會使用jEdit作為文本編輯器。(譯者註:當前版本默認編輯器為Editra) 必要的話用戶可以訂製自己的文本編輯器。

通過在.edit.py文件中創建一個Editor類,就可以訂製編輯器了。這個類包含了管理文本編輯的方法。

直接運行時,Ren’Py首先根據環境變數RENPY_EDIT_PY找到使用的.edit.py文件。 如果成功找到.edit.py文件,Ren’Py就使用文件中定義的Editor類。如果沒有找到那個文件,Ren’Py會使用一個內建的editor類,以系統指定方式啟動編輯器。

當Ren’Py的啟動器運行時,它會掃描項目目錄的子目錄和Ren’Py目錄以尋找格式為 name.edit.py的文件。 (例如,它會找到launcher/jEdit.edit.py和myeditor/MyEditor.edit.py。)帶有給定 name 的最後一個編輯器,會作為啟動器的一部分展現給創作者。 啟動器也設置環境變數RENPY_EDIT_PY來選擇文件,這樣使用啟動器啟動的遊戲也會使用選用的編輯器。

編寫.edit.py文件 link

.edit.py文件是一個Python(而不是Ren’Py)文件,文件中必須定義唯一的類,名為Editor。Ren’Py調用這個類的方法實現對文本的編輯。

編輯器事務(transaction)將相關操作分組,編輯器通過事務(transaction)進行編輯。例如,如果某個編輯器事務申請一個新窗口,那個事務中的所有文件都應該在同一個新窗口中打開。編輯器事務透過調用begin方法啟動,可以包含一個或多個對operation方法的調用,透過調用end方法結束。

edit.py文件應導入renpy.editor,Editor類應繼承renpy.editor.Editor。額外的關鍵字入參傳入類的方法時,你定義的方法應忽略那些未知參數。由於假設你需要自訂Editor類,我們就在所有方法中都添加了 self 參數。

class Editor link
begin(self, new_window=False, **kwargs) link

啟動一個編輯器事務(transaction)。

如果 new_window 為True,編輯器會嘗試打開一個新窗口。否則,編輯器嘗試在已存在的編輯器窗口中執行事務。

end(self, **kwargs) link

結束一個事務。

open(self, filename, line=None, **kwargs) link

在編輯器中打開名為 filename 的文件。

如果 line 不是None,嘗試將編輯游標定位到第 line 行。