]> git.donarmstrong.com Git - lib.git/blobdiff - emacs_el/configuration/don-configuration.org
fix message attachment
[lib.git] / emacs_el / configuration / don-configuration.org
index 6d96c8991af18dd8b9bc8fb9e603b42bbf9595fd..d07925f1f3971a6bbed10f1fae8356fe2c08f5a4 100644 (file)
 ** [[https://github.com/jwiegley/use-package/][use-package]]
 #+BEGIN_SRC emacs-lisp
   (package-initialize)
-  (require 'use-package)
+  (condition-case nil
+      (require 'use-package)
+    (progn (package-install 'use-package)
+           (require 'use-package)))
 #+END_SRC
 ** Paradox
 #+BEGIN_SRC emacs-lisp
@@ -244,12 +247,36 @@ value, scrolling continues until there is no more output.
 ** Jumping
 *** Avy
 #+BEGIN_SRC emacs-lisp
-(use-package avy
-  :ensure t
-  :bind ("C-c C-SPC" . avy-goto-word-1)
-  :config (progn
-            (setq avy-background t)
-            (key-chord-define-global "jj"  #'avy-goto-word-1)))
+  (use-package avy
+    :ensure t
+    :bind (("C-c C-<SPC>" . avy-goto-word-or-subword-1)
+           ("C-c j j" . avy-goto-word-or-subword-1)
+           ("M-g g" . avy-goto-line))
+    :config (progn (setq avy-background t))
+    )
+#+END_SRC
+*** Ace-link (jumping to links)
+#+BEGIN_SRC emacs-lisp
+  (use-package ace-link
+    :ensure t
+    ; bind o in most modes
+    :config (ace-link-setup-default))
+#+END_SRC
+*** Jumping through edit points (goto-chg)
+#+BEGIN_SRC emacs-lisp
+  (use-package goto-chg
+    :ensure t
+    :bind (("C-c j ," . goto-last-change)
+           ("C-c j ." . goto-last-change-reverse))
+    )
+#+END_SRC
+*** Jumping to bookmarks (visible bookmarks, bm)
+#+BEGIN_SRC emacs-lisp
+  (use-package bm
+    :ensure t
+    :bind (("C-c j b ." . bm-next)
+           ("C-c j b ," . bm-previous)
+           ("C-c j b SPC" . bm-toggle)))
 #+END_SRC
 
 ** Snippets
@@ -279,30 +306,6 @@ value, scrolling continues until there is no more output.
            )
     )
 #+END_SRC
-** Helm Flx
-
-[[https://github.com/PythonNut/helm-flx][helm-flx]] implements intelligent helm fuzzy sorting, provided by [[https://github.com/lewang/flx][flx]].
-
-#+BEGIN_SRC emacs-lisp
-(use-package helm-flx
-  :ensure t
-  :config (progn
-            ;; these are helm configs, but they kind of fit here nicely
-            (setq helm-M-x-fuzzy-match                  t
-                  helm-bookmark-show-location           t
-                  helm-buffers-fuzzy-matching           t
-                  helm-completion-in-region-fuzzy-match t
-                  helm-file-cache-fuzzy-match           t
-                  helm-imenu-fuzzy-match                t
-                  helm-mode-fuzzy-match                 t
-                  helm-locate-fuzzy-match               nil
-                  helm-quick-update                     t
-                  helm-recentf-fuzzy-match              nil
-                  helm-semantic-fuzzy-match             t)
-            (helm-flx-mode +1)))
-#+END_SRC
-
-
 ** Tinyprocmail
 
 #+BEGIN_SRC emacs-lisp
@@ -345,27 +348,30 @@ value, scrolling continues until there is no more output.
 
 ** Perl
 #+BEGIN_SRC emacs-lisp
-  (require 'cperl-mode)
-  ;; Use c-mode for perl .xs files
-  (add-to-list 'auto-mode-alist '("\\.xs\\'" . c-mode))
-  (add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode))
-  (add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
-  (add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
-  (add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))
-  (setq cperl-hairy t
-        cperl-indent-level 4
-        cperl-auto-newline nil
-        cperl-auto-newline-after-colon nil
-        cperl-continued-statement-offset 4
-        cperl-brace-offset -1
-        cperl-continued-brace-offset 0
-        cperl-label-offset -4
-        cperl-highlight-variables-indiscriminately t
-        cperl-electric-lbrace-space nil
-        cperl-indent-parens-as-block nil
-        cperl-close-paren-offset -1
-        cperl-tab-always-indent t)
-  ;(add-hook 'cperl-mode-hook (lambda () (cperl-set-style "PerlStyle")))
+  (use-package cperl-mode
+    :config
+    (progn
+      ;; Use c-mode for perl .xs files
+      (add-to-list 'auto-mode-alist '("\\.xs\\'" . c-mode))
+      (add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode))
+      (add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
+      (add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
+      (add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))
+      (setq cperl-hairy t
+            cperl-indent-level 4
+            cperl-auto-newline nil
+            cperl-auto-newline-after-colon nil
+            cperl-continued-statement-offset 4
+            cperl-brace-offset -1
+            cperl-continued-brace-offset 0
+            cperl-label-offset -4
+            cperl-highlight-variables-indiscriminately t
+            cperl-electric-lbrace-space nil
+            cperl-indent-parens-as-block nil
+            cperl-close-paren-offset -1
+            cperl-tab-always-indent t)
+      ;;(add-hook 'cperl-mode-hook (lambda () (cperl-set-style "PerlStyle")))
+  ))
 #+END_SRC
 
 ** Helm
@@ -385,6 +391,119 @@ value, scrolling continues until there is no more output.
     (add-hook 'kill-emacs-hook #'(lambda () (and (file-exists-p "$TMP") (delete-file "$TMP"))))
   )
 #+END_SRC
+*** Helm Flx
+
+ [[https://github.com/PythonNut/helm-flx][helm-flx]] implements intelligent helm fuzzy sorting, provided by [[https://github.com/lewang/flx][flx]].
+
+ #+BEGIN_SRC emacs-lisp
+ (use-package helm-flx
+   :ensure t
+   :config (progn
+             ;; these are helm configs, but they kind of fit here nicely
+             (setq helm-M-x-fuzzy-match                  t
+                   helm-bookmark-show-location           t
+                   helm-buffers-fuzzy-matching           t
+                   helm-completion-in-region-fuzzy-match t
+                   helm-file-cache-fuzzy-match           t
+                   helm-imenu-fuzzy-match                t
+                   helm-mode-fuzzy-match                 t
+                   helm-locate-fuzzy-match               nil
+                   helm-quick-update                     t
+                   helm-recentf-fuzzy-match              nil
+                   helm-semantic-fuzzy-match             t)
+             (helm-flx-mode +1)))
+ #+END_SRC
+*** Helm Swoop
+#+BEGIN_SRC emacs-lisp
+
+  ;;; stolen from https://github.com/malb/emacs.d/blob/master/malb.org
+  (defun malb/helm-swoop-pre-fill ()
+    (thing-at-point 'symbol))
+  (setq malb/helm-swoop-ignore-major-mode '(dired-mode
+        paradox-menu-mode doc-view-mode pdf-view-mode
+        mu4e-headers-mode org-mode markdown-mode latex-mode
+        ein:notebook-multilang-mode))
+
+  (defun malb/swoop-or-search ()
+    (interactive)
+    (if (or (> (buffer-size) 1048576) ;; helm-swoop can be slow on big buffers
+            (memq major-mode malb/helm-swoop-ignore-major-mode))
+        (isearch-forward)
+      (helm-swoop)))
+
+  (use-package helm-swoop
+    :ensure t
+    :bind (("C-c o" . helm-multi-swoop-org)
+           ("C-s" . malb/swoop-or-search)
+           ("C-M-s" . helm-multi-swoop-all))
+    :config (progn
+            
+              (setq helm-swoop-pre-input-function  #'malb/helm-swoop-pre-fill
+                    helm-swoop-split-with-multiple-windows nil
+                    helm-swoop-split-direction #'split-window-horizontally
+                    helm-swoop-split-window-function 'helm-default-display-buffer
+                    helm-swoop-speed-or-color t)
+
+              ;; https://emacs.stackexchange.com/questions/28790/helm-swoop-how-to-make-it-behave-more-like-isearch
+              (defun malb/helm-swoop-C-s ()
+                (interactive)
+                (if (boundp 'helm-swoop-pattern)
+                    (if (equal helm-swoop-pattern "")
+                        (previous-history-element 1)
+                      (helm-next-line))
+                  (helm-next-line)))
+
+              (bind-key "C-S-s" #'helm-swoop-from-isearch isearch-mode-map)
+              (bind-key "C-S-s" #'helm-multi-swoop-all-from-helm-swoop helm-swoop-map)
+              (bind-key "C-r"   #'helm-previous-line helm-swoop-map)
+              (bind-key "C-s"   #'malb/helm-swoop-C-s helm-swoop-map)
+              (bind-key "C-r"   #'helm-previous-line helm-multi-swoop-map)
+              (bind-key "C-s"   #'malb/helm-swoop-C-s helm-multi-swoop-map))
+    )
+  
+#+END_SRC
+*** Helm Ag
+#+BEGIN_SRC emacs-lisp
+(use-package helm-ag
+  :ensure t
+  :config (setq helm-ag-base-command "ag --nocolor --nogroup"
+                helm-ag-command-option "--all-text"
+                helm-ag-insert-at-point 'symbol
+                helm-ag-fuzzy-match t
+                helm-ag-use-temp-buffer t
+                helm-ag-use-grep-ignore-list t
+                helm-ag-use-agignore t))
+#+END_SRC
+*** Helm Descbinds
+#+BEGIN_SRC emacs-lisp
+  (use-package helm-descbinds
+    :ensure t
+    :bind ("C-h b" . helm-descbinds)
+    :init (fset 'describe-bindings 'helm-descbinds))
+#+END_SRC
+
+*** Helm YaSnippet
+#+BEGIN_SRC emacs-lisp
+  (use-package helm-c-yasnippet
+    :ensure t
+    :bind ("C-c h y" .  helm-yas-complete)
+    :config (progn
+              (setq helm-yas-space-match-any-greedy t)))
+#+END_SRC
+*** Helm Org Rifle
+#+BEGIN_SRC emacs-lisp
+  (use-package helm-org-rifle
+    :ensure t
+    :config (progn
+              (defun malb/helm-org-rifle-agenda-files (arg)
+                (interactive "p")
+                (let ((current-prefix-arg nil))
+                  (cond
+                   ((equal arg 4) (call-interactively #'helm-org-rifle-agenda-files nil))
+                   ((equal arg 16) (helm-org-rifle-occur-agenda-files))
+                   (t (helm-org-agenda-files-headings)))))))
+#+END_SRC
+
 ** Hydra
 #+BEGIN_SRC emacs-lisp :tangle don-configuration.el
 (require 'don-hydra)
@@ -409,6 +528,17 @@ value, scrolling continues until there is no more output.
     (setq-default reftex-default-bibliography
                     '("~/projects/research/references.bib")))
 #+END_SRC
+** BibTex
+#+BEGIN_SRC emacs-lisp
+  (use-package bibtex
+    :config (setq bibtex-user-optional-fields
+                  (quote (("annote" "Personal annotation (ignored)")
+                          ("abstract" "")
+                  ("pmid" "")
+                  ("doi" ""))))
+    )
+
+#+END_SRC
 ** LaTeX
 #+BEGIN_SRC emacs-lisp
   (use-package tex
@@ -510,24 +640,12 @@ value, scrolling continues until there is no more output.
               ("fixme" "{"))
             )
       )
+    (setq font-latex-fontify-script nil)
+    (setq font-latex-fontify-sectioning (quote color))
+    (setq font-latex-script-display (quote (nil)))
   )
 
 #+END_SRC
-*** Org-Gcal
-#+BEGIN_SRC emacs-lisp
-  (use-package calfw
-    :ensure f
-    )
-  (use-package calfw-org
-    :ensure f
-    )
-  (use-package org-gcal
-    :ensure f
-    :config '((if (file-readable-p "~/.hide/org_gcal.el")
-                  (load-file "~/.hide/org_gcal.el"))
-              )
-    )
-#+END_SRC
 ** ESS
 #+BEGIN_SRC emacs-lisp
   (use-package ess
@@ -596,13 +714,29 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 ** Writeroom Mode
 #+BEGIN_SRC emacs-lisp
   (use-package writeroom-mode
-    :config (add-hook 'writeroom-mode-hook 'auto-fill-mode)
+    :config
+    (defun my/writing-mode ()
+      "Start my writing mode; enable visual-line-mode and auto-fill-mode"
+      (interactive)
+      (if writeroom-mode
+          (progn
+            (writeroom-mode -1)
+            (visual-line-mode -1)
+            (auto-fill-mode -1)
+            (visual-fill-column-mode -1)
+            )
+        (visual-line-mode 1)
+        (auto-fill-mode 1)
+        (visual-fill-column-mode 1)
+        (writeroom-mode 1))
+      )
     )
 #+END_SRC
 ** GhostText/Atomic Chrome
 #+BEGIN_SRC emacs-lisp
   (use-package atomic-chrome
-    :config (atomic-chrome-start-server)
+    :config
+    (ignore-errors (atomic-chrome-start-server))
     (setq atomic-chrome-buffer-open-style 'full)
     )
 #+END_SRC
@@ -619,6 +753,81 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
            ("C-S-c C-S-c" . mc/edit-lines))
     )
 #+END_SRC
+** Web Mode
+#+BEGIN_SRC emacs-lisp
+  (use-package web-mode
+    :config
+    (add-to-list 'auto-mode-alist '("\\.tmpl\\'" . web-mode))
+    (setq web-mode-enable-engine-detection t)
+    (setq web-mode-engines-alist
+          '(("template-toolkit" . "\\.tmpl\\'")))
+    )
+#+END_SRC
+* Email
+** Message Mode
+#+BEGIN_SRC emacs-lisp
+  (use-package post
+    :config
+    (setq post-email-address "don@donarmstrong.com")
+    (setq post-kill-quoted-sig nil)
+    (setq post-mail-message "mutt\\(ng\\|\\)-[a-z0-9]+-[0-9]+-.*")
+    (setq post-uses-fill-mode nil)
+    )
+#+END_SRC
+** Mutt
+*** Message-mode
+#+BEGIN_SRC emacs-lisp
+  (use-package message-mode
+
+    :mode "muttng-[a-z0-9]+-[0-9]+-"
+    :mode "mutt-[a-z0-9]+-[0-9]+-"
+    :hook 'my/message-mode-settings
+    :hook 'turn-on-flyspell
+    :bind (:map message-mode-map
+                ("C-c C-a" . my/post-attach-file))
+    :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))))
+      )
+
+    (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)))
+
+    (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))))))
+
+    (setq mail-yank-prefix "> ")
+  )
+#+END_SRC
+*** Muttrc mode
+#+BEGIN_SRC emacs-lisp
+  (use-package muttrc-mode
+    :mode "muttngrc"
+    :mode "muttrc"
+  )
+
+#+END_SRC
 * Org Mode
 ** Use-package and load things
 #+BEGIN_SRC emacs-lisp
@@ -768,7 +977,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (setq org-columns-default-format "%40ITEM(Task) %6Effort{:} %CLOCKSUM %PRIORITY %TODO %13SCHEDULED %13DEADLINE %TAGS")
 
   (setq org-default-notes-file "~/projects/org-notes/notes.org")
-  (setq org-id-link-to-org-use-id t)
+  (setq org-id-link-to-org-use-id 'use-existing)
 #+END_SRC
 ** Capture Templates
 #+BEGIN_SRC emacs-lisp
@@ -1033,11 +1242,11 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (org-add-link-type "mutt" 'open-mail-in-mutt)
 
   (defun my-org-mode-setup ()
-    (load-library "reftex")
+    (load-library "reftex")
     (and (buffer-file-name)
          (file-exists-p (buffer-file-name))
          (progn
-           (reftex-parse-all)
+           (reftex-parse-all)
            (reftex-set-cite-format
             '((?b . "[[bib:%l][%l-bib]]")
               (?n . "[[notes:%l][%l-notes]]")
@@ -1115,7 +1324,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (setq org-icalendar-timezone "America/Los_Angeles")
   (setq org-icalendar-use-scheduled '(todo-start event-if-todo))
   ;; we already add the id manually
-  ;; (setq org-icalendar-store-UID t)
+  (setq org-icalendar-store-UID t)
 
 #+END_SRC
 ** General Org Babel Configuration
@@ -1532,6 +1741,21 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
             (unless (bolp) (insert "\n"))))))))))))
 
 #+END_SRC
+** Org-Gcal
+#+BEGIN_SRC emacs-lisp
+  (use-package calfw
+    :ensure f
+    )
+  (use-package calfw-org
+    :ensure f
+    )
+  (use-package org-gcal
+    :ensure f
+    :config '((if (file-readable-p "~/.hide/org_gcal.el")
+                  (load-file "~/.hide/org_gcal.el"))
+              )
+    )
+#+END_SRC
 ** End use-package
 #+BEGIN_SRC emacs-lisp
   )
@@ -1566,10 +1790,13 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
           (add-to-list 'minor-mode-map-alist mykeys))))
   (ad-activate 'load)
 #+END_SRC
-
+** Goto line
+#+BEGIN_SRC emacs-lisp
+  (global-unset-key "\M-g")
+  (global-set-key (kbd "M-g l") 'goto-line)
+#+END_SRC
 * Misc (uncharacterized)
 #+BEGIN_SRC emacs-lisp
-  (setq bibtex-user-optional-fields (quote (("annote" "Personal annotation (ignored)") ("abstract" "") ("pmid" "") ("doi" ""))))
   (setq calendar-latitude 40.11)
   (setq calendar-longitude -88.24)
   (setq case-fold-search t)
@@ -1580,9 +1807,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (setq display-time-24hr-format t)
   (setq display-time-day-and-date t)
   (display-time-mode 1)
-  (setq font-latex-fontify-script nil)
-  (setq font-latex-fontify-sectioning (quote color))
-  (setq font-latex-script-display (quote (nil)))
   (global-auto-revert-mode 1)
   (global-font-lock-mode 1)
   (icomplete-mode 1)
@@ -1591,10 +1815,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (setq markdown-enable-math t)
   (setq markdown-follow-wiki-link-on-enter nil)
   (setq mutt-alias-file-list (quote ("~/.mutt/aliases" "~/.mail_aliases")))
-  (setq post-email-address "don@donarmstrong.com")
-  (setq post-kill-quoted-sig nil)
-  (setq post-mail-message "mutt\\(ng\\|\\)-[a-z0-9]+-[0-9]+-.*")
-  (setq post-uses-fill-mode nil)
   (setq ps-footer-font-size (quote (8 . 10)))
   (setq ps-header-font-size (quote (8 . 10)))
   (setq ps-header-title-font-size (quote (10 . 10)))
@@ -1626,17 +1846,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 
   (require 'vcl-mode)
 
-  (require 'tex-site)
-  ;;(require 'psvn)
-  ;;(require 'ecasound)
-  ;;(require 'emacs-wiki)
-  (require 'bibtex)
-  (require 'post)
-  ;;(require 'fixme)
-  ; (require 'google-weather)
-  ; (require 'org-google-weather)
-  ; (setq-default org-google-weather-format "%i %c, [%l,%h] %s %C")
-  
   (global-set-key "\C-xp" 'server-edit)
 
   (setq-default auto-mode-alist (cons '("\.wml$" . 
@@ -1652,54 +1861,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   ;; tramp configuration
   (setq tramp-use-ssh-controlmaster-options nil)
 
-  ; mail configuration
-  (add-to-list 'auto-mode-alist '("muttng-[a-z0-9]+-[0-9]+-" . message-mode))
-  (add-to-list 'auto-mode-alist '("muttngrc" . muttrc-mode))
-
-  (add-to-list 'auto-mode-alist '("mutt-[a-z0-9]+-[0-9]+-" . message-mode))
-  (add-to-list 'auto-mode-alist '("muttrc" . muttrc-mode))
-  (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))))
-    (local-set-key (kbd "C-c C-a") 'my-post-attach-file)
-    )
-  (add-hook 'message-mode-hook 'my-message-mode-settings)
-
-  (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)))
-
-  (symbol-function 'my-post-attach-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))))))
-
-
-
-  (setq mail-yank-prefix "> ")
-
-  (global-unset-key "\M-g")
-  (global-set-key "\M-g" 'goto-line)
-
   ;; self-insert-command hack.
   ;;   Without this, "if<SP>" expands to
   ;;   if ( -!-) {
@@ -1745,8 +1906,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 
   (column-number-mode t)
 
-  (server-start)
-
   ; (require 'mode-compile)
 
   (defadvice server-process-filter (after post-mode-message first activate)
@@ -2023,6 +2182,14 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 
 #+END_SRC
 
+* Server
+#+BEGIN_SRC emacs-lisp
+  (unless (server-running-p)
+  (server-start))
+#+END_SRC
+
+
+
 * END
 #+BEGIN_SRC emacs-lisp
   (provide 'don-configuration)