在Emacs for Javascript中,将链式方法调用包装在单独的一行上

在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 如果我们将其包装为

我还没有成功地弄清楚如何在Emacs中包装每个方法调用。例如,如果我有:

a.b.c

我真的想要这个:

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();
可以从线路上的任何位置调用该函数