2010-05-10 45 views
4

我最近升級到Emacs 23附帶的Ubuntu 10.04。我需要Jabref將引用推送到Emacs。emacsclient -eval「(insert 」something 「)」對我不起作用

但是,儘管我安裝了Jabref插件來通過emacsclient推送引用,但它不起作用。

我做了我的測試,並閱讀了一些Emacs Lisp Intro。

一些命令做的工作,例如,如果我(在控制檯)類型:

emacsclient --eval "(switch-to-buffer \"*sratch*\")" 

emacs的窗口切換到該緩衝區。但是,如果我發出插入命令:

emacsclient --eval "(insert \"do you see me?\")" 

沒有文本插入當前緩衝區中。

Emacs 23是否改變了有關插入的內容?

回答

4

呦被插入在服務器緩衝,你很可能想要:

emacsclient --eval '(with-current-buffer "*scratch*" (insert "do you see me?"))' 
+1

謝謝!我花了一段時間閱讀Emacs Lisp Intro,並在測試緩衝區名稱函數時,看到了「* server *」的名稱。 所以我認爲我應該重新將我的問題改寫成更困難的問題:我可以將文本插入到當前幀正在編輯的「緩衝區」中嗎? 我應該把它寫成單獨的問題並關閉它嗎? – manu 2010-05-10 18:27:36

+2

我發現它: (帶當前緩衝區(窗口緩衝區)(插入「我確實看到你!」)) – manu 2010-05-10 20:45:41

2

Emacs23改變了emacsclient和服務器的一些東西。

,緩衝區中的表現被評爲「*服務器*」(用前導空格)......所以,你必須插入之前先改變緩衝:

emacsclient --eval "(with-current-buffer \"*scratch*\" (insert \"foo\"))"