Modularize emacs config

Approximately coincides with the release of emacs 24.4, Though some
changes for the emacs 24.4 upgrade are not yet completed; specifically:
 * replace w3m with the now built in eww
 * no need to enable electric-indent-mode since it is now enabled by
   default
 * other things that I don't know about yet ...

Now the main changes are as follows:
 * Use .emacs.d/init.el for emacs start-up file instead of .emacs; this
   new init file is much shorter in summary does the following:
    - auto-loads packages installed using package.el using the
      package-initialize function
    - adds .emacs.d/site-lisp-extra to the load-path
    - sets a few variables and functions and then recursively loads all
      .el files in .emacs.d/config
    - contains all variables set by customize at the end of the file
 * All other configuration is written to files with appropriate names in
   .emacs.d/config; currently the concatenation of these files is the same
   as the .emacs in the last commit not including the sexp's that went
   into .emacs.d/init.el

Things that remain the same but are no less important to mention in
regards to the setup of this emacs configuration:
 * custom themes are stored in .emacs.d/themes
 * custom yasnippets are stored in .emacs.d/snippets
 * templates (used by .emacs.d/config/insert-templates.el to insert a
   comment at the beginning of certain files using auto-insert-mode) are
   located at .emacs.d/templates
   Note: I've been considering depreciating the use of auto-insert-mode
         to insert content into new files and instead use yasnippets.
         Further though is required.

Signed-off-by: Collin J. Doering <rekahsoft@gmail.com>
This commit is contained in:
Collin J. Doering 2014-10-23 04:09:14 -04:00 committed by Collin J. Doering
parent a9d362f8db
commit a8582a7d4e
27 changed files with 1632 additions and 1201 deletions

1201
.emacs

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,64 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: editing.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup isearch+
(require 'isearch+)
;; Setup bookmark+
(require 'bookmark+)
;; Setup ace-jump-mode
(autoload
'ace-jump-mode
"ace-jump-mode"
"Emacs quick move minor mode"
t)
(define-key global-map (kbd "C-c SPC") 'ace-jump-mode)
;; Setup expand-region ;; ELPA
(require 'expand-region)
(global-set-key (kbd "C-=") 'er/expand-region)
;; Setup multiple-cursons ;; ELPA
(require 'multiple-cursors)
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
(global-set-key (kbd "C->") 'mc/mark-next-like-this)
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this)
;; Setup fancy auto-complete
(require 'auto-complete-config) ;; ELPA
;;(add-to-list 'ac-dictionary-directories "/usr/share/emacs/site-lisp/auto-complete/ac-dict")
(ac-config-default)
;; Set trigger keys so yasnippet and auto-complete play nicely. If tab is pressed and the word at point exists
;; in yasnippet, then yassippet will be used; otherwise auto-complete will be used.
(ac-set-trigger-key "TAB")
(ac-set-trigger-key "<tab>")
;; Setup yasnippet-mode (not yasnippet-bundle)
(require 'yasnippet) ;; ELPA
(yas-load-directory "~/.emacs.d/elpa/yasnippet-20141017.1036")
(yas-load-directory "~/.emacs.d/snippets")
(yas-global-mode 1)
;; Enable flyspell-mode
(ac-flyspell-workaround)
;; Known Bug: flyspell-mode doesn't play nice with auto-complete-mode
;;(flyspell-mode)

21
.emacs.d/config/erc.el Normal file
View File

@ -0,0 +1,21 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: erc.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup ERC (ERC specific config located: .emacs.d/.ercrc)
;(require 'erc)

64
.emacs.d/config/eshell.el Normal file
View File

@ -0,0 +1,64 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: eshell.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; TODO: make a function to toggle the eshell; given a the universal argument the following can occur:
;; - if numerical then opens the nth scratch buffer "*eshell*<n>"
;; - if no args then open a new eshell
;; Bind a key to switch to eshell
(define-key ctl-x-4-map "e" 'eshell)
;; Force ediff sessions to run in the same frame
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
;; Set some eshell options
(setq eshell-scroll-to-bottom-on-input t)
;; *BROKEN*
;;(setq eshell-scroll-to-bottom-on-output t)
;; Commands that require a little more then a dumb-term
(setq eshell-visual-commands '("vi" "screen" "top" "less" "more" "lynx" "ncftp" "vim" "ncmpcpp" "irssi" "mc" "alsamixer" "/usr/bin/sudo"))
(defun eshell/catbuf (buffer-name)
"Given a buffer-name returns the contents of said buffer"
(interactive "bBuffer: ")
(save-excursion
(let ((code-buf (get-buffer buffer-name)))
(if (null code-buf) (concat "The buffer given \"" buffer-name "\" does not exist")
(set-buffer code-buf)
(buffer-string)))))
(defun eshell/find-file-ext (fp)
"Finds a single file or a list of files matching a regxp and returns a list of their respective buffers"
(interactive)
(if (listp fp) (mapcar #'find-file fp)
(list (find-file fp))))
(defun eshell/ff (fp &rest other-fps)
"A FP is either a file path (relative or absolute) or a regexp which eshell converts to a
list of stings (file paths) which match the regexp (likely using file-expand-widcards).
eshell/ff takes one or more file paths and opens them in the current buffer returning a list
consisting of lists of buffers opened by each respective FP argument."
(interactive)
(mapcar #'eshell/find-file-ext (cons fp other-fps)))
(defun eshell/clear ()
"04Dec2001 - sailor, to clear the eshell buffer."
(interactive)
(let ((inhibit-read-only t))
(erase-buffer)))

View File

@ -0,0 +1,26 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: flyspell-mode.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
(require 'flyspell)
;; activate flyspell-prog-mode for all buffers used for programming
(activate-mode-with-hooks 'flyspell-prog-mode code-modes)
;; use flyspell-mode in 'non-code' text like modes (Eg. org-mode, markup modes and magit-log-edit-mode)
(activate-mode-with-hooks 'flyspell-mode '(text-mode-hook markdown-mode-hook latex-mode-hook org-mode-hook magit-log-edit-mode-hook mu4e-compose-mode-hook))

View File

@ -0,0 +1,35 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: haskell.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup haskell-mode ;; ELPA
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
;;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent)
;; Set inferior haskell default executable
(setq haskell-program-name "/usr/bin/ghci")
;; Setup hlint ;; ELPA
;; (require 'flymake-hlint)
;; (add-hook 'haskell-mode-hook 'flymake-hlint-load)
;; Setup ghc (requires ghc-mod from cabal) ;; ELPA
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))

51
.emacs.d/config/helm.el Normal file
View File

@ -0,0 +1,51 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: helm.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Use helm-mode
(require 'helm-config)
(helm-mode 1)
;; Thanks to: http://www.emacswiki.org/emacs/Yasnippet#toc7
(defun shk-yas/helm-prompt (prompt choices &optional display-fn)
"Use helm to select a snippet. Put this into `yas/prompt-functions.'"
(interactive)
(setq display-fn (or display-fn 'identity))
(if (require 'helm-config)
(let (tmpsource cands result rmap)
(setq cands (mapcar (lambda (x) (funcall display-fn x)) choices))
(setq rmap (mapcar (lambda (x) (cons (funcall display-fn x) x)) choices))
(setq tmpsource
(list
(cons 'name prompt)
(cons 'candidates cands)
'(action . (("Expand" . (lambda (selection) selection))))
))
(setq result (helm-other-buffer '(tmpsource) "*helm-select-yasnippet"))
(if (null result)
(signal 'quit "user quit!")
(cdr (assoc result rmap))))
nil))
;; Setup helm-swoop *TODO* key bindings?
;; See: https://github.com/ShingoFukuyama/helm-swoop
(require 'helm-swoop) ;; ELPA
;; Setup helm-ls-git to quickly select files from the current vc dir
(require 'helm-ls-git)
(global-set-key (kbd "C-x C-d") 'helm-browse-project)

166
.emacs.d/config/ibuffer.el Normal file
View File

@ -0,0 +1,166 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: ibuffer.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup ibuffer (interactive buffer)
(global-set-key "\C-x\C-b" 'ibuffer)
(autoload 'ibuffer "ibuffer" "List buffers." t)
;; Require ibuffer extentions (used for ibuffer-never-show-predicates)
(require 'ibuf-ext) ;; Built-in
(add-to-list 'ibuffer-never-show-predicates "^\\*slime-events\\*$")
(add-to-list 'ibuffer-never-show-predicates "^\\*Completions\\*$")
(add-to-list 'ibuffer-never-show-predicates "^\\*tramp/.*\\*$")
;; Enable ibuffer-vc extension
;; TODO: enable along side my pre existing filter groups using (ibuffer-vc-generate-filter-groups-by-vc-root).
;; Also add a key binding to switch to the vc-ibuffer (note: to switch back to the default ibuffer list use / R in ibuffer-mode
(require 'ibuffer-vc)
;; Add vc-status line to ibuffer
(setq ibuffer-formats '((mark modified read-only vc-status-mini " "
(name 18 18 :left :elide) " "
(size 9 -1 :right) " "
(mode 16 16 :left :elide) " "
(vc-status 16 16 :left) " "
filename-and-process)
(mark " " (name 16 -1) " " filename)))
;; Filter ibuffers (similar to gnus)
(setq ibuffer-saved-filter-groups
'(("default"
("dired" (mode . dired-mode))
("config" (or
(name . "^\\.xinitrc")
(name . "^\\.bashrc")
(name . "^\\.bash_profile")
(name . "^\\.zshrc")
(name . "^xmonad\\.hs")
(name . "^\\.emacs")
(name . "^\\.gnus")
(name . "^\\.xmobarrc")
(name . "^\\.Xdefaults")
(name . "^\\.Xresources")
(name . "^\\.screenrc")
(name . "^\\.xbindkeysrc")
(name . "^\\.racketrc")
(name . "^\\.ghci")
(name . "\w*\\.service")
(name . "\w*\\.socket")
(name . "^dunstrc")
(name . "^\\.mpdconf")
(name . "^\\.conkerorrc")))
("markup" (or
(mode . xml-mode)
(mode . html-mode)
(mode . haml-mode)
(mode . markdown-mode)
(mode . latex-mode)))
("code" (or
(mode . c-mode)
(mode . c++-mode)
(mode . perl-mode)
(mode . lua-mode)
(mode . clojure-mode)
(mode . java-mode)
(mode . python-mode)
(mode . ruby-mode)
(mode . emacs-lisp-mode)
(mode . lisp-mode)
(mode . sh-mode)
(mode . scheme-mode)
(mode . haskell-mode)
(mode . scala-mode)
(mode . php-mode)
(mode . css-mode)
(mode . sass-mode)
(mode . scss-mode)
(mode . js-mode)
(mode . sql-mode)))
("REPL" (or
(mode . geiser-repl-mode)
(mode . slime-repl-mode)
(mode . inferior-python-mode)
(mode . ipython-mode)
(mode . inferior-haskell-mode)
(mode . inferior-lisp-mode)
(mode . eshell-mode)
(mode . inferior-scheme-mode)
(mode . inferior-tcl)
(mode . erlang-shell-mode)
(mode . sql-interactive-mode)))
("git" (or
(name . "^\\*magit: .*\\*$") ;; this regxp could be better
(mode . magit-mode)
(mode . magit-diff-mode)
(mode . magit-log-mode)
(mode . magit-commit-mode)
(mode . magit-log-mode)
(mode . magit-wazzup-mode)
(mode . magit-process-mode)
(mode . magit-status-mode)
(mode . magit-branch-manager-mode)))
("bookmarks" (or
(name . "^\\*Bookmark List\\*$")))
("help" (or
(mode . help-mode)
(mode . apropos-mode)
(mode . info-mode)
(mode . man-mode)))
("messages" (or
(name . "^\\*geiser messages\\*$")
(name . "^\\*Shell Command Output\\*$")))
("helm" (name . "^\\*helm.*\\*$"))
("planner" (or
(name . "^\\*Calendar\\*$")
(name . "^diary$")
(mode . muse-mode)))
("emacs" (or
(name . "^\\*scratch\\*$")
(name . "^\\*Messages\\*$")
(name . "^\\*Backtrace\\*$")
(name . "^\\*Compile-Log\\*$")
(mode . ediff-meta-mode)
(mode . browse-kill-ring-mode)
(mode . package-menu-mode)
(mode . compilation-mode)))
("org" (or
(mode . org-mode)
(name . "^\\.org$")
(name . "^\\.org.gpg$")))
("IRC" (mode . rcirc-mode))
("mu4e" (or
(mode . mu4e-main-mode)
(mode . mu4e-compose-mode)
(mode . mu4e-headers-mode)
(mode . mu4e-view-mode)
(name . "^mu4e-update$")
(name . "^\\*trace of SMTP session to .*\\*$")))
("gnus" (or
(mode . message-mode)
(mode . bbdb-mode)
(mode . mail-mode)
(mode . gnus-group-mode)
(mode . gnus-summary-mode)
(mode . gnus-article-mode)
(name . "^\\.bbdb$")
(name . "^\\.newsrc-dribble"))))))
(add-hook 'ibuffer-mode-hook
(lambda ()
(ibuffer-switch-to-saved-filter-groups "default")))

21
.emacs.d/config/ido.el Normal file
View File

@ -0,0 +1,21 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: ido.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup ido-mode *DEPRECIATED* in favor of helm-mode
;;(ido-mode t)

View File

@ -0,0 +1,124 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: insert-templates.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;;
;; Considering phasing this out in-place of yasnippet
;;
;; Enable autoinsert feature to automagically insert
(require 'autoinsert) ;; Built-in
(auto-insert-mode) ;;; Adds hook to find-files-hook
(setq auto-insert-directory "~/.emacs.d/templates/") ;;; Or use custom, *NOTE* Trailing slash important
(setq auto-insert-query nil) ;;; If you don't want to be prompted before insertion
(setq autoinsert-tpl-author "Collin J. Doering")
(setq autoinsert-tpl-email "collin.doering@rekahsoft.ca")
;; auto-insert options template and auto-completion
(add-hook 'find-file-hooks 'auto-insert)
(setq auto-insert-directory (concat (getenv "HOME") "/.emacs.d/templates/"))
(setq auto-insert-alist
'(("\\.c$" . ["c-template.c" auto-update-generic-template])
("\\.cc\\|cpp$" . ["cpp-template.cc" auto-update-generic-template])
("\\.php$" . ["php-template.php" auto-update-generic-template])
("\\.rb$" . ["ruby-template.rb" auto-update-generic-template])
("\\.lua$" . ["lua-template.lua" auto-update-generic-template])
("\\.erl$" . ["erlang-template.erl" auto-update-generic-template])
("\\.sh$" . ["shell-template.sh" auto-update-generic-template])
("\\.rkt$" . ["racket-template.rkt" auto-update-generic-template])
("\\.scm$" . ["scheme-template.scm" auto-update-generic-template])
("\\.clj$" . ["clojure-template.clj" auto-update-generic-template])
("\\.lisp$" . ["lisp-template.lisp" auto-update-generic-template])
("\\.el$" . ["emacs-lisp-template.el" auto-update-generic-template])
("\\.hs$" . ["haskell-template.hs" auto-update-generic-template])
("\\.ml$" . ["ocaml-template.ml" auto-update-generic-template])
("\\.sml$" . ["sml-template.sml" auto-update-generic-template])
("\\.py$" . ["python-template.py" auto-update-generic-template])
("\\.java$" . ["java-template.java" auto-update-generic-template])
("\\.scala$" . ["scala-template.scala" auto-update-generic-template])
("\\.htm\\|html$" . ["html-template.html" auto-update-generic-template])
("\\.js$" . ["java-script-template.js" auto-update-generic-template])
("\\.css$" . ["css-template.css" auto-update-generic-template])
("\\.scss$" . ["scss-template.scss" auto-update-generic-template])
("\\.sass$" . ["sass-template.sass" auto-update-generic-template])
("\\.haml$" . ["haml-template.haml" auto-update-generic-template])
("\\.markdown$" . ["markdown-template.markdown" auto-update-generic-template])
("\\.tex$" . ["latex-template.tex" auto-update-generic-template])))
(setq auto-insert 'other)
;; TODO: remove interactive-ness from auto-update-generic-template as it's not needed
;; and there only as a workaround. Python and PHP templates are not filled for
;; some unknown reason.
(defun auto-update-generic-template ()
(interactive)
(save-excursion
;; Replace @!@FILENAME@!@ with file name sans suffix
(while (search-forward "@!@FILENAME@!@" nil t)
(save-restriction
(narrow-to-region (match-beginning 0) (match-end 0))
(replace-match (file-name-sans-extension (file-name-nondirectory buffer-file-name)) t))))
(save-excursion
;; Replace @!@FILE@!@ with file name
(while (search-forward "@!@FILE@!@" nil t)
(save-restriction
(narrow-to-region (match-beginning 0) (match-end 0))
(replace-match (file-name-nondirectory buffer-file-name) t))))
(save-excursion
;; replace @!@DATE@!@ with today's date
(while (search-forward "@!@DATE@!@" nil t)
(save-restriction
(narrow-to-region (match-beginning 0) (match-end 0))
(replace-match "")
(insert-date))))
(save-excursion
;; Replace @!@YEAR@!@ with the current year
(while (search-forward "@!@YEAR@!@" nil t)
(save-restriction
(narrow-to-region (match-beginning 0) (match-end 0))
(replace-match (format-time-string "%Y" (current-time))))))
(save-excursion
;; Replace @!@AUTHOR@!@ with the current year
(while (search-forward "@!@AUTHOR@!@" nil t)
(save-restriction
(narrow-to-region (match-beginning 0) (match-end 0))
(replace-match "")
(insert-author))))
(save-excursion
;; Replace @!@EMAIL@!@ with the current year
(while (search-forward "@!@EMAIL@!@" nil t)
(save-restriction
(narrow-to-region (match-beginning 0) (match-end 0))
(replace-match "")
(insert-author-email)))))
;; Insert current date at cursor in the currently active buffer
(defun insert-date ()
"Insert today's date into buffer"
(interactive)
(insert (format-time-string "%b %e, %Y" (current-time))))
(defun insert-author ()
"Insert author name at point"
(interactive)
(insert autoinsert-tpl-author))
(defun insert-author-email ()
"Insert author email at point"
(interactive)
(insert autoinsert-tpl-email))

37
.emacs.d/config/latex.el Normal file
View File

@ -0,0 +1,37 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: latex.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup Auctex
(load "auctex.el" nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)
(add-hook 'LaTeX-mode-hook 'visual-line-mode)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
;; Use auto-complete in latex buffers
(eval-after-load "auto-complete"
'(add-to-list 'ac-modes 'latex-mode))
(require 'tex)
(TeX-global-PDF-mode t)

View File

@ -0,0 +1,34 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: linum-mode.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 21, 2014
;; linum mode for pretty line numbering
(require 'linum) ;; Built-in
;; right justify the numbers and add a space between them and the text in the given buffer
(setq linum-format
(lambda (line)
(propertize (format
(let ((w (length (number-to-string
(count-lines (point-min) (point-max))))))
(concat "%" (number-to-string w) "d "))
line)
'face 'linum)))
;; activate linum-mode in all buffers used for programming
(activate-mode-with-hooks (lambda () (linum-mode 1)) code-modes)

135
.emacs.d/config/lispy.el Normal file
View File

@ -0,0 +1,135 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: lispy.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Set default lisp program
(setq inferior-lisp-program "/usr/bin/sbcl")
;; Since there is no support for the kawa implementation of scheme
(defun run-kawa ()
"Run Kawa Scheme in an Emacs buffer."
(interactive)
(require 'cmuscheme) ;; Built-in
(let ((scheme-program-name "/usr/bin/kawa"))
(run-scheme scheme-program-name)))
;; Set usable lisp implementations
(setq slime-lisp-implementations
'((sbcl ("/usr/bin/sbcl" ""))
(clisp ("/usr/bin/clisp" "-K base"))
(clojure ("/usr/bin/clj" ""))))
;; Function to start and/or connect to slime
(defun start-slime ()
(interactive)
(unless (slime-connected-p)
(save-excursion (slime))))
;; Setup slime mode *TODO* drop in slime from ELPA
(add-to-list 'load-path "/usr/share/emacs/site-lisp/slime/")
(require 'slime) ;; AUR: emacs-slime-cvs
(slime-setup '(slime-fancy))
;; Setup swank-clojure-mode
(add-to-list 'load-path "/usr/share/emacs/site-lisp/swank-clojure")
(require 'swank-clojure) ;; ELPA
(add-hook 'clojure-mode-hook
'(lambda ()
(define-key clojure-mode-map "\C-c\C-e" 'lisp-eval-last-sexp)
(define-key clojure-mode-map "\C-x\C-e" 'lisp-eval-last-sexp)))
;; TODO: functionality needs to be re-written; assoc library obsolete
;; (eval-after-load "slime"
;; `(progn
;; (require 'assoc) ;; Built-in (OBSOLETE)
;; (setq swank-clojure-classpath
;; (list "/usr/share/clojure/clojure.jar"
;; "/usr/share/clojure/clojure-contrib.jar"
;; "/usr/share/emacs/site-lisp/swank-clojure/src"))
;; (aput 'slime-lisp-implementations 'clojure
;; (list (swank-clojure-cmd) :init 'swank-clojure-init))))
;; Setup enhanced scheme/racket mode consisting of geiser, quack and paredit
;; Setup geiser
(require 'geiser) ;; ELPA
;; Setup auto-completion for geiser (ELPA)
(require 'ac-geiser)
(add-hook 'geiser-mode-hook 'ac-geiser-setup)
(add-hook 'geiser-repl-mode-hook 'ac-geiser-setup)
(eval-after-load "auto-complete"
'(add-to-list 'ac-modes 'geiser-repl-mode))
;; Make struct stand out in scheme-mode for racket
(defun racket-faces ()
(font-lock-add-keywords nil
'(("(struct \\(\\sw+\\)" 1 font-lock-function-name-face)
("(\\(struct\\)" 1 font-lock-keyword-face)
("(\\\\)" 1 font-lock-function-name-face))))
(add-hook 'scheme-mode-hook 'racket-faces)
(add-hook 'geiser-repl-mode-hook 'racket-faces)
;; Setup scribble mode (custom .el from ~/.emacs.d/site-lisp-extra)
;; See: http://www.neilvandyke.org/scribble-emacs/
(require 'scribble)
;; Setup quack
(require 'quack) ;; ELPA
;; Setup paredit
(require 'paredit) ;; ELPA
(defvar lispy-langs-hooks '(lisp-mode-hook lisp-interaction-mode-hook emacs-lisp-mode-hook scheme-mode-hook c-mode-hook c++-mode-hook python-mode-hook geiser-repl-mode-hook))
;; Apply paredit-mode to modes listed in lispy-langs-hooks
(activate-mode-with-hooks (lambda () (paredit-mode 1)) lispy-langs-hooks)
;; Highlight sexp's in lispy languages
(activate-mode-with-hooks (lambda () (highlight-sexp-mode)) lispy-langs-hooks)
;; Paredit binds to C-j globally and thus disables the binding to
;; eval-print-last-sexp in emacs-lisp-mode (e.g *scratch*, etc..)
(add-hook 'emacs-lisp-mode-hook
'(lambda ()
(define-key emacs-lisp-mode-map "\C-xj" 'eval-print-last-sexp)))
;; Match paren's in given modes [to apply globally do (show-paren-mode 1)]
(activate-mode-with-hooks (lambda () (show-paren-mode)) lispy-langs-hooks)
;; Highlight paren's near point
(require 'highlight-parentheses)
(activate-mode-with-hooks (lambda () (highlight-parentheses-mode)) lispy-langs-hooks)
;; Setup rainbow-delimiters
(require 'rainbow-delimiters) ;; ELPA
(activate-mode-with-hooks 'rainbow-delimiters-mode-enable lispy-langs-hooks)
;;(global-rainbow-delimiters-mode) ;; breaks font coloring in erc for some reason?
;; upcomming functionallity: toggle paredit-mode due to annoying things like wrapping parens when a mistake is made
;; known issue..if paredit-mode is turned on when there are unbalanced parens an error is reported
(defun toggle-paredit-mode ()
(let ((active-minor-modes (list)))
(mapatoms (lambda (sym)
(when (and (symbolp sym) (assq sym minor-mode-alist) (symbol-value sym))
(push sym active-minor-modes))))
(if (member 'paredit-mode active-minor-modes) (paredit-mode -1) (paredit-mode 1))))
(setq geiser-repl-use-other-window nil)
(setq geiser-active-implementations '(racket guile))

127
.emacs.d/config/misc.el Normal file
View File

@ -0,0 +1,127 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: misc.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 21, 2014
;; stop renaming of saved files to filename~ which ends up breaking hardlinks
(setq backup-by-copying-when-linked t)
;; Turn off indentation (use spaces instead)
(setq-default indent-tabs-mode nil)
;; Turn on electric-indent-mode
(electric-indent-mode 1)
;; Single spaces denote end sentences for use with sentence commands
(setq sentence-end-double-space nil)
;; Show column number in status bar
(column-number-mode)
;; Set the fill-column for text filling
(setq fill-column 95)
;; fixes color output issues; see: http://wiki.archlinux.org/index.php/Emacs#Colored_output_issues
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
;; Automatically open some config files with an associated major mode
;; Note: regexp's used to match buffer filenames are intentionally left
;; unbounded (without '$') to catch cases where the filename may
;; take the format: filename~
(add-to-list 'auto-mode-alist '("\\.conkerorrc" . js-mode))
(add-to-list 'auto-mode-alist '("\\.xmobarrc" . haskell-mode))
(add-to-list 'auto-mode-alist '("\\.screenrc" . conf-mode))
(add-to-list 'auto-mode-alist '("\\.stumpwmrc" . lisp-mode))
(add-to-list 'auto-mode-alist '("\w*\\.service" . conf-mode))
(add-to-list 'auto-mode-alist '("\w*\\.socket" . conf-mode))
(add-to-list 'auto-mode-alist '("\\.mpdconf" . conf-mode))
(add-to-list 'auto-mode-alist '("dunstrc" . conf-mode))
;; Define some alias' for commonly M-x'ed commands
(defalias 'run-sql 'sql-product-interactive)
;; Make C-x O cycle backwards a pane (oposite to C-x o)
(global-set-key "\C-xO" #'(lambda ()
(interactive)
(other-window -1)))
;; Setup browse-key-ring
(require 'browse-kill-ring) ;; ELPA
(global-set-key "\C-cy" 'browse-kill-ring)
;; Enjoy a game of Sudoku on some downtime
(require 'sudoku) ;; ELPA
;; setup magit for git (being used though elpa [auto-loaded])
;;(require 'magit) ;; ELPA
(global-set-key "\C-xS" 'magit-status)
(setq magit-commit-signoff t)
;; Thing about replacing this as I never use it
;;setup vc-darcs ;; ELPA
;(add-to-list 'vc-handled-backends 'DARCS)
;(autoload 'vc-darcs-find-file-hook "vc-darcs")
;(add-hook 'find-file-hooks 'vc-darcs-find-file-hook)
;; Setup PKGBUILD mode ;; Community (archlinux)
(autoload 'pkgbuild-mode "pkgbuild-mode.el" "PKGBUILD mode." t)
(setq auto-mode-alist (append '(("/PKGBUILD$" . pkgbuild-mode)) auto-mode-alist))
;; Setup coq-mode ;; AUR: coq
(require 'coq)
;; Setup emacs-lua-mode
(setq auto-mode-alist (cons '("\.lua$" . lua-mode) auto-mode-alist)) ;; ELPA
(autoload 'lua-mode "lua-mode" "Lua editing mode." t)
;; Setup emacs-erlang-mode (ELPA)
(setq erlang-root-dir "/usr/lib/erlang")
(setq exec-path (cons "/usr/lib/erlang/bin" exec-path))
(setq auto-mode-alist (append '(("\.erl$" . erlang-mode)) auto-mode-alist))
;; setup pastebin.el for use with pastebin.com *BROKEN*
;(require 'pastebin) ;; ELPA
;; yasnippet, auto-complete-mode and flyspell do not play nicely with one another due to
;; a conflict with the context of their tab binding *OLD*
;; hideshow-org being depreciated in my config due to conflicting key bindings with yasnippet
;; and flyspell *TODO*
;; Make hs-minor-mode act like org-mode for code folding
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp/hideshow-org")
;; (require 'hideshow-org)
;; (global-set-key "\C-ch" 'hs-org/minor-mode)
;; Add automatic activation of hs-org/minor-mode in the below major-modes
;; (add-hook 'c-mode-common-hook 'hs-org/minor-mode)
;; (add-hook 'emacs-lisp-mode-hook 'hs-org/minor-mode)
;; (add-hook 'java-mode-hook 'hs-org/minor-mode)
;; (add-hook 'lisp-mode-hook 'hs-org/minor-mode)
;; (add-hook 'sh-mode-hook 'hs-org/minor-mode)
;; (add-hook 'python-mode-hook 'hs-org/minor-mode)
;; (add-hook 'scheme-mode-hook 'hs-org/minor-mode)
;; This is now done ine ~/.Xresources
;; Remove menu-bar, tool-bar, and scroll-bars
(menu-bar-mode -1)
;;(tool-bar-mode -1)
;;(scroll-bar-mode -1)
;;(set-default-font "Terminus-12")
;; Stop startup screen
(setq inhibit-startup-screen t)

160
.emacs.d/config/mu4e.el Normal file
View File

@ -0,0 +1,160 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: mu4e.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup email using mu4e (offlineimap in the background) and smtpmail
(require 'mu4e)
(require 'smtpmail)
(setq mail-user-agent 'mu4e-user-agent
mu4e-get-mail-command "mbsync -a"
mu4e-update-interval 300
mu4e-user-mail-address-list (list "collin.doering@gmail.com" "rekahsoft@gmail.com")
message-kill-buffer-on-exit t
mu4e-use-fancy-chars t
mu4e-sent-messages-behavior 'delete
mu4e-confirm-quit nil
mu4e-headers-date-format "%d/%b/%Y %H:%M" ; date format
message-signature "Collin J. Doering\n\nhttp://rekahsoft.ca\nhttp://blog.rekahsoft.ca\n"
mu4e-compose-signature message-signature
message-signature-insert-empty-line t
mu4e-html2text-command "pandoc -f html -t asciidoc"
mu4e-view-show-images t
mu4e-view-image-max-width 800
;; Default email for smtp and mu4e
user-mail-address "collin.doering@gmail.com"
;; Setup mu4e default sent and draft folders
mu4e-sent-folder "/collin.doering-gmail/[Gmail].Sent"
mu4e-drafts-folder "/collin.doering-gmail/[Gmail].Drafts"
;; Set location of maildir
mu4e-maildir "~/.mail"
;; Setup smtp defaults
user-full-name "Collin J. Doering"
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 587
smtpmail-auth-credentials "~/.authinfo.gpg"
smtpmail-stream-type 'starttls
smtpmail-debug-info t
message-send-mail-function 'smtpmail-send-it)
;; Override default mu4e-bookmarks with custom ones
(setq mu4e-bookmarks
'(("flag:unread AND NOT flag:trashed AND NOT maildir:/collin.doering-gmail/[Gmail].Spam AND NOT maildir:/rekahsoft-gmail/[Gmail].Spam" "Unread messages" ?u)
("date:today..now AND NOT maildir:/collin.doering-gmail/[Gmail].Spam AND NOT maildir:/rekahsoft-gmail/[Gmail].Spam" "Today's messages" ?t)
("date:7d..now AND NOT maildir:/collin.doering-gmail/[Gmail].Spam AND NOT maildir:/rekahsoft-gmail/[Gmail].Spam" "Last 7 days" ?w)
("mime:image/*" "Messages with images" ?p)
;; For collin.doering-gmail maildir
("flag:unread AND maildir:/collin.doering-gmail/INBOX AND NOT flag:trashed AND NOT maildir:/collin.doering-gmail/[Gmail].Spam" "Unread messages to collin.doering-gmail" ?z)
("date:today..now AND maildir:/collin.doering-gmail/INBOX AND NOT maildir:/collin.doering-gmail/[Gmail].Spam" "Today's messages to collin.doering-gmail" ?x)
("date:7d..now AND maildir:/collin.doering-gmail/INBOX AND NOT maildir:/collin.doering-gmail/[Gmail].Spam" "Last 7 days (collin.doering-gmail)" ?c)
("mime:image/* AND maildir:/collin.doering-gmail/INBOX" "Messages with images to collin.doering-gmail" ?v)
;; For rekahsoft-gmail maildir
("flag:unread AND maildir:/rekahsoft-gmail/INBOX AND NOT flag:trashed AND NOT maildir:/rekahsoft-gmail/[Gmail].Spam" "Unread messages to rekahsoft-gmail" ?m)
("date:today..now AND maildir:/rekahsoft-gmail/INBOX AND NOT maildir:/rekahsoft-gmail/[Gmail].Spam" "Today's messages to rekahsoft-gmail" ?,)
("date:7d..now AND maildir:/rekahsoft-gmail/INBOX AND NOT maildir:/rekahsoft-gmail/[Gmail].Spam" "Last 7 days (rekahsoft-gmail)" ?.)
("mime:image/* AND maildir:/rekahsoft-gmail/INBOX" "Messages with images to rekahsoft-gmail" ?/)))
;; TODO: consolidate my-mu4e-account-alist and smtp-accounts
(defvar my-mu4e-account-alist
'(("collin.doering-gmail"
(mu4e-sent-folder "/collin.doering-gmail/[Gmail].Sent")
(mu4e-drafts-folder "/collin.doering-gmail/[Gmail].Drafts")
(user-mail-address "collin.doering@gmail.com"))
("rekahsoft-gmail"
(mu4e-sent-folder "/rekahsoft-gmail/[Gmail].Sent")
(mu4e-drafts-folder "/rekahsoft-gmail/[Gmail].Drafts")
(user-mail-address "rekahsoft@gmail.com"))))
(defun my-mu4e-set-account ()
"Set the account for composing a message."
(let* ((account
(if mu4e-compose-parent-message
(let ((maildir (mu4e-message-field mu4e-compose-parent-message :maildir)))
(string-match "/\\(.*?\\)/" maildir)
(match-string 1 maildir))
(completing-read (format "Compose with account: (%s) "
(mapconcat #'(lambda (var) (car var)) my-mu4e-account-alist "/"))
(mapcar #'(lambda (var) (car var)) my-mu4e-account-alist)
nil t nil nil (caar my-mu4e-account-alist))))
(account-vars (cdr (assoc account my-mu4e-account-alist))))
(if account-vars
(mapc #'(lambda (var)
(set (car var) (cadr var)))
account-vars)
(error "No email account found"))))
(add-hook 'mu4e-compose-pre-hook 'my-mu4e-set-account)
;; Attach files using dired using 'C-c RET C-a'
;; Thanks to: http://www.djcbsoftware.nl/code/mu/mu4e/Attaching-files-with-dired.html#Attaching-files-with-dired
(require 'gnus-dired)
;; make the `gnus-dired-mail-buffers' function also work on
;; message-mode derived modes, such as mu4e-compose-mode
(defun gnus-dired-mail-buffers ()
"Return a list of active message buffers."
(let (buffers)
(save-current-buffer
(dolist (buffer (buffer-list t))
(set-buffer buffer)
(when (and (derived-mode-p 'message-mode)
(null message-sent-message-via))
(push (buffer-name buffer) buffers))))
(nreverse buffers)))
(setq gnus-dired-mail-mode 'mu4e-user-agent)
(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
;; Setup mu4e-maildirs-extension
(require 'mu4e-maildirs-extension)
(mu4e-maildirs-extension)
(setq smtp-accounts
'(("collin.doering@gmail.com" "Collin J. Doering" "smtp.gmail.com")
("rekahsoft@gmail.com" "rekahsoft" "smtp.gmail.com")))
(defun my-change-smtp ()
(save-excursion
(loop with from = (save-restriction
(message-narrow-to-headers)
(message-fetch-field "from"))
for (addr fname server) in smtp-accounts
when (string-match addr from)
do (setq user-mail-address addr
user-full-name fname
smtpmail-smtp-server server
smtpmail-smtp-user addr))))
(defadvice smtpmail-via-smtp
(before change-smtp-by-message-from-field (recipient buffer &optional ask) activate)
(with-current-buffer buffer (my-change-smtp)))
(ad-activate 'smtpmail-via-smtp)
;; Set environment variables set by gpg-agent --daemon in ~/.gpg-agent-info
;; TODO: perhaps better error handling if ~/.gpg-agent-info doesn't exist
(mapc (lambda (x) (setenv (car x) (cadr x)))
(with-temp-buffer
(insert-file-contents "~/.gpg-agent-info")
(mapcar (lambda (x) (split-string x "=" t)) (split-string (buffer-string) "\n" t))))

24
.emacs.d/config/nav.el Normal file
View File

@ -0,0 +1,24 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: nav.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Think about retiring this as I don't use it very often and there are likely better alternatives
;; Setup nav
(require 'nav) ;; ELPA
(nav-disable-overeager-window-splitting)
(global-set-key "\C-cn" 'nav-toggle)

View File

@ -0,0 +1,54 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: org-mode.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup emacs-org-mode
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
(add-hook 'org-mode-hook 'turn-on-font-lock) ; not needed when global-font-lock-mode is on
(setq org-return-follows-link t
org-log-done 'time
org-src-fontify-natively t
org-enforce-todo-dependencies t)
;; Enable org-mode capture
(setq org-default-notes-file "~/.org/notes.org") ;; (concat org-directory "/notes.org"))
(define-key global-map "\C-cc" 'org-capture)
(setq org-capture-templates
'(("t" "General Todo" entry
(file+olp "~/.org/notes.org" "Notes" "Tasks" "General")
"* TODO %?\n %i\n" :kill-buffer)
("f" "Todo in current file" entry
(file+olp "~/.org/notes.org" "Notes" "Tasks" "Per-File")
"* TODO %? %i\n See: %a")
("r" "Remember something" entry
(file+olp "~/.org/notes.org" "Notes" "Things to Remember")
"* %?" :kill-buffer)
("j" "Journal" entry
(file+datetree "~/.org/notes.org")
"* %?\nEntered on %U\n %i\n %a" :kill-buffer)))
;; Add additional languages for org-babel (now part of org-mode)
(org-babel-do-load-languages
'org-babel-load-languages
'((haskell . t)))
;; Set keybindings for org-mode
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)

25
.emacs.d/config/python.el Normal file
View File

@ -0,0 +1,25 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: python.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup python-mode auto-required by package.el (ELPA)
(setq auto-mode-alist (append '(("/*.\.py$" . python-mode)) auto-mode-alist))
;; Setup ipython-mode
;; (setq py-python-command "/usr/bin/ipython")
(require 'ipython) ;; ELPA

83
.emacs.d/config/rcirc.el Normal file
View File

@ -0,0 +1,83 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: rcirc.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Use rcirc for irc; see: http://www.emacswiki.org/emacs/rcirc *TODO* currently broken
(require 'rcirc)
;; Use rcirc-notify extension; see: http://www.emacswiki.org/emacs/rcircNotify
(eval-after-load 'rcirc '(require 'rcirc-notify))
;; Include date in time stamp.
(setq rcirc-time-format "%Y-%m-%d %H:%M ")
;; Change user info
(setq rcirc-default-nick "rekahsoft"
rcirc-default-user-name "rekahsoft"
rcirc-default-full-name "rekahsoft"
rcirc-log-flag t
rcirc-log-directory "~/.emacs.d/rcirc-log")
(setq rcirc-server-alist
'(("irc.freenode.net" :port 6697 :encryption tls
:channels ("#emacs" "#haskell" "#racket" "#xmonad"))
("localhost" :port 6667 :channels ())))
;; Turn on rcirc tracking to be displayed in mode-line
(rcirc-track-minor-mode)
;; Thanks to: http://www.emacswiki.org/emacs/rcircReconnect
(eval-after-load 'rcirc
'(defun-rcirc-command reconnect (arg)
"Reconnect the server process."
(interactive "i")
(unless process
(error "There's no process for this target"))
(let* ((server (car (process-contact process)))
(port (process-contact process :service))
(nick (rcirc-nick process))
channels query-buffers)
(dolist (buf (buffer-list))
(with-current-buffer buf
(when (eq process (rcirc-buffer-process))
(remove-hook 'change-major-mode-hook
'rcirc-change-major-mode-hook)
(if (rcirc-channel-p rcirc-target)
(setq channels (cons rcirc-target channels))
(setq query-buffers (cons buf query-buffers))))))
(delete-process process)
(rcirc-connect server port nick
rcirc-default-user-name
rcirc-default-full-name
channels))))
;; Thanks to: http://www.emacswiki.org/emacs/rcircAll
(eval-after-load 'rcirc
'(defun-rcirc-command all (input)
"Run the arguments as a command for all connections.
Example use: /all away food or /all quit zzzz."
(interactive "s")
(let ((buffers (mapcar 'process-buffer (rcirc-process-list))))
(dolist (buf buffers)
(with-current-buffer buf
(goto-char (point-max))
(insert "/" input)
(rcirc-send-input))))))
;; Connect to servers auto-matically if in daemon-mode
(if (daemonp) (rcirc nil))

24
.emacs.d/config/scala.el Normal file
View File

@ -0,0 +1,24 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: scala.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Setup ensime ;; AUR
(add-to-list 'load-path "/usr/share/ensime/elisp")
(add-to-list 'exec-path "/usr/share/ensime")
(require 'ensime)
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)

View File

@ -0,0 +1,43 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: scratches.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
(defvar scratch-buffer-alist '((python-mode . "# This buffer is for notes you don't want to save, and for Lisp evaluation.\n# If you want to create a file, visit that file with C-x C-f,\n# then enter the text in that file's own buffer.")))
(defun open-scratch-buffer (&optional buf-mode buf-name msg)
"Opens a scratch buffer; if none exists creates one. When called with the universal argument (C-u) will ask what mode to use for the scratch buffer."
(interactive
(cond ((equal current-prefix-arg nil) ;; universal argument not called
(list initial-major-mode "*scratch*" initial-scratch-message))
((equal current-prefix-arg '(4)) ;; Universal argument called (C-u)
(let* ((buf-mode (read-command "Mode: " initial-major-mode))
(buf-name (if (equal buf-mode initial-major-mode)
"*scratch*"
(concat "*scratch:" (symbol-name buf-mode) "*")))
(msg ""))
(list buf-mode buf-name msg)))))
(let* ((scratch-buffer (get-buffer buf-name)))
;; check if the scratchpad is open. If not create it, change its mode and insert message text at the top of the buffer
(if (null scratch-buffer)
(with-current-buffer (get-buffer-create buf-name)
(funcall buf-mode)
(insert msg)))
(switch-to-buffer buf-name)))
;; Bind a key to grab a scratchpad
(define-key ctl-x-4-map "s" 'open-scratch-buffer)

View File

@ -0,0 +1,33 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: theming.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Add collection of themes path
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
;; Use the built-in theming in emacs 24
(load-theme 'manoj-transparent t)
;; On the creation of each frame checks whether it is a XWindow and if so sets
;; the background to black and the foreground to WhiteSmoke
;; (add-hook 'after-make-frame-functions
;; (lambda (frames)
;; (select-frame frame)
;; (if window-system (progn
;; (set-background-color "black")
;; (set-foreground-color "WhiteSmoke")))))

24
.emacs.d/config/tramp.el Normal file
View File

@ -0,0 +1,24 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: tramp.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Set default tramp method to ssh (for security purposes)
(setq tramp-default-method "ssh")
;; Set the prompt pattern tramp searches for in order to send commands to the remote shell
(setq tramp-shell-prompt-pattern "^[^$>\n]*[#$%>] *\\(\[[0-9;]*[a-zA-Z] *\\)*")

27
.emacs.d/config/w3m.el Normal file
View File

@ -0,0 +1,27 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: w3m.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; This is going to be retired/replaced upon the release of emacs 24.4 (due to the introduction of eww)
;; setup html renderer w3m and external browser conkeror
(require 'w3m-load) ;; AUR: emacs-w3m-cvs
(setq browse-url-browser-function 'w3m-browse-url
browse-url-generic-program "conkeror"
w3m-use-cookies t)
(autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t)

45
.emacs.d/config/web.el Normal file
View File

@ -0,0 +1,45 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: web.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; setup php-mode
(autoload 'php-mode "php-mode.el" "Php mode." t) ;; ELPA
(setq auto-mode-alist (append '(("/*.\.php[345]?$" . php-mode)) auto-mode-alist))
;; Setup sql-mode (use mysql instead of ansi)
(setq sql-product 'mysql)
;; Setup zencoding-mode
(require 'emmet-mode)
;; Disable C-j keybinding set by zencoding-mode and replace it with 'C-c j'
(define-key emmet-mode-keymap "\C-j" nil)
(define-key emmet-mode-keymap "\C-cj" 'emmet-expand-line)
;; Add appropriate hooks to sgml-mode
(add-hook 'sgml-mode-hook 'emmet-mode) ;; Auto-start on any markup modes
(add-hook 'css-mode-hook 'emmet-mode) ;; enable Emmet's css abbreviation.
(add-hook 'emmet-mode-hook (lambda () (setq emmet-indentation 2))) ;; indent 2 spaces.
;; Setup mmm-mode for multiple mode regions in the same buffer
(require 'mmm-mode)
;;(setq mmm-global-mode 'maybe)
;; Setup rainbow-mode ;; ELPA
(require 'rainbow-mode)
(add-hook 'css-mode-hook 'rainbow-mode)

View File

@ -0,0 +1,79 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: window-management.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 22, 2014
;; Toggles windows split orientation of 2 adjecent windows
;; Thanks to http://www.emacswiki.org/cgi-bin/wiki?ToggleWindowSplit
(defun toggle-window-split ()
(interactive)
(if (= (count-windows) 2)
(let* ((this-win-buffer (window-buffer))
(next-win-buffer (window-buffer (next-window)))
(this-win-edges (window-edges (selected-window)))
(next-win-edges (window-edges (next-window)))
(this-win-2nd (not (and (<= (car this-win-edges)
(car next-win-edges))
(<= (cadr this-win-edges)
(cadr next-win-edges)))))
(splitter
(if (= (car this-win-edges)
(car (window-edges (next-window))))
'split-window-horizontally
'split-window-vertically)))
(delete-other-windows)
(let ((first-win (selected-window)))
(funcall splitter)
(if this-win-2nd (other-window 1))
(set-window-buffer (selected-window) this-win-buffer)
(set-window-buffer (next-window) next-win-buffer)
(select-window first-win)
(if this-win-2nd (other-window 1))))))
;; TODO: Modify the below function to accept the universal argument.
;; Specifically an integer argument (n) where:
;; - if negative denotes backwards rotation repeated |n| times
;; - if positive denotes forwards rotation repeated n times
;; - otherwise, no numerical value is given for the universal argument; ignore.
;; Rotates windows
;; Thanks to http://www.emacswiki.org/emacs/TransposeWindows
(defun rotate-windows ()
"Rotate your windows"
(interactive)
(cond
((not (> (count-windows) 1))
(message "You can't rotate a single window!"))
(t
(let ((i 0)
(num-windows (count-windows)))
(while (< i (- num-windows 1))
(let* ((w1 (elt (window-list) i))
(w2 (elt (window-list) (% (+ i 1) num-windows)))
(b1 (window-buffer w1))
(b2 (window-buffer w2))
(s1 (window-start w1))
(s2 (window-start w2)))
(set-window-buffer w1 b2)
(set-window-buffer w2 b1)
(set-window-start w1 s2)
(set-window-start w2 s1)
(setq i (1+ i))))))))
;; Assign keybinding to toggle split orientation of 2 adjacent windows, and to rotate windows
(define-key ctl-x-4-map "t" 'toggle-window-split)
(global-set-key "\C-cr" 'rotate-windows)

106
.emacs.d/init.el Normal file
View File

@ -0,0 +1,106 @@
;; (C) Copyright Collin J. Doering 2014
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; File: init.el
;; Author: Collin J. Doering <collin.doering@rekahsoft.ca>
;; Date: Oct 21, 2014
(defun load-directory (directory)
"Load recursively all `.el' files in DIRECTORY."
(dolist (element (directory-files-and-attributes directory nil nil nil))
(let* ((path (car element))
(fullpath (concat directory "/" path))
(isdir (car (cdr element)))
(ignore-dir (or (string= path ".") (string= path ".."))))
(cond
((and (eq isdir t) (not ignore-dir))
(load-directory fullpath))
((and (eq isdir nil) (string= (substring path -3) ".el"))
(load (file-name-sans-extension fullpath)))))))
;; Set repos for package.el
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
("marmalade" . "http://marmalade-repo.org/packages/")
("melpa" . "http://melpa.milkbox.net/packages/")
("ELPA" . "http://tromey.com/elpa/")))
;; This needs to be a the start of ~/.emacs since package-initialize is run after the user
;; init file is read but before after-init-hook. It autoloads packages installed by
;; package.el including updating the load-path and running/loading/requiring
;; pkgname-autoload.el for all packages (where pkgname is replaced with the appropriate
;; package name). To disable package.el's autoloading functionality use:
;; (setq package-enabled-at-startup nil)
;; The reason to use package-initialize here is so one can modify the installed modules
;; later in this .emacs file but still retain the autoloading functionality of package.el
(package-initialize)
;; Variables and functions that will be used in files in config folder
;; Note: This should be put into another file (eg. lib.el) that could be loaded from here
;; adds the given function mode to each element of the given-hooks
(defun activate-mode-with-hooks (mode given-hooks)
(while given-hooks
(add-hook (car given-hooks)
mode)
(setq given-hooks (cdr given-hooks))))
;; code-modes is a list of mode hooks (for programming langs only)
(defvar code-modes '(sml-mode-hook scheme-mode-hook emacs-lisp-mode-hook c-mode-hook c++-mode-hook python-mode-hook lua-mode-hook python-mode-hook haskell-mode-hook php-mode-hook perl-mode-hook lisp-mode-hook clojure-mode-hook ruby-mode-hook erlang-mode-hook sh-mode-hook java-mode-hook scala-mode-hook js-mode-hook))
;; Load ~/.emacs.d/site-list-extra which contains various .el files
;; that aren't (yet) available through packages
(add-to-list 'load-path "~/.emacs.d/site-lisp-extra")
;; Load all .el config files
(load-directory "~/.emacs.d/config")
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(TeX-command-list (quote (("TeX" "%(PDF)%(tex) %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (plain-tex-mode texinfo-mode ams-tex-mode) :help "Run plain TeX") ("LaTeX" "%`%l%(mode)%' %t" TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX") ("Makeinfo" "makeinfo %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with Info output") ("Makeinfo HTML" "makeinfo --html %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with HTML output") ("AmSTeX" "%(PDF)amstex %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (ams-tex-mode) :help "Run AMSTeX") ("ConTeXt" "texexec --once --texutil %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt once") ("ConTeXt Full" "texexec %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt until completion") ("BibTeX" "bibtex %s" TeX-run-BibTeX nil t :help "Run BibTeX") ("Biber" "biber %s" TeX-run-Biber nil t :help "Run Biber") ("View" "zathura %s.pdf" TeX-run-discard-or-function t t :help "Run Viewer") ("Print" "%p" TeX-run-command t t :help "Print the file") ("Queue" "%q" TeX-run-background nil t :help "View the printer queue" :visible TeX-queue-command) ("File" "%(o?)dvips %d -o %f " TeX-run-command t t :help "Generate PostScript file") ("Index" "makeindex %s" TeX-run-command nil t :help "Create index file") ("Check" "lacheck %s" TeX-run-compile nil (latex-mode) :help "Check LaTeX file for correctness") ("Spell" "(TeX-ispell-document \"\")" TeX-run-function nil t :help "Spell-check the document") ("Clean" "TeX-clean" TeX-run-function nil t :help "Delete generated intermediate files") ("Clean All" "(TeX-clean t)" TeX-run-function nil t :help "Delete generated intermediate and output files") ("Other" "" TeX-run-command t t :help "Run an arbitrary command"))))
'(bmkp-last-as-first-bookmark-file "/home/collin/.emacs.d/bookmarks")
'(coffee-tab-width 2)
'(confirm-kill-emacs (quote y-or-n-p))
'(custom-safe-themes (quote ("96b54f35e473769a388f12984d735092f9163c63aa6724ee49176d865c46071b" "fc5fcb6f1f1c1bc01305694c59a1a861b008c534cae8d0e48e4d5e81ad718bc6" "b5aaedbcd4d81925c8b2bc21dbed6d0a5a6854b6ad745e948efd55e42b48bd04" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" "36a309985a0f9ed1a0c3a69625802f87dee940767c9e200b89cdebdb737e5b29" "dc8693659115ea453f849f47509b903da3801b5f1521a73fa31556a9a3558517" default)))
'(fill-column 95)
'(geiser-default-implementation (quote racket))
'(geiser-racket-collects (quote ("/usr/share/racket/collects")))
'(hl-sexp-background-color "#19202B")
'(ido-enable-flex-matching t)
'(magit-commit-signoff t t)
'(mpc-host "patchMeIn@localhost")
'(org-agenda-files (quote ("~/.org/tech/notes.org" "~/.org/todo/rekahsoft-mini-todo.org" "~/.org/todo/rekahsoft-todo.org" "~/.org/todo/general.org" "~/.org/todo/work.org")))
'(quack-default-program "racket")
'(quack-fontify-style (quote plt))
'(quack-programs (quote ("mzscheme" "bigloo" "csi" "csi -hygienic" "gosh" "gracket" "gsi" "gsi ~~/syntax-case.scm -" "guile" "kawa" "mit-scheme" "racket" "racket -il typed/racket" "rs" "scheme" "scheme48" "scsh" "sisc" "stklos" "sxi")))
'(quack-remap-find-file-bindings-p nil)
'(rcirc-kill-channel-buffers t)
'(scroll-bar-mode nil)
'(send-mail-function (quote smtpmail-send-it))
'(show-paren-mode t)
'(w3m-content-type-alist (quote (("text/plain" "\\.\\(?:txt\\|tex\\|el\\)\\'" nil nil) ("text/html" "\\.s?html?\\'" ("conkeror" file) nil) ("text/sgml" "\\.sgml?\\'" nil "text/plain") ("text/xml" "\\.xml\\'" nil "text/plain") ("image/jpeg" "\\.jpe?g\\'" ("/usr/bin/display" file) nil) ("image/png" "\\.png\\'" ("/usr/bin/display" file) nil) ("image/gif" "\\.gif\\'" ("/usr/bin/display" file) nil) ("image/tiff" "\\.tif?f\\'" ("/usr/bin/display" file) nil) ("image/x-xwd" "\\.xwd\\'" ("/usr/bin/display" file) nil) ("image/x-xbm" "\\.xbm\\'" ("/usr/bin/display" file) nil) ("image/x-xpm" "\\.xpm\\'" ("/usr/bin/display" file) nil) ("image/x-bmp" "\\.bmp\\'" ("/usr/bin/display" file) nil) ("video/mpeg" "\\.mpe?g\\'" nil nil) ("video/quicktime" "\\.mov\\'" nil nil) ("application/dvi" "\\.dvi\\'" ("xdvi" file) nil) ("application/postscript" "\\.e?ps\\'" ("gs" file) nil) ("application/pdf" "\\.pdf\\'" nil nil) ("application/x-pdf" "\\.pdf\\'" nil nil) ("application/xml" "\\.xml\\'" nil w3m-detect-xml-type) ("application/rdf+xml" "\\.rdf\\'" nil "text/plain") ("application/rss+xml" "\\.rss\\'" nil "text/plain") ("application/xhtml+xml" nil nil "text/html"))))
'(yas-prompt-functions (quote (shk-yas/helm-prompt))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(mode-line ((t (:background "grey20" :foreground "#00afff" :box 1 :slant normal :weight normal :height 111 :width normal :foundry "xos4" :family "Terminus"))))
'(mode-line-inactive ((t (:inherit mode-line :background "grey5" :foreground "grey80" :box 1 :slant normal :weight normal :height 111 :width normal :foundry "xos4" :family "Terminus"))))
'(show-paren-match ((t (:background "dark violet")))))
(put 'dired-find-alternate-file 'disabled nil)
(put 'downcase-region 'disabled nil)