I’ve heard that if you’re not embarrassed by v1 of your product Vim plugin then you’ve released too late.
I’ve been sitting on this the past couple of months and while there is plenty I still have planned (a good amount of stuff is in the works just not in this version), I decided I should cut a release so the few people who will be interested can start using what’s available.
So, I’m happy to announce mixer.vim. Mixer is somewhat similar to elixir-tools.nvim only it’s written in vim9script so that Vim users can have nice Elixir things too. It assumes you have elixir.vim installed.
Here is the features section of the README for posterity:
Features
-
Text objects
ad
/id
- Any macro with ado
block. Works on user-defined macros as well as keyword syntax (though the latter needs a little improvement).aD
- Likead
but include any assignment and/or attached comments (iD
exists for convenience but is identical toid
).af
/if
- A function/macro definitionaF
- Likeaf
but include all heads, docs, annotations,attr
andslot
declarations, and evendo_
prefixed versions (iF
exists for convenience but is identical toif
).iS
/aS
- A sigilim
/am
- A map or structiM
/aM
- A moduleic
/ac
- A comment or documentation
-
Conveniences
'commentstring'
is dynamically set in embedded HEEx/Surface.- matchit works in embedded HEEx/Surface templates.
- Automatically sets
:compiler
if the appropriate plugin is found. - [experimental] Remaps
ctrl-]
in templates that will jump to a phx-hook definition (it’s pretty smart about it) or event handlers on otherphx-
attributes. Unfortunately this has a dependency on git-grep atm.
-
Commands
:Mix
runs a mix command with autocomplete. Uses dispatch, neomake, asyncrun, or asyncdo if available.:Deps
doesn’t just wrapMix deps
but adds functionality like dynamically adding packages under your cursor (:Deps add floki
, for example) or jumping to yourdeps
function no matter what you’ve called it (:Deps
with no args).:Gen
is a unified command for runninggen
tasks (with autocomplete!), eg::Gen migration add_name_to_users
:Gen live Accounts User users name:string age:integer
:IEx
starts a:term
window runningiex
. Within a mix project it will assume-S mix
. Use:IEx!
to get a plain session within a mix project.
:help mixer
has more!