2011-10-23 95 views
5

我一直在嘗試從emacs默認字體中單獨更改emacs minibuffer的字體/ face,但沒有多少運氣。Emacs minibuffer的字體大小與默認的emacs分開嗎?

具體而言,我有興趣將minibuffer的字體大小設置爲與emacs MULE一起使用,這與我當前的字體設置一樣,或者如果我在「上網本」屏幕上使用emacs,有時還會使用字符選擇選項MULE有點小。

在emacs中易於訪問的選項是minibuffer-prompt & minibuffer-prompt-properties,但這些僅用於命令提示符而不是常規的minibuffer文本。

在emacs中似乎有很多minibuffer變量用於創建minibuffer幀,或者從minibuffer窗口獲取內容等,但這些不涉及更改minibuffer面。是否有可能從默認的emacs中單獨更改小緩衝區?

一個有趣的選項是oneonone emacs http://www.emacswiki.org/emacs/OneOnOneEmacs項目。但專用小型緩衝器框架可以更改嗎?在我改變目前的emacs設置之前,我希望能夠首先改變字體或者創建我自己的可改變的微型緩衝器框架,等等......

任何幫助和/或創意的想法不勝感激。

回答

5

您可以通過minibuffer-setup-hook將定製添加到小型緩衝器。根據需要

(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup) 
(defun my-minibuffer-setup() 
     (set (make-local-variable 'face-remapping-alist) 
      '((default :height 2.0)))) 

更改my-minibuffer-setup的身體:在那裏,你可以做一些face remapping像這樣。以上將默認面部的高度加倍。

+0

這是一個很好的幫助,但是,它只是改變了一些方面。我犯了假設MULE完成條目存在於小緩衝區中的錯誤,但這似乎不是真的。代碼會影響我輸入內容時發生的minibuffer,比如使用C-x C-f查找文件。我使用相同的代碼來改變emacs的echoarea,但這也不是MULE用來列出其完成的窗口。有沒有找到由MULE創建的窗口名稱的方法?也許知道這一點,上面的代碼可以改變來影響這個項目。 – Steve

+0

看來MULE會打開一個名爲* Quail Completions *的緩衝區。這個緩衝區在交換時是空的,但是當emacs dislpays字符完成時它肯定是創建的。 – Steve

0

是的,您可以輕鬆地自定義獨立小型緩衝區框架的屬性,包括其默認面和字體。

您可以自定義OneOnOneEmacs用戶選項1on1-minibuffer-frame-alist。 (或者,您可以自定義標準選項minibuffer-frame-alist - 其框架參數值將作爲默認值1on1-minibuffer-frame-alist使用。)

font幀參數是控制字體(duh)的參數。所以你會自定義選項1on1-minibuffer-frame-alist,改變它的字體設置。

或者,您也可以只設置1on1-minibuffer-frame-font到你想要的字體 - 它是用來作爲字體設置的默認值由1on1-minibuffer-frame-alist每當有minibuffer-frame-alist沒有明確font設置。例如:

 
    (setq 1on1-minibuffer-frame-font 
      "-*-Lucida Console-normal-r-*-*-14-112-96-96-c-*-iso8859-1") 

如果您不想使用獨立的小型字節緩衝幀,請參閱Trey的答案。

相關問題