emacs lisp有一個非常實用的功能,您可以在其中評估表達式的結果並將結果直接粘貼到緩衝區中。粘貼clojure評估結果時,如何讓emacs鍵盤宏正常工作?
說我想檢查加法作品。然後I型:
(* 3 2)
和我定義鍵盤宏:
(setq last-kbd-macro
[down ?\(?i ?s ?= ? ?\C-\M-f ? ?\C-u ?\C-x ?\C-e ?\) home])
如果我然後將點上面的表達式,然後按F4執行宏,表達式變成:
(is= (* 3 2) 6)
這是一個很好的迴歸測試。
不幸的是,在一個Clojure的/ nrepl緩衝結果執行相同的鍵盤宏:
(* 8 9)(is= )
和Clojure的有關不能夠解決這個符號is=
錯誤所以我覺得很奇怪正在發生事物的排序,而宏正試圖評估錯誤的事情。
任何人都可以得到這個與clojure一起工作嗎? (而事實上,解決一般問題,讓任意鍵盤宏工作確定與C-u C-x C-e
就像他們用的Emacs Lisp做)
編輯,因爲人們似乎誤解:
做的按鍵手動工作正常在elisp或clojure緩衝區中。在一個C-u C-x C-e中帶有emacs lisp和外部clojure進程中的其他evals。
,問題就來嘗試運行一個鍵盤宏(記錄在Clojure的緩衝),它含有C-U C-X C-è
運行在Clojure的緩衝區宏,事情就莫名其妙地重新排序時。它看起來像宏可能正在執行,即使評估粘貼尚未完成。
我想知道是否有迫使鍵盤宏(或相應的功能)的方式以相同的順序,因爲它會通過手來執行。
如果有必要,我很樂意將鍵盤宏變成適當的elisp函數。
C-xC-e是針對內部lisp prcocess(即clojure)而不是Emacs lisp的形式。因此錯誤。 – 2013-02-19 15:29:32
菲爾,這取決於你'所以'的意思。看起來好像宏在繼續運行,而eval-paste仍在執行。有沒有辦法等待它完成,而不是(顯然)分叉一個線程? – 2013-02-19 19:23:30