在javascript模式emacs中用f(x)替换函数(x)

Muk*_*rew 4 javascript emacs elisp

我是emacs和emacs-lisp的新手,所以我不知道如何编写emacs的扩展,但是我遇到了像'pretty-lambdas'这样的强大扩展

(lambda (x) (+ x x)) ---->  (? (x) (+ x x))
Run Code Online (Sandbox Code Playgroud)

在emacs-lisp模式下.我能够使它适用于clojure,这样我得到:

(fn [x] (+ x x)) ----->     (? [x] (+ x x))
Run Code Online (Sandbox Code Playgroud)

我想对javascript做同样的事情,这样在javascript模式而不是

function(x){}
Run Code Online (Sandbox Code Playgroud)

我明白了 f(x){}

我该如何实现这一目标?谢谢.

Chr*_*ris 6

我从来没有使用过漂亮的lambdas,但是还有很多其他的库可以做到这一点.

在Emacs 24.4中,有一个新的内置模式叫做prettify-symbols-mode.你应该能够做类似的事情

(add-hook 'js-mode-hook
          (lambda ()
            (push '("function" . ?ƒ) prettify-symbols-alist)
            (prettify-symbols-mode)))
Run Code Online (Sandbox Code Playgroud)

感谢Stefan,他在评论中指出global-prettify-symbols-mode,如果您想要始终启用此模式.

另外,您也可以使用pretty-mode,pretty-symbols或者purty-mode,在所有可用的MELPA,并且pretty-mode也是MELPA稳定.

这样的东西应该适用于purty-mode:

(purty-add-pair '("\\(\\bfunction\\b\\)" . "ƒ"))
(add-hook 'js-mode-hook #'purty-mode)
Run Code Online (Sandbox Code Playgroud)

请注意,purty-mode似乎只有一个替换表,因此functionƒ替换将影响所有purty-mode处于活动状态的缓冲区.

  • 关于`prettify-symbols-mode`,值得注意的是还有一个`global-prettify-symbols-mode`你可以在你的`〜/ .emacs`中一劳永逸地激活. (2认同)