Created
January 15, 2017 05:35
-
-
Save matthew-ball/89b2d1e98e7dd3bb101419093ec3db5b to your computer and use it in GitHub Desktop.
This file contains hidden or 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
(defgroup user-variables nil "User variables.") | |
(defcustom user-projects-directory "~/Public/" "Directory for user's project files." :type 'directory :group 'user-variables) | |
(defcustom user-documents-directory "~/Documents/" "Directory for user's files." :type 'directory :group 'user-vabriables) | |
(defcustom user-notes-file (concat (expand-file-name user-documents-directory) "notes.org") "File for user's notes." :type 'file :group 'user-variables) | |
(defcustom user-packages-list '(magit gist undo-tree browse-kill-ring adaptive-wrap projectile yasnippet auto-complete diminish) "List of user packages." :type '(repeat symbol) :group 'user-variables) | |
(eval-when-compile (require 'cl-lib)) | |
(menu-bar-mode -1) | |
(tool-bar-mode -1) | |
(scroll-bar-mode -1) | |
(blink-cursor-mode -1) | |
(tooltip-mode -1) | |
(file-name-shadow-mode 1) | |
(delete-selection-mode 1) | |
(show-paren-mode 1) | |
(electric-pair-mode 1) | |
(line-number-mode 1) | |
(column-number-mode 1) | |
(size-indication-mode 1) | |
(global-prettify-symbols-mode 1) | |
(global-visual-line-mode 1) | |
(fringe-mode '(nil . 2)) | |
(setq-default tab-width 4 | |
show-trailing-whitespace 1 | |
delete-old-versions 1) | |
(setq show-paren-style 'parenthesis | |
show-paren-delay 1.0 | |
inhibit-startup-message 1 | |
inhibit-echo-area-message 1 | |
completion-ignore-case 1 | |
read-buffer-completion-ignore-case 1 | |
real-file-name-completion-ignore-case 1 | |
disabled-command-function nil | |
use-dialog-box nil | |
confirm-nonexistent-file-or-buffer nil) | |
(require 'package) | |
(package-initialize) | |
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) | |
(defun user-packages-install () | |
(dolist (package user-packages-list) | |
(unless (package-installed-p package) | |
(package-install package)))) | |
(unless package-archive-contents | |
(package-refresh-contents) | |
(user-packages-install)) | |
(require 'uniquify) | |
(require 'recentf) | |
(recentf-mode 1) | |
(require 'savehist) | |
(savehist-mode 1) | |
(require 'saveplace) | |
(setq-default save-place 1) | |
(require 'flyspell) | |
(add-hook 'text-mode-hook #'turn-on-flyspell) | |
(add-hook 'prog-mode-hook #'flyspell-prog-mode) | |
(require 'ispell) | |
(setq ispell-dictionary "en_GB") | |
(require 'eldoc) | |
(add-hook 'emacs-lisp-mode-hook #'turn-on-eldoc-mode) | |
(require 'hideshow) | |
(defun display-code-line-count (ov) | |
(when (eq 'code (overlay-get ov 'hs)) | |
(overlay-put ov 'display | |
(format "... / %d" (count-lines (overlay-start ov) | |
(overlay-end ov)))))) | |
(setq hs-hide-comment nil | |
hs-isearch-open 1 | |
hs-set-up-overlay #'display-code-line-count) | |
(add-hook 'prog-mode-hook #'hs-minor-mode) | |
(global-set-key (kbd "M-+") #'hs-toggle-hiding) | |
(require 'ido) | |
(ido-mode 1) | |
(ido-everywhere 1) | |
(setq ido-enable-flex-matching 1 | |
ido-use-virtual-buffers 1 | |
ido-create-new-buffer 'always | |
ido-case-fold 1 | |
ido-show-dot-for-dired 1) | |
(require 'ibuffer) | |
(require 'ibuf-ext) | |
(setq ibuffer-show-empty-filter-groups nil | |
ibuffer-default-sorting-mode 'filename/process | |
ibuffer-sorting-mode 'recency | |
ibuffer-expert 1 | |
ibuffer-always-show-last-buffer 1 | |
ibuffer-display-summary 1 | |
ibuffer-case-fold-search 1 | |
ibuffer-old-time 24 | |
ibuffer-truncate-lines 1 | |
ibuffer-use-header-line 1 | |
ibuffer-abbrev-list `((,(expand-file-name user-emacs-directory) . "~/.emacs.d/")) | |
ibuffer-saved-filter-groups `(("default" | |
("Configuration" | |
(or (filename . ,(expand-file-name user-emacs-directory)) | |
(filename . ,(expand-file-name "~/.bashrc")) | |
(filename . ,(expand-file-name "~/.screenrc")))) | |
("Projects" | |
(filename . ,(expand-file-name user-projects-directory))) | |
("Documents" | |
(filename . ,(expand-file-name user-documents-directory))) | |
("Miscellaneous" | |
(or (name . "\\*scratch\\*$") | |
(mode . ibuffer-mode) | |
(mode . customize-mode) | |
(mode . Custom-mode) | |
(mode . help-mode) | |
(mode . messages-buffer-mode)))))) | |
(defun custom-ibuffer () | |
(ibuffer-auto-mode 1) | |
(ibuffer-switch-to-saved-filter-groups "default")) | |
(add-hook 'ibuffer-mode-hook #'custom-ibuffer) | |
(global-set-key (kbd "C-x C-b") #'ibuffer) | |
(require 'dired) | |
(require 'dired-x) | |
(setq dired-listing-switches "--color=auto -DaGghlv --group-directories-first --time-style=long-iso" | |
dired-dwim-target 1 | |
dired-omit-files (concat dired-omit-files "\\|^\\..+$")) | |
(defun custom-dired-bindings () | |
(define-key dired-mode-map (kbd "<return>") #'dired-find-alternate-file) | |
(define-key dired-mode-map (kbd "^") #'(lambda () (interactive) (find-alternate-file "..")))) | |
(defun custom-dired () | |
(custom-dired-bindings) | |
(dired-hide-details-mode) | |
(dired-omit-mode)) | |
(add-hook 'dired-mode-hook #'custom-dired) | |
(require 'org) | |
(setq org-return-follows-link 1 | |
org-completion-use-ido 1 | |
org-cycle-separator 1 | |
org-directory user-documents-directory | |
org-default-notes-file user-notes-file | |
org-agenda-include-diary nil | |
org-agenda-inhibit-startup 1 | |
org-agenda-span 'month | |
org-agenda-files `(,(expand-file-name user-notes-file)) | |
org-confirm-babel-evaluate nil | |
org-src-fontify-natively 1 | |
org-src-tab-acts-natively 1 | |
org-export-in-background 1 | |
org-export-with-toc nil | |
org-export-with-tasks nil | |
org-export-with-todo-keywords nil | |
org-latex-listings 1 | |
org-tag-alist '(("NOTES" . ?n) | |
("TASKS" . ?t)) | |
org-capture-templates '(("N" "Note" entry (file+headline (expand-file-name user-notes-file) "Notes") | |
"*** %^{Title} %^g\n%^{Text}\n\n" :empty-lines 1 :immediate-finish 1) | |
("T" "Task" entry (file+headline (expand-file-name user-notes-file) "Tasks") | |
"*** TODO %^{Description} %^g\n%^{Text}\n\n" :empty-lines 1 :immediate-finish 1))) | |
(add-to-list 'org-latex-packages-alist '("" "listings")) | |
(add-to-list 'org-latex-packages-alist '("" "color")) | |
(org-babel-do-load-languages 'org-babel-do-load-languages | |
'((emacs-lisp . t) | |
(sh . t))) | |
(defun surrounded-by-p (char) | |
(save-excursion | |
(and (forward-word -1) | |
(equal char (char-before)) | |
(forward-word 1) | |
(equal char (char-after))))) | |
(defun surround-word (char &optional force) | |
(save-excursion | |
(if (not (surrounded-by-p char)) | |
(progn | |
(forward-word 1) | |
(insert char) | |
(forward-word -1) | |
(insert char) | |
t) | |
(forward-word 1) | |
(delete-char 1) | |
(forward-word -1) | |
(delete-char -1) | |
nil))) | |
(defmacro org-propertise-word (prop char) | |
`(defun ,(intern (format "org-%s-word" prop)) (&optional force) | |
(interactive "p") | |
(surround-word ,char force))) | |
(org-propertise-word bold ?*) | |
(org-propertise-word italic ?/) | |
(org-propertise-word underline ?_) | |
(org-propertise-word verbatim ?~) | |
(org-propertise-word teletype ?=) | |
(defun custom-org-bindings () | |
(define-key org-mode-map (kbd "C-c b") #'org-bold-word) | |
(define-key org-mode-map (kbd "C-c i") #'org-italic-word) | |
(define-key org-mode-map (kbd "C-c u") #'org-underline-word) | |
(define-key org-mode-map (kbd "C-c v") #'org-verbatim-word) | |
(define-key org-mode-map (kbd "C-c t") #'org-teletype-word)) | |
(defun custom-org () | |
(org-toggle-pretty-entities) | |
(custom-org-bindings)) | |
(add-hook 'org-mode-hook #'custom-org) | |
(add-hook 'org-agenda-mode-hook #'hl-line-mode 'append) | |
(defun complete-string (source) | |
(cond | |
((fboundp #'auto-complete) (auto-complete source)) | |
(t (dabbrev-expand source)))) | |
(defun smart-tab () | |
(interactive) | |
(if (minibufferp) | |
(unless (minibuffer-complete) | |
(complete-string nil)) | |
(if mark-active | |
(indent-region (region-beginning) (region-end)) | |
(if (looking-at "\\_>") | |
(complete-string nil) | |
(indent-for-tab-command))))) | |
(global-set-key (kbd "TAB") #'smart-tab) | |
;; user-packages | |
(require 'magit) | |
(require 'gist) | |
(require 'undo-tree) | |
(setq undo-tree-history 1 | |
undo-tree-history-directory-alist `((".*" . ,(concat (expand-file-name user-emacs-directory) "undo-history")))) | |
(global-set-key (kbd "C-z") #'undo-tree-visualize) | |
(require 'browse-kill-ring) | |
(setq browse-kill-ring-highlight-inserted-item 1 | |
browse-kill-ring-show-preview 1) | |
(require 'adaptive-wrap) | |
(add-hook 'text-mode-hook #'adaptive-wrap-prefix-mode) | |
(require 'projectile) | |
(projectile-mode 1) | |
(require 'yasnippet) | |
(yas-global-mode 1) | |
(require 'auto-complete) | |
(ac-config-default) | |
(setq ac-auto-start nil | |
ac-auto-show-menu nil | |
ac-delay 1.0 | |
ac-candidate-limit 10) | |
(defun ac-add-yasnippet-source () | |
(add-to-list 'ac-sources 'ac-source-yasnippet)) | |
(add-hook 'prog-mode-hook #'ac-add-yasnippet-source) | |
(global-auto-complete-mode 1) | |
(require 'diminish) | |
(diminish 'flyspell-mode "") | |
(diminish 'visual-line-mode "") | |
(diminish 'yas-minor-mode "") | |
(diminish 'auto-complete-mode "") | |
(diminish 'hs-minor-mode "") | |
(diminish 'eldoc-mode "") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment