2014-01-27 20 views
-1

我正在閱讀vim 1.14的代碼,並且有一些關於undo.c的問題。vim 1.14源代碼undo.c

我不明白undo/redo操作的執行情況,特別是在函數u_undoredo()中。

我想知道它爲什麼使用鏈接列表u_entry

+3

您對22年前版本vim感興趣的任何特定原因? :) – hobbs

+0

:)只是好奇它。另外,因爲它足夠短,只有500行,而最新版本有3000 .. – toscanininini

+4

發佈該功能怎麼樣,以便人們不會浪費時間尋找它? – romainl

回答

2

如果您簽出vim的最新版本,那麼在undo.c文件頂部有一個關於vim的撤銷/重做實現的解釋。

您可以閱讀它here

每個u_entry列表包含一個撤銷或重做的信息。

因爲每個條目只需要引用下一個或上一個條目並且可以很容易地被有效地添加,所以鏈接列表對於要使用的撤銷/重做實現是有意義的。這也是vim的撤消歷史創建多個撤消歷史分支的原因。除此之外,我不確定你的問題是什麼。

+0

謝謝,我想我需要閱讀整個vim代碼來弄清楚。 – toscanininini

+0

你特別想弄清楚什麼?你難以理解鏈表是什麼以及它有用嗎? – Conner

+0

不,我只讀過vim 1.14的undo.c,之前沒有讀過任何其他部分,undo.c中的函數讓我非常困惑。正如你所說的,我無法弄清楚我的問題是什麼,所以我想我最好在提出問題之前找出整個vim代碼的結構。 – toscanininini