2013-08-26 127 views
0

這是一篇轉帖。我試過在Emacs-liveClojure mailing列表上詢問這個,但是猜測它並不夠用。我的問題是:加載時出現「nrepl-inspect」故障

  • 我打開emacs的(使用emacs活 - 在我的 「〜/ .live-包/ -pack/init.el」 文件初始化代碼)
  • 我執行M-x nrepl-jack-in
  • 在一個REPL,我創建一個變種

    用戶>(DEF事情(+ 1 1))

    用戶>事

  • 然後在事var,我運行C-c C-i。 Emacs給我的消息:C-C TAB是未定義的。

不過,如果我打開了劃傷緩衝,並從現場包裝init.el文件,手動運行下方的代碼),然後我可以在我的REPL執行C-c C-i,並獲得一個工作結果,見B)。

A)

(load-file "<some-directory>/nrepl-inspect/nrepl-inspect.el") 
(define-key nrepl-mode-map (kbd "C-c C-i") 'nrepl-inspect) 
(require 'nrepl-inspect) 

B)

Type: class java.lang.Long 
Value: "2" 
--- 
Fields: 
    "serialVersionUID" = 4290774380558885855 
    "SIZE" = 64 
    "value" = 2 
    "TYPE" = long 
    "MAX_VALUE" = 9223372036854775807 
    "MIN_VALUE" = -9223372036854775808 

因爲所有我的其他活包init.el代碼(大多隻是麗思)成功執行,我必須假定nrepl-inspect代碼失敗。有沒有人遇到過這個?我怎樣才能得到這個工作,直接在emacs加載時?作爲emacs lisp的新手,有沒有辦法來調試這個問題?

感謝

+0

在您的.emacs中,您應該確保nrepl-inspect在您的路徑中,並且(需要nrepl-inspect)',然後將該密鑰添加到nrepl-mode-map。這與將上面的代碼粘貼到.emacs中一樣簡單。 (負載和要求你做的是多餘的)。 – noisesmith

回答

1

C-c C-i是一回事C-c TAB。 Emacs告訴你,它沒有綁定到你正在使用它的緩衝區中的任何命令。

如果你想讓它做什麼它在緩衝*scratch*然後看它做什麼在*scratch*開始:C-h k C-c TAB

如果您願意,您可以將您喜歡的任何鍵綁定到該命令,包括C-c TAB

+0

是的,我明白這一點。我猜我在問什麼,我該如何獲得*** [nrepl-inspect](http://ianeslick.com/2013/05/17/clojure-debugging-13-emacs-nrepl-and-ritz/ )***工作,而無需我自己手動加載它? – Nutritioustim

+0

如果您不以某種方式將它的定義提供給Emacs,那麼您無法「讓'nrepl-inspect'工作」。更重要的是,如果它的定義取決於其他定義,那麼你也需要這些定義。只需加載定義該函數的庫。首先要做的是檢查在其他上下文中使用該函數是否有意義,例如'* scratch *' - 它可能是模式特定的。 – Drew