2010-08-28 12 views
6

मैं क्लोज़र स्रोत फ़ाइलों को HTML में बदलने के लिए emacs में htmlize-file का उपयोग करना पसंद करता हूं।Emacs बैच मोड में HTMLize?

मैं इसे बजाय लिनक्स कमांड लाइन से या प्रोग्रामेटिक रूप से क्लोजर से उपयोग करना चाहता हूं।

मैं

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

और

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

दोनों काम करने की कोशिश की, कैविएट्स के साथ।

पहला एक्स-विंडो खुलता है, जो थोड़ा सा सुरुचिपूर्ण लगता है, लेकिन यह वही हाइलाइटिंग करता है जो मैं एक बफर में देखता हूं, जो मैं चाहता हूं।

दूसरा बैच मोड में काम करता है, लेकिन एकमात्र सिंटैक्स हाइलाइट करता है जो तारों को इटैलिकिस करना है। मुझे लगता है कि यह क्लोजर-मोड या मेरी पसंदीदा रंग योजना लोड नहीं कर रहा है।

क्या कोई भी दूसरा संस्करण प्राप्त करने का कोई तरीका ढूंढ सकता है ताकि पहले परिणाम मिल सकें? वे दोनों (htmli ....) बिट को eval करने से पहले मेरी .emacs फ़ाइल लोड करने लगते हैं।

इसके अलावा, क्या पहले से चल रहे emacs को आदेश भेजने का कोई तरीका है? और इस प्रकार स्टार्टअप समय बचाओ?

उत्तर

4

-nw काम के साथ पहली बार एक का उपयोग करता है? जो एक एक्स खिड़की खोला जा सकता है, लेकिन चेहरे की प्रणाली शुरू करने में सक्षम होने के लिए मौजूद emacs के 'जीयूआई' भाग अभी भी पर्याप्त होना चाहिए। यह अभी भी सुरुचिपूर्ण के रूप में सुरुचिपूर्ण नहीं है (यदि गैर-टर्मिनल प्रक्रिया से चलाया जाता है तो यह असफल हो जाएगा, उदाहरण के लिए क्रोंटैब) लेकिन यह कम परेशान होगा।

+0

बिल्कुल सही! धन्यवाद। –

4

मैं आपको अभी तक एक आदर्श उत्तर नहीं दे सकता (मैं इस पर कुछ शोध करने जा रहा हूं), लेकिन मैंने पढ़ा है कि बैच मोड में आने पर, Emacs फ़ॉन्ट-लॉक रंग जैसे प्रदर्शन-विशिष्ट आदेशों को अनदेखा करता है । यह बैच मोड से समस्याग्रस्त प्रदर्शन गुणों (जैसे HTMLize) का उपयोग करने वाली किसी भी स्क्रिप्ट का निष्पादन करता है।

मैं वास्तव में कुछ विषयों पर HTMLize को संशोधित करने में काफी रूचि रखता हूं ताकि वर्तमान थीम का उपयोग करने के बजाय रंग विषयों को पारित किया जा सके; मेरे Emacs सत्र में जो अच्छा दिखता है वह एचटीएमएल को अच्छी तरह से निर्यात नहीं दिखता है। उदाहरण के लिए, मैं HTMLize के लिए ब्लिप-ब्लॉप का उपयोग करता हूं, लेकिन कोडिंग करते समय मैं मध्यरात्रि, कॉमेडिया या चारकोल का उपयोग करता हूं। मैं अनुमान लगा रहा हूं कि यदि HTMLize सीधे रंग-थीम विनिर्देश स्वीकार कर सकता है, तो यह वर्तमान फ़ॉन्ट-लॉक गुणों की जांच से बचने में सक्षम हो सकता है और फिर बैच मोड से काम करेगा।

क्षमा करें मैं और अधिक सहायक नहीं हो सकता।

+0

ओह अच्छा, काम ऊपर बातें --batch मोड में htmlize उपयोग करने के लिए एक उदाहरण है। मुसीबत लेने के लिए धन्यवाद! –

5

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

+0

मैं इस उत्तर को भी स्वीकार करना चाहता हूं, क्योंकि यह सहायक प्रश्न का उत्तर देता है! मैं इसे कम से कम वोट कर सकता हूं। धन्यवाद। –

1

निम्नलिखित एलिस्प कोड कच्चे शैलियों के बजाय सीएसएस क्लास नामों को उत्सर्जित करने के लिए Htmlize को बताता है।

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

तो फिर तुम जो भी रंग आप चाहते हैं पाने के लिए अपने HTML फ़ाइल में सीएसएस जोड़ सकते हैं। यह बैच मोड में Emacs के साथ काम करता है।

1

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))) 
संबंधित मुद्दे