2012-05-05 11 views
7

Weiß jemand, wie ich λ anstelle von \ haskell in Emacs drucken kann. Ich weiß, dass man Haskell-Font-Lock-Symbole verwenden kann, aber ich finde den Rest schwer lesbar - die Pfeile sind zu klein!Standard-Lambda-Symbol im Emacs-Haskell-Modus?

Gibt es eine einfache Möglichkeit, den Rest der Tasten zu überfahren?

Antwort

2

Sie können dies tun:

(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) 

Dadurch werden das Lambda als Schlüsselwort, was bedeutet, dass es nicht in Escape-Sequenzen in Strings zum Beispiel erscheint (TODO: dies ist nicht der Fall, nachdem eine Sache änderte). Die ,(make-char 'greek-iso8859-7 107) entspricht natürlich , aber Sie müssen sicherstellen, dass Ihre Emacs Init-Datei in diesem Fall als Unicode codiert ist.

Sie können auch die vollständige Symbolschriftarretierung aktivieren und eine bessere Schriftart verwenden (lesen: mit breiteren Pfeilen), wie Pragmata Pro, Inconsolata oder Ubuntu Monospace. Ich verwende den folgenden Code, um eine gute Schriftart wählen:

(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

Ich glaube, ich habe dieses Wiki-Beispiel einmal gelesen ... habe es versucht, aber ohne Glück. Hoffentlich verpasse ich hier nur einen Trick. P. Ich benutze menlo – beoliver

+0

Nun, was war das Problem, wenn Sie es versuchten? – dflemstr

+0

nichts passiert ... – beoliver

2

Sie auch das Problem mit so etwas wie

(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)))) 

die alle Zuordnungen mit Ausnahme des einen, dass Änderungen behalten sollte, lösen können „->“ in "→" und "< -" in "←".

+0

danke, ich werde das ausprobieren. – beoliver

Verwandte Themen