* Editing ** IEdit mode #+BEGIN_SRC emacs-lisp (use-package iedit :bind ("C-;" . iedit-mode)) #+END_SRC ** Spellcheck #+BEGIN_SRC emacs-lisp (global-set-key (kbd "C-!") 'ispell-buffer) #+END_SRC ** Undo tree #+BEGIN_SRC emacs-lisp (use-package undo-tree :config (global-undo-tree-mode)) #+END_SRC * Save/load ** Backup/auto-save #+BEGIN_SRC emacs-lisp (let ((backup-dir "~/.emacs.d/backup") (auto-save-dir "~/.emacs.d/autosave")) (if (not (file-directory-p backup-dir)) (make-directory backup-dir)) (if (not (file-directory-p auto-save-dir)) (make-directory auto-save-dir))) #+END_SRC ** On save #+BEGIN_SRC emacs-lisp (add-hook 'before-save-hook 'delete-trailing-whitespace) #+END_SRC ** Recent files mode #+BEGIN_SRC emacs-lisp (use-package recentf :config (recentf-mode 1)) #+END_SRC * Platform dependant ** Windows #+BEGIN_SRC emacs-lisp #+END_SRC * Major modes ** Java ** JavaScript ** Magit #+BEGIN_SRC emacs-lisp (use-package magit :bind (("C-x g" . magit-status)) :config (use-package git-commit :hook (git-commit-setup . git-commit-turn-on-flyspell))) #+END_SRC ** Python *** Platform specific #+BEGIN_SRC emacs-lisp (cond ((string-equal system-type "gnu/linux") "python3") ((string-equal system-type "windows-nt") "python.exe")) #+END_SRC *** custom feature *** bindings/settings #+begin_src emacs-lisp (use-package python :config (use-package elpy :bind (("C-=" . elpy-goto-assignment)) :config (when (require 'flycheck nil t) (setq elpy-modules (delq 'elpy-module-flymake elpy-modules)))) (elpy-enable) (blacken-mode)) #+END_SRC ** SSH config mode #+BEGIN_SRC emacs-lisp (use-package ssh-config-mode :mode "~/.ssh/config\\'") #+END_SRC ** Tramp ** Webmode ** YAML #+BEGIN_SRC emacs-lisp (use-package yaml-mode :mode "\\.yml\\'") #+END_SRC * Minor modes/misc ** Kill the things *** Buffer #+BEGIN_SRC emacs-lisp (global-set-key (kbd "C-x k") 'kill-this-buffer) #+END_SRC *** Emacs #+BEGIN_SRC emacs-lisp (global-set-key (kbd "C-x C-k C-x C-k") 'kill-emacs) #+END_SRC ** Lispy #+BEGIN_SRC emacs-lisp (use-package lispy :hook ((emacs-lisp-mode) . lispy-mode)) #+END_SRC * Navigation/autocompletion ** Ace window #+BEGIN_SRC emacs-lisp (use-package ace-window :bind (("M-Q" . ace-window))) #+END_SRC ** Hippie expand #+BEGIN_SRC emacs-lisp (use-package hippie-exp :bind ("M-/" . hippie-expand)) #+END_SRC ** IBuffer mode #+BEGIN_SRC emacs-lisp (use-package ibbufer-vc :hook ((ibuffer-mode . ibuffer-vc-set-filter-groups-by-vc-root))) (use-package ibuffer :bind (("C-x C-b" . ibuffer)) :config (define-ibuffer-column size-h ;; Use human readable Size column instead of original one (:name "Size" :inline t) (cond ((> (buffer-size) 1000000) (format "%7.1fM" (/ (buffer-size) 1000000.0))) ((> (buffer-size) 100000) (format "%7.0fk" (/ (buffer-size) 1000.0))) ((> (buffer-size) 1000) (format "%7.1fk" (/ (buffer-size) 1000.0))) (t (format "%8d" (buffer-size)))))) #+END_SRC ** Ivy #+BEGIN_SRC emacs-lisp (use-package ivy :config (use-package swiper :bind ("C-s" . swiper)) (ivy-mode)) #+END_SRC * Look and feel ** Line numbers #+BEGIN_SRC emacs-lisp (global-display-line-numbers-mode) #+END_SRC ** Spaceline #+BEGIN_SRC emacs-lisp (use-package spaceline-config :config (spaceline-spacemacs-theme) (winum-mode)) #+END_SRC