diff --git a/init.example.el b/init.example.el index 1120cd66f..ad85c66ce 100644 --- a/init.example.el +++ b/init.example.el @@ -65,6 +65,7 @@ clojure ; java with a lisp csharp ; unity, .NET, and mono shenanigans data ; config/data formats + ;erlang ; an elegant language for a more civilized age elixir ; erlang done right elm ; care for a cup of TEA? emacs-lisp ; drown in parentheses diff --git a/modules/lang/erlang/config.el b/modules/lang/erlang/config.el new file mode 100644 index 000000000..8a180d37a --- /dev/null +++ b/modules/lang/erlang/config.el @@ -0,0 +1,29 @@ +;;; private/erlang/config.el -*- lexical-binding: t; -*- + +(def-package! erlang + ;; customizations + :mode "\\.erlang$" + ;; rebar files + :mode "/rebar\\.config\\(?:\\.script\\)?$" + ;; erlang configs + :mode "/\\(?:app\\|sys\\)\\.config$") + +(def-package! flycheck-rebar3 + :when (featurep! :feature syntax-checker) + :after erlang + :config + (flycheck-rebar3-setup)) + +;; Completion via Ivy +(def-package! ivy-erlang-complete + :when (featurep! :completion ivy) + :hook (erlang-mode . ivy-erlang-complete-init) + :config + (add-hook! 'erlang-mode-hook + (add-hook 'after-save-hook #'ivy-erlang-complete-reparse nil t))) + + +;; Completion via Company +(def-package! company-erlang + :when (featurep! :completion company) + :hook (erlang-mode . company-erlang-init)) diff --git a/modules/lang/erlang/packages.el b/modules/lang/erlang/packages.el new file mode 100644 index 000000000..79e5b8f65 --- /dev/null +++ b/modules/lang/erlang/packages.el @@ -0,0 +1,13 @@ +;; -*- no-byte-compile: t; -*- +;;; private/erlang/packages.el + +(package! erlang) + +(when (featurep! :feature syntax-checker) + (package! flycheck-rebar3)) + +(when (featurep! :completion ivy) + (package! ivy-erlang-complete)) + +(when (featurep! :completion company) + (package! company-erlang))