我还没有成功弄清楚如何在Emacs中包装每个方法调用。例如,如果我有这个:
someObject.a()。b()。c();
我真的想要这个:
someObject.a()
.b()
.c();
这在Emacs中可能吗?我见过关于Eclipse的相同主题,但是我在Emacs中找不到任何东西。
最佳答案
所需的缩进不是js2-mode
中的默认缩进。
此函数将堆叠调用链并根据您的模式缩进:
(defun javascript-chain-stack ()
(interactive)
(beginning-of-line)
(if (looking-at ".*?\\sw+\\.\\sw+(.*;$")
(let* ((str (match-string-no-properties 0))
(beg (match-beginning 0))
(end (match-end 0))
(strs (split-string str "\\." t))
(rstr (concat (car strs)
(mapconcat
(lambda (x) (concat "." x))
(cdr strs) "\n"))))
(delete-region beg end)
(insert rstr)
(indent-region beg (+ beg (length rstr))))
(error "Couldn't match JavaScript chain call")))
这将是结果(在我的缩进设置中):
someObject.a()
.b()
.c();
可以从任何地方调用该函数。