javascript - 在 javascript 模式 emacs 中用 f(x) 替换 function(x)

标签 javascript emacs elisp

我是 emacs 和 emacs-lisp 的新手,所以我不知道如何为 emacs 编写扩展,但我遇到了一些很棒的扩展,比如交换的“pretty-lambdas”

(lambda (x) (+ x x)) ---->  (λ (x) (+ x x))

在 emacs-lisp 模式下。我能够让它为 clojure 工作,这样我得到:

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

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

function(x){}

我明白了。 f(x) {}

我如何实现这一点? 谢谢。

最佳答案

我从未使用过漂亮的 lambda,但有许多其他库可以做到这一点。

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

(add-hook 'js-mode-hook
          (lambda ()
            (push '("function" . ?ƒ) prettify-symbols-alist)
            (prettify-symbols-mode)))

感谢 Stefan,他 points out in the comments还有 global-prettify-symbols-mode,以防您想一直启用此模式。

或者,您可以使用 pretty-mode , pretty-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 - 在 javascript 模式 emacs 中用 f(x) 替换 function(x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25733253/

相关文章:

javascript - Ember Action 或 this.get 只工作一次

emacs - 用特定模式定义键和弦键

emacs - 查看/重新加载 emacs 备份文件

emacs - 为什么 emacs 的 comint-send-string 在不同的派生模式下表现不同?

emacs - 如何更改/删除 Emacs 菜单项?

elisp - 在elisp中压缩两个不同长度的列表

javascript - 禁用文本选择,但允许剪切、复制和粘贴

javascript - 执行 onblur 时如何处理 "catch"和卸载事件

javascript - 前缀express.js 路由

python - 在远程主机上以 emacs python 模式评估缓冲区