diff --git a/behaviour.el b/behaviour.el index ad216ae..be2aad3 100644 --- a/behaviour.el +++ b/behaviour.el @@ -57,17 +57,11 @@ ;; Show trailing whitespaces and remove whitespace on save (setq-default show-trailing-whitespace t) (setq whitespace-style '(face trailing lines-tail trailing)) -(setq whitespace-line-column 80) + (add-hook 'before-save-hook 'delete-trailing-lines) ;; Tabs are spaces and are general at 2. Guide indent with lines (setq-default indent-tabs-mode nil) -(setq tab-width 2) -(setq tab-stop-list (quote(2 4 6 8 10 12 14 16 20 22 24 26 28 30 32 34 36 38 40 - 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 - 76 78 80))) -;; (require 'indent-guide) -;; (indent-guide-global-mode) ; Insert newline on save (setq require-final-newline t) @@ -85,6 +79,25 @@ ;;; When pasting/writing over a selection, replace it. (delete-selection-mode 1) +;;;;;;;;;;;;;;;;;;;;;; indentation functions ;;;;;;;;;;;;;;;;;;;;;; +;; Use this function for ruby, elixir and such +(defun set-line-limit-80-tab-2 () + (setq whitespace-line-column 80) + (setq tab-width 2) + (setq tab-stop-list (quote(2 4 6 8 10 12 14 16 20 22 24 26 28 30 32 34 36 38 + 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 + 72 74 76 78 80)))) + +;; Use this function for rust +(defun set-line-limit-99-tab-4 () + (setq whitespace-line-column 99) + (setq tab-width 4) + (setq tab-stop-list (quote(4 8 12 16 24 28 32 36 40 44 48 52 56 60 + 64 68 72 76 80 84 88 92 96)))) + +;; By default, use 80 +(set-line-limit-80-tab-2) + ;;;;;;;;;;;;;;;;;;;;;;;; additional features ;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Add completion @@ -133,10 +146,5 @@ ;; (add-to-list 'default-frame-alist '(alpha . (94 . 90))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Additional loads ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -; Language specific stuff -(load "~/.emacs.d/ruby.el") -(load "~/.emacs.d/elixir.el") -(load "~/.emacs.d/javascript.el") -(load "~/.emacs.d/web-mode.el") +(load "~/.emacs.d/languages.el") ;;; behaviour.el ends here diff --git a/elixir.el b/elixir.el deleted file mode 100644 index d4d41f7..0000000 --- a/elixir.el +++ /dev/null @@ -1,12 +0,0 @@ -; Special language package -(require 'alchemist) - -; Hooks -(add-hook 'elixir-mode-hook - (alchemist-mode)) - -(add-hook 'elixir-mode-hook - 'flycheck-mode) - -(add-hook 'elixir-mode-hook - 'ruby-end-mode) diff --git a/emacs b/emacs index 72cb061..08e69f8 100644 --- a/emacs +++ b/emacs @@ -65,6 +65,7 @@ ; load custom config files (load "~/.emacs.d/packages.el") +(load "~/.emacs.d/functions.el") (load "~/.emacs.d/behaviour.el") (load "~/.emacs.d/themes.el") (load "~/.emacs.d/key-bindings.el") diff --git a/functions.el b/functions.el new file mode 100644 index 0000000..b9c2565 --- /dev/null +++ b/functions.el @@ -0,0 +1,6 @@ +(defun kill-other-buffers + "Kill all buffers except for the current one" + (interactive) + (mapc 'kill-buffer (delq (current-buffer) (buffer-list))) + ) + diff --git a/javascript.el b/javascript.el deleted file mode 100644 index a839915..0000000 --- a/javascript.el +++ /dev/null @@ -1 +0,0 @@ -(setq js-indent-level 2) diff --git a/languages.el b/languages.el new file mode 100644 index 0000000..5b7eafd --- /dev/null +++ b/languages.el @@ -0,0 +1,78 @@ +;;; Languages -- summary +;;; Commentary: + + +;;; Code: + +;;;; Major languages ;;;; +;;; Ruby +(defun ruby-mode-config () + "Setup editor for Ruby." + (remove-hook 'rust-mode-hook 'rust-mode-config) + (remove-hook 'elixir-mode-hook 'elixir-mode-config) + (remove-hook 'emacs-lisp-mode-hook 'elisp-mode-config) + + (set-line-limit-99-tab-4) + (aggressive-mode-indent) + (defun align-to-colon (begin end) + "Align region to colon signs" + (align-regexp begin end + (rx ":" (group (zero-or-mode (syntax-white)))))) + ;; Do not align 'begin' and 'while' ;; + (setq ruby-align-to-stmt-keywords '(if begin case elseif rescue)) + + ;; Do not indent inside the parenthasis + (setq ruby-deep-indent-paren nil) + + ;; Do not insert encoding comments ;; + (setq ruby-insert-encoding-magic-comment nil) + + ;; Use web-mode for erb + (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))) + +(add-hook 'ruby-mode-hook 'ruby-mode-config) + +;;; 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) + (set-line-limit-99-tab-4) + (flycheck-mode 1)) + +(add-hook 'rust-mode-hook 'rust-mode-config) + +;;; Elixir +(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) + (require 'alchemist) + (alchemist-mode) + (flycheck-mode 1) + (set-line-limit-80-tab-2) + (ruby-end-mode)) + +(add-hook 'elixir-mode-hook 'elixir-mode-config) + +;;; Elisp +(defun elisp-mode-config () + "Setup editor for Lisp." + (remove-hook 'rust-mode-hook 'rust-mode-config) + (remove-hook 'ruby-mode-hook 'ruby-mode-config) + (remove-hook 'elixir-mode-hook 'elixir-mode-config) + (set-line-limit-80-tab-2) + (flycheck-mode 1)) + +(add-hook 'emacs-lisp-mode-hook 'elisp-mode-config) + +;;;; Other things ;;;;; +;;; Javascript +(setq js-indent-level 2) + +;;; Web-mode +(setq web-mode-markup-indent-offset 2) +(setq web-mode-code-indent-offset 2) +;;; languages.el ends here diff --git a/ruby.el b/ruby.el deleted file mode 100644 index 1b509b5..0000000 --- a/ruby.el +++ /dev/null @@ -1,26 +0,0 @@ -(add-hook 'ruby-mode-hook - (aggressive-indent-mode)) - -(add-hook 'yaml-mode-hook - (lambda () (indent-guide-mode -1))) - -(add-hook 'sql-mode-hook - (lambda () (indent-guide-mode -1))) - -(defun align-to-colon (begin end) - "Align region to colon (:) signs" - (interactive "r") - (align-regexp begin end - (rx ":" (group (zero-or-more (syntax whitespace))) ) 1 1 )) - -;; Do not align 'begin' and 'while' ;; -(setq ruby-align-to-stmt-keywords '(if begin case elseif rescue)) - -;; Do not indent inside the parenthasis -(setq ruby-deep-indent-paren nil) - -;; Do not insert encoding comments ;; -(setq ruby-insert-encoding-magic-comment nil) - -;; Use web mode for erb -(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) diff --git a/themes.el b/themes.el index c6425df..adff9a6 100644 --- a/themes.el +++ b/themes.el @@ -26,6 +26,7 @@ ;; (load-theme 'flatui t t) (load-theme 'atom-one-dark t t) (load-theme 'flatui t t) +(load-theme 'noctilux t t) (require 'helm-themes) (if (display-graphic-p) @@ -35,9 +36,10 @@ ;; (helm-themes 'avk-daylight t)) (progn - (enable-theme 'monokai)) - ;; (helm-themes 'monokai t)) + ;; (enable-theme 'flatui)) + (enable-theme 'flatui) ;; (enable-theme 'airline-base16-shell-dark) + ) ) (color-theme-approximate-on) diff --git a/web-mode.el b/web-mode.el deleted file mode 100644 index cb297fa..0000000 --- a/web-mode.el +++ /dev/null @@ -1,3 +0,0 @@ -;; Indent by 2 spaces -(setq web-mode-markup-indent-offset 2) -(setq web-mode-code-indent-offset 2)