在JavaScript模式下的Emacs中,将函数(x)替换为f(x)

4
我是新手使用emacs和emacs-lisp,不知道如何编写emacs扩展程序。但我发现了一些很棒的扩展程序,比如“pretty-lambdas”,可以交换符号“lambda”为漂亮的图形。
(lambda (x) (+ x x)) ---->  (λ (x) (+ x x))

在 Emacs Lisp 模式下,我已经能够使它适用于 Clojure,以便我可以得到:

(fn [x] (+ x x)) ----->     (λ [x] (+ x x))

我想对JavaScript做同样的事情,即在JavaScript模式下使用而不是


function(x){}

我得到了 f(x) {}
我该如何实现这个?谢谢。
1个回答

6
我从未使用过漂亮的lambda,但有许多其他库可以做到这一点。
在Emacs 24.4中,有一个新的内置模式叫做prettify-symbols-mode。您应该能够执行以下操作:
(add-hook 'js-mode-hook
          (lambda ()
            (push '("function" . ?ƒ) prettify-symbols-alist)
            (prettify-symbols-mode)))

感谢斯特凡(Stefan),他在评论中指出还有全局美化符号模式(global-prettify-symbols-mode),如果您想一直启用此模式。

或者,您可以使用pretty-modepretty-symbolspurty-mode,它们都可以在MELPA中找到,而pretty-mode也在MELPA稳定版中。

对于purty-mode之类的东西,应该可以这样做:

(purty-add-pair '("\\(\\bfunction\\b\\)" . "ƒ"))
(add-hook 'js-mode-hook #'purty-mode)

请注意,purty-mode似乎只有一个替换表,因此functionƒ的替换将影响所有启用purty-mode的缓冲区。

当我编辑JavaScript文件时,我的Emacs显示的模式是JavaScript而不是js。因此,我的purty-add-pair似乎无法工作。所以我仍然没有"function"."ƒ"起作用。但是,我喜欢purty。 - Mukiza Andrew
2
关于 prettify-symbols-mode,值得注意的是,还有一个 global-prettify-symbols-mode,你可以在 ~/.emacs 中激活一次并永久使用。 - Stefan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接