Można to zrobić:
(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)
Dodaje lambda jako słowo kluczowe, co oznacza, że nie pojawią się sekwencje w ciągach na przykład (TODO: to nie jest przypadek po wymianie rzeczy). Numer ,(make-char 'greek-iso8859-7 107)
jest oczywiście równoważny z ?λ
, ale musisz upewnić się, że plik init Emacsa jest w tym przypadku zakodowany jako kod Unicode.
Można również włączyć blokowanie pełnej czcionki symbolu i użyć lepszej (czytaj: szerszą strzałką) czcionki, takiej jak Pragmata Pro, Inconsolata lub Ubuntu Monospace. Używam następujący kod, aby wybrać dobrą czcionki:
(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)))))
Myślę, że raz przeczytałem ten przykład wiki ... spróbowałem, ale bez powodzenia. Mam nadzieję, że po prostu brakuje mi tutaj jakiejś sztuczki. P.S Używam menlo – beoliver
Cóż, jaki był problem, kiedy próbowałeś? – dflemstr
nic się nie stało ... – beoliver