2010年8月26日 星期四

emacsclient font configurations

This text applies to version after Emacs 23.1
首先,我們可以把下列一行加入 ~/.bashrc
  alias ex='emacsclient -a "" -c "$@"'

解釋一下:
當我們使用 emacsclient 時,必須有一個 emacs server 啟動才可以用。
emacsclient 的參數有一個 -a "" 表示萬一 emacs server 沒有啟動,
就使用 `alternate editor' ,它可以是 vi, pico ... ,若是空字串 ("") ,表示 `那就叫一個 emacs server 起來好了'.
另外 參數 -c 表示 `create a new frame' 而不是用 server 的 frame.
至於後面要打開的檔案(可以一次指定開多個檔案來編輯),就用 bash 提供的 $@ 來代入即可。

第二,設定字型,因為 emacs server 可以在 X 之前就啟動了,因此,
很合理的,它不理會你指定在 X 環境下的字型。
現在的 X 環境下有兩種字體系統:核心字體系統與 Xft 字體系統。Xft 有許多優良的特性(向量,反鋸齒等),
所以 Emacs 23.1 開始支援 Xft as its font base. (see XftGnuEmacs).
只要在你的  ~/.Xresources 指定就好,例如,我們打算用 DejaVu Sans Mono 字型 :
    Emacs.FontBackend: xft
    Emacs.font: DejaVu Sans Mono-14

(謎:怎樣查出這個字型呢? M-x describe-font 然後給個 mono 讓它 match 出完整的字型敘述)

第三,設定 frame 的特性,我們希望打開 frame 時,是黑底白字,不要 tool bar, 不要 scroll bar ...
這些都與預設值不同,該怎麼設定呢?
emacs 的 default-frame-alist 裡面紀錄了 `新開一個 frame 所需的參數',設定這個就對了!
在你的 ~/.emacs 內這樣指定
(let ((frame '((left . 0)
               (top . 0)
               (width . 110)
               (height . 30)
               (tool-bar-lines . nil)
               (vertical-scroll-bars . nil)
               (background-color . "black")
               (foreground-color . "white")          
)))
  (setq default-frame-alist frame)
  (setq initial-frame-alist frame)

)

說明一下,[ GNU Emacs 手冊 ]查得到所有的 frame parameters。
第一次開啟的 frame(應該是 server frame)  參數會參考 `initial-frame-alist' ,往後開啟 frames(emacsclient frame)都會參考 `default-frame-alist' .

完工了!記得重新開啟 X 讓 .Xresources 生效啊啊~

2010年8月17日 星期二

lpr and cups troubleshooting

Bad situation encountered :
系統是 Debian/Testing.
透過 browser 瀏覽 http://localhost:631 可以透過 CUPS 管理印表機,目前我系統是安裝 CUPS 1.4.4。
使用其中的 Administration | Maintenance -> Print Self Test Page 可以順利印出測試頁面。
但是 emacs 裡面要列印時,就出問題了: 使用 print buffer 命令根本沒反應!

Troubleshooting :
因為 emacs 使用 `lpr' 指令作列印動作 --- 改用 `lpr' 指令試著列印一個文字檔 --- 也失效。
用 `lpq' 觀察 printing jobs 發現都在 spool 上,卻沒有送到 printer 。
觀察 debian 套件關係,原因是 cups-bsd-1.4.4-2 沒有裝,反倒是 lpr-2008.05 套件有裝上,這兩個是 conflict 的套件,因為都有提供 `lpr' 等指令。
但是前者提供 printing commands (i.e. `lpr') interactive with the CUPS. 必須裝這個套件而不是 `lpr-2008.05' 套件
這次裝錯套件的現象,可能是以前 upgrade 時沒有仔細看就同意用 lpr 套件來取代。
移除 `lpr-2008-05' 並裝上 `cups-bsd-1.4.4-2' ,重新啟動 cupsd 還不夠;可能是我還有 daemon 沒有重起,或是 debian 套件系統沒有正確的 post processing,就沒有去追究了。
試著重新開機, work !