2011-12-16 58 views
3

當Emacs輸入一個recursive-edit時 - 例如當進入一個小型緩衝器時,它似乎記住了當前狀態的某些方面,並且在遞歸編輯退出並返回錯誤時恢復它們。在恢復的狀態位中包括所有可見窗口的(window-point)如何防止編譯 - 滾動輸出在遞歸編輯過程中「脫鉤」?

這意味着,如果你有compilation-scroll-output設置爲t,然後:

  1. 運行(compile ...)這是做它的事,逐漸產生輸出...
  2. 然後你打的Mx和啓動輸入一個擴展的命令...
  3. 然後你暫停一會兒,想一些額外的輸出行產生的想法...
  4. 然後認爲你認爲更好的畢竟擴展命令,並創下CG取消它...

會發生什麼是你的編輯窗口中的點將向後跳轉到它是在第2步這開始的地方意味着編輯窗口中的點不再位於(point-max)處,因此當新的輸出產生時窗口停止滾動。

我不瞭解你,但由於我正常使用Emacs,我傾向於至少進行一些遞歸編輯並至少取消其中的一部分。所以這意味着在某些時候,我的編譯窗口總是會出現偏差,我必須每隔一段時間切換一次,並且必須切換到它。

是否有customize選項來禁用此行爲,以便window-point停留在原來的位置,或者修復問題的elisp片段,甚至是在遞歸編輯退出時執行的特定掛接要在退出編輯之前知道點的位置?

回答

1
  1. M-x不進入遞歸編輯。有關遞歸編輯的信息,請參閱Emacs手冊節點Recursive Edit
  2. 你描述的聲音聽起來像Emacs的bug。考慮使用M-x report-emacs-bug,提供您的配方(最好從emacs -Q開始)。
+0

德魯,你的第一點:是的,它的確如此。從你引用的文檔中:「Minibuffer輸入是一種特殊的遞歸編輯。」 M-x觸發微型緩衝器輸入。在`Mx` minibuffer(或``read-from-minibuffer``,``read-read-minibuffer`或`complete-read`或任何其他遞歸編輯)中產生完全相同的效果時,作爲`Cg`(AKA`keyboard-quit`),我在抱怨。 – Glyph 2011-12-16 18:51:35

1

這確實是一個錯誤,如果您使用M-x report-emacs-bug來報告它,以便它在某個時候可能得到修復,那將是有益的。與此同時,一種解決方法是將緩衝區放在一個單獨的幀中,因爲由此小型文件系統輸入執行的「保存&恢復」僅影響當前幀。