From a09010409ff599208d567e2af2ac7a5f8ef1d870 Mon Sep 17 00:00:00 2001 From: "Collin J. Doering" Date: Sat, 6 Sep 2014 23:42:04 -0400 Subject: [PATCH] Various changes to emacs configuration Some highlights include: - Modified theme to better emphasize mode-line - Add .emacs.d/site-lisp-extra to load-path for various emacs-lisp snippets - Add custom yasnippet directory under .emacs.d/snippets - Use flyspell in more non-code modes (eg. various markup languages and mu4e) - Added new sorting rules/categories for ibuffer - Setup Auctex for smooth latex editing - Pimp out editing of lispy langs including: - highlight current sexp at point with hightlight-sexp - enable mode for racket scribble (in .emacs.d/site-lisp-extra/) - add guile to geiser scheme implementations list - Disabled highlight-current-line - Enable bookmarks+ See: http://www.emacswiki.org/emacs/BookmarkPlus - Update auto-insert templates to use variables "author" and "email" correctly. Note: I am considering removing use of auto-insert for templates and instead switching to yasnippet for templates and starting with a empty file. Then a snippet like 'gpl3' could be expanded to be the license or the license header for the file. Also the little info block I have on all of my current templates could also simply be another snippet. - Switched from gnus to mu4e for email; this requires the external tools mbsync and mu. Gnus can still be used but is now depreciated in preference of mu4e (which is much faster and better suited when used in combination with mbsync) - Fixed annoying issue where when quack-mode was enabled C-x C-f was overridden to quack-find-file which didn't have ido-completion - Setup gpg-agent so environment variables are correct (*TODO* this still isn't working 100% as I've noticed miss matches; it could be that somehow GPG_AGENT_INFO changes outside of emacs and because I only fix its value during the evaluation of .emacs it could result in a miss match.) - Add exit confirmation in the mini-buffer Signed-off-by: Collin J. Doering --- .emacs | 320 ++++- .emacs.d/bookmarks | 10 + .emacs.d/site-lisp-extra/scribble.el | 1141 +++++++++++++++++ .../latex-mode/.yas-compiled-snippets.el | 8 + .emacs.d/snippets/latex-mode/begin | 9 + .../markdown-mode/.yas-compiled-snippets.el | 8 + .emacs.d/snippets/markdown-mode/blog | 14 + .emacs.d/snippets/scheme-mode/and | 7 + .emacs.d/snippets/scheme-mode/append | 6 + .emacs.d/snippets/scheme-mode/apply | 6 + .emacs.d/snippets/scheme-mode/car | 6 + .emacs.d/snippets/scheme-mode/cdr | 6 + .emacs.d/snippets/scheme-mode/class | 9 + .emacs.d/snippets/scheme-mode/cond | 7 + .emacs.d/snippets/scheme-mode/cons | 6 + .emacs.d/snippets/scheme-mode/define | 7 + .emacs.d/snippets/scheme-mode/define-match | 7 + .emacs.d/snippets/scheme-mode/define-public | 7 + .emacs.d/snippets/scheme-mode/define-syntax | 7 + .../snippets/scheme-mode/define-syntax-rule | 7 + .emacs.d/snippets/scheme-mode/define-syntax.1 | 7 + .emacs.d/snippets/scheme-mode/define.1 | 6 + .emacs.d/snippets/scheme-mode/lambda | 6 + .emacs.d/snippets/scheme-mode/lambda.1 | 6 + .emacs.d/snippets/scheme-mode/lambda.2 | 6 + .emacs.d/snippets/scheme-mode/length | 6 + .emacs.d/snippets/scheme-mode/let | 7 + .emacs.d/snippets/scheme-mode/let* | 7 + .emacs.d/snippets/scheme-mode/let.1 | 7 + .emacs.d/snippets/scheme-mode/letrec | 7 + .emacs.d/snippets/scheme-mode/list | 5 + .emacs.d/snippets/scheme-mode/match | 7 + .emacs.d/snippets/scheme-mode/match* | 7 + .emacs.d/snippets/scheme-mode/or | 7 + .emacs.d/snippets/scheme-mode/quote | 5 + .emacs.d/snippets/scheme-mode/repeat | 6 + .emacs.d/templates/c-template.c | 4 +- .emacs.d/templates/clojure-template.clj | 4 +- .emacs.d/templates/css-template.css | 4 +- .emacs.d/templates/emacs-lisp-template.el | 4 +- .emacs.d/templates/erlang-template.erl | 4 +- .emacs.d/templates/haml-template.haml | 4 +- .emacs.d/templates/haskell-template.hs | 4 +- .emacs.d/templates/java-script-template.js | 4 +- .emacs.d/templates/java-template.java | 4 +- .emacs.d/templates/lisp-template.lisp | 4 +- .emacs.d/templates/lua-template.lua | 4 +- .emacs.d/templates/ocaml-template.ml | 4 +- .emacs.d/templates/php-template.php | 4 +- .emacs.d/templates/python-template.py | 4 +- .emacs.d/templates/racket-template.rkt | 4 +- .emacs.d/templates/ruby-template.rb | 4 +- .emacs.d/templates/sass-template.sass | 4 +- .emacs.d/templates/scala-template.scala | 4 +- .emacs.d/templates/scheme-template.scm | 4 +- .emacs.d/templates/scss-template.scss | 4 +- .emacs.d/templates/shell-template.sh | 4 +- .emacs.d/templates/sml-template.ml | 6 +- .emacs.d/themes/manoj-transparent-theme.el | 6 +- 59 files changed, 1719 insertions(+), 77 deletions(-) create mode 100644 .emacs.d/bookmarks create mode 100644 .emacs.d/site-lisp-extra/scribble.el create mode 100644 .emacs.d/snippets/latex-mode/.yas-compiled-snippets.el create mode 100644 .emacs.d/snippets/latex-mode/begin create mode 100644 .emacs.d/snippets/markdown-mode/.yas-compiled-snippets.el create mode 100644 .emacs.d/snippets/markdown-mode/blog create mode 100755 .emacs.d/snippets/scheme-mode/and create mode 100755 .emacs.d/snippets/scheme-mode/append create mode 100755 .emacs.d/snippets/scheme-mode/apply create mode 100755 .emacs.d/snippets/scheme-mode/car create mode 100755 .emacs.d/snippets/scheme-mode/cdr create mode 100644 .emacs.d/snippets/scheme-mode/class create mode 100644 .emacs.d/snippets/scheme-mode/cond create mode 100755 .emacs.d/snippets/scheme-mode/cons create mode 100644 .emacs.d/snippets/scheme-mode/define create mode 100644 .emacs.d/snippets/scheme-mode/define-match create mode 100644 .emacs.d/snippets/scheme-mode/define-public create mode 100644 .emacs.d/snippets/scheme-mode/define-syntax create mode 100644 .emacs.d/snippets/scheme-mode/define-syntax-rule create mode 100644 .emacs.d/snippets/scheme-mode/define-syntax.1 create mode 100644 .emacs.d/snippets/scheme-mode/define.1 create mode 100755 .emacs.d/snippets/scheme-mode/lambda create mode 100644 .emacs.d/snippets/scheme-mode/lambda.1 create mode 100644 .emacs.d/snippets/scheme-mode/lambda.2 create mode 100755 .emacs.d/snippets/scheme-mode/length create mode 100755 .emacs.d/snippets/scheme-mode/let create mode 100644 .emacs.d/snippets/scheme-mode/let* create mode 100644 .emacs.d/snippets/scheme-mode/let.1 create mode 100644 .emacs.d/snippets/scheme-mode/letrec create mode 100755 .emacs.d/snippets/scheme-mode/list create mode 100644 .emacs.d/snippets/scheme-mode/match create mode 100644 .emacs.d/snippets/scheme-mode/match* create mode 100755 .emacs.d/snippets/scheme-mode/or create mode 100644 .emacs.d/snippets/scheme-mode/quote create mode 100755 .emacs.d/snippets/scheme-mode/repeat diff --git a/.emacs b/.emacs index 4169ac9..41a6ecd 100644 --- a/.emacs +++ b/.emacs @@ -58,6 +58,9 @@ ;; 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) @@ -80,8 +83,17 @@ (add-to-list 'auto-mode-alist '("\\.mpdconf" . conf-mode)) (add-to-list 'auto-mode-alist '("dunstrc" . conf-mode)) -;; bind M-g to M-x goto-line -(global-set-key "\M-g" 'goto-line) +;; 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") + +;; Define some alias' for commonly M-x'ed commands +(defalias 'run-sql 'sql-product-interactive) + +;; bind M-g to M-x goto-line *DEPRECIATED* +;; "M-g was made a prefix by RMS in 2005. goto-line has been bound to M-g g and M-g M-g. – XueFuqiao" +;; See: http://www.emacswiki.org/emacs/EmacsNiftyTricks +;;(global-set-key "\M-g" 'goto-line) ;; Make C-x O cycle backwards a pane (oposite to C-x o) (global-set-key "\C-xO" #'(lambda () @@ -121,8 +133,8 @@ ;; activate flyspell-prog-mode for all buffers used for programming (activate-mode-with-hooks 'flyspell-prog-mode code-modes) -;; use flyspell-mode in org-mode and magit-log-edit-mode buffers -(activate-mode-with-hooks 'flyspell-mode '(org-mode-hook magit-log-edit-mode-hook)) +;; 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)) ;; Enjoy a game of Sudoku on some downtime (require 'sudoku) ;; ELPA @@ -191,6 +203,12 @@ (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) @@ -207,15 +225,13 @@ (mode . haskell-mode) (mode . scala-mode) (mode . php-mode) - (mode . xml-mode) - (mode . html-mode) (mode . css-mode) - (mode . haml-mode) (mode . sass-mode) (mode . scss-mode) - (mode . js-mode))) + (mode . js-mode) + (mode . sql-mode))) ("REPL" (or - (mode . geiser-mode) + (mode . geiser-repl-mode) (mode . slime-repl-mode) (mode . inferior-python-mode) (mode . ipython-mode) @@ -225,15 +241,26 @@ (mode . inferior-scheme-mode) (mode . inferior-tcl) (mode . erlang-shell-mode) - (name . "^\\*inferior-lisp\\*$") - (name . "^\\* Racket REPL \\*$"))) + (mode . sql-interactive-mode))) ("git" (or - (name . "^\\*magit: ") ;; this regxp could be better + (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-log-mode) + (mode . magit-wazzup-mode) + (mode . magit-process-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\\*$"))) ("planner" (or (name . "^\\*Calendar\\*$") (name . "^diary$") @@ -242,12 +269,22 @@ (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$"))) + ("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) @@ -299,6 +336,9 @@ (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) @@ -312,7 +352,7 @@ (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) +(require 'mmm-mode) ;;(setq mmm-global-mode 'maybe) ;; Set default lisp program @@ -363,6 +403,21 @@ ;; (aput 'slime-lisp-implementations 'clojure ;; (list (swank-clojure-cmd) :init 'swank-clojure-init)))) +;; 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) + +(require 'tex) +(TeX-global-PDF-mode t) + ;; 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 @@ -452,29 +507,49 @@ (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-keyword-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)) +(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))) -;; Highlight paren's in given modes [to apply globally do (show-paren-mode 1)] +;; 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) -;; Setup rainbow-delimiters *BROKEN* +;; 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 -(add-hook 'prog-mode-hook 'rainbow-delimiters-mode) -;;(activate-mode-with-hooks (lambda () (with-current-buffer buf (rainbow-delimiters-mode))) lispy-langs-hooks) +(global-rainbow-delimiters-mode) ;; Setup rainbow-mode ;; ELPA (require 'rainbow-mode) @@ -490,7 +565,7 @@ (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)) +(setq geiser-active-implementations '(racket guile)) ;; setup pastebin.el for use with pastebin.com *BROKEN* ;(require 'pastebin) ;; ELPA @@ -518,6 +593,9 @@ ;; Setup isearch+ (require 'isearch+) +;; Setup bookmark+ +(require 'bookmark+) + ;; Setup ace-jump-mode (autoload 'ace-jump-mode @@ -549,7 +627,8 @@ ;; Setup yasnippet-mode (not yasnippet-bundle) (require 'yasnippet) ;; ELPA -(yas/load-directory "~/.emacs.d/elpa/yasnippet-20140106.1009") +(yas-load-directory "~/.emacs.d/elpa/yasnippet-20140821.38") +(yas-load-directory "~/.emacs.d/snippets") (yas-global-mode 1) ;; Enable flyspell-mode @@ -563,12 +642,15 @@ (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.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]) @@ -592,10 +674,14 @@ ("\\.sass$" . ["sass-template.sass" auto-update-generic-template]) ("\\.haml$" . ["haml-template.haml" auto-update-generic-template]) ("\\.markdown$" . ["markdown-template.markdown" auto-update-generic-template]) - ("\\.latex$" . ["latex-template.latex" 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) @@ -620,7 +706,21 @@ (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))))))) + (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 () @@ -628,6 +728,16 @@ (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)) + ;; (defun open-scratch-buffer () ;; "Opens the scratch buffer; if none exists creates one." ;; (interactive) @@ -793,29 +903,181 @@ consisting of lists of buffers opened by each respective FP argument." ;; ;; Synchronize el-get ;; (el-get 'sync) +;; 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)))) + (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 "~/.emacs.d/bookmarks") '(coffee-tab-width 2) - '(custom-safe-themes (quote ("fc5fcb6f1f1c1bc01305694c59a1a861b008c534cae8d0e48e4d5e81ad718bc6" "b5aaedbcd4d81925c8b2bc21dbed6d0a5a6854b6ad745e948efd55e42b48bd04" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" "36a309985a0f9ed1a0c3a69625802f87dee940767c9e200b89cdebdb737e5b29" "dc8693659115ea453f849f47509b903da3801b5f1521a73fa31556a9a3558517" default))) + '(confirm-kill-emacs (quote y-or-n-p)) + '(custom-safe-themes (quote ("96b54f35e473769a388f12984d735092f9163c63aa6724ee49176d865c46071b" "fc5fcb6f1f1c1bc01305694c59a1a861b008c534cae8d0e48e4d5e81ad718bc6" "b5aaedbcd4d81925c8b2bc21dbed6d0a5a6854b6ad745e948efd55e42b48bd04" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" "36a309985a0f9ed1a0c3a69625802f87dee940767c9e200b89cdebdb737e5b29" "dc8693659115ea453f849f47509b903da3801b5f1521a73fa31556a9a3558517" default))) '(fill-column 95) - '(highlight-current-line-globally t nil (highlight-current-line)) - '(highlight-current-line-ignore-regexp "Faces\\|Colors\\| \\*Mini\\|\\**\\*") + '(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) '(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) '(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"))) 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"))) t) + '(yas-prompt-functions (quote (yas-ido-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. - '(highlight-current-line-face ((t (:background "gray10"))))) + '(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) diff --git a/.emacs.d/bookmarks b/.emacs.d/bookmarks new file mode 100644 index 0000000..0f7fc72 --- /dev/null +++ b/.emacs.d/bookmarks @@ -0,0 +1,10 @@ +;;;; Emacs Bookmark Format Version 1 ;;;; +;;; This format is meant to be slightly human-readable; +;;; nevertheless, you probably don't want to edit it. +;;; -*- End Of Bookmark File Format Version Stamp -*- +(("org-capture-last-stored" + (filename . "~/.org/notes.org") + (front-context-string . "*** Go get the c") + (rear-context-string . "n emacs further\n") + (position . 151)) +) \ No newline at end of file diff --git a/.emacs.d/site-lisp-extra/scribble.el b/.emacs.d/site-lisp-extra/scribble.el new file mode 100644 index 0000000..8836aad --- /dev/null +++ b/.emacs.d/site-lisp-extra/scribble.el @@ -0,0 +1,1141 @@ +;; $Id: scribble.el,v 1.48 2013-09-28 04:52:05 user Exp $ + +(defconst scribble-mode-title "Racket Scribble Emacs Mode") +(defconst scribble-mode-version "0.4") +(defconst scribble-mode-date "2013-09-28") +(defconst scribble-mode-web "http://www.neilvandyke.org/scribble-emacs/") + +(defconst scribble-mode-legal-notices + "Copyright (c) 2011, 2013 Neil Van Dyke. This program is Free Software; you can +redistribute it and/or modify it under the terms of the GNU Lesser General +Public License as published by the Free Software Foundation; either version +3 of the License (LGPL 3), 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 http://www.gnu.org/licenses/ for details. +For other licenses and consulting, please contact the author.") + +;; Note: Changes to above info must be reflected in "scribble-emacs.scrbl" +;; and "info.rkt". + +;;-------------------------------------------------------------------- Requires + +(require 'eldoc) + +;;---------------------------------------------------------------------- Custom + +(defgroup scribble + nil + "Racket Scribble Emacs Mode" + :group 'wp + :prefix "scribble-") + +(defface scribble-comment-face + '((t :foreground "cyan")) + "Face for Comments in Scribble mode." + :group 'scribble) + +(defface scribble-at-keyword-face + '((t :weight bold :foreground "gray50")) + "Face for `@'-and-name in Scribble mode." + :group 'scribble) + +(defface scribble-square-bracket-face + '((t :weight bold :foreground "#c48080")) + "Face for square brackets in Scribble mode." + :group 'scribble) + +(defface scribble-curly-brace-face + '((t :weight bold :foreground "#c48080")) + "Face for curly braces in Scribble mode." + :group 'scribble) + +(defface scribble-title-face + '((t :family "DejaVu Serif" :height 2.0736 :slant italic)) + "Face for titles in Scribble mode." + :group 'scribble) + +(defface scribble-section-heading-face + '((t :family "DejaVu Serif" :height 2.0736 :weight bold)) + "Face for section headings in Scribble mode." + :group 'scribble) + +(defface scribble-subsection-heading-face + '((t :family "DejaVu Serif" :height 1.728 :weight bold)) + "Face for subsection headings in Scribble mode." + :group 'scribble) + +(defface scribble-subsubsection-heading-face + '((t :family "DejaVu Serif" :height 1.44 :weight bold)) + "Face for subsubsection headings in Scribble mode." + :group 'scribble) + +(defface scribble-sub*section-heading-face + '((t :family "DejaVu Serif" :height 1.2 :weight bold)) + "Face for deep-subsection headings in Scribble mode." + :group 'scribble) + +(defface scribble-bold-face + '((t :weight bold)) + "Face for @bold in Scribble mode." + :group 'scribble) + +(defface scribble-emph-face + '((t :slant italic)) + "Face for @emph in Scribble mode." + :group 'scribble) + +(defface scribble-tt-face + '((t :family "DejaVu Sans Mono")) + "Face for @tt in Scribble mode." + :group 'scribble) + +(defface scribble-link-text-face + '((t :underline t :foreground "blue")) + "Face for link text in Scribble mode." + :group 'scribble) + +(defface scribble-planet-face + '((t)) + "Face for @PLaneT in Scribble mode." + :group 'scribble) + +(defface scribble-racket-result-face + '((t :foreground "blue3")) + "Face for Racket results in Scribble mode." + :group 'scribble) + +(defface scribble-racket-value-face + '((t :foreground "green2")) + "Face for Racket values in Scribble mode." + :group 'scribble) + +(defface scribble-bnf-nonterm-face + '((t :slant italic)) + "Face for @nonterm in Scribble mode." + :group 'scribble) + +(defface scribble-racket-litchar-face + '((t :foreground "#aaaa00" + :background "#f4f4f4" + :slant normal + :weight normal)) + "Face for @litchar in Scribble mode." + :group 'scribble) + +;; Quickref Faces: + +;; (defface scribble-quickref-default-face +;; '((t :family "DejaVu Sans" +;; :foreground "#000000" +;; :background "#e8e8ff" +;; :weight normal +;; :slant normal)) +;; "Face for Quickref in Scribble mode." +;; :group 'scribble) + +;; (defface scribble-quickref-meta-face +;; '((t :inherit scribble-quickref-default-face +;; :foreground "#000000")) +;; "Face for Quickref !!! in Scribble mode." +;; :group 'scribble) + +;; (defface scribble-quickref-literal-face +;; '((t :family "DejaVu Sans Mono" +;; :inherit scribble-quickref-default-face +;; :foreground "red4" +;; :weight bold)) +;; "Face for Quickref !!! in Scribble mode." +;; :group 'scribble) + +;; (defface scribble-quickref-value-face +;; '((t :family "DejaVu Sans Mono" +;; :inherit scribble-quickref-default-face +;; :foreground "green4")) +;; "Face for Quickref !!! in Scribble mode." +;; :group 'scribble) + +;; (defface scribble-quickref-at-face +;; '((t :inherit scribble-quickref-literal-face)) +;; "Face for Quickref !!! in Scribble mode." +;; :group 'scribble) + +;; (defface scribble-quickref-keyword-face +;; '((t :family "DejaVu Sans" +;; :inherit scribble-quickref-literal-face)) +;; "Face for Quickref !!! in Scribble mode." +;; :group 'scribble) + +;; (defface scribble-quickref-form-name-face +;; '((t :inherit scribble-quickref-default-face +;; :foreground "blue4" +;; :weight bold)) +;; "Face for Quickref !!! in Scribble mode." +;; :group 'scribble) + +;; (defface scribble-quickref-type-face +;; '((t :inherit scribble-quickref-default-face +;; :foreground "blue")) ;!!! +;; "Face for Quickref !!! in Scribble mode." +;; :group 'scribble) + +;; (defface scribble-quickref-arg-face +;; '((t :inherit scribble-quickref-default-face +;; :slant italic +;; :foreground "blue2")) +;; "Face for Quickref !!! in Scribble mode." +;; :group 'scribble) + +;; ElDoc Faces: + +(defface scribble-eldoc-default-face + '((t :family "DejaVu Sans" + :foreground "#000000" + :background "#fffff0" + :weight normal + :slant normal)) + "Face for ElDoc in Scribble mode." + :group 'scribble) + +(defface scribble-eldoc-literal-face + '((t :inherit scribble-eldoc-default-face)) + "Face for ElDoc literals in Scribble mode." + :group 'scribble) + +(defface scribble-eldoc-meta-face + '((t :inherit scribble-eldoc-default-face + :foreground "#4040ff")) + "Face for ElDoc metasyntactic symbols in Scribble mode." + :group 'scribble) + +(defface scribble-eldoc-nonterminal-face + '((t :inherit scribble-eldoc-default-face + :slant italic)) + "Face for ElDoc nonterminals in Scribble mode." + :group 'scribble) + +;;---------------------------------------------------- Customization Procedures + +(defun scribble-customize () + (interactive) + (customize-group 'scribble)) + +;; TODO: Implement making any non-face changes take effect. + +;;-------------------------------------------------------------- Scribble Forms + +(defsubst scribble-get-form-name (form) (aref form 0)) +(defsubst scribble-get-form-args (form) (aref form 1)) +(defsubst scribble-get-form-type (form) (aref form 2)) +(defsubst scribble-get-form-face (form) (aref form 3)) + +;; TODO: Maybe make types be strings. + +(defsubst scribble-get-formarg-kind (arg) (aref arg 0)) +(defsubst scribble-get-formarg-name (arg) (aref arg 1)) +(defsubst scribble-get-formarg-type (arg) (aref arg 2)) +(defsubst scribble-get-formarg-default (arg) (aref arg 3)) + +;; Note: The information is from Racket 5.0.2 Scribble documentation. + +(defconst scribble-style-form-type + '(or/c style? f string? symbol? (listof symbol?))) + +(defconst scribble-optional-style-form-arg + `[k style ,scribble-style-form-type "#f"]) + +(defconst scribble-optional-underline?-form-arg + `[k underline? any/c "#t"]) + +(defconst scribble-optional-tag-form-arg + `[k tag (or/c false/c string? (listof string?)) "#f"]) + +(defconst scribble-heading-form-args + `(,scribble-optional-tag-form-arg + [k tag-prefix (or/c false/c string? module-path?) "#f"] + ,scribble-optional-style-form-arg)) + +;; TODO: Support more than just "scribble/base". + +(defconst scribble-base-forms + `( + ;; scribble/base + ;; file:///usr/local/racket-5.0.2/share/racket/doc/scribble/base.html + + [title (,@scribble-heading-form-args + [k version (or/c string? false/c) "#f"] + [p - pre-content? -] + ...) + title-decl? + scribble-title-face] + [section (,@scribble-heading-form-args + [p - pre-content? -] + ...) + part-start? + scribble-section-heading-face] + [subsection (,@scribble-heading-form-args + [p - pre-content? -] + ...) + part-start? + scribble-subsection-heading-face] + [subsubsection (,@scribble-heading-form-args + [p - pre-content? -] + ...) + part-start? + scribble-subsubsection-heading-face] + [sub*section (,@scribble-heading-form-args + [p - pre-content? -] + ...) + part-start? + scribble-sub*section-heading-face] + [author ([p - content? -]) + block? + nil] + [author+email ([p author elem -] + [p email string? -] + [k obfuscate? any/c "#f"]) + element? + nil] + [para (,scribble-optional-style-form-arg + [p - pre-content? -] + ...) + paragraph? + nil] + [nested (,scribble-optional-style-form-arg + [p - pre-flow? -] + ...) + nested-flow? + nil] + [centered ([p - pre-flow? -] + ...) + nested-flow? + nil] + [margin-note ([p - pre-flow? -] + ...) + block? + nil] + [margin-note* ([p - pre-content? -] + ...) + element? + nil] + [itemlist ([p - item? -] + ... + ,scribble-optional-style-form-arg) + itemization? + nil] + [item ([p - pre-flow? -] + ...) + item? + nil] + [tabular ([p cells (listof (listof (or/c block? content? 'cont))) -] + ,scribble-optional-style-form-arg) + table? + nil] + [verbatim ([p indent exact-nonnegative-integer? "0"] + [p - string? -] + ...) + block? + nil] + [elem ([p - pre-content? -] + ... + ,scribble-optional-style-form-arg) + element? + nil] + [italic ([p - pre-content? -] + ...) + element? + nil] + [bold ([p - pre-content? -] + ...) + element? + scribble-bold-face] + [code ([p - pre-content? -] + ...) + element? + nil] + [codeblock ([p - pre-content? -] + ...) + element? + nil] + [tt ([p - pre-content? -] + ...) + element? + scribble-tt-face] + [subscript ([p - pre-content? -] + ...) + element? + nil] + [superscript ([p - pre-content? -] + ...) + element? + nil] + [smaller ([p - pre-content? -] + ...) + element? + nil] + [larger ([p - pre-content? -] + ...) + element? + nil] + [emph ([p - pre-content? -] + ...) + element? + scribble-emph-face] + [linebreak () + element? + nil] + [hspace ([p - exact-nonnegative-integer? -]) + element? + nil] + [literal ([p - string? -] + ...) + element? + nil] + [image + ([p path (or/c path-string? (cons/c 'collects (listof bytes?))) -] + [k scale real? "1.0"] + [k suffixes (listof (rx "^[.]")) "null"] + [p - pre-content? -] + ...) + element? + nil] + [hyperlink ([p url string? -] + [p - pre-content? -] + ... + ,scribble-optional-underline?-form-arg + [k style + (or/c style? string? symbol? false/c) + "(if underline? #f \"plainlink\")"]) + element? + scribble-link-text-face] + [url ([p dest string? -]) + element? + nil] + [secref ([p tag string -] + [k doc (or/c module-path? false/c) "#f"] + [k tag-prefixes (or/c (listof string?) false/c) "#f"] + ,scribble-optional-underline?-form-arg) + element? + scribble-link-text-face] + [seclink ([p tag string? -] + [k doc (or/c module-path? false/c) "#f"] + [k tag-prefixes (or/c (listof string?) false/c) "#f"] + ,scribble-optional-underline?-form-arg + [p - pre-content? -] + ...) + element? + scribble-link-text-face] + [other-doc ([p module-path module-path? -] + ,scribble-optional-underline?-form-arg) + element? + nil] + [elemtag ([p t (or/c tag? string?) -] + [p - pre-content? -] + ...) + element? + nil] + [elemref ([p t (or/c tag? string?) -] + [p - pre-content? -] + ... + ,scribble-optional-underline?-form-arg) + element? + nil] + [index ([p words (or/c string? (listof string?)) -] + [p - pre-content? -] + ...) + index-element? + nil] + [index* ([p words (listof string?) -] + [p word-contents (listof list?) -] + [p - pre-content? -] + ...) + index-element? + nil] + [as-index ([p - pre-content? -] + ...) + index-element? + nil] + [section-index ([p word string? -] + ...) + part-index-decl? + nil] + [index-section ([k tag (or/c false/c string?) "\"doc-index\""] + ,scribble-optional-tag-form-arg) + part? + nil] + [table-of-contents () + delayed-block? + nil] + [local-table-of-contents (,scribble-optional-style-form-arg) + delayed-block? + nil])) + +(defconst scribble-manual-forms + `( + + [racketblock ([p - datum? -] ...) any/c nil] + [RACKETBLOCK ([p - datum? -] ...) any/c nil] + [racketblock0 ([p - datum? -] ...) any/c nil] + [RACKETBLOCK0 ([p - datum? -] ...) any/c nil] + + [racketresultblock ([p - datum? -] ...) any/c nil] + [RACKETRESULTBLOCK ([p - datum? -] ...) any/c nil] + [racketresultblock0 ([p - datum? -] ...) any/c nil] + [RACKETRESULTBLOCK0 ([p - datum? -] ...) any/c nil] + + [racketinput ([p - datum? -] ...) any/c nil] + [RACKETINPUT ([p - datum? -] ...) any/c nil] + + [racketmod ([k file string? "#f"] + [p - datum? -] + ...) + any/c + nil] + + [racket ([p - datum? -] ...) any/c nil] + [RACKET ([p - datum? -] ...) any/c nil] + + ;; TODO: For "racketresult" and "racketid", maybe override body faces. + [racketresult ([p - datum? -] ...) any/c scribble-racket-result-face] + [racketid ([p - datum? -] ...) any/c nil] + + [racketmodlink ([p - datum? -] + [p - pre-content-expr? -] + ...) + any/c + nil] + + [litchar ([p - string? -] ...) element? scribble-racket-litchar-face] + + [racketfont ([p - pre-content? -] ...) element? nil] + [racketvalfont ([p - pre-content? -] ...) element? scribble-racket-value-face] + [racketresultfont ([p - pre-content? -] ...) element? scribble-racket-result-face] + [racketidfont ([p - pre-content? -] ...) element? nil] + [racketvarfont ([p - pre-content? -] ...) element? nil] + [racketkeywordfont ([p - pre-content? -] ...) element? nil] + [racketparenfont ([p - pre-content? -] ...) element? nil] + [racketmetafont ([p - pre-content? -] ...) element? nil] + [racketerror ([p - pre-content? -] ...) element? nil] + [racketmodfont ([p - pre-content? -] ...) element? nil] + [racketoutputfont ([p - pre-content? -] ...) element? nil] + ;; TODO: Define faces for some of the above? + + ;; TODO: We could use overlays to make "@procedure" content have + ;; "#". + [procedure ([p - pre-content? -] ...) element? nil] + + [var ([p - datum? -] ...) element? nil] + [svar ([p - datum? -] ...) element? nil] + + ;; TODO: Possibly add support for all the "scheme" backword-compatibility + ;; identifiers. + + ;; TODO: !!! CONTINUE ADDING AFTER + ;; file:///usr/local/racket-5.0.2/share/racket/doc/scribble/scribble_manual_code.html + + )) + +(defconst scribble-bnf-forms + `([BNF ([p - (cons element? (listof element?)) -] ...) table? nil] + + [nonterm ([p - pre-content? -] ...) element? scribble-bnf-nonterm-face] + [BNF-seq ([p - element? -] ...) element? nil] + [BNF-group ([p - pre-content? -] ...) element? nil] + + [optional ([p - pre-content? -] ...) element? nil] + [kleenestar ([p - pre-content? -] ...) element? nil] + [kleeneplus ([p - pre-content? -] ...) element? nil] + + [kleenerange ([p n any/c -] + [p m any/c -] + [p - pre-content? -] + ...) + element? + nil] + + [BNF-alt ([p - element? -] ...) element? nil] + [BNF-etc ([p - string? -]) void scribble-comment-face])) + +(defconst scribble-forms + `(,@scribble-base-forms + ,@scribble-manual-forms + ,@scribble-bnf-forms)) + +(defconst scribble-name-string-to-form-hash + (let ((ht (make-hash-table :test 'equal))) + (mapc (lambda (form) + (puthash (symbol-name (scribble-get-form-name form)) form ht)) + scribble-forms) + ht)) + +(defun scribble-minus-to-nil (x) + (if (eq x '-) nil x)) + +(defun scribble-form-type-to-racket (type) + ;; TODO: translate true, false, rx, quote. Or convert types to strings. + (format "%s" type)) + +;;---------------------------------------------------------------- Syntax Table + +(defvar scribble-mode-syntax-table + (let ((st (make-syntax-table))) + + (modify-syntax-entry ? " " st) + (modify-syntax-entry ?\t " " st) + (modify-syntax-entry ?\f " " st) + (modify-syntax-entry ?\n ">" st) + + (modify-syntax-entry ?\" "." st) + + (modify-syntax-entry ?\@ "_ 1" st) + (modify-syntax-entry ?\# "_ 1" st) + (modify-syntax-entry ?\: "_ 1" st) + (modify-syntax-entry ?\; ". 2" st) + + (modify-syntax-entry ?\( "()" st) + (modify-syntax-entry ?\) ")(" st) + (modify-syntax-entry ?\[ "(]" st) + (modify-syntax-entry ?\] ")[" st) + (modify-syntax-entry ?\{ "(}" st) + (modify-syntax-entry ?\} "){" st) + + st)) + +;;------------------------------------------------------------- Forms Reference + +;; (defun scribble-forms-reference () +;; (interactive) +;; (scribble-buffer-display +;; "*Scribble Forms Reference*" +;; (function +;; (lambda () +;; (mapc (lambda (form) +;; (insert (scribble-form-quickref-text form) "\n\n")) +;; scribble-forms))))) + +;;------------------------------------------------------------------- Mode Menu + +(defvar scribble-mode-menu + (let ((km (make-sparse-keymap "Scribble"))) + + (define-key km [scribble-about] + '(menu-item "About Scribble Emacs Mode..." scribble-about + :help "See information about Scribble Emacs mode")) + + (define-key km [scribble-browse-mode-web] + '(menu-item "Browse Scribble Emacs Mode Web..." scribble-browse-mode-web + :help "Browse Web pages for Scribble Emacs mode")) + + ;; TODO: Browse/search scribble docs. + + (define-key km [scribble-separator-2] + `(menu-item "--")) + + ;; TODO: Experiment with this. Use local variable "scribble-modules" to + ;; specify in files, and update it programmatically from this interface. + ;; Can also have operation that scans "#lang" and "@(require" to determine + ;; or update this variable. Unfortunately can't use "-*-" line because + ;; Emacs currently (GNU 23.2) doesn't support it occuring after the "#lang" + ;; line. + (define-key km [scribble-forms-bnf] + '(menu-item "scribble/bnf" nil + :enable nil + :button (:toggle . t) + :help "!!!")) + (define-key km [scribble-forms-manual] + '(menu-item "scribble/manual" nil + :enable nil + :button (:toggle . nil) + :help "!!!")) + (define-key km [scribble-forms-base] + '(menu-item "scribble/base" nil + :enable nil + :button (:toggle . t) + :help "!!!")) + + ;; (define-key km [scribble-forms-reference] + ;; '(menu-item "Forms Reference..." scribble-forms-reference + ;; :help "Show a reference of Scribble forms")) + + (define-key km [scribble-separator-1] + `(menu-item "--")) + + (define-key km [scribble-customize] + '(menu-item "Customize..." scribble-customize + :help "Set Emacs customization options for Scribble")) + ;; TODO: Perhaps wrapping "completion-at-point" with another procedure + ;; that does "call-interactively" will work. + ;; + ;; (define-key km [scribble-completion-at-point] + ;; `(menu-item "Completion at Point" 'completion-at-point)) + + km)) + +;;---------------------------------------------------------------------- Keymap + +(defvar scribble-mode-map + (let ((km (make-sparse-keymap))) + (define-key km (kbd "M-TAB") 'completion-at-point) + (define-key km [menu-bar Scribble] (cons "Scribble" scribble-mode-menu)) + km)) + +;;------------------------------------------------------------------- Font-Lock + +;; TODO: Should probably switch to using something other than font-lock, like +;; handwritten fuzzy parser. + +(defvar scribble-font-lock-keywords + `( + ,@(mapcar (lambda (face-to-namerxs-pair) + (let ((face (car face-to-namerxs-pair))) + `(,(concat "\\(" ; < 1 at-name + "@" + (let ((names (cdr face-to-namerxs-pair))) + (if (cdr names) + (regexp-opt names) + (car names))) + "\\)" ; > 1 at-name + "\\b" + "\\(?:" ; < opt-squares + "\\(\\[\\)" ; = 2 open-square + "[^]]*" ; + "\\(\\]\\)" ; = 3 close-square + "\\)?" ; > opt-squares + "\\(?:" ; < opt-curlies + "\\({\\)" ; ; = 4 open-curly + (if face "\\(" "") + "[^}]*" ; + (if face "\\)" "") + "\\(}\\)" ; = 5,6 close-curly + "\\)?" ; > opt-curlies + ) + (1 'scribble-at-keyword-face) + (2 'scribble-square-bracket-face nil t) + (3 'scribble-square-bracket-face nil t) + (4 'scribble-curly-brace-face nil t) + ,@(if face + `((5 (quote ,face) nil t)) + '()) + (,(if face 6 5) 'scribble-curly-brace-face nil t)))) + (let ((face-to-namerxs-alist '())) + (mapc (lambda (form) + (let* ((namerx (regexp-quote + (symbol-name (scribble-get-form-name + form)))) + (face (scribble-get-form-face form)) + (pair (assq face face-to-namerxs-alist))) + (if pair + (setcdr pair (cons namerx (cdr pair))) + (setq face-to-namerxs-alist + `((,face . (,namerx)) + ,@face-to-namerxs-alist))))) + scribble-forms) + face-to-namerxs-alist)) + + ("\\(@\\)\\(PLaneT\\)" + (1 'scribble-at-keyword-face) + (2 'scribble-planet-face)) + + ;; TODO: Is this right? + ;; + ;; ("\\(@\\)@" + ;; (1 'scribble-at-keyword-face)) + + ("\\(@#reader\\)[ ]+\\([^\r\n]+\\)" + (1 'scribble-at-keyword-face) + (2 'scribble-at-keyword-face)) + + ("\\`\\(#lang\\)[ ]+\\([^\r\n]+\\)" + (1 'scribble-at-keyword-face) + (2 'scribble-at-keyword-face)))) + +(defvar scribble-font-lock-defaults + `(scribble-font-lock-keywords nil)) + +;;----------------------------------------------------------------------- Imenu + +(defvar scribble-imenu-generic-expression + '((nil + "@\\(?:sub\\(?:sub\\)?\\)?section\\(?:\\[[^]]*\\]\\)?{\\([^}]*\\)" + 1))) + +;; TODO: Use one of the lower-level ways of doing this. + +;;------------------------------------------------------------------ Characters + +(defconst scribble-right-arrow-char 8594) + +;;-------------------------------------------------------------------- Quickref + +;; TODO: !!! this needs work since eldoc was forked out of this. +;; +;; (defun scribble-form-type-to-quickref (type) +;; (propertize (scribble-form-type-to-racket type) +;; 'face 'scribble-quickref-type-face)) +;; +;; (defconst scribble-quickref-dotdotdot +;; (propertize "..." 'face 'scribble-quickref-meta-face)) +;; +;; (defconst scribble-quickref-space +;; (propertize " " 'face 'scribble-quickref-default-face)) +;; +;; (defconst scribble-quickref-open-paren +;; (propertize "(" 'face 'scribble-quickref-literal-face)) +;; +;; (defconst scribble-quickref-close-paren +;; (propertize ")" 'face 'scribble-quickref-literal-face)) +;; +;; (defconst scribble-quickref-open-optional +;; (propertize "[" 'face 'scribble-quickref-meta-face)) +;; +;; (defconst scribble-quickref-close-optional +;; (propertize "]" 'face 'scribble-quickref-meta-face)) +;; +;; (defconst scribble-quickref-space-colon-space +;; (concat scribble-quickref-space +;; (propertize ":" 'face 'scribble-quickref-meta-face) +;; scribble-quickref-space)) +;; +;; (defconst scribble-quickref-space-equal-space +;; (concat scribble-quickref-space +;; (propertize "=" 'face 'scribble-quickref-meta-face) +;; scribble-quickref-space)) +;; +;; (defun scribble-form-arg-to-quickref (arg) +;; (if (eq arg '...) +;; scribble-quickref-dotdotdot +;; (let* ((fmt '()) +;; (kind (scribble-get-formarg-kind arg)) +;; (name (scribble-minus-to-nil +;; (scribble-get-formarg-name arg))) +;; (type (scribble-get-formarg-type arg)) +;; (default (scribble-minus-to-nil +;; (scribble-get-formarg-default arg))) +;; (name-str (if name (symbol-name name) nil)) +;; (type-str (scribble-form-type-to-racket type)) +;; (type-ps (propertize type-str +;; 'face 'scribble-quickref-type-face))) +;; (cond ((eq kind 'p) +;; (setq fmt +;; (if name-str +;; `(,type-ps +;; ,scribble-quickref-space-colon-space +;; ,(propertize name-str +;; 'face +;; 'scribble-quickref-arg-face)) +;; `(,type-ps)))) +;; ((eq kind 'k) +;; (or name-str +;; (error "formarg kind k must have name in %s" arg)) +;; (setq fmt +;; `(,type-ps +;; ,scribble-quickref-space-colon-space +;; ,(propertize (concat "#:" name-str) +;; 'face 'scribble-quickref-keyword-face)))) +;; (t (error "invalid formarg kind in %s" arg))) +;; (apply 'concat +;; (if default +;; (reverse +;; `(,(propertize default 'face 'scribble-quickref-value-face) +;; ,scribble-quickref-space-equal-space +;; ,@fmt)) +;; (reverse fmt)))))) +;; +;; (defun scribble-form-quickref-text (form) +;; ;; TODO: !!! working on this +;; (let* ((at (propertize "@" 'face 'scribble-quickref-at-face)) +;; (space-arrow-space +;; (concat scribble-quickref-space +;; (propertize (string scribble-right-arrow-char) +;; 'face +;; 'scribble-quickref-meta-face) +;; scribble-quickref-space))) +;; (apply +;; 'concat +;; `(,at +;; ,(propertize (symbol-name (scribble-get-form-name form)) +;; 'face 'scribble-quickref-form-name-face) +;; ,@(let ((args (scribble-get-form-args form))) +;; (if args +;; (let ((fmt '())) +;; (mapc (lambda (arg) +;; (setq fmt `(,(scribble-form-arg-to-quickref arg) +;; ,scribble-quickref-space +;; ,@fmt))) +;; args) +;; (reverse fmt)) +;; '())) +;; ,closeparen-space-arrow-space +;; ,(scribble-form-type-to-quickref (scribble-get-form-type form)))))) + +;;------------------------------------------------------------------------ ElDoc + +(defconst scribble-eldoc-dotdotdot + (propertize "..." 'face 'scribble-eldoc-meta-face)) + +(defconst scribble-eldoc-space + (propertize " " 'face 'scribble-eldoc-default-face)) + +(defconst scribble-eldoc-open-paren + (propertize "(" 'face 'scribble-eldoc-literal-face)) + +(defconst scribble-eldoc-close-paren + (propertize ")" 'face 'scribble-eldoc-literal-face)) + +(defconst scribble-eldoc-open-optional + (propertize "[" 'face 'scribble-eldoc-meta-face)) + +(defconst scribble-eldoc-close-optional + (propertize "]" 'face 'scribble-eldoc-meta-face)) + +(defconst scribble-eldoc-closeparen-space-arrow-space + (concat scribble-eldoc-close-paren + scribble-eldoc-space + (propertize (string scribble-right-arrow-char) + 'face + 'scribble-eldoc-meta-face) + scribble-eldoc-space)) + +(defun scribble-form-arg-to-eldoc (arg) + (if (eq arg '...) + scribble-eldoc-dotdotdot + (let* ((kind (scribble-get-formarg-kind arg)) + (name (scribble-minus-to-nil (scribble-get-formarg-name arg))) + (name-str (if name (symbol-name name) nil)) + (id-ps + (cond ((eq kind 'p) + (propertize (or name-str + (scribble-form-type-to-racket + (scribble-get-formarg-type arg))) + 'face + 'scribble-eldoc-nonterminal-face)) + ((eq kind 'k) + (propertize + (concat "#:" + (or name-str + (error "formarg kind k must have name in %s" + arg))) + 'face 'scribble-eldoc-literal-face)) + (t (error "invalid formarg kind in %s" arg))))) + (if (eq '- (scribble-get-formarg-default arg)) + id-ps + (concat scribble-eldoc-open-optional + id-ps + scribble-eldoc-close-optional))))) + +(defun scribble-make-form-eldoc-message (form) + (apply + 'concat + `(,scribble-eldoc-open-paren + ,(propertize (symbol-name (scribble-get-form-name form)) + 'face 'scribble-eldoc-literal-face) + ,@(let ((args (scribble-get-form-args form))) + (if args + (let ((fmt '())) + (mapc (lambda (arg) + (setq fmt `(,(scribble-form-arg-to-eldoc arg) + ,scribble-eldoc-space + ,@fmt))) + args) + (reverse fmt)) + '())) + ,scribble-eldoc-closeparen-space-arrow-space + ,(propertize (scribble-form-type-to-racket (scribble-get-form-type form)) + 'face + 'scribble-eldoc-nonterminal-face)))) + +(defconst scribble-name-to-eldoc-message-hash + (let ((ht (make-hash-table :test 'equal))) + (mapc (lambda (form) + (puthash (symbol-name (scribble-get-form-name form)) + (scribble-make-form-eldoc-message form) + ht)) + scribble-forms) + ht)) + +(defun scribble-get-form-eldoc-message (form) + (scribble-make-form-eldoc-message form)) + +(defun scribble-eldoc-documentation-function () + ;; TODO: Implement this properly, figuring out which form we're in. Might + ;; wait until we implement better fontification, using the same parsing + ;; mechanism. + ;; + ;; TODO: !!! Maybe look for "@"-name under point, and if that fails, then + ;; up-sexp, and then look for an @-name to left of point (or left-sexp if + ;; there is a square-bracket to left of point. + (let ((word (let ((c (char-after (point)))) + (and c + (memq (char-syntax c) '(?w ?_)) + (current-word))))) + (and (> (length word) 0) + (equal ?@ (aref word 0)) + (gethash (substring word 1) + scribble-name-to-eldoc-message-hash + nil)))) + +;;------------------------------------------------------------------ Completion + +(defun scribble-build-completion-table () + (sort (let ((kw-seen-hash (make-hash-table :test 'eq)) + (result '("Felleisen"))) + (mapc (lambda (form) + (setq result (cons (symbol-name (scribble-get-form-name form)) + result)) + (mapc (lambda (arg) + (and (vectorp arg) + (eq 'k (scribble-get-formarg-kind arg)) + (let ((sym (scribble-get-formarg-name arg))) + (or (gethash sym kw-seen-hash) + (progn (puthash sym t kw-seen-hash) + (setq result + (cons (concat + "#:" + (symbol-name sym)) + result))))))) + (scribble-get-form-args form))) + scribble-forms) + result) + 'string<)) + +(defconst scribble-completion-table (scribble-build-completion-table)) + +(defconst scribble-completion-at-point-tail + (list scribble-completion-table + ;; :annotation-function 'scribble-completion-annotate-function + )) + +(defun scribble-completion-at-point-function () + (let* ((end (point)) + (start (let ((c (char-before end))) + (if (and c (memq (char-syntax c) '(?w ?_))) + (save-excursion + (backward-sexp 1) + (and (eq ?\@ (char-after (point))) + (forward-char 1)) + (point)) + end)))) + `(,start ,end ,@scribble-completion-at-point-tail))) + +;;-------------------------------------------------------------- Buffer Display + +(defun scribble-buffer-display (name proc) + (save-excursion + (set-buffer (get-buffer-create name)) + (toggle-read-only 0) + (buffer-disable-undo) + (goto-char (point-min)) + (delete-region (point-min) (point-max)) + (funcall proc) + (buffer-enable-undo) + (set-buffer-modified-p nil) + (toggle-read-only 1) + (goto-char (point-min)) + ;; TODO: Maybe make "q" restore window config. + (local-set-key "q" 'scribble-quit-buffer-display) + (pop-to-buffer (current-buffer)) + (message "Press \"q\" to quit the \"%s\" buffer." name))) + +(defun scribble-quit-buffer-display () + (interactive) + (let ((buf (current-buffer))) + (condition-case nil + (delete-window) + (error nil)) + (kill-buffer buf))) + +;;---------------------------------------------------------------- Web Browsing + +(defun scribble-browse-mode-web () + (interactive) + (browse-url scribble-mode-web)) + +;; TODO: Add browsing to Scribble documentation. First try to find URLs to +;; their existing documentation (based "~/.racket" and on dir of "racket" +;; command). Fall back to public Web version. + +;;----------------------------------------------------------------------- About + +(defun scribble-about () + (interactive) + (scribble-buffer-display + "*About Scribble Mode*" + (function + (lambda () + (insert (propertize scribble-mode-title 'face 'bold) + "\n\n" + "Version " + (propertize scribble-mode-version 'face 'bold) + "\n\n" + (propertize scribble-mode-web 'face 'bold) + "\n\n" + scribble-mode-legal-notices + "\n"))))) + +;;--------------------------------------------------------------- Mode Function + +;;;###autoload +(defun scribble-mode () + "!!! `\[COMMAND]', `\{KEYMAP}', and `\'" + (interactive) + + (kill-all-local-variables) + + (use-local-map scribble-mode-map) + + (set-syntax-table scribble-mode-syntax-table) + + (setq fill-column 79) + + ;; Comments: + (set (make-local-variable 'comment-start) "@;") + (set (make-local-variable 'comment-end) "") + (set (make-local-variable 'comment-padding) 1) + (set (make-local-variable 'comment-multi-line) nil) + (set (make-local-variable 'comment-start-skip) + "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *") + + ;; TODO: comment-indent-function + + ;; TODO: indent-line-function + + ;; TODO: abbrev + + ;; Font-Lock: + (set (make-local-variable 'font-lock-defaults) scribble-font-lock-defaults) + + ;; Imenu: + (set (make-local-variable 'imenu-generic-expression) + scribble-imenu-generic-expression) + (set (make-local-variable 'imenu-case-fold-search) nil) + (imenu-add-to-menubar "Imenu") + + ;; ElDoc: + (set (make-local-variable 'eldoc-documentation-function) + 'scribble-eldoc-documentation-function) + (turn-on-eldoc-mode) + + ;; Completion: + (set (make-local-variable 'completion-at-point-functions) + (list 'scribble-completion-at-point-function)) + + ;; Mode Identification: + (setq mode-name "Scribble") + (setq major-mode 'scribble-mode) + + ;; Hooks: + (run-mode-hooks 'scribble-mode-hook)) + +;;------------------------------------------------------------------- Auto-Mode + +;;;###autoload +(mapc (lambda (pair) + (or (assoc (car pair) auto-mode-alist) + (push pair auto-mode-alist))) + '(("\\.scrbl\\'" . scribble-mode))) + +;;--------------------------------------------------------------------- Provide + +(provide 'scribble) + +;;; scribble.el ends here diff --git a/.emacs.d/snippets/latex-mode/.yas-compiled-snippets.el b/.emacs.d/snippets/latex-mode/.yas-compiled-snippets.el new file mode 100644 index 0000000..a25720d --- /dev/null +++ b/.emacs.d/snippets/latex-mode/.yas-compiled-snippets.el @@ -0,0 +1,8 @@ +;;; Compiled snippets and support files for `latex-mode' +;;; Snippet definitions: +;;; +(yas-define-snippets 'latex-mode + '(("begin" "\\begin{$1}\n\n $0\n\n\\end{$1}\n" "begin" nil nil nil nil nil nil))) + + +;;; Do not edit! File generated at Mon Jun 2 06:32:05 2014 diff --git a/.emacs.d/snippets/latex-mode/begin b/.emacs.d/snippets/latex-mode/begin new file mode 100644 index 0000000..55dc1bd --- /dev/null +++ b/.emacs.d/snippets/latex-mode/begin @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: begin +# key: begin +# -- +\begin{$1} + + $0 + +\end{$1} diff --git a/.emacs.d/snippets/markdown-mode/.yas-compiled-snippets.el b/.emacs.d/snippets/markdown-mode/.yas-compiled-snippets.el new file mode 100644 index 0000000..a3cf21b --- /dev/null +++ b/.emacs.d/snippets/markdown-mode/.yas-compiled-snippets.el @@ -0,0 +1,8 @@ +;;; Compiled snippets and support files for `markdown-mode' +;;; Snippet definitions: +;;; +(yas-define-snippets 'markdown-mode + '(("blog" "---\ntitle: ${1:title}\nauthor: `(insert-author)`\ndate: `(insert-date)`\ndescription: ${2:description}\nupdated: ${3:updated}\ntags: ${4:general}\n---\n\n$0" "blog" nil nil nil nil nil nil))) + + +;;; Do not edit! File generated at Mon Jun 2 06:32:05 2014 diff --git a/.emacs.d/snippets/markdown-mode/blog b/.emacs.d/snippets/markdown-mode/blog new file mode 100644 index 0000000..8276806 --- /dev/null +++ b/.emacs.d/snippets/markdown-mode/blog @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: blog +# key: blog +# -- +--- +title: ${1:title} +author: `(insert-author)` +date: `(insert-date)` +description: ${2:description} +updated: ${3:updated} +tags: ${4:general} +--- + +$0 \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/and b/.emacs.d/snippets/scheme-mode/and new file mode 100755 index 0000000..63e9df9 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/and @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: and +# key: and +# key: a +# -- +(and $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/append b/.emacs.d/snippets/scheme-mode/append new file mode 100755 index 0000000..2256218 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/append @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: append +# key: append +# -- +(append $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/apply b/.emacs.d/snippets/scheme-mode/apply new file mode 100755 index 0000000..c066886 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/apply @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: apply +# key: apply +# -- +(apply $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/car b/.emacs.d/snippets/scheme-mode/car new file mode 100755 index 0000000..3e68c3a --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/car @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: car +# key: car +# -- +(car $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/cdr b/.emacs.d/snippets/scheme-mode/cdr new file mode 100755 index 0000000..9f65f4f --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/cdr @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: cdr +# key: cdr +# -- +(cdr $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/class b/.emacs.d/snippets/scheme-mode/class new file mode 100644 index 0000000..0c24a3e --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/class @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: class +# key: cls +# -- +(class ${1:object%} + (super-new$2) + (init$3) + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/cond b/.emacs.d/snippets/scheme-mode/cond new file mode 100644 index 0000000..a23dd86 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/cond @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: cond +# key: cond +# -- +(cond [${1:expr} ${2:body}] + [$0]) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/cons b/.emacs.d/snippets/scheme-mode/cons new file mode 100755 index 0000000..216490a --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/cons @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: cons +# key: cons +# -- +(cons $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/define b/.emacs.d/snippets/scheme-mode/define new file mode 100644 index 0000000..38fbf8a --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/define @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (define (head args) body ...+) +# key: def +# -- +(define (${1:fun} ${2:args}) + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/define-match b/.emacs.d/snippets/scheme-mode/define-match new file mode 100644 index 0000000..aafa133 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/define-match @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: define/match +# key: defm +# -- +(define/match (${1:fun} ${2:args}) + [(${3:pat})${4: #:when ${5:expr}} ${6:body}]$0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/define-public b/.emacs.d/snippets/scheme-mode/define-public new file mode 100644 index 0000000..743c247 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/define-public @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: define/public +# key: defp +# -- +(define/public (${1:fun} ${2:args}) + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/define-syntax b/.emacs.d/snippets/scheme-mode/define-syntax new file mode 100644 index 0000000..b8276b8 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/define-syntax @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (define-syntax id expr) +# key: defs +# -- +(define-syntax ${1:id} + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/define-syntax-rule b/.emacs.d/snippets/scheme-mode/define-syntax-rule new file mode 100644 index 0000000..7101634 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/define-syntax-rule @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: define-syntax-rule +# key: defsr +# -- +(define-syntax-rule (${1:id} ${2:pat}) + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/define-syntax.1 b/.emacs.d/snippets/scheme-mode/define-syntax.1 new file mode 100644 index 0000000..c89ee61 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/define-syntax.1 @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (define-syntax (head args) body ...+) +# key: defs +# -- +(define-syntax (${1:id} ${2:stx}) + $0) diff --git a/.emacs.d/snippets/scheme-mode/define.1 b/.emacs.d/snippets/scheme-mode/define.1 new file mode 100644 index 0000000..04cfb47 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/define.1 @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (define id expr) +# key: def +# -- +(define ${1:var} $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/lambda b/.emacs.d/snippets/scheme-mode/lambda new file mode 100755 index 0000000..5ebb939 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/lambda @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (lambda (args ...) body ...+) +# key: lambda +# -- +(lambda (${1:args}) $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/lambda.1 b/.emacs.d/snippets/scheme-mode/lambda.1 new file mode 100644 index 0000000..c7da781 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/lambda.1 @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (lambda rest-id body ...+) +# key: lambda +# -- +(lambda ${1:rest-id} $0) diff --git a/.emacs.d/snippets/scheme-mode/lambda.2 b/.emacs.d/snippets/scheme-mode/lambda.2 new file mode 100644 index 0000000..65e1a49 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/lambda.2 @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (lambda (args ...+ . rest-id) body ...+) +# key: lambda +# -- +(lambda (${1:args} . ${2:rst}) $0) diff --git a/.emacs.d/snippets/scheme-mode/length b/.emacs.d/snippets/scheme-mode/length new file mode 100755 index 0000000..da00ace --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/length @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: length +# key: length +# -- +(length $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/let b/.emacs.d/snippets/scheme-mode/let new file mode 100755 index 0000000..51bfb1e --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/let @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (let ([id val-expr] ...) body ...+) +# key: let +# -- +(let ([$1]$2) + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/let* b/.emacs.d/snippets/scheme-mode/let* new file mode 100644 index 0000000..5596f15 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/let* @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (let* ([id val-expr] ...) body ...+) +# key: let* +# -- +(let* ([$1]$2) + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/let.1 b/.emacs.d/snippets/scheme-mode/let.1 new file mode 100644 index 0000000..d9d8e24 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/let.1 @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (let proc-id ([id init-expr] ...) body ...+) +# key: let +# -- +(let ${1:proc-id} ([$2]$3) + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/letrec b/.emacs.d/snippets/scheme-mode/letrec new file mode 100644 index 0000000..e71f3b1 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/letrec @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: (letrec ([id val-expr] ...) body ...+) +# key: letr +# -- +(letrec ([$1]$2) + $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/list b/.emacs.d/snippets/scheme-mode/list new file mode 100755 index 0000000..11be961 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/list @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: list +#key: list +# -- +(list $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/match b/.emacs.d/snippets/scheme-mode/match new file mode 100644 index 0000000..916d440 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/match @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: match +# key: mat +# -- +(match ${1:val} + [${2:pat}${3: #:when ${4:expr}} ${5:body}]$0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/match* b/.emacs.d/snippets/scheme-mode/match* new file mode 100644 index 0000000..ae31960 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/match* @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Collin J. Doering +# name: match* +# key: mat* +# -- +(match* (${1:vals}) + [${2:pat}${3: #:when ${4:expr}} ${5:body}]$0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/or b/.emacs.d/snippets/scheme-mode/or new file mode 100755 index 0000000..506fcc9 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/or @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: or +# key: or +# key: o +# -- +(or $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/quote b/.emacs.d/snippets/scheme-mode/quote new file mode 100644 index 0000000..afa3b31 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/quote @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: quote +# key: quo +# -- +(quote $0) \ No newline at end of file diff --git a/.emacs.d/snippets/scheme-mode/repeat b/.emacs.d/snippets/scheme-mode/repeat new file mode 100755 index 0000000..8b71195 --- /dev/null +++ b/.emacs.d/snippets/scheme-mode/repeat @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Xah Lee (XahLee.org) +# name: repeat +# key: repeat +# -- +(repeat $0) \ No newline at end of file diff --git a/.emacs.d/templates/c-template.c b/.emacs.d/templates/c-template.c index b544a40..c4eb9a3 100644 --- a/.emacs.d/templates/c-template.c +++ b/.emacs.d/templates/c-template.c @@ -1,5 +1,5 @@ /** - * (C) Copyright Collin Doering @!@YEAR@!@ + * (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ * * 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 @@ -17,7 +17,7 @@ /** * File: @!@FILE@!@ - * Author: Collin J. Doering + * Author: @!@AUTHOR@!@ <@!@EMAIL@!@> * Date: @!@DATE@!@ */ diff --git a/.emacs.d/templates/clojure-template.clj b/.emacs.d/templates/clojure-template.clj index 1eb7deb..91d07e2 100644 --- a/.emacs.d/templates/clojure-template.clj +++ b/.emacs.d/templates/clojure-template.clj @@ -1,4 +1,4 @@ -;; (C) Copyright Collin Doering @!@YEAR@!@ +;; (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ ;; ;; 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 @@ -14,6 +14,6 @@ ;; along with this program. If not, see . ;; File: @!@FILE@!@ -;; Author: Collin J. Doering +;; Author: @!@AUTHOR@!@ <@!@EMAIL@!@ ;; Date: @!@DATE@!@ diff --git a/.emacs.d/templates/css-template.css b/.emacs.d/templates/css-template.css index b544a40..0cc3d3a 100644 --- a/.emacs.d/templates/css-template.css +++ b/.emacs.d/templates/css-template.css @@ -1,5 +1,5 @@ /** - * (C) Copyright Collin Doering @!@YEAR@!@ + * (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ * * 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 @@ -17,7 +17,7 @@ /** * File: @!@FILE@!@ - * Author: Collin J. Doering + * Author: @!@AUTHOR@!@ <@!@EMAIL@!@ * Date: @!@DATE@!@ */ diff --git a/.emacs.d/templates/emacs-lisp-template.el b/.emacs.d/templates/emacs-lisp-template.el index 1eb7deb..e1e1976 100644 --- a/.emacs.d/templates/emacs-lisp-template.el +++ b/.emacs.d/templates/emacs-lisp-template.el @@ -1,4 +1,4 @@ -;; (C) Copyright Collin Doering @!@YEAR@!@ +;; (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ ;; ;; 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 @@ -14,6 +14,6 @@ ;; along with this program. If not, see . ;; File: @!@FILE@!@ -;; Author: Collin J. Doering +;; Author: @!@AUTHOR@!@ <@!@EMAIL@!@> ;; Date: @!@DATE@!@ diff --git a/.emacs.d/templates/erlang-template.erl b/.emacs.d/templates/erlang-template.erl index eddacfe..bf749f4 100644 --- a/.emacs.d/templates/erlang-template.erl +++ b/.emacs.d/templates/erlang-template.erl @@ -1,4 +1,4 @@ -% (C) Copyright Collin Doering @!@YEAR@!@ +% (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ % % 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 @@ -14,6 +14,6 @@ % along with this program. If not, see . % File: @!@FILE@!@ -% Author: Collin J. Doering +% Author: @!@AUTHOR@!@ <@!@EMAIL@!@> % Date: @!@DATE@!@ diff --git a/.emacs.d/templates/haml-template.haml b/.emacs.d/templates/haml-template.haml index ba240fc..d78559c 100644 --- a/.emacs.d/templates/haml-template.haml +++ b/.emacs.d/templates/haml-template.haml @@ -1,4 +1,4 @@ -// (C) Copyright Collin Doering @!@YEAR@!@ +// (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ // // 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 @@ -14,6 +14,6 @@ // along with this program. If not, see . // File: @!@FILE@!@ -// Author: Collin J. Doering +// Author: @!@AUTHOR@!@ <@!@EMAIL@!@> // Date: @!@DATE@!@ diff --git a/.emacs.d/templates/haskell-template.hs b/.emacs.d/templates/haskell-template.hs index 4c841a8..03b35d6 100644 --- a/.emacs.d/templates/haskell-template.hs +++ b/.emacs.d/templates/haskell-template.hs @@ -1,4 +1,4 @@ --- (C) Copyright Collin Doering @!@YEAR@!@ +-- (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ -- -- 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 @@ -14,6 +14,6 @@ -- along with this program. If not, see . -- File: @!@FILE@!@ --- Author: Collin J. Doering +-- Author: @!@AUTHOR@!@ <@!@EMAIL@!@> -- Date: @!@DATE@!@ diff --git a/.emacs.d/templates/java-script-template.js b/.emacs.d/templates/java-script-template.js index b544a40..c4eb9a3 100644 --- a/.emacs.d/templates/java-script-template.js +++ b/.emacs.d/templates/java-script-template.js @@ -1,5 +1,5 @@ /** - * (C) Copyright Collin Doering @!@YEAR@!@ + * (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ * * 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 @@ -17,7 +17,7 @@ /** * File: @!@FILE@!@ - * Author: Collin J. Doering + * Author: @!@AUTHOR@!@ <@!@EMAIL@!@> * Date: @!@DATE@!@ */ diff --git a/.emacs.d/templates/java-template.java b/.emacs.d/templates/java-template.java index f555d69..fd87abf 100644 --- a/.emacs.d/templates/java-template.java +++ b/.emacs.d/templates/java-template.java @@ -1,5 +1,5 @@ /** - * (C) Copyright Collin Doering @!@YEAR@!@ + * (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ * * 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 @@ -17,6 +17,6 @@ /** * File: @!@FILE@!@ - * Author: Collin J. Doering + * Author: @!@AUTHOR@!@ <@!@EMAIL@!@> * Date: @!@DATE@!@ */ diff --git a/.emacs.d/templates/lisp-template.lisp b/.emacs.d/templates/lisp-template.lisp index 1eb7deb..e1e1976 100644 --- a/.emacs.d/templates/lisp-template.lisp +++ b/.emacs.d/templates/lisp-template.lisp @@ -1,4 +1,4 @@ -;; (C) Copyright Collin Doering @!@YEAR@!@ +;; (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ ;; ;; 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 @@ -14,6 +14,6 @@ ;; along with this program. If not, see . ;; File: @!@FILE@!@ -;; Author: Collin J. Doering +;; Author: @!@AUTHOR@!@ <@!@EMAIL@!@> ;; Date: @!@DATE@!@ diff --git a/.emacs.d/templates/lua-template.lua b/.emacs.d/templates/lua-template.lua index 4c841a8..03b35d6 100644 --- a/.emacs.d/templates/lua-template.lua +++ b/.emacs.d/templates/lua-template.lua @@ -1,4 +1,4 @@ --- (C) Copyright Collin Doering @!@YEAR@!@ +-- (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ -- -- 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 @@ -14,6 +14,6 @@ -- along with this program. If not, see . -- File: @!@FILE@!@ --- Author: Collin J. Doering +-- Author: @!@AUTHOR@!@ <@!@EMAIL@!@> -- Date: @!@DATE@!@ diff --git a/.emacs.d/templates/ocaml-template.ml b/.emacs.d/templates/ocaml-template.ml index f9c12a6..8c9b0ec 100644 --- a/.emacs.d/templates/ocaml-template.ml +++ b/.emacs.d/templates/ocaml-template.ml @@ -1,5 +1,5 @@ (* - * (C) Copyright Collin Doering @!@YEAR@!@ + * (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ * * 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 @@ -17,7 +17,7 @@ (* * File: @!@FILE@!@ - * Author: Collin J. Doering + * Author: @!@AUTHOR@!@ <@!@EMAIL@!@> * Date: @!@DATE@!@ *) diff --git a/.emacs.d/templates/php-template.php b/.emacs.d/templates/php-template.php index a04a5f1..a9b89f4 100644 --- a/.emacs.d/templates/php-template.php +++ b/.emacs.d/templates/php-template.php @@ -1,7 +1,7 @@ * Date: @!@DATE@!@ */ diff --git a/.emacs.d/templates/python-template.py b/.emacs.d/templates/python-template.py index 0c076c1..cfd7b97 100644 --- a/.emacs.d/templates/python-template.py +++ b/.emacs.d/templates/python-template.py @@ -1,4 +1,4 @@ -# (C) Copyright Collin Doering @!@YEAR@!@ +# (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ # # 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 @@ -14,6 +14,6 @@ # along with this program. If not, see . # File: @!@FILE@!@ -# Author: Collin J. Doering +# Author: @!@AUTHOR@!@ <@!@EMAIL@!@> # Date: @!@DATE@!@ diff --git a/.emacs.d/templates/racket-template.rkt b/.emacs.d/templates/racket-template.rkt index d0ef66f..43dd5c0 100644 --- a/.emacs.d/templates/racket-template.rkt +++ b/.emacs.d/templates/racket-template.rkt @@ -1,6 +1,6 @@ #lang racket -;; (C) Copyright Collin Doering @!@YEAR@!@ +;; (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ ;; ;; 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 @@ -16,6 +16,6 @@ ;; along with this program. If not, see . ;; File: @!@FILE@!@ -;; Author: Collin J. Doering +;; Author: @!@AUTHOR@!@ <@!@EMAIL@!@> ;; Date: @!@DATE@!@ diff --git a/.emacs.d/templates/ruby-template.rb b/.emacs.d/templates/ruby-template.rb index 0c076c1..cfd7b97 100644 --- a/.emacs.d/templates/ruby-template.rb +++ b/.emacs.d/templates/ruby-template.rb @@ -1,4 +1,4 @@ -# (C) Copyright Collin Doering @!@YEAR@!@ +# (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ # # 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 @@ -14,6 +14,6 @@ # along with this program. If not, see . # File: @!@FILE@!@ -# Author: Collin J. Doering +# Author: @!@AUTHOR@!@ <@!@EMAIL@!@> # Date: @!@DATE@!@ diff --git a/.emacs.d/templates/sass-template.sass b/.emacs.d/templates/sass-template.sass index ba240fc..d78559c 100644 --- a/.emacs.d/templates/sass-template.sass +++ b/.emacs.d/templates/sass-template.sass @@ -1,4 +1,4 @@ -// (C) Copyright Collin Doering @!@YEAR@!@ +// (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ // // 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 @@ -14,6 +14,6 @@ // along with this program. If not, see . // File: @!@FILE@!@ -// Author: Collin J. Doering +// Author: @!@AUTHOR@!@ <@!@EMAIL@!@> // Date: @!@DATE@!@ diff --git a/.emacs.d/templates/scala-template.scala b/.emacs.d/templates/scala-template.scala index b544a40..c4eb9a3 100644 --- a/.emacs.d/templates/scala-template.scala +++ b/.emacs.d/templates/scala-template.scala @@ -1,5 +1,5 @@ /** - * (C) Copyright Collin Doering @!@YEAR@!@ + * (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ * * 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 @@ -17,7 +17,7 @@ /** * File: @!@FILE@!@ - * Author: Collin J. Doering + * Author: @!@AUTHOR@!@ <@!@EMAIL@!@> * Date: @!@DATE@!@ */ diff --git a/.emacs.d/templates/scheme-template.scm b/.emacs.d/templates/scheme-template.scm index 1eb7deb..e1e1976 100644 --- a/.emacs.d/templates/scheme-template.scm +++ b/.emacs.d/templates/scheme-template.scm @@ -1,4 +1,4 @@ -;; (C) Copyright Collin Doering @!@YEAR@!@ +;; (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ ;; ;; 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 @@ -14,6 +14,6 @@ ;; along with this program. If not, see . ;; File: @!@FILE@!@ -;; Author: Collin J. Doering +;; Author: @!@AUTHOR@!@ <@!@EMAIL@!@> ;; Date: @!@DATE@!@ diff --git a/.emacs.d/templates/scss-template.scss b/.emacs.d/templates/scss-template.scss index ba240fc..d78559c 100644 --- a/.emacs.d/templates/scss-template.scss +++ b/.emacs.d/templates/scss-template.scss @@ -1,4 +1,4 @@ -// (C) Copyright Collin Doering @!@YEAR@!@ +// (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ // // 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 @@ -14,6 +14,6 @@ // along with this program. If not, see . // File: @!@FILE@!@ -// Author: Collin J. Doering +// Author: @!@AUTHOR@!@ <@!@EMAIL@!@> // Date: @!@DATE@!@ diff --git a/.emacs.d/templates/shell-template.sh b/.emacs.d/templates/shell-template.sh index c661c84..356eef2 100644 --- a/.emacs.d/templates/shell-template.sh +++ b/.emacs.d/templates/shell-template.sh @@ -1,6 +1,6 @@ #!/bin/sh -# (C) Copyright Collin Doering @!@YEAR@!@ +# (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ # # 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 @@ -16,6 +16,6 @@ # along with this program. If not, see . # File: @!@FILE@!@ -# Author: Collin J. Doering +# Author: @!@AUTHOR@!@ <@!@EMAIL@!@> # Date: @!@DATE@!@ diff --git a/.emacs.d/templates/sml-template.ml b/.emacs.d/templates/sml-template.ml index ab82496..b902b63 100644 --- a/.emacs.d/templates/sml-template.ml +++ b/.emacs.d/templates/sml-template.ml @@ -1,5 +1,5 @@ (* - * (C) Copyright Collin Doering 2013 + * (C) Copyright @!@AUTHOR@!@ @!@YEAR@!@ * * 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 @@ -17,7 +17,7 @@ (* * File: sml-template.ml - * Author: Collin J. Doering - * Date: Mar 5, 2013 + * Author: @!@AUTHOR@!@ <@!@EMAIL@!@> + * Date: @!@DATE@!@ *) diff --git a/.emacs.d/themes/manoj-transparent-theme.el b/.emacs.d/themes/manoj-transparent-theme.el index f1a573e..6e1cd3b 100644 --- a/.emacs.d/themes/manoj-transparent-theme.el +++ b/.emacs.d/themes/manoj-transparent-theme.el @@ -539,15 +539,15 @@ jarring angry fruit salad look to reduce eye fatigue.") '(man-xref ((t (:underline t)))) '(match ((t (:background "RoyalBlue3")))) '(minibuffer-prompt ((t (:foreground "cyan")))) - '(mode-line ((t (:background "grey75" :foreground "Blue" + '(mode-line ((t (:background "grey20" :foreground "#00afff" :box '(:line-width -1 :style released-button) :height 0.9)))) - '(mode-line-buffer-id ((t (:background "grey65" :foreground "red" + '(mode-line-buffer-id ((t (:background "grey15" :foreground "OrangeRed" :bold t :weight bold :height 0.9)))) '(mode-line-emphasis ((t (:bold t :weight bold)))) '(mode-line-highlight ((t (:box (:line-width 2 :color "grey40" :style released-button :height 0.9))))) - '(mode-line-inactive ((t (:background "grey30" :foreground "grey80" + '(mode-line-inactive ((t (:background "grey5" :foreground "grey80" :box '(:line-width -1 :color "grey40") :weight light :height 0.9)))) '(mouse ((t (:background "OrangeRed"))))