From 4b10beec8d107af4bfc06289e143d1b234208532 Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Fri, 24 Jul 2020 13:07:16 +0300 Subject: [PATCH] Make language packages nicer --- languages/clang.el | 8 ++++++-- languages/clojure.el | 29 ++++++++++++++++++++++------- languages/elisp.el | 6 ++++-- languages/elixir.el | 24 ++++++++++++++++++++---- languages/erlang.el | 11 ++++++----- languages/javascript.el | 6 +++++- languages/markdown.el | 4 +++- languages/ocaml.el | 2 +- languages/ruby.el | 6 +++++- languages/rust.el | 7 +++++-- languages/sh.el | 2 +- languages/web.el | 5 ++++- 12 files changed, 82 insertions(+), 28 deletions(-) diff --git a/languages/clang.el b/languages/clang.el index c369c98..149ff0f 100644 --- a/languages/clang.el +++ b/languages/clang.el @@ -1,7 +1,11 @@ -;;; clang.el --- summary +;;; languages/clang.el --- summary ;;; Commentary: ;;; Code: +(require '05projectile "$HOME/.emacs.d/05projectile.el") +(require '05ctags "$HOME/.emacs.d/05ctags.el") +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") + (defun activate-clang-mode () "Goodies for editing c files." (set-indent 8) @@ -19,5 +23,5 @@ (add-hook 'c-mode 'activate-clang-mode) -(provide 'clang) +(provide 'languages/clang) ;;; clang.el ends here diff --git a/languages/clojure.el b/languages/clojure.el index 5985121..73cccc6 100644 --- a/languages/clojure.el +++ b/languages/clojure.el @@ -1,8 +1,9 @@ -;;; clojure -- summary +;;; languages/clojure -- summary ;;; Commentary: ;;; Code: -(require '05prog-mode) +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") +(require '05hydra "$HOME/.emacs.d/05hydra.el") (use-package clojure-mode :defer t @@ -20,11 +21,22 @@ :defer t :ensure t) -(use-package paredit - :defer t - :ensure t) +;; Hydra +(defhydra my-clojure/context-hydra (:color teal :hint nil) + " + Clojure actions -(setq-local indent-tabs-mode nil) + ^Cider^ ^Actions^ +^^^^^^^^----------------------------------------------------------------------- +_j_: Jack in +_f_: Format buffer +_l_: Load buffer +" + ("q" nil "cancel" :color blue) + + ("j" cider-jack-in) + ("f" cider-format-buffer) + ("l" cider-load-buffer)) (defun activate-my-clojure-mode () "Goodies for clojure files." @@ -32,6 +44,9 @@ (column-enforce-n 80) (clj-refactor-mode 1) (cider-mode 1) + (setq-local indent-tabs-mode nil) + + (define-key clojure-mode-map (kbd "C-c l") 'my-clojure/context-hydra/body) ;; Do not enable paredit for clojure ;; (paredit-mode 1) @@ -46,5 +61,5 @@ (add-hook 'cider-repl-mode-hook 'my-clj-repl-config) (add-hook 'cider-mode-hook #'cider-company-enable-fuzzy-completion) -(provide 'clojure) +(provide 'languages/clojure) ;;; clojure.el ends here diff --git a/languages/elisp.el b/languages/elisp.el index f91c983..d1510e8 100644 --- a/languages/elisp.el +++ b/languages/elisp.el @@ -1,7 +1,9 @@ -;;; elisp -- summary +;;; languages/elisp -- summary ;;; Commentary: ;;; Code: +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") + (defun activate-emacs-lisp-mode () "Goodies for editing Emacs files." (set-indent 2) ;; Default indentation of 2 characters @@ -14,5 +16,5 @@ (add-hook 'emacs-lisp-mode-hook 'activate-emacs-lisp-mode) -(provide 'elisp) +(provide 'languages/elisp) ;;; elisp.el ends here diff --git a/languages/elixir.el b/languages/elixir.el index d4ab9d1..5878fe5 100644 --- a/languages/elixir.el +++ b/languages/elixir.el @@ -1,11 +1,26 @@ -;;; elixir -- summary +;;; languages/elixir -- summary ;;; Commentary: ;;; Code: +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") +(require '05flycheck "$HOME/.emacs.d/05flycheck.el") +(require '05hydra "$HOME/.emacs.d/05hydra.el") + (use-package elixir-mode :requires (lsp-mode lsp-ui) - :ensure t - :config) + :ensure t) + +(defhydra my-elixir/context-hydra (:color teal :hint nil) + " + Elixir actions + + ^Elixir^ ^Actions^ +^^^^^^^^----------------------------------------------------------------------- +_f_: Format buffer +" + ("q" nil "cancel" :color blue) + + ("f" elixir-format)) (defun activate-elixir-mode () "All things Elixir." @@ -13,6 +28,7 @@ (column-enforce-n 98) (setq-local flycheck-check-syntax-automatically '(save mode-enabled)) (define-key elixir-mode-map (kbd "") 'elixir-format) + (define-key elixir-mode-map (kbd "C-c l") 'my-elixir/context-hydra/body) ;; Company list override (add-to-list (make-local-variable 'company-backends) @@ -20,5 +36,5 @@ (add-hook 'elixir-mode-hook 'activate-elixir-mode) -(provide 'elixir) +(provide 'languages/elixir) ;;; elixir.el ends here diff --git a/languages/erlang.el b/languages/erlang.el index 882aefa..0d49927 100644 --- a/languages/erlang.el +++ b/languages/erlang.el @@ -1,8 +1,9 @@ -;;; erlang -- summary +;;; languages/erlang -- summary ;;; Commentary: ;;; Code: -(require '08ctags) +(require '05ctags "$HOME/.emacs.d/05ctags.el") +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") (cl-defun erlang/emacs-path (erlang-version) (car (split-string @@ -27,7 +28,7 @@ (cl-defun erlang/available-versions--plist () (mapcar 'erlang/erlang-plist (erlang/installed-erlangs))) -(setq erlang/available-versions (erlang/available-versions--plist)) +(defvar erlang/available-versions (erlang/available-versions--plist)) (cl-defun erlang/currently-in-use () (car (split-string (shell-command-to-string "asdf current erlang")))) @@ -53,7 +54,7 @@ "All things for all Erlang, including header files." (when (featurep 'erlang-start) (unload-feature 'erlang-start)) - (setq erlang/current-erlang (erlang/current-plist)) + (defvar erlang/current-erlang (erlang/current-plist)) (add-to-list (make-local-variable 'load-path) (plist-get erlang/current-erlang :emacs-path)) @@ -110,5 +111,5 @@ ;; Automatically update tags on save (ctags/update-this-mode-on-save 'erlang-mode)) -(provide 'erlang) +(provide 'languages/erlang) ;;; erlang.el ends here diff --git a/languages/javascript.el b/languages/javascript.el index 4efde4d..67ff050 100644 --- a/languages/javascript.el +++ b/languages/javascript.el @@ -2,6 +2,10 @@ ;;; Commentary: ;;; Code: +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") +(require '05flycheck "$HOME/.emacs.d/05flycheck.el") +(require '05lsp "$HOME/.emacs.d/05lsp.el") + (use-package js2-mode :requires (web-mode company-web lsp-mode lsp-ui) :ensure t) @@ -36,5 +40,5 @@ (add-hook 'js2-mode-hook 'activate-js2-mode) -(provide 'javascript) +(provide 'languages/javascript) ;;; javascript.el ends here diff --git a/languages/markdown.el b/languages/markdown.el index c34c057..8f991de 100644 --- a/languages/markdown.el +++ b/languages/markdown.el @@ -2,6 +2,8 @@ ;;; Commentary: ;;; Code: +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") + (use-package markdown-mode :ensure t :defer t @@ -21,5 +23,5 @@ (add-hook 'markdown-mode-hook 'activate-markdown-mode) -(provide 'markdown) +(provide 'languages/markdown) ;;; markdown.el ends here diff --git a/languages/ocaml.el b/languages/ocaml.el index 59e3e4a..a5dea83 100644 --- a/languages/ocaml.el +++ b/languages/ocaml.el @@ -34,5 +34,5 @@ (add-hook 'before-save-hook #'refmt-before-save))) (add-hook 'reason-mode-hook 'merlin-mode) -(provide 'ocaml) +(provide 'languages/ocaml) ;;; ocaml.el ends here diff --git a/languages/ruby.el b/languages/ruby.el index a3d096c..7158eb2 100644 --- a/languages/ruby.el +++ b/languages/ruby.el @@ -2,6 +2,10 @@ ;;; Commentary: ;;; Code: +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") +(require '05projectile "$HOME/.emacs.d/05projectile.el") +(require '05ctags "$HOME/.emacs.d/05ctags.el") + (use-package rspec-mode :ensure t :defer t) (use-package ruby-end :ensure t :defer t) @@ -41,5 +45,5 @@ '(rspec-install-snippets)) (add-hook 'enh-ruby-mode-hook 'activate-ruby-mode) -(provide 'ruby) +(provide 'languages/ruby) ;;; ruby.el ends here diff --git a/languages/rust.el b/languages/rust.el index bb03b89..e6698c6 100644 --- a/languages/rust.el +++ b/languages/rust.el @@ -2,8 +2,11 @@ ;;; Commentary: ;;; Code: +(require '05prog-mode "$HOME/.emacs.d/05prog-mode.el") +(require '05flycheck "$HOME/.emacs.d/05flycheck.el") + (defun activate-rust-mode () - "All things for Rust mode" + "All things for Rust mode." (interactive) (set-indent 4) (column-enforce-n 99) @@ -16,5 +19,5 @@ (add-hook 'rust-mode-hook 'activate-rust-mode) (add-hook 'rust-mode-hook 'flycheck-rust-setup) -(provide 'rust) +(provide 'languages/rust) ;;; rust.el ends here diff --git a/languages/sh.el b/languages/sh.el index 9d9d15b..45e331e 100644 --- a/languages/sh.el +++ b/languages/sh.el @@ -6,5 +6,5 @@ (add-to-list 'auto-mode-alist '("\\zshrc\\'" . sh-mode)) (add-to-list 'auto-mode-alist '("\\.zshrc\\'" . sh-mode)) -(provide 'sh) +(provide 'languages/sh) ;;; sh.el ends here diff --git a/languages/web.el b/languages/web.el index da65345..c7efc82 100644 --- a/languages/web.el +++ b/languages/web.el @@ -2,6 +2,9 @@ ;;; Commentary: ;;; Code: +(require '05lsp "$HOME/.emacs.d/05lsp.el") +(require '05flycheck "$HOME/.emacs.d/05flycheck.el") + (use-package web-mode :requires (lsp-mode flycheck) :ensure t) @@ -41,5 +44,5 @@ (add-hook 'web-mode-hook 'activate-web-mode) -(provide 'web) +(provide 'languages/web) ;;; web.el ends here