在Emacs for Javascript中,将链式方法调用包装在单独的一行上
我还没有成功地弄清楚如何在Emacs中包装每个方法调用。例如,如果我有: a.b.c 我真的想要这个:在Emacs for Javascript中,将链式方法调用包装在单独的一行上,javascript,emacs,Javascript,Emacs,我还没有成功地弄清楚如何在Emacs中包装每个方法调用。例如,如果我有: a.b.c 我真的想要这个: someObject.a() .b() .c(); 这在Emacs中可能吗?我看到过Eclipse中涉及的相同主题,但在Emacs中找不到任何内容。我想到的第一个解决方案是搜索和替换。我提出了一个解决方案,但它现在缺少正确的缩进 手动调用M-%或M-x查询替换并请求替换。技巧在于:要在提示符中插入换行符,请输入C-Q,然后输入C-J 如果我们将其包装为
someObject.a()
.b()
.c();
这在Emacs中可能吗?我看到过Eclipse中涉及的相同主题,但在Emacs中找不到任何内容。我想到的第一个解决方案是搜索和替换。我提出了一个解决方案,但它现在缺少正确的缩进 手动调用M-%或M-x查询替换并请求替换。技巧在于:要在提示符中插入换行符,请输入C-Q,然后输入C-J 如果我们将其包装为可调用函数:
(defun my-js-wrap-method-calls ()
(interactive)
(setq beg (line-beginning-position))
(setq end (line-end-position))
(save-restriction
(narrow-to-region beg end)
(beginning-of-line)
(replace-string ")." ")
.")
)
)
它适用于当前行。
但正如我所说,我正在寻找如何正确缩进的东西
ps:elisp help:&&您想要的缩进不是js2模式下的默认缩进 此函数将堆叠调用链,并根据您的模式缩进调用链: 定义javascript链堆栈 互动的 行首 如果查看。*?\\sw+\.\\sw+.*$ 让*str匹配字符串没有属性0 求匹配开始0 结束匹配结束0 strs分割字符串字符串字符串\\。T rstr康卡特轿车 马普康卡特 lambda x concat。x cdr strs\n 删除区域beg end 插入rstr 缩进区域beg+beg长度rstr 错误与JavaScript链调用不匹配 这将是缩进设置的结果:
someObject.a()
.b()
.c();
可以从线路上的任何位置调用该函数