Skip to content

Instantly share code, notes, and snippets.

@angus-g
Created October 4, 2016 06:44
Show Gist options
  • Save angus-g/bae81aeceaacf7ebf3e898cbbd7a3589 to your computer and use it in GitHub Desktop.
Save angus-g/bae81aeceaacf7ebf3e898cbbd7a3589 to your computer and use it in GitHub Desktop.
;; 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