2012-05-05 12 views
7

क्या कोई जानता है कि मैं emacs में हैकेल का उपयोग करने के बजाय λ कैसे प्रिंट कर सकता हूं। मुझे पता है कि कोई हैकेल-फ़ॉन्ट-लॉक-प्रतीकों का उपयोग कर सकता है, लेकिन मुझे लगता है कि बाकी को पढ़ने के लिए मुश्किल है - तीर बहुत छोटे हैं!emacs हैकेल मोड में डिफ़ॉल्ट लैम्ब्डा प्रतीक?

क्या बाकी की चाबियों को ओवर-राइड करने का कोई आसान तरीका है?

उत्तर

2

आप ऐसा कर सकते हैं:

(defun pretty-lambdas-haskell() 
    (font-lock-add-keywords 
    nil `((,(concat "\\(" (regexp-quote "\\") "\\)") 
      (0 (progn (compose-region (match-beginning 1) (match-end 1) 
            ,(make-char 'greek-iso8859-7 107)) 
        nil)))))) 

(add-hook 'haskell-mode-hook 'pretty-lambdas-haskell) 

यह एक कीवर्ड के रूप लैम्ब्डा कहते हैं, जिसका अर्थ है कि यह उदाहरण के लिए तार में भागने दृश्यों में दिखाई नहीं देगा (कार्यसूची: यह नहीं एक बात बदलने के बाद मामला है)। ,(make-char 'greek-iso8859-7 107) निश्चित रूप से के बराबर है, लेकिन आपको यह सुनिश्चित करना होगा कि आपकी Emacs init फ़ाइल को उस मामले में यूनिकोड के रूप में एन्कोड किया गया हो।

तुम भी पूर्ण प्रतीक फ़ॉन्ट लॉक करना और एक बेहतर (पढ़ें: व्यापक तीर के साथ) का उपयोग कर सकते Pragmata Pro, Inconsolata या Ubuntu Monospace की तरह, फ़ॉन्ट। - में ">"

(defun font-existsp (font) 
    "Check to see if the named FONT is available." 
    (if (null (x-list-fonts font)) 
     nil t)) 

(require 'cl) 
(defun font-avail (fonts) 
    "Finds the available fonts." 
    (remove-if-not 'font-existsp fonts)) 

(defvar font-preferences 
     '("PragmataPro" 
     "Inconsolata" 
     "DejaVu Sans Mono" 
     "Bitstream Vera Sans Mono" 
     "Anonymous Pro" 
     "Menlo" 
     "Consolas")) 

(unless (eq window-system nil) 
    (let ((fonts (font-avail font-preferences))) 
    (unless (null fonts) 
     (set-face-attribute 
     'default nil :font 
     (car fonts))))) 
+0

मुझे लगता है कि मैंने एक बार इस विकी उदाहरण को पढ़ा ... कोशिश की, लेकिन बिना किसी किस्मत के। उम्मीद है कि मैं बस यहाँ एक चाल लापता हूँ। पी। मैं मेनलो – beoliver

+0

का उपयोग करता हूं ठीक है, आपने कोशिश की जब समस्या क्या थी? – dflemstr

+0

कुछ भी नहीं हुआ ... – beoliver

2

तुम भी तरह

(eval-after-load 'haskell-font-lock 
'(setq haskell-font-lock-symbols-alist 
     (delq nil 
       (mapcar (lambda (rewrite) 
         (if (member (car rewrite) '("->" "<-")) 
          nil rewrite)) 
         haskell-font-lock-symbols-alist)))) 

कुछ के साथ समस्या को हल कर सकते हैं जो एक है कि बदलता है के लिए छोड़कर सभी मैपिंग रखना चाहिए: मैं एक अच्छा फ़ॉन्ट का चयन करने के लिए निम्न कोड का उपयोग "→" और "< -" "←" में।

+0

धन्यवाद, मैं इसे आज़माउंगा। – beoliver

संबंधित मुद्दे