elixir

iex

iex stands for Interactive Elixir. It’s an interactive REPL for Elixir.

iex -S mix phx.server
  • i for inspect
  • h h for help
  • r MyModule for recompile
  • v(-1) for last value
  • respawn restart but keep history

Attach to Remote iex

Remote:

iex --name server@hostname --cookie secret -S mix

Local:

iex --name client@hostname --cookie secret --remsh server@hostname

Connect to Remote Node

iex --name client@hostname --cookie secret
Node.connect(:"server@hostname")
:rpc.call(:"server@hostname", IO, :puts, ["Hello!"])

Emacs Setup

(use-package elixir-mode
  :ensure t)

;; Alchemist - for mix, compile, testing integration
(use-package alchemist
  :ensure t
  :hook (elixir-mode . alchemist-mode))

(use-package lsp-mode
  :ensure t
  :hook ((elixir-mode . lsp))
  :commands lsp
  :custom
    (lsp-elixir-mix-env "dev")
    (lsp-elixir-server-command '("~/.elixir-ls/release/language_server.sh")))

(use-package lsp-ui
  :ensure t)

(use-package company
  :ensure t
  :config (global-company-mode))

Setup LSP

git clone https://github.com/elixir-lsp/elixir-ls.git ~/.elixir-ls
cd ~/.elixir-ls
mix deps.get && mix compile
mix elixir_ls.release2 -o release