From 95ef7f33b1133cbd361927c124ec57a32d86c904 Mon Sep 17 00:00:00 2001 From: Justin Smestad Date: Thu, 22 Oct 2020 18:39:59 -0600 Subject: [PATCH 1/5] Add exunit mode modeled after rspec-mode --- modules/lang/elixir/README.org | 15 +++++++++++++ modules/lang/elixir/config.el | 37 +++++++++++++++++++++++---------- modules/lang/elixir/packages.el | 1 + 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/modules/lang/elixir/README.org b/modules/lang/elixir/README.org index b1a703e2f..49fec9f2e 100644 --- a/modules/lang/elixir/README.org +++ b/modules/lang/elixir/README.org @@ -13,6 +13,8 @@ - [[#gentoo-linux][Gentoo Linux]] - [[#opensuse][openSUSE]] - [[#features][Features]] +- [[#appendix][Appendix]] + - [[#commands][Commands]] * Description This module provides support for [[https://elixir-lang.org/][Elixir programming language]] via [[https://github.com/tonini/alchemist.el][alchemist.el]] @@ -60,3 +62,16 @@ sudo zypper install elixir - Phoenix support - ~iex~ integration (~:tools eval~) - Syntax checking (~:checkers syntax~, using [[https://github.com/aaronjensen/flycheck-credo][flycheck-credo]]~) +* Appendix +** Commands +*** exunit-mode +The exunit-mode prefix is =SPC m t=. Here is some examples: +| | | | +| command | key / ex command | description | +|------------------------------------------+------------------+--------------------------------------------------------| +| ~exunit-verify-all~ | =SPC m t a= | Runs exunit on all files | +| ~exunit-rerun~ | =SPC m t r= | Re-runs last exunit command | +| ~exunit-verify~ | =SPC m t v= | Runs exunit on current file | +| ~exunit-verify-single~ | =SPC m t s= | Runs exunit for the item on cursor | +| ~exunit-toggle-file-and-test~ | =SPC m t t= | Switch between implementation and test | +| ~exunit-toggle-file-and-test-other-window~ | =SPC m t T= | Switch between implementation and test in other window | diff --git a/modules/lang/elixir/config.el b/modules/lang/elixir/config.el index 34bb0abc9..6ad924eac 100644 --- a/modules/lang/elixir/config.el +++ b/modules/lang/elixir/config.el @@ -15,17 +15,17 @@ (provide 'smartparens-elixir) :config (set-ligatures! 'elixir-mode - ;; Functional - :def "def" - :lambda "fn" - ;; :src_block "do" - ;; :src_block_end "end" - ;; Flow - :not "!" - :in "in" :not-in "not in" - :and "and" :or "or" - :for "for" - :return "return" :yield "use") + ;; Functional + :def "def" + :lambda "fn" + ;; :src_block "do" + ;; :src_block_end "end" + ;; Flow + :not "!" + :in "in" :not-in "not in" + :and "and" :or "or" + :for "for" + :return "return" :yield "use") ;; ...and only complete the basics (sp-with-modes 'elixir-mode @@ -71,3 +71,18 @@ (let ((fn (byte-compile (lambda () (add-to-list (make-local-variable 'company-backends) 'alchemist-company))))) (remove-hook 'alchemist-mode-hook fn) (remove-hook 'alchemist-iex-mode-hook fn))) + +(use-package! exunit + :hook (elixir-mode . exunit-mode) + :defer t + :config + (map! :after elixir-mode + :localleader + :map elixir-mode-map + :prefix "t" + "a" #'exunit-verify-all + "r" #'exunit-rerun + "v" #'exunit-verify + "T" #'exunit-toggle-file-and-test + "t" #'exunit-toggle-file-and-test-other-window + "s" #'exunit-verify-single)) diff --git a/modules/lang/elixir/packages.el b/modules/lang/elixir/packages.el index b4d091bf3..6fc03b62b 100644 --- a/modules/lang/elixir/packages.el +++ b/modules/lang/elixir/packages.el @@ -4,5 +4,6 @@ ;; +elixir.el (package! elixir-mode :pin "01b332495d3f44addeb236428041c4ffa0c2ca3b") (package! alchemist :pin "6f99367511ae209f8fe2c990779764bbb4ccb6ed") +(package! exunit :pin "c77b0397b80d772c98fcc34c9ab131a8350fbf40") (when (featurep! :checkers syntax) (package! flycheck-credo :pin "e88f11ead53805c361ec7706e44c3dfee1daa19f")) From 2c9e1c83ed2e23d039cb9a09621936fe435b444b Mon Sep 17 00:00:00 2001 From: Justin Smestad Date: Thu, 22 Oct 2020 18:41:47 -0600 Subject: [PATCH 2/5] Add link to exunit --- modules/lang/elixir/README.org | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lang/elixir/README.org b/modules/lang/elixir/README.org index 49fec9f2e..5301cba0d 100644 --- a/modules/lang/elixir/README.org +++ b/modules/lang/elixir/README.org @@ -27,6 +27,7 @@ or [[https://github.com/elixir-lsp/elixir-ls/][elixir-ls]]. + [[https://github.com/elixir-editors/emacs-elixir][elixir-mode]] + [[https://github.com/tonini/alchemist.el][alchemist.el]] + [[https://github.com/aaronjensen/flycheck-credo][flycheck-credo]] ++ [[https://github.com/ananthakumaran/exunit.el][exunit]] * Prerequisites You should have Elixir installed, for example, via your distribution's package From 9d46c212af044ed85fe32b7ea2c70d6abca952e1 Mon Sep 17 00:00:00 2001 From: Justin Smestad Date: Thu, 12 Nov 2020 08:58:19 -0700 Subject: [PATCH 3/5] Updates for formatting and init hook --- modules/lang/elixir/config.el | 43 +++++++++++++++++------------------ 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/modules/lang/elixir/config.el b/modules/lang/elixir/config.el index 6ad924eac..b5cddb1f2 100644 --- a/modules/lang/elixir/config.el +++ b/modules/lang/elixir/config.el @@ -15,17 +15,17 @@ (provide 'smartparens-elixir) :config (set-ligatures! 'elixir-mode - ;; Functional - :def "def" - :lambda "fn" - ;; :src_block "do" - ;; :src_block_end "end" - ;; Flow - :not "!" - :in "in" :not-in "not in" - :and "and" :or "or" - :for "for" - :return "return" :yield "use") + ;; Functional + :def "def" + :lambda "fn" + ;; :src_block "do" + ;; :src_block_end "end" + ;; Flow + :not "!" + :in "in" :not-in "not in" + :and "and" :or "or" + :for "for" + :return "return" :yield "use") ;; ...and only complete the basics (sp-with-modes 'elixir-mode @@ -74,15 +74,14 @@ (use-package! exunit :hook (elixir-mode . exunit-mode) - :defer t - :config + :init (map! :after elixir-mode - :localleader - :map elixir-mode-map - :prefix "t" - "a" #'exunit-verify-all - "r" #'exunit-rerun - "v" #'exunit-verify - "T" #'exunit-toggle-file-and-test - "t" #'exunit-toggle-file-and-test-other-window - "s" #'exunit-verify-single)) + :localleader + :map elixir-mode-map + :prefix "t" + "a" #'exunit-verify-all + "r" #'exunit-rerun + "v" #'exunit-verify + "T" #'exunit-toggle-file-and-test + "t" #'exunit-toggle-file-and-test-other-window + "s" #'exunit-verify-single)) From 3de0d4074da72877a42c0bad601ae3f7a1002f3d Mon Sep 17 00:00:00 2001 From: Justin Smestad Date: Sat, 14 Nov 2020 15:34:30 -0700 Subject: [PATCH 4/5] Update modules/lang/elixir/config.el --- modules/lang/elixir/config.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/lang/elixir/config.el b/modules/lang/elixir/config.el index b5cddb1f2..76286227e 100644 --- a/modules/lang/elixir/config.el +++ b/modules/lang/elixir/config.el @@ -76,12 +76,12 @@ :hook (elixir-mode . exunit-mode) :init (map! :after elixir-mode - :localleader - :map elixir-mode-map - :prefix "t" - "a" #'exunit-verify-all - "r" #'exunit-rerun - "v" #'exunit-verify - "T" #'exunit-toggle-file-and-test - "t" #'exunit-toggle-file-and-test-other-window - "s" #'exunit-verify-single)) + :localleader + :map elixir-mode-map + :prefix "t" + "a" #'exunit-verify-all + "r" #'exunit-rerun + "v" #'exunit-verify + "T" #'exunit-toggle-file-and-test + "t" #'exunit-toggle-file-and-test-other-window + "s" #'exunit-verify-single)) From 80992a0cae7790a504deb9476d3ac30dd89068cf Mon Sep 17 00:00:00 2001 From: Justin Smestad Date: Sat, 14 Nov 2020 15:35:07 -0700 Subject: [PATCH 5/5] Update config.el --- modules/lang/elixir/config.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/lang/elixir/config.el b/modules/lang/elixir/config.el index 76286227e..98745c859 100644 --- a/modules/lang/elixir/config.el +++ b/modules/lang/elixir/config.el @@ -76,12 +76,12 @@ :hook (elixir-mode . exunit-mode) :init (map! :after elixir-mode - :localleader - :map elixir-mode-map - :prefix "t" - "a" #'exunit-verify-all - "r" #'exunit-rerun - "v" #'exunit-verify - "T" #'exunit-toggle-file-and-test - "t" #'exunit-toggle-file-and-test-other-window - "s" #'exunit-verify-single)) + :localleader + :map elixir-mode-map + :prefix "t" + "a" #'exunit-verify-all + "r" #'exunit-rerun + "v" #'exunit-verify + "T" #'exunit-toggle-file-and-test + "t" #'exunit-toggle-file-and-test-other-window + "s" #'exunit-verify-single))