Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use vim as editor but emacs as code formatter

Tags:

vim

emacs

erlang

As I see in erlang community common way to format code is how emacs erlang mode does.

Is there any way to call emacs to format code from vim (line, selected text, and hole file)?

Also I would appreciate if someone point me to some emacs docs, which describes this indent logic?

Edit: actually I know how to call something from vim, but i dont know what to call from emacs side.

like image 469
danechkin Avatar asked Jan 14 '23 19:01

danechkin


1 Answers

The intellij erlang plugin does exactly that : ErlangEmacsFormatAction.java

/*
 * Copyright 2013 Sergey Ignatov
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 */

final GeneralCommandLine commandLine = new GeneralCommandLine();
commandLine.setExePath("emacs");
commandLine.addParameters("--batch", "--eval");

String s = "\n" +
    "(progn (find-file \"{0}\")\n" +
    "    (require ''erlang-start)\n" +
    "    (erlang-mode)\n" +
    "    (untabify (point-min) (point-max))\n" +
    "    (delete-trailing-whitespace)\n" +
    "    (erlang-indent-current-buffer)\n" +
    "    (write-region (point-min) (point-max) \"{1}\")\n" +
    "    (kill-emacs))";

  commandLine.addParameter(MessageFormat.format(s, virtualFile.getCanonicalPath(), tmpFile.getCanonicalPath()));

It calls an emacs batch subprocess with the file as one of its arguments. It should be easy to implement something similar in vimscript, check Vim External Commands.

like image 58
ratelle Avatar answered Jan 17 '23 20:01

ratelle