diff --git a/emacs b/emacs index 20355d0..ea2532e 100644 --- a/emacs +++ b/emacs @@ -20,6 +20,9 @@ '(foreground-color "#cccccc") '(hl-paren-background-colors (quote ("#2492db" "#95a5a6" nil))) '(hl-paren-colors (quote ("#ecf0f1" "#ecf0f1" "#c0392b"))) + '(package-selected-packages + (quote + (company-racer yaml-mode window-purpose web-mode ujelly-theme toml-mode smart-mode-line scala-mode rvm ruby-end rspec-mode robe rainbow-mode rainbow-delimiters racer pyenv-mode pos-tip noctilux-theme neotree monokai-theme markdown-mode less-css-mode json-reformat jade-mode indent-guide helm-themes helm-projectile helm-ag haskell-mode haml-mode groovy-mode flycheck flatui-theme exec-path-from-shell evil-nerd-commenter evil-magit evil-leader elpy dumb-jump dockerfile-mode diff-hl dash-at-point company-jedi column-enforce-mode color-theme-approximate base16-theme atom-one-dark-theme alchemist aggressive-indent ag))) '(safe-local-variable-values (quote ((encoding . utf-8)))) '(sml/active-background-color "#34495e") '(sml/active-foreground-color "#ecf0f1") diff --git a/languages.el b/languages.el index 79f28c0..dea329d 100644 --- a/languages.el +++ b/languages.el @@ -10,23 +10,9 @@ (load "~/.emacs.d/languages/ruby.elc") (load "~/.emacs.d/languages/python.elc") (load "~/.emacs.d/languages/elisp.elc") - -;;; Rust -(defun rust-mode-config () - "Setup editor for rust." - (remove-hook 'ruby-mode-hook 'ruby-mode-config) - (remove-hook 'elixir-mode-hook 'elixir-mode-config) - (remove-hook 'emacs-lisp-mode-hook 'elisp-mode-config) - (remove-hook 'html-mode-hook 'web-mode-config) - (remove-hook 'haskell-mode-hook 'haskell-mode-config) - (remove-hook 'java-mode-hook 'java-mode-config) - - (set-indent 4)) - -(add-hook 'rust-mode-hook 'rust-mode-config) -(add-hook 'rust-mode-hook 'racer-mode) -(add-hook 'rust-mode-hook 'flycheck-mode) -(add-hook 'rust-mode-hook 'set-width-99) +(load "~/.emacs.d/languages/elixir.elc") +(load "~/.emacs.d/languages/rust.elc") +(load "~/.emacs.d/languages/web.elc") ;;; SQL (defun sql-mode-hook () @@ -43,25 +29,6 @@ (add-hook 'sql-mode-hook 'flycheck-mode) (add-hook 'sql-mode-hook 'set-width-120) -;;; Elixir -;; Note: there is no flycheck support for Elixir yet -(require 'alchemist) -(defun elixir-mode-config () - "Call elixir mode config." - (remove-hook 'ruby-mode-hook 'ruby-mode-config) - (remove-hook 'rust-mode-hook 'rust-mode-config) - (remove-hook 'emacs-lisp-mode-hook 'elisp-mode-config) - (remove-hook 'html-mode-hook 'web-mode-config) - (remove-hook 'haskell-mode-hook 'haskell-mode-config) - (remove-hook 'java-mode-hook 'java-mode-config) - - (set-indent 2)) - -(add-hook 'elixir-mode-hook 'elixir-mode-config) -(add-hook 'elixir-mode-hook 'alchemist-mode) -(add-hook 'elixir-mode-hook 'ruby-end-mode) -(add-hook 'elixir-mode-hook 'set-width-80) - ;;; Haskell (defun haskell-mode-config () "Call haskell mode config." @@ -96,28 +63,6 @@ ;;; Javascript (setq js-indent-level 2) -;;; Web-mode -(require 'web-mode) -(defun web-mode-config () - "Setup web mode." - (remove-hook 'rust-mode-hook 'rust-mode-config) - (remove-hook 'ruby-mode-hook 'ruby-mode-config) - (remove-hook 'elixir-mode-hook 'elixir-mode-config) - (remove-hook 'java-mode-hook 'java-mode-config) - - (flycheck-mode 1) - (set-indent 2)) - -(add-hook 'html-mode-hook 'web-mode) -(add-hook 'html-mode-hook 'web-mode-config) -(add-hook 'html-mode-hook 'set-width-120) - -(setq web-mode-markup-indent-offset 2) -(setq web-mode-code-indent-offset 2) - -;; CSS-mode -(setq css-indent-offset 2) - ;; Markdown mode (defun markdown-mode-config () "Setup markdown mode." diff --git a/languages/elisp.el b/languages/elisp.el index 95163d5..ab0855b 100644 --- a/languages/elisp.el +++ b/languages/elisp.el @@ -1,4 +1,4 @@ -;;; Ruby -- summary +;;; Elisp -- summary ;;; Commentary: ;;; Code: @@ -21,4 +21,6 @@ ;;========== Hooks ================================= (add-hook 'emacs-lisp-mode-hook 'editor-config-elisp) (add-hook 'emacs-lisp-mode-hook 'completion-config-elisp) + +(provide 'elisp) ;;; elisp.el ends here diff --git a/languages/elixir.el b/languages/elixir.el new file mode 100644 index 0000000..2c3c782 --- /dev/null +++ b/languages/elixir.el @@ -0,0 +1,26 @@ +;;; Elixir -- summary +;;; Commentary: + +;;; Code: +;;========== Editor config ========================= +(defun editor-config-elixir () + "Editor configuration for Elixir." + (set-indent 2) + (set-width-80) + (ruby-end-mode 1)) + +;;========== Code completion ======================= +(defun completion-config-elixir () + "Code completion and inspection for Elixir." + (alchemist-mode 1) + (company-mode 1) + (set (make-local-variable 'company-backends) + '((alchemist-company company-capf company-dabbrev-code company-yasnippet + company-files)))) + +;;========== Hooks ================================= +(add-hook 'elixir-mode-hook 'editor-config-elixir) +(add-hook 'elixir-mode-hook 'completion-config-elixir) + +(provide 'elixir) +;;; elixir.el ends here diff --git a/languages/rust.el b/languages/rust.el new file mode 100644 index 0000000..0b1bbf6 --- /dev/null +++ b/languages/rust.el @@ -0,0 +1,28 @@ +;;; Rust -- summary +;;; Commentary: + +;;; Code: + +;;========== Editor config ========================= +(defun editor-config-rust () + "Editor configuration for Rust." + (set-indent 4) + (set-width-99)) + +;;========== Code completion ======================= +(defun completion-config-rust () + "Code completion and inspection for Rust." + (racer-mode 1) + (company-mode 1) + (flycheck-mode 1) + (flymake-mode) + (set (make-local-variable 'company-backends) + '((company-racer company-capf company-dabbrev-code company-yasnippet + company-files)))) + +;;========== Hooks ================================= +(add-hook 'rust-mode-hook 'editor-config-rust) +(add-hook 'rust-mode-hook 'completion-config-rust) + +(provide 'rust) +;;; rust.el ends here diff --git a/languages/web.el b/languages/web.el new file mode 100644 index 0000000..5dba85e --- /dev/null +++ b/languages/web.el @@ -0,0 +1,31 @@ +;;; Web -- summary +;;; Commentary: + +;;; Code: +(require 'web-mode) +;;========== Editor config ========================= +(defun editor-config-web () + "Editor configuration for Web." + (set-indent 2) + (set-width-120) + + (setq web-mode-markup-indent-offset 2) + (setq web-mode-code-indent-offset 2) + (setq css-indent-offset 2)) + +;;========== Code completion ======================= +(defun completion-config-web () + "Code completion and inspection for Web." + (company-mode 1) + (flycheck-mode 1) + (flymake-mode) + (set (make-local-variable 'company-backends) + '((company-capf company-dabbrev-code company-yasnippet + company-files)))) + +;;========== Hooks ================================= +(add-hook 'html-mode-hook 'editor-config-web) +(add-hook 'html-mode-hook 'completion-config-web) + +(provide 'web) +;;; web.el ends here diff --git a/packages.el b/packages.el index 187213e..cedc73c 100644 --- a/packages.el +++ b/packages.el @@ -190,6 +190,9 @@ (unless (package-installed-p 'racer) (package-install 'racer)) +(unless (package-installed-p 'company-racer) + (package-install 'company-racer)) + (unless (package-installed-p 'toml-mode) (package-install 'toml-mode))