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:
parent
a9d362f8db
commit
a8582a7d4e
64
.emacs.d/config/editing.el
Normal file
64
.emacs.d/config/editing.el
Normal 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
21
.emacs.d/config/erc.el
Normal 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
64
.emacs.d/config/eshell.el
Normal 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)))
|
26
.emacs.d/config/flyspell-mode.el
Normal file
26
.emacs.d/config/flyspell-mode.el
Normal 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))
|
35
.emacs.d/config/haskell.el
Normal file
35
.emacs.d/config/haskell.el
Normal 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
51
.emacs.d/config/helm.el
Normal 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
166
.emacs.d/config/ibuffer.el
Normal 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
21
.emacs.d/config/ido.el
Normal 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)
|
124
.emacs.d/config/insert-templates.el
Normal file
124
.emacs.d/config/insert-templates.el
Normal 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
37
.emacs.d/config/latex.el
Normal 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)
|
34
.emacs.d/config/linum-mode.el
Normal file
34
.emacs.d/config/linum-mode.el
Normal 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
135
.emacs.d/config/lispy.el
Normal 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
127
.emacs.d/config/misc.el
Normal 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
160
.emacs.d/config/mu4e.el
Normal 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
24
.emacs.d/config/nav.el
Normal 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)
|
54
.emacs.d/config/org-mode.el
Normal file
54
.emacs.d/config/org-mode.el
Normal 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
25
.emacs.d/config/python.el
Normal 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
83
.emacs.d/config/rcirc.el
Normal 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
24
.emacs.d/config/scala.el
Normal 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)
|
43
.emacs.d/config/scratches.el
Normal file
43
.emacs.d/config/scratches.el
Normal 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)
|
33
.emacs.d/config/theming.el
Normal file
33
.emacs.d/config/theming.el
Normal 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
24
.emacs.d/config/tramp.el
Normal 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
27
.emacs.d/config/w3m.el
Normal 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
45
.emacs.d/config/web.el
Normal 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)
|
79
.emacs.d/config/window-management.el
Normal file
79
.emacs.d/config/window-management.el
Normal 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
106
.emacs.d/init.el
Normal 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)
|
Reference in New Issue
Block a user