2010-08-28 78 views
6

我喜歡在emacs中使用htmlize-file將clojure源文件轉換爲html。批處理模式下的Emacs htmlize?

我想用它從linux命令行代替,或從clojure本身編程。

我試圖

$ emacs --eval "(htmlize-file \"/home/john/file.clj\") (kill-emacs)" 

$ emacs -batch --eval "(htmlize-file \"/home/john/file.clj\")" 

兩個工作,注意事項。

第一次打開一個X窗口,這看起來有點不雅,但它確實做了與我在緩衝區中看到的完全相同的突出顯示,這正是我想要的。

第二個以批處理模式工作,但突出顯示的唯一語法是斜體字符串。我假設它沒有加載clojure模式或我最喜歡的配色方案。

任何人都可以找到一種方法讓第二個版本給出與第一個相同的結果嗎? 他們似乎都在評估(htmli ....)位之前加載我的.emacs文件。

此外,有沒有辦法將命令發送到已經運行的emacs?從而節省啓動時間?

回答

4

是否使用第一個與-nw工作?這應該阻止打開X窗口,但是仍然應該有足夠的emacs的'GUI'部分來初始化faces系統。它仍然不如批處理(如果從非終端進程運行,它會失敗,例如crontab),但它不會太刺激。

+0

完美!謝謝。 – 2010-09-05 21:28:47

4

我還不能給你一個理想的答案(我要去做一些研究),但我已經讀過,當在批處理模式下調用時,Emacs會忽略特定於顯示的命令,如字體鎖着色。這使得執行任何使用顯示屬性(如htmlize)的腳本在批處理模式下有問題。

我其實很想修改htmlize,以允許顏色主題傳遞給它而不是使用當前主題;在我的Emacs會話中看起來不錯的東西不一定看起來好導出到HTML。例如,我傾向於將blipp-blopp用於htmlize,但我在編碼時使用午夜,comidia或木炭。我在猜測,如果htmlize可以直接接受顏色主題規範,它可能可以避免檢查當前的字體鎖定屬性,然後可以從批處理模式工作。

對不起,我不能更有幫助。

+0

哦,這個事情上面工作中使用htmlize一個例子。感謝您的麻煩! – 2010-08-28 18:11:21

5

emacsclient -e "(htmlize-file \"/home/john/file.clj\")" -a ""

+0

我也想接受這個答案,因爲它回答了子問題!我至少可以投票。謝謝。 – 2010-09-05 21:29:54

1

以下Elisp代碼告訴Htmlize發出CSS類名而不是原始樣式。

(setq org-export-htmlize-output-type 'css) 

然後,您可以添加CSS到您的HTML文件,以獲得任何你想要的顏色。這適用於批處理模式下的Emacs。

1

有一個在--batch模式

http://sebastien.kirche.free.fr/emacs_stuff/elisp/my-htmlize.el

;; Make sure the the htmlize library is in load-path. 
;; You might want to load ~/.emacs 

;; USAGE: 
;;  emacs -batch -l my-htmlize.el INFILE > OUTFILE 


;; Example: 
(custom-set-faces 
'(default      ((t (:foreground "#ffffff" :background "black")))) 
'(font-lock-builtin-face  ((t (:foreground "#ff0000")))) 
'(font-lock-comment-face  ((t (:bold t :foreground "#333300")))) 
'(font-lock-constant-face  ((t (:foreground "magenta")))) 
'(font-lock-function-name-face ((t (:bold t :foreground "Blue")))) 
'(font-lock-keyword-face  ((t (:foreground "yellow3")))) 
'(font-lock-string-face  ((t (:foreground "light blue")))) 
'(font-lock-type-face  ((t (:foreground "green")))) 
'(font-lock-variable-name-face ((t (:foreground "cyan" :bold t)))) 
'(font-lock-warning-face  ((t (:foreground "red" :weight bold))))) 

(setq htmlize-use-rgb-map 'force) 
(require 'htmlize) 

(find-file (pop command-line-args-left)) 
(font-lock-fontify-buffer) 
(with-current-buffer (htmlize-buffer) 
    (princ (buffer-string)))