Created
October 4, 2016 06:44
-
-
Save angus-g/bae81aeceaacf7ebf3e898cbbd7a3589 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; set up MELPA as a package repository | |
(require 'package) | |
(setq package-enable-at-startup nil) | |
(add-to-list 'package-archives | |
'("melpa" . "https://melpa.org/packages/")) | |
(package-initialize) | |
;; load use-package if required, as a better | |
;; means to configure packages | |
(unless (package-installed-p 'use-package) | |
(package-refresh-contents) | |
(package-install 'use-package)) | |
;; always ensure packages are automatically downloaded | |
(setq use-package-verbose t | |
use-package-always-ensure t) | |
;; graphical config -- set font and remove bars | |
(add-to-list 'default-frame-alist '(font . "Source Code Pro-10")) | |
(tool-bar-mode -1) | |
(menu-bar-mode -1) | |
(set-scroll-bar-mode nil) | |
(recentf-mode) | |
;; use y/n instead of yes/no | |
(fset 'yes-or-no-p 'y-or-n-p) | |
;; don't make backup files | |
(setq make-backup-files nil) | |
;; use the spacemacs-dark theme | |
(use-package spacemacs-theme | |
:init | |
(load-theme 'spacemacs-dark t)) | |
;; use evil-mode globally | |
(use-package evil | |
:init (setq evil-want-C-u-scroll t | |
evil-want-fine-undo 'no) | |
:config (evil-mode 1)) | |
(use-package evil-surround | |
:config (global-evil-surround-mode)) | |
;; a comfy vi-style tilde fringe after the | |
;; end of the file | |
(use-package vi-tilde-fringe | |
:diminish vi-tilde-fringe-mode | |
:config (global-vi-tilde-fringe-mode)) | |
;; make delimeters smarter | |
(use-package smartparens | |
:diminish smartparens-mode | |
:init | |
;; get some evil-mode goodies with strict-mode | |
;; such as better respect for delimiters | |
(use-package evil-smartparens | |
:diminish evil-smartparens-mode | |
:config (add-hook 'smartparens-enabled-hook #'evil-smartparens-mode)) | |
(require 'smartparens-config) | |
(smartparens-global-mode) | |
(show-smartparens-global-mode) | |
(smartparens-global-strict-mode)) | |
;; rainbow delimeters | |
(use-package rainbow-delimiters | |
:config (add-hook 'prog-mode-hook 'rainbow-delimiters-mode)) | |
;; use powerline | |
(use-package powerline | |
:config (powerline-default-theme)) | |
;; use helm as a replacement for M-x, etc. | |
(use-package helm | |
:diminish helm-mode | |
:config | |
(setq helm-mode-fuzzy-match t) | |
(helm-mode 1) | |
;; global calls to helm functions | |
:bind (("M-x" . helm-M-x) | |
("C-x b" . helm-mini) | |
("C-x C-b" . helm-buffers-list) | |
("C-x C-f" . helm-find-files) | |
;; more sensible in-helm bindings | |
:map helm-map | |
("<tab>" . helm-execute-persistent-action) | |
("C-z" . helm-select-action) | |
("C-j" . helm-next-line) | |
("C-k" . helm-previous-line))) | |
;; use helm for emacs' "C-h b" keybinding description | |
(use-package helm-descbinds | |
:config (helm-descbinds-mode)) | |
;; use projectile to manage files within a project | |
;; (use-package projectile | |
;; :diminish projectile-mode | |
;; :init (setq projectile-enable-caching t | |
;; projectile-completion-system 'helm | |
;; projectile-switch-project-action 'helm-projectile) | |
;; :config (projectile-global-mode)) | |
;; (use-package helm-projectile | |
;; :config (helm-projectile-on)) | |
;; which-key | |
(use-package which-key | |
:diminish which-key-mode | |
:config (which-key-mode)) | |
;; org-mode | |
(use-package org | |
:init | |
;; some evil-mode bindings for org | |
(use-package evil-org) | |
:config | |
(add-hook 'org-mode-hook 'auto-fill-mode) | |
(setf (alist-get "\\.pdf\\'" org-file-apps) | |
"zathura %s") | |
(setq org-log-done 'time | |
org-startup-indented t | |
org-startup-folded nil) | |
:bind (("C-c a" . org-agenda) | |
("C-c l" . org-store-link) | |
("C-c c" . org-capture))) | |
;; the org-journal extension to org-mode | |
(use-package org-journal | |
:init | |
(setq org-journal-dir "~/journal/" | |
org-agenda-files (list org-journal-dir) | |
org-agenda-file-regexp "\\`[^.].*\\.org'\\|[0-9]+")) | |
;; magit for managing git repositories, and the evil | |
;; bindings for it | |
(use-package magit | |
:init | |
(use-package evil-magit) | |
:bind (("C-x g" . magit-status))) | |
;; highlight TODO, XXX, etc. (like vim) | |
(use-package hl-todo | |
:diminish hl-todo-mode | |
:config (global-hl-todo-mode)) | |
;; globally enable which-function-mode | |
;; to display the current function in the statusline | |
(which-function-mode) | |
;;; hooks to turn on various minor modes | |
;; use soft line wrapping on text modes | |
(add-hook 'text-mode-hook 'turn-on-visual-line-mode) | |
;; for some reason global-hl-todo-mode doesn't work | |
;; in latex, so do that manually | |
(add-hook 'latex-mode-hook 'hl-todo-mode) | |
;; replicate the functionality of vim-bufkill | |
;; https://github.com/qpkorr/vim-bufkill | |
(evil-define-command evil-bufkill (buffer &optional bang) | |
"Deletes a buffer. | |
All windows/splits will be left intact." | |
(interactive "<b><!>") | |
(with-current-buffer (or buffer (current-buffer)) | |
(when bang | |
(set-buffer-modified-p nil) | |
(dolist (process (process-list)) | |
(when (eq (process-buffer process) (current-buffer)) | |
(set-process-query-on-exit-flag process nil)))) | |
(if (and (fboundp 'server-edit) | |
(boundp 'server-buffer-clients) | |
server-buffer-clients) | |
(server-edit) | |
(kill-buffer nil)))) | |
(evil-ex-define-cmd "bd[elete]" 'evil-bufkill) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment