emacs haskell模式中的默认lambda符号?

beo*_*ver 8 emacs haskell

有没有人知道如何在emacs中使用haskell打印λ而不是\.我知道可以使用haskell-font-lock-symbols,但我发现其余部分很难阅读 - 箭头太小了!

是否有一种简单的方法来覆盖其余的钥匙?

dfl*_*str 2

你可以这样做:

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

这会将 lambda 添加为关键字,这意味着它不会出现在字符串的转义序列中(TODO:更改内容后情况并非如此)。,(make-char \'greek-iso8859-7 107)当然,它等同于?\xce\xbb,但在这种情况下,您必须确保您的 Emacs init 文件被编码为 un​​icode。

\n\n

您还可以启用完整符号字体锁定并使用更好的(阅读:带有更宽的箭头)字体,例如Pragmata ProInconsolataUbuntu Monospace。我使用以下代码来选择合适的字体:

\n\n
(defun font-existsp (font)\n  "Check to see if the named FONT is available."\n  (if (null (x-list-fonts font))\n      nil t))\n\n(require \'cl)\n(defun font-avail (fonts)\n  "Finds the available fonts."\n  (remove-if-not \'font-existsp fonts))\n\n(defvar font-preferences\n      \'("PragmataPro"\n        "Inconsolata"\n        "DejaVu Sans Mono"\n        "Bitstream Vera Sans Mono"\n        "Anonymous Pro"\n        "Menlo"\n        "Consolas"))\n\n(unless (eq window-system nil)\n  (let ((fonts (font-avail font-preferences)))\n    (unless (null fonts)\n      (set-face-attribute\n       \'default nil :font\n       (car fonts)))))\n
Run Code Online (Sandbox Code Playgroud)\n