]> git.donarmstrong.com Git - lib.git/blobdiff - emacs_el/configuration/don-configuration.org
call yas-reload all when loading packages
[lib.git] / emacs_el / configuration / don-configuration.org
index de65daf6546d9596a2c450df6cac356b55472082..ec41966890064fa3a69f48cf481afd956c6d28de 100644 (file)
@@ -30,6 +30,9 @@ load  [[https://github.com/jwiegley/use-package/][use-package]] even faster
 #+BEGIN_SRC emacs-lisp
   (setq package-enable-at-startup nil)
   (setq package--init-file-ensured t)
+  (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
+                           ("melpa" . "https://melpa.org/packages/")
+                           ("org" . "http://orgmode.org/elpa/") ))
   (eval-and-compile
     (setq use-package-verbose (not (bound-and-true-p byte-compile-current-file))))
   (mapc #'(lambda (add) (add-to-list 'load-path add))
@@ -49,9 +52,6 @@ load  [[https://github.com/jwiegley/use-package/][use-package]] even faster
                        nil))
                      load-path))))))
 
-  (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
-               ("melpa" . "https://melpa.org/packages/")
-               ("org" . "http://orgmode.org/elpa/") ))
   (require 'use-package)
   (require 'diminish)
   (require 'bind-key)
@@ -115,7 +115,7 @@ load  [[https://github.com/jwiegley/use-package/][use-package]] even faster
 * Modules
 ** Hippie Expand
 #+BEGIN_SRC emacs-lisp
-  (use-package hippie-expand
+  (use-package hippie-exp
     :bind* (("M-<SPC>" . hippie-expand))
     )
 #+END_SRC
@@ -338,6 +338,7 @@ value, scrolling continues until there is no more output.
                                        "~/lib/emacs_el/yasnippet-snippets/snippets/"))
               (add-to-list 'hippie-expand-try-functions-list
                                'yas-hippie-try-expand)
+              (yas-reload-all)
               )
     )
 #+END_SRC
@@ -407,6 +408,51 @@ value, scrolling continues until there is no more output.
   ))
 #+END_SRC
 
+** Markdown mode
+#+BEGIN_SRC emacs-lisp
+  (use-package markdown-mode
+    :ensure t
+    :mode (("\\.md\\'" . markdown-mode)
+           ("\\.mdwn\\'" . markdown-mode)
+           ("README\\.md\\'" . gfm-mode)
+           )
+    :config
+    (setq markdown-enable-math t)
+    (setq markdown-follow-wiki-link-on-enter nil)
+    (bind-key "M-." #'markdown-jump markdown-mode-map)
+    (add-hook 'markdown-mode-hook #'flyspell-mode)
+    (add-hook 'markdown-mode-hook #'outline-minor-mode)
+    (bind-key "C-<tab>" #'outline-cycle markdown-mode-map)
+  )
+
+#+END_SRC
+** SQL mode
+#+BEGIN_SRC emacs-lisp
+  ; load sql-indent when sql is loaded
+(use-package sql
+  :mode (("\\.sql\\'" . sql-mode))
+  :config
+  (require sql-indent))
+#+END_SRC
+** Ediff
+#+BEGIN_SRC emacs-lisp
+  (use-package ediff
+    :commands ediff ediff3
+    :ensure f
+    :config
+    ;; ediff configuration
+    ;; don't use the multi-window configuration
+    (setq ediff-window-setup-function 'ediff-setup-windows-plain)
+  )
+#+END_SRC
+** VCL --editing varnish configuration files
+#+BEGIN_SRC emacs-lisp
+  (use-package vcl-mode
+    :ensure t
+    :mode "\\.vcl\\'"
+    )
+  
+#+END_SRC
 ** Helm
 #+BEGIN_SRC emacs-lisp
   (defun malb/helm-omni (&rest arg)
@@ -729,14 +775,16 @@ This can be used to link things pretty quickly if necessary
 
 ** Tramp
 #+BEGIN_SRC emacs-lisp
-  (add-to-list 'tramp-methods '("vcsh"
-                                (tramp-login-program "vcsh")
-                                (tramp-login-args
-                                 (("enter")
-                                  ("%h")))
-                                (tramp-remote-shell "/bin/sh")
-                                (tramp-remote-shell-args
-                                 ("-c"))))
+  (use-package tramp
+    :config
+    (add-to-list 'tramp-methods '("vcsh"
+                                  (tramp-login-program "vcsh")
+                                  (tramp-login-args
+                                   (("enter")
+                                    ("%h")))
+                                  (tramp-remote-shell "/bin/sh")
+                                  (tramp-remote-shell-args
+                                   ("-c")))))
 #+END_SRC
 ** Reftex
 #+BEGIN_SRC emacs-lisp
@@ -869,13 +917,18 @@ This can be used to link things pretty quickly if necessary
   (use-package ess
     :ensure t
     :commands R
-    :mode "\\.R\\'"
+    :mode ("\\.R\\'" . ess-r-mode)
     :bind (:map ess-mode-map
                 ("C-c C-R" . dla/ess-region-remote-eval))
+    :init
+    (autoload 'ess-r-mode "ess-site" nil t)
+    (autoload 'R "ess-site" nil t)
     :config
+    ; actually load the rest of ess
+    (require 'ess-site)
     (defun ess-change-directory (path)
       "Set the current working directory to PATH for both *R* and Emacs."
-      (interactive "DDirectory to change to: ")
+      (interactive "Directory to change to: ")
     
       (when (file-exists-p path)
         (ess-command (concat "setwd(\"" path "\")\n"))
@@ -932,6 +985,15 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 *** Outline magic
 #+BEGIN_SRC emacs-lisp
   (use-package outline-magic)
+#+END_SRC
+*** Outline mode
+#+BEGIN_SRC emacs-lisp
+;; change the outline mode prefix from C-c @ to C-c C-2
+(setq outline-minor-mode-prefix "C-c C-2")
+;;(add-hook 'outline-minor-mode-hook
+;;          (lambda () (local-set-key (kbd "C-c C-2")
+;;                                    outline-mode-prefix-map)))
+
 #+END_SRC
 ** Writeroom Mode
 #+BEGIN_SRC emacs-lisp
@@ -969,10 +1031,10 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 [[https://github.com/magnars/multiple-cursors.el][Multiple Cursors]]
 #+BEGIN_SRC emacs-lisp
   (use-package multiple-cursors
-    :bind (("C-;" . mc/mark-all-dwim)
-           ("C-<" . mc/mark-previous-like-this)
-           ("C->" . mc/mark-next-like-this)
-           ("C-S-c C-S-c" . mc/edit-lines))
+    :bind* (("C-;" . mc/mark-all-dwim)
+            ("C-<" . mc/mark-previous-like-this)
+            ("C->" . mc/mark-next-like-this)
+            ("C-S-c C-S-c" . mc/edit-lines))
     )
 #+END_SRC
 ** Web Mode
@@ -988,7 +1050,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 ** Spamassassin Mode
 #+BEGIN_SRC emacs-lisp
   (use-package spamassassin-mode
-    :defer
+    :commands spamassassin-mode
     :ensure f
     )
 #+END_SRC
@@ -996,53 +1058,82 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+BEGIN_SRC emacs-lisp
   (use-package password-store
     :ensure f
-    :commands password-store-edit password-store-create
+    :commands password-store-edit password-store-generate
     )
 #+END_SRC
+** CSS mode
+#+BEGIN_SRC emacs-lisp
+  (use-package css
+    :mode "\\.css'"
+    :config
+    ;; fix up css mode to not be silly
+    ;; from http://www.stokebloke.com/wordpress/2008/03/21/css-mode-indent-buffer-fix/
+    (setq cssm-indent-level 4)
+    (setq cssm-newline-before-closing-bracket t)
+    (setq cssm-indent-function #'cssm-c-style-indenter)
+    (setq cssm-mirror-mode nil))
+#+END_SRC
+** Abbrev Mode
+#+BEGIN_SRC emacs-lisp
+  (use-package abbrev
+    :diminish abbrev-mode
+    :config
+    ;; load abbreviations from 
+    (setq abbrev-file-name       
+          "~/.emacs_abbrev_def")
+
+    ;; read the abbrev file if it exists
+    (if (file-exists-p abbrev-file-name)
+        (quietly-read-abbrev-file))
+
+    ;; for now, use abbrev mode everywhere
+    (setq default-abbrev-mode t))
+#+END_SRC
+
 * Email
 ** Mutt
 *** Message-mode
 #+BEGIN_SRC emacs-lisp
   (use-package message
     :ensure f
-    :diminish "βœ‰"
-    :mode "muttng-[a-z0-9]+-[0-9]+-"
-    :mode "mutt-[a-z0-9]+-[0-9]+-"
+    :diminish (message "βœ‰")
+    :mode ("muttng-[a-z0-9]+-[0-9]+-" . message-mode)
+    :mode ("mutt-[a-z0-9]+-[0-9]+-" . message-mode)
     :hook 'my/message-mode-settings
     :hook 'turn-on-flyspell
     :bind (:map message-mode-map
-               ("C-c C-a" . my/post-attach-file))
-    :config 
+        ("C-c C-a" . my/post-attach-file))
+    :delight (message-mode "βœ‰")
+    :config
     (defun my/message-mode-settings ()
       (font-lock-add-keywords nil
-                             '(("^[ \t]*>[ \t]*>[ \t]*>.*$"
-                                (0 'message-multiply-quoted-text-face))
-                               ("^[ \t]*>[ \t]*>.*$"
-                                (0 'message-double-quoted-text-face))))
+                  '(("^[ \t]*>[ \t]*>[ \t]*>.*$"
+                 (0 'message-multiply-quoted-text-face))
+                ("^[ \t]*>[ \t]*>.*$"
+                 (0 'message-double-quoted-text-face))))
       )
 
     (defun my/post-attach-file ()
       "Prompt for an attachment."
       (interactive)
-      (let ((file (read-file-name "Attach file: " nil nil t nil))
-           (description (string-read "Description: ")))
-       (my/header-attach-file file description)))
+      (let ((file (read-file-name "Attach file: " nil nil t nil)))
+        (my/header-attach-file file "")))
 
     (defun my/header-attach-file (file description)
       "Attach a FILE to the current message (works with Mutt).
     Argument DESCRIPTION MIME description."
       (interactive "fAttach file: \nsDescription: ")
       (when (> (length file) 0)
-       (save-excursion
-         (save-match-data
-           (save-restriction
-             (widen)
-             (goto-char (point-min))
-             (search-forward-regexp "^$")
-             (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " "
-                             description "\n"))
-             (message (concat "Attached '" file "'."))
-             (setq post-has-attachment t))))))
+    (save-excursion
+      (save-match-data
+        (save-restriction
+          (widen)
+          (goto-char (point-min))
+          (search-forward-regexp "^$")
+          (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " "
+                  description "\n"))
+          (message (concat "Attached '" file "'."))
+          (setq post-has-attachment t))))))
 
     (setq mail-yank-prefix "> ")
   )
@@ -1058,25 +1149,27 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 * Base emacs
 ** Reverting buffers
 #+BEGIN_SRC emacs-lisp
-  (setq global-auto-revert-non-file-buffers t
-        global-auto-revert-ignore-modes '(pdf-view-mode)
-        auto-revert-verbose nil)
-  (global-auto-revert-mode 1)
+  (use-package autorevert
+    :diminish auto-revert-mode
+    :config
+    (setq global-auto-revert-non-file-buffers t
+          global-auto-revert-ignore-modes '(pdf-view-mode)
+          auto-revert-verbose nil)
+    (global-auto-revert-mode 1))
 #+END_SRC
 * Org Mode
 ** Use-package and load things
 #+BEGIN_SRC emacs-lisp
 
   (use-package org
-    :config 
-
+    :delight (org-mode "ΓΈ")
+    :mode ("\\.\\(org\\|org_archive\\|txt\\)\\'" . org-mode)
+    :bind (("C-c l"  . org-store-link)
+           ("C-c a"  . org-agenda)
+           ("C-c b"  . org-iswitchb))
 #+END_SRC
 ** Agenda Configuration
 #+BEGIN_SRC emacs-lisp
-  :mode ("\\.\\(org\\|org_archive\\|txt\\)\\'" . org-mode)
-  :bind (("C-c l"  . org-store-link)
-         ("C-c a"  . org-agenda)
-         ("C-c b"  . org-iswitchb))
   :config
   (setq-default org-log-done 'time)
   (setq-default org-agenda-ndays 5)
@@ -1209,35 +1302,37 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+END_SRC
 ** Capture Templates
 #+BEGIN_SRC emacs-lisp
-  (setq org-capture-templates  ;; mail-specific note template, identified by "m"
-        '(("m" "Mail" entry (file "~/projects/org-notes/refile.org")
-           "* %?\n\n  Source: %u, [[%:link][%:description]]\n  %:initial")
-          ("t" "todo" entry (file "~/projects/org-notes/refile.org")
-           "* TODO %?\n  :PROPERTIES:\n  :END:\n  :LOGBOOK:\n  :END:\n%U\n%a\n" :clock-in t :clock-resume t)
-          ("r" "respond" entry (file "~/projects/org-notes/refile.org")
-           "* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t)
-          ("n" "note" entry (file "~/projects/org-notes/refile.org")
-           "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t)
-          ("s" "schedule" entry (file "~/projects/org-notes/refile.org")
-           "* %? :cal:\n%^{scheduled:}t\n%U\n%a\n" :clock-in t :clock-resume t)
-          ("j" "Journal" entry (file+datetree "~/projects/org-notes/diary.org")
-           "* %?\n%U\n" :clock-in t :clock-resume t)
-          ("w" "org-protocol" entry (file "~/projects/org-notes/refile.org")
-           "* TODO Review %c\n%U\n" :immediate-finish t)
-          ("M" "Meeting" entry (file "~/projects/org-notes/refile.org")
-           "* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t)
-          ("S" "Seminar" entry (file "~/projects/org-notes/refile.org")
-           "* SEMINAR notes %? :SEMINAR:\n%U" :clock-in t :clock-resume t)
-          ("P" "Paper to read" entry (file+headline "~/projects/research/papers_to_read.org" "Refile")
-           "* TODO Get/Read %? \n%U" :clock-in t :clock-resume t)
-          ("p" "Phone call" entry (file "~/projects/org-notes/refile.org")
-           "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t)
-          ("J" "job" entry (file "~/projects/org-notes/refile.org")
-           "* TODO Apply for %a%? :job:\nSCHEDULED: %(format-time-string \"<%Y-%m-%d 17:00-17:30>\")\n%U\n%a\n" :clock-in t :clock-resume t)
-          ("h" "Habit" entry (file "~/projects/org-notes/refile.org")
-           "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"<%Y-%m-%d .+1d/3d>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n%a\n")
+    (setq org-capture-templates  ;; mail-specific note template, identified by "m"
+          `(("m" "Mail" entry (file "~/projects/org-notes/refile.org")
+             "* %?\n\n  Source: %u, [[%:link][%:description]]\n  %:initial")
+            ("t" "todo" entry (file "~/projects/org-notes/refile.org")
+             "* TODO %?\n  :PROPERTIES:\n  :END:\n  :LOGBOOK:\n  :END:\n%U\n%a\n" :clock-in t :clock-resume t)
+            ("r" "respond" entry (file "~/projects/org-notes/refile.org")
+             "* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t)
+            ("n" "note" entry (file "~/projects/org-notes/refile.org")
+             "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t)
+            ("s" "schedule" entry (file "~/projects/org-notes/refile.org")
+             "* %? :cal:\n%^{scheduled:}t\n%U\n%a\n" :clock-in t :clock-resume t)
+            ("j" "Journal" entry (file+datetree "~/projects/org-notes/diary.org")
+             "* %?\n%U\n" :clock-in t :clock-resume t)
+            ("w" "org-protocol" entry (file "~/projects/org-notes/refile.org")
+             "* TODO Review %c\n%U\n" :immediate-finish t)
+            ("M" "Meeting" entry (file "~/projects/org-notes/refile.org")
+             "* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t)
+            ("S" "Seminar" entry (file "~/projects/org-notes/refile.org")
+             "* SEMINAR notes %? :SEMINAR:\n%U" :clock-in t :clock-resume t)
+            ("P" "Paper to read" entry (file+headline "~/projects/research/papers_to_read.org" "Refile")
+             "* TODO Get/Read %? \n%U" :clock-in t :clock-resume t)
+            ("p" "Phone call" entry (file "~/projects/org-notes/refile.org")
+             "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t)
+             ("J" "job" entry (file+olp "~/projects/org-notes/notes.org"
+                                         "Jobs"
+                                         ,(format-time-string "Positions %Y"))
+             "* TODO Apply for %? :job:\nSCHEDULED: <%<%Y-%m-%d>>\n%U\n%x\n" :clock-in t :clock-resume t)
+            ("h" "Habit" entry (file "~/projects/org-notes/refile.org")
+             "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"<%Y-%m-%d .+1d/3d>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n%a\n")
+            )
           )
-        )
 
   ;; Remove empty LOGBOOK drawers on clock out
   (defun bh/remove-empty-drawer-on-clock-out ()
@@ -1260,50 +1355,45 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+END_SRC
 ** Org mode key bindings
 #+BEGIN_SRC emacs-lisp
-  ; org mode configuration from http://doc.norang.ca/org-mode.html
+  ;; org mode configuration from http://doc.norang.ca/org-mode.html
   ;; Custom Key Bindings
-  (global-set-key (kbd "<f12>") 'org-agenda)
-  ; (global-set-key (kbd "<f5>") 'bh/org-todo)
-  (global-set-key (kbd "<S-f5>") 'bh/widen)
-  (global-set-key (kbd "<f7>") 'bh/set-truncate-lines)
-  (global-set-key (kbd "<f8>") 'org-cycle-agenda-files)
-  (global-set-key (kbd "<f9> <f9>") 'bh/show-org-agenda)
-  (global-set-key (kbd "<f9> b") 'bbdb)
-  (global-set-key (kbd "<f9> c") 'calendar)
-  (global-set-key (kbd "<f9> f") 'boxquote-insert-file)
-  (global-set-key (kbd "<f9> h") 'bh/hide-other)
-  (global-set-key (kbd "<f9> n") 'bh/toggle-next-task-display)
-  (global-set-key (kbd "<f9> w") 'widen)
-
-  ; change the outline mode prefix from C-c @ to C-c C-2
-  (setq outline-minor-mode-prefix "C-c C-2")
-  ;(add-hook 'outline-minor-mode-hook
-  ;          (lambda () (local-set-key (kbd "C-c C-2")
-  ;                                    outline-mode-prefix-map)))
-
-  (global-set-key (kbd "<f9> I") 'bh/punch-in)
-  (global-set-key (kbd "<f9> O") 'bh/punch-out)
-
-  (global-set-key (kbd "<f9> o") 'bh/make-org-scratch)
-
-  (global-set-key (kbd "<f9> r") 'boxquote-region)
-  (global-set-key (kbd "<f9> s") 'bh/switch-to-scratch)
-
-  (global-set-key (kbd "<f9> t") 'bh/insert-inactive-timestamp)
-  (global-set-key (kbd "<f9> T") 'bh/toggle-insert-inactive-timestamp)
-
-  (global-set-key (kbd "<f9> v") 'visible-mode)
-  (global-set-key (kbd "<f9> l") 'org-toggle-link-display)
-  (global-set-key (kbd "<f9> SPC") 'bh/clock-in-last-task)
-  (global-set-key (kbd "C-<f9>") 'previous-buffer)
-  (global-set-key (kbd "M-<f9>") 'org-toggle-inline-images)
-  (global-set-key (kbd "C-x n r") 'narrow-to-region)
-  (global-set-key (kbd "C-<f10>") 'next-buffer)
-  (global-set-key (kbd "<f11>") 'org-clock-goto)
-  (global-set-key (kbd "C-<f11>") 'org-clock-in)
-  (global-set-key (kbd "C-s-<f12>") 'bh/save-then-publish)
-  (global-set-key (kbd "C-c c") 'org-capture)
-
+  :bind* (("<f9> a" . org-agenda)
+          ("<f9> I" . bh/punch-in)
+          ("<f9> O" . bh/punch-out)
+          ("<f9> SPC" . bh/clock-in-last-task)
+          ("<f12>" . org-agenda)
+          ;; ("<f5>" . bh/org-todo)
+          ("<S-f5>" . bh/widen)
+          ("<f7>" . bh/set-truncate-lines)
+          ("<f8>" . org-cycle-agenda-files)
+          ("<f9> <f9>" . bh/show-org-agenda)
+          ("<f9> b" . bbdb)
+          ("<f9> c" . calendar)
+          ("<f9> f" . boxquote-insert-file)
+          ("<f9> h" . bh/hide-other)
+          ("<f9> n" . bh/toggle-next-task-display)
+          ("<f9> w" . widen)
+
+          ("<f9> o" . bh/make-org-scratch)
+
+          ("<f9> r" . boxquote-region)
+          ("<f9> s" . bh/switch-to-scratch)
+
+          ("<f9> t" . bh/insert-inactive-timestamp)
+          ("<f9> T" . bh/toggle-insert-inactive-timestamp)
+
+          ("<f9> v" . visible-mode)
+          ("<f9> l" . org-toggle-link-display)
+          ("<f9> SPC" . bh/clock-in-last-task)
+          ("C-<f9>" . previous-buffer)
+          ("M-<f9>" . org-toggle-inline-images)
+          ("C-x n r" . narrow-to-region)
+          ("C-<f10>" . next-buffer)
+          ("<f11>" . org-clock-goto)
+          ("C-<f11>" . org-clock-in)
+          ("C-s-<f12>" . bh/save-then-publish)
+          ("C-c c" . org-capture))
+  :config
 #+END_SRC
 ** Utility Functions
 #+BEGIN_SRC emacs-lisp
@@ -1344,6 +1434,11 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   do not already have one."
     (interactive)
     (org-map-entries 'org-id-get-create))
+  (defun dla/org-update-ids-to-headlines-in-file ()
+    "Add or replace ID properties to all headlines in the current file 
+  (or narrowed region)."
+    (interactive)
+    (org-map-entries '(lambda () (org-id-get-create t))))
   ; if we wanted to do this to every buffer, do the following:
   ; (add-hook 'org-mode-hook
   ;           (lambda ()
@@ -2095,20 +2190,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (fset 'perl-mode 'cperl-mode)
   ;;(load-file "cperl-mode.el")
 
-  (require 'vcl-mode)
-
-  (global-set-key "\C-xp" 'server-edit)
-
-  (setq-default auto-mode-alist (cons '("\.wml$" . 
-                    (lambda () (html-mode) (auto-fill-mode)))
-                  auto-mode-alist))
-
-
-  ; use markdown mode for mdwn files
-  (add-to-list 'auto-mode-alist '("\\.mdwn$" . markdown-mode))
-  (add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode))
-
-
   ;; tramp configuration
   (setq tramp-use-ssh-controlmaster-options nil)
 
@@ -2145,20 +2226,34 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 
   (column-number-mode t)
  
-  ; abbrev mode settings
-  ; load abbreviations from 
-  (setq abbrev-file-name       
-        "~/.emacs_abbrev_def")
-
-  ; read the abbrev file if it exists
-  (if (file-exists-p abbrev-file-name)
-      (quietly-read-abbrev-file))
-
-  ; for now, use abbrev mode everywhere
-  (setq default-abbrev-mode t)
-
-  (desktop-load-default)
-  (desktop-read)
+#+END_SRC
+** Desktop-save-mode
+If the envvar EMACS_SERVER_NAME is set, consider this a separate
+emacs, and use a different desktop file to restore history
+#+BEGIN_SRC emacs-lisp
+  (use-package emacs
+    :demand
+    :config
+    (setq desktop-base-file-name
+          (convert-standard-filename
+           (concat ".emacs"
+                   (or (getenv "EMACS_SERVER_NAME")
+                       "")
+                   ".desktop")
+           ))
+    (setq desktop-base-lock-name
+          (convert-standard-filename
+           (concat desktop-base-file-name
+                   ".lock")))
+    (setq desktop-auto-save-timeout 60)
+    (setq desktop-restore-eager 5)
+    (setq desktop-lazy-verbose nil)
+    (desktop-save-mode 1)
+    ; (desktop-read)
+  )
+#+END_SRC
+** Misc (Uncharacterized)
+#+BEGIN_SRC emacs-lisp
   '(icomplete-mode on)
   (custom-set-faces
    ;; custom-set-faces was added by Custom.
@@ -2200,30 +2295,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
    (define-key cm-map "f" 'outline-forward-same-level)        ; Forward - same level
    (define-key cm-map "b" 'outline-backward-same-level)       ; Backward - same level
    (global-set-key "\M-o" cm-map)
-
-  ; ediff configuration
-  ; don't use the multi-window configuration
-  (setq ediff-window-setup-function 'ediff-setup-windows-plain)
-
-  ; fix up css mode to not be silly
-  ; from http://www.stokebloke.com/wordpress/2008/03/21/css-mode-indent-buffer-fix/
-  (setq cssm-indent-level 4)
-  (setq cssm-newline-before-closing-bracket t)
-  (setq cssm-indent-function #'cssm-c-style-indenter)
-  (setq cssm-mirror-mode nil)
-
-  (require 'multi-web-mode)
-  (setq mweb-default-major-mode 'html-mode)
-  (setq mweb-tags '((php-mode "<\\?php\\|<\\? \\|<\\?=" "\\?>")
-                    (js-mode "<script +\\(type=\"text/javascript\"\\|language=\"javascript\"\\)[^>]*>" "</script>")
-                    (css-mode "<style +type=\"text/css\"[^>]*>" "</style>")))
-  (setq mweb-filename-extensions '("php" "htm" "html" "ctp" "phtml" "php4" "php5"))
-  (multi-web-global-mode 1)
-
-  ; load sql-indent when sql is loaded
-  (eval-after-load "sql"
-    '(load-library "sql-indent"))
-
   ; fix up tmux xterm keys
   ; stolen from http://unix.stackexchange.com/questions/24414/shift-arrow-not-working-in-emacs-within-tmux
   (defun fix-up-tmux-keys ()
@@ -2331,10 +2402,16 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (ad-activate 'ask-user-about-supersession-threat)
 #+END_SRC
 
-* Server
+* Start Server
 #+BEGIN_SRC emacs-lisp
-  (unless (server-running-p)
-  (server-start))
+  (use-package server
+    :config
+    (setq server-name
+          (or (getenv "EMACS_SERVER_NAME")
+              "server"))
+    (unless (server-running-p)
+      (global-set-key "\C-xp" 'server-edit)
+      (server-start)))
 #+END_SRC