diff --git a/04magit.el b/04magit.el index 12cdcc9..0c1c7ac 100644 --- a/04magit.el +++ b/04magit.el @@ -1,6 +1,7 @@ ;;; Magit (use-package magit :ensure t + :defer t :bind (" c" . magit-checkout) (" b" . magit-blame) (" g" . magit-status) diff --git a/05prog-mode.el b/05prog-mode.el index 03e76c3..ea00a8f 100644 --- a/05prog-mode.el +++ b/05prog-mode.el @@ -2,64 +2,57 @@ ;;; Wrap long lines (toggle-truncate-lines t) + ;;; When pasting/writing over a selection, replace it. -(delete-selection-mode 1) +(delete-selection-mode t) ;; When possible, show code documentation -(global-eldoc-mode 1) +(global-eldoc-mode t) ;; Revert tag tables without asking -(setq tags-revert-without-query 1) +(setq tags-revert-without-query t) ;;; Show trailing whitespace and remove whitespace on save (use-package whitespace - :commands whitespace-mode - :ensure t - :hook (((prog-mode text-mode) . whitespace-mode) - (before-save . whitespace-cleanup)) - :init (setq whitespace-style #'(face trailing empty)) + :commands whitespace-mode + :ensure t + :defer t + :hook (((prog-mode text-mode) . whitespace-mode) + (before-save . whitespace-cleanup)) + :init (setq whitespace-style #'(face trailing empty)) ;;; Insert newline on save - (setq require-final-newline t) + (setq require-final-newline t) ;;; Tabs are spaces and are general at 2. Guide indent ;;; with lines - (setq-default indent-tabs-mode nil)) + (setq-default indent-tabs-mode nil)) ;; Use colorful, matching parens (use-package rainbow-delimiters - :commands rainbow-delimiters-mode - :ensure t - :hook (((prog-mode text-mode) . rainbow-delimiters-mode)) - :init + :commands rainbow-delimiters-mode + :ensure t + :defer t + :hook (((prog-mode text-mode) . rainbow-delimiters-mode)) + :init ;;; Match parenthasis (left-right) - (electric-pair-mode 1)) + (electric-pair-mode 1)) -;;; Show hex colors as colors +;;; Show hex (#aaa) colors as colors (use-package rainbow-mode - :commands rainbow-mode - :ensure t - :hook ((prog-mode text-mode) . rainbow-mode)) - -(use-package lsp-mode - :ensure t) + :commands rainbow-mode + :ensure t + :hook ((prog-mode text-mode) . rainbow-mode)) ;; Dash integration (use-package dash-at-point - :commands dash-at-point - :ensure t - :bind (:map prog-mode-map ("C-s C-d" . dash-at-point) - :map text-mode-map ("C-s C-d" . dash-at-point)) - :config - (add-to-list 'dash-at-point-mode-alist - ;; Configure lookup for Ruby mode - '(enh-ruby-mode . "ruby,rubygems,rails"))) - - -;; Use flycheck globally to check syntax and compile languages -(use-package flycheck - :commands flycheck-define-checker + :commands dash-at-point :ensure t :defer t - :config (global-flycheck-mode t)) + :bind (:map prog-mode-map ("C-s C-d" . dash-at-point) + :map text-mode-map ("C-s C-d" . dash-at-point)) + :config + (add-to-list 'dash-at-point-mode-alist + ;; Configure lookup for Ruby mode + '(enh-ruby-mode . "ruby,rubygems,rails"))) ;; By default, use 2 spaces for indentation (setq tab-width 2) @@ -73,5 +66,6 @@ (setq-local tab-stop-list (number-sequence step 200 step))) (use-package column-enforce-mode - :ensure t - :config (global-column-enforce-mode t)) + :ensure t + :defer t + :config (global-column-enforce-mode t)) diff --git a/06company-yasnippet.el b/06company-yasnippet.el index e86a6cf..a96faf9 100644 --- a/06company-yasnippet.el +++ b/06company-yasnippet.el @@ -1,14 +1,32 @@ ;; Company completion framework configuration +(use-package yasnippet + :ensure t + :defer t) + +(use-package yasnippet-snippets + :ensure t + :defer t) + +(use-package lsp-mode + :ensure t + :defer t) + +(use-package lsp-ui) + (use-package company :commands (company-indent-or-complete-common company-yasnippet) :requires (yasnippet yasnippet-snippets lsp-mode - company-lsp lsp-ui) :ensure t :defer t) +(use-package company-lsp + :ensure t + :requires company + :defer t) + (global-company-mode 1) (yas-global-mode 1) diff --git a/06flycheck.el b/06flycheck.el new file mode 100644 index 0000000..10a1815 --- /dev/null +++ b/06flycheck.el @@ -0,0 +1,6 @@ +;; Use flycheck globally to check syntax and compile languages +(use-package flycheck + :commands flycheck-define-checker + :ensure t + :defer t + :config (global-flycheck-mode t)) diff --git a/init.el b/init.el index fc66fa7..7763d0b 100644 --- a/init.el +++ b/init.el @@ -14,6 +14,7 @@ ;; list the packages you want (setq package-list '( + use-package window-purpose ;; Make sure that windows are of grouped by ;; purpose. @@ -26,29 +27,11 @@ flatui-theme planet-theme - ;; Elixir - alchemist - - ;; Erlang - erlang - - ;; Rust - racer - rust-mode - flycheck-rust - - ;; Crystal - crystal-mode - ;; Web web-mode company-web js2-mode - ;; Clojure - clojure-mode - cider - ;; Infrastructure files dockerfile-mode terraform-mode @@ -70,29 +53,32 @@ (require 'use-package) ;; Additional files -(load "~/.emacs.d/01mac.el") -(load "~/.emacs.d/02macros.el") -(load "~/.emacs.d/02ivy.el") -(load "~/.emacs.d/03hydra.el") -(load "~/.emacs.d/04magit.el") -(load "~/.emacs.d/05prog-mode.el") -(load "~/.emacs.d/06company-yasnippet.el") -(load "~/.emacs.d/07projectile.el") -(load "~/.emacs.d/08purpose.el") -(load "~/.emacs.d/08ctags.el") -(load "~/.emacs.d/09ispell.el") -(load "~/.emacs.d/10themes.el") +(load "$HOME/.emacs.d/01mac.el") +(load "$HOME/.emacs.d/02macros.el") +(load "$HOME/.emacs.d/02ivy.el") +(load "$HOME/.emacs.d/03hydra.el") +(load "$HOME/.emacs.d/04magit.el") +(load "$HOME/.emacs.d/05prog-mode.el") +(load "$HOME/.emacs.d/06company-yasnippet.el") +(load "$HOME/.emacs.d/06flycheck.el") +(load "$HOME/.emacs.d/07projectile.el") +(load "$HOME/.emacs.d/08purpose.el") +(load "$HOME/.emacs.d/08ctags.el") +(load "$HOME/.emacs.d/09ispell.el") + +;; Themes +(load "$HOME/.emacs.d/themes/themes.el") ;; Actual supported languages -(load "~/.emacs.d/20elisp.el") -(load "~/.emacs.d/20ruby.el") -(load "~/.emacs.d/20web.el") -(load "~/.emacs.d/20elixir.el") -(load "~/.emacs.d/20erlang.el") -(load "~/.emacs.d/20sh.el") -(load "~/.emacs.d/20rust.el") -(load "~/.emacs.d/20clang.el") -(load "~/.emacs.d/20clojure.el") +(load "$HOME/.emacs.d/languages/elisp.el") +(load "$HOME/.emacs.d/languages/ruby.el") +(load "$HOME/.emacs.d/languages/web.el") +(load "$HOME/.emacs.d/languages/elixir.el") +(load "$HOME/.emacs.d/languages/erlang.el") +(load "$HOME/.emacs.d/languages/sh.el") +(load "$HOME/.emacs.d/languages/rust.el") +(load "$HOME/.emacs.d/languages/clang.el") +(load "$HOME/.emacs.d/languages/clojure.el") (custom-set-variables ;; custom-set-variables was added by Custom. @@ -104,7 +90,7 @@ ("85e6bb2425cbfeed2f2b367246ad11a62fb0f6d525c157038a0d0eaaabc1bfee" "3380a2766cf0590d50d6366c5a91e976bdc3c413df963a0ab9952314b4577299" "cea3ec09c821b7eaf235882e6555c3ffa2fd23de92459751e18f26ad035d2142" "8ffdc8c66ceeaf7921f4510a70d808f01b303e6b4d177c947b442e80d4228678" "b0c5c6cc59d530d3f6fbcfa67801993669ce062dda1435014f74cafac7d86246" "ad16a1bf1fd86bfbedae4b32c269b19f8d20d416bd52a87cd50e355bf13c2f23" "d9dab332207600e49400d798ed05f38372ec32132b3f7d2ba697e59088021555" "bc4c89a7b91cfbd3e28b2a8e9e6750079a985237b960384f158515d32c7f0490" "99c86852decaeb0c6f51ce8bd46e4906a4f28ab4c5b201bdc3fdf85b24f88518" "a85e40c7d2df4a5e993742929dfd903899b66a667547f740872797198778d7b5" default))) '(package-selected-packages (quote - (planet-theme cider clojure-mode erlang rspec-mode crystal-mode dap-mode lsp-ui company-lsp lsp-mode nginx-mode gitignore-mode js2-mode keyfreq company-web visual-regexp enh-ruby-mode counsel-projectile counsel ivy flycheck-rust flycheck hydra solarized-theme company-ansible alchemist column-enforce-mode yaml-mode ansible dockerfile-mode ruby-end dash-at-point base16-theme exec-path-from-shell)))) + (planet-theme cider clojure-mode erlang rspec-mode dap-mode lsp-ui company-lsp lsp-mode nginx-mode gitignore-mode js2-mode keyfreq company-web visual-regexp enh-ruby-mode counsel-projectile counsel ivy flycheck-rust flycheck hydra solarized-theme company-ansible alchemist column-enforce-mode yaml-mode ansible dockerfile-mode ruby-end dash-at-point base16-theme exec-path-from-shell)))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. diff --git a/20clang.el b/languages/clang.el similarity index 100% rename from 20clang.el rename to languages/clang.el diff --git a/20clojure.el b/languages/clojure.el similarity index 89% rename from 20clojure.el rename to languages/clojure.el index dc44009..2de3758 100644 --- a/20clojure.el +++ b/languages/clojure.el @@ -1,5 +1,7 @@ (use-package cider :requires clojure-mode + :commands cider-jack-in + :defer t :ensure t) (add-hook 'clojure-mode-hook 'cider-mode) diff --git a/20elisp.el b/languages/elisp.el similarity index 100% rename from 20elisp.el rename to languages/elisp.el diff --git a/20elixir.el b/languages/elixir.el similarity index 100% rename from 20elixir.el rename to languages/elixir.el diff --git a/20erlang.el b/languages/erlang.el similarity index 100% rename from 20erlang.el rename to languages/erlang.el diff --git a/20ruby.el b/languages/ruby.el similarity index 86% rename from 20ruby.el rename to languages/ruby.el index 72dfa27..8ab0949 100644 --- a/20ruby.el +++ b/languages/ruby.el @@ -35,10 +35,3 @@ (add-hook 'ruby-mode-hook 'enh-ruby-mode) (add-hook 'enh-ruby-mode-hook 'activate-ruby-mode) - -;;; ERB specific things -(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) -(setq web-mode-extra-auto-pairs - '(("erb" . (("<%" "%>") - ("beg" "end"))) - )) diff --git a/20rust.el b/languages/rust.el similarity index 100% rename from 20rust.el rename to languages/rust.el diff --git a/20sh.el b/languages/sh.el similarity index 100% rename from 20sh.el rename to languages/sh.el diff --git a/20web.el b/languages/web.el similarity index 68% rename from 20web.el rename to languages/web.el index bb134ec..f15732f 100644 --- a/20web.el +++ b/languages/web.el @@ -9,6 +9,18 @@ (add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode)) (add-to-list 'auto-mode-alist '("\\.json\\'" . js2-mode)) +;;; ERB editing +(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) + +;; Eex Web mode +(add-to-list 'auto-mode-alist '("\\.eex\\'" . web-mode)) + + +(setq web-mode-extra-auto-pairs + '(("eex" . (("<%" "%>"))) + ("erb" . (("<%" "%>") + ("beg" "end"))))) + ;; Language Server Protocol is used for completion (add-hook 'js2-mode-hook 'lsp) diff --git a/10themes-base16-not-harmonic.el b/themes/themes-base16-not-harmonic.el similarity index 100% rename from 10themes-base16-not-harmonic.el rename to themes/themes-base16-not-harmonic.el diff --git a/10themes-tronesque.el b/themes/themes-tronesque.el similarity index 100% rename from 10themes-tronesque.el rename to themes/themes-tronesque.el diff --git a/10themes.el b/themes/themes.el similarity index 94% rename from 10themes.el rename to themes/themes.el index 4e3c232..4928b8d 100644 --- a/10themes.el +++ b/themes/themes.el @@ -6,7 +6,7 @@ (setq-default display-time-format "%H:%M") ;; time format to display on mode line (sml/setup)) -(load "~/.emacs.d/10themes-base16-not-harmonic.el" t) +(load "$HOME/.emacs.d/themes/themes-base16-not-harmonic.el" t) (load-theme 'base16-mexico-light t t) (load-theme 'manoj-dark t t) (load-theme 'base16-one-light t t)