]> git.donarmstrong.com Git - lib.git/blobdiff - emacs_el/configuration/don-configuration.org
we don't need ensure f
[lib.git] / emacs_el / configuration / don-configuration.org
index 9b62bb38a1c94b92734dcb9c5381ae4c23aa69f3..ee2bf5e3ce33ee46830a92d7bac262d7b1d8f0da 100644 (file)
   (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
                            ("melpa" . "https://melpa.org/packages/")
                            ("org" . "http://orgmode.org/elpa/") ))
-  (package-initialize)
 #+END_SRC
 ** [[https://github.com/jwiegley/use-package/][use-package]]
 #+BEGIN_SRC emacs-lisp
   (require 'use-package)
+  (package-initialize)
 #+END_SRC
 ** Paradox
 #+BEGIN_SRC emacs-lisp
+  (package-initialize)
   (use-package paradox
     :ensure paradox
   )
   (add-hook 'minibuffer-exit-hook #'don/minibuffer-exit-hook)
 #+END_SRC
 * Modules
+** Flyspell 🐝 
+#+BEGIN_SRC emacs-lisp
+  (use-package flyspell
+    :ensure t
+    :diminish flyspell-mode 🐝
+    :config
+    (add-hook 'message-mode-hook 'turn-on-flyspell)
+    (add-hook 'text-mode-hook 'turn-on-flyspell)
+    (add-hook 'c-mode-common-hook 'flyspell-prog-mode)
+    (add-hook 'cperl-mode-hook 'flyspell-prog-mode)
+    (add-hook 'tcl-mode-hook 'flyspell-prog-mode)
+    :init
+    (setq ispell-program-name "ispell")
+    )
+
+#+END_SRC
 ** Winnermode
 #+BEGIN_SRC emacs-lisp
   (winner-mode 1)
 ** Eyebrowse
 
 #+BEGIN_SRC emacs-lisp
-  (use-package eyebrowse
-    :ensure t
-    :diminish eyebrowse-mode
-    :init (setq eyebrowse-keymap-prefix (kbd "C-c C-\\"))
-    :config (progn
-              (setq eyebrowse-wrap-around t)
-              (eyebrowse-mode t)
-
-              (defun my/eyebrowse-new-window-config ()
-                (interactive)
-                (let ((done nil))
-                  (dotimes (i 10)
-                    ;; start at 1 run till 0
-                    (let ((j (mod (+ i 1) 10)))
-                      (when (and (not done)
-                                 (not (eyebrowse--window-config-present-p j)))
-                        (eyebrowse-switch-to-window-config j)
-                        (call-interactively 'eyebrowse-rename-window-config2 j)
-                        (setq done t)
-                        ))
-                    )))
-
-              ;; I don't use latex-preview-pane
-              ;; (require 'latex-preview-pane)
-              ;; (defun my/close-latex-preview-pane-before-eyebrowse-switch ()
-              ;;   ;; latex-preview-pane uses window-parameters which are
-              ;;   ;; not preserved by eyebrowse, so we close the preview
-              ;;   ;; pane before switching, it will be regenerated when we
-              ;;   ;; edit the TeX file.
-              ;;   (when (lpp/window-containing-preview)
-              ;;     (delete-window (lpp/window-containing-preview))))
-
-              ;; (add-to-list 'eyebrowse-pre-window-switch-hook
-              ;;              #'my/close-latex-preview-pane-before-eyebrowse-switch)
-
-              ;; (my/set-menu-key "["  #'my/eyebrowse-new-window-config)
-              ;; (my/set-menu-key ";"  #'eyebrowse-prev-window-config)
-              ;; (my/set-menu-key "'"  #'eyebrowse-next-window-config)
-              ;; (my/set-menu-key "]"  #'eyebrowse-close-window-config)
-              ;; (my/set-menu-key "\\" #'eyebrowse-rename-window-config)
-              )
-    )
+  ;; (use-package eyebrowse
+  ;;   :ensure t
+  ;;   :diminish eyebrowse-mode
+  ;;   :init (setq eyebrowse-keymap-prefix (kbd "C-c C-\\"))
+  ;;   :config (progn
+  ;;             (setq eyebrowse-wrap-around t)
+  ;;             (eyebrowse-mode t)
+  ;; 
+  ;;             (defun my/eyebrowse-new-window-config ()
+  ;;               (interactive)
+  ;;               (let ((done nil))
+  ;;                 (dotimes (i 10)
+  ;;                   ;; start at 1 run till 0
+  ;;                   (let ((j (mod (+ i 1) 10)))
+  ;;                     (when (and (not done)
+  ;;                                (not (eyebrowse--window-config-present-p j)))
+  ;;                       (eyebrowse-switch-to-window-config j)
+  ;;                       (call-interactively 'eyebrowse-rename-window-config2 j)
+  ;;                       (setq done t)
+  ;;                       ))
+  ;;                   )))
+  ;; 
+  ;;             ;; I don't use latex-preview-pane
+  ;;             ;; (require 'latex-preview-pane)
+  ;;             ;; (defun my/close-latex-preview-pane-before-eyebrowse-switch ()
+  ;;             ;;   ;; latex-preview-pane uses window-parameters which are
+  ;;             ;;   ;; not preserved by eyebrowse, so we close the preview
+  ;;             ;;   ;; pane before switching, it will be regenerated when we
+  ;;             ;;   ;; edit the TeX file.
+  ;;             ;;   (when (lpp/window-containing-preview)
+  ;;             ;;     (delete-window (lpp/window-containing-preview))))
+  ;; 
+  ;;             ;; (add-to-list 'eyebrowse-pre-window-switch-hook
+  ;;             ;;              #'my/close-latex-preview-pane-before-eyebrowse-switch)
+  ;; 
+  ;;             ;; (my/set-menu-key "["  #'my/eyebrowse-new-window-config)
+  ;;             ;; (my/set-menu-key ";"  #'eyebrowse-prev-window-config)
+  ;;             ;; (my/set-menu-key "'"  #'eyebrowse-next-window-config)
+  ;;             ;; (my/set-menu-key "]"  #'eyebrowse-close-window-config)
+  ;;             ;; (my/set-menu-key "\\" #'eyebrowse-rename-window-config)
+  ;;             )
+  ;;   )
 #+END_SRC
 
 ** Window handling
   (setq split-width-threshold  100)
   (setq split-height-threshold 60)
 
-  (defun my/split-window-prefer-horizontally (window)
+  (defun my/split-window-prefer-vertically (window)
     "If there's only one window (excluding any possibly active
            minibuffer), then split the current window horizontally."
     (if (and (one-window-p t)
              (not (active-minibuffer-window))
-             ( > (frame-width) (frame-height))
+             ( < (frame-width) (frame-height))
              )
-        (let ((split-height-threshold nil))
+        (let ((split-width-threshold nil))
           (split-window-sensibly window))
       (split-window-sensibly window)))
 
-  (setq split-window-preferred-function #'my/split-window-prefer-horizontally)
+  (setq split-window-preferred-function #'my/split-window-prefer-vertically)
   (setq window-combination-resize t)
 #+END_SRC
 
@@ -217,26 +234,88 @@ value, scrolling continues until there is no more output.
     :ensure t)
 #+END_SRC
 
+** 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)))
+#+END_SRC
+
+** Snippets
+
+*** Yasnippet
+#+BEGIN_SRC emacs-lisp
+  (use-package yasnippet
+    :ensure t
+    :diminish yas-minor-mode
+    :config (progn
+              (yas-global-mode)
+              (setq yas-verbosity 1)
+              (define-key yas-minor-mode-map (kbd "<tab>") nil)
+              (define-key yas-minor-mode-map (kbd "TAB") nil)
+              (define-key yas-minor-mode-map (kbd "<backtab>") 'yas-expand)
+              ))
+#+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
   ;; load tinyprocmail
-  (with-library 'tinyprocmail
-    ; (setq tinyprocmail--procmail-version "v3.22")
-    (add-hook 'tinyprocmail--load-hook 'tinyprocmail-install))
+  (use-package tinyprocmail
+    :ensure f
+    :config (with-library 'tinyprocmail
+              ;; (setq tinyprocmail--procmail-version "v3.22")
+              (add-hook 'tinyprocmail--load-hook 'tinyprocmail-install))
+  )
 #+END_SRC
 
 ** Magit
 #+BEGIN_SRC emacs-lisp :tangle don-configuration.el
-  ; don't verify where we are pushing
-  (setq magit-push-always-verify nil)
-  ;; refine diffs always (hilight words)
-  (setq magit-diff-refine-hunk nil)
-  ;; load magit-annex
-  (setq load-path
-        (append '("~/lib/emacs_el/magit-annex")
-                load-path))
-  (require 'magit-annex)
+  (use-package magit
+    :ensure t
+    :bind (("C-x g" . magit-status)
+           ("C-x C-g" . magit-status))
+    :config
+    ;; don't verify where we are pushing
+    (setq magit-push-always-verify nil)
+    ;; refine diffs always (hilight words)
+    (setq magit-diff-refine-hunk nil)
+    ;; load magit-annex
+    (setq load-path
+          (append '("~/lib/emacs_el/magit-annex")
+                  load-path))
+    )
+  (use-package magit-annex
+    :ensure t
+  )
 #+END_SRC
 
 ** Perl
@@ -266,7 +345,20 @@ value, scrolling continues until there is no more output.
 
 ** Helm
 #+BEGIN_SRC emacs-lisp
-(require 'don-helm)
+  (use-package helm
+    :ensure t
+    :config
+    (helm-mode 1)
+    (define-key global-map [remap find-file] 'helm-find-files)
+    (define-key global-map [remap occur] 'helm-occur)
+    (define-key global-map [remap list-buffers] 'helm-buffers-list)
+    (define-key global-map [remap dabbrev-expand] 'helm-dabbrev)
+    (global-set-key (kbd "M-x") 'helm-M-x)
+    (unless (boundp 'completion-in-region-function)
+      (define-key lisp-interaction-mode-map [remap completion-at-point] 'helm-lisp-completion-at-point)
+      (define-key emacs-lisp-mode-map       [remap completion-at-point] 'helm-lisp-completion-at-point))
+    (add-hook 'kill-emacs-hook #'(lambda () (and (file-exists-p "$TMP") (delete-file "$TMP"))))
+  )
 #+END_SRC
 ** Hydra
 #+BEGIN_SRC emacs-lisp :tangle don-configuration.el
@@ -286,126 +378,162 @@ value, scrolling continues until there is no more output.
 #+END_SRC
 ** LaTeX
 #+BEGIN_SRC emacs-lisp
-  (load "auctex.el" nil t t)
-  (load "preview-latex.el" nil t t)
-  (load "latex.el" nil t t)
-
-  ;; this is in the very newest auctex; avoid for now
-  (add-to-list 'LaTeX-fill-excluded-macros
-               '("Sexpr"))
-  ;; REFTEX (much enhanced management of cross-ref, labels, etc)
-  ;; http://www.strw.leidenuniv.nl/~dominik/Tools/reftex/
-  (autoload 'reftex-mode     "reftex" "RefTeX Minor Mode" t)
-  (autoload 'turn-on-reftex  "reftex" "RefTeX Minor Mode" nil)
-  (autoload 'reftex-citation "reftex-cite" "Make citation" nil)
-  (autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t)
-  (add-hook 'LaTeX-mode-hook 'turn-on-reftex)   ; with AUCTeX LaTeX mode
-  (add-hook 'latex-mode-hook 'turn-on-reftex)   ; with Emacs latex mode
-  (add-hook 'LaTeX-mode-hook 'outline-minor-mode)   ; with AUCTeX LaTeX mode
-  (add-hook 'latex-mode-hook 'outline-minor-mode)   ; with Emacs latex mode
-
-  ; use smart quotes by default instead of `` and ''
-  ; taken from http://kieranhealy.org/esk/kjhealy.html
-  (setq TeX-open-quote "“")
-  (setq TeX-close-quote "”")
-
-  ;; (TeX-add-style-hook
-  ;;  "latex"
-  ;;  (lambda ()
-  ;;    (TeX-add-symbols
-  ;;     '("DLA" 1))))
-  ;; (custom-set-variables
-  ;;  '(font-latex-user-keyword-classes 
-  ;;    '(("fixme" 
-  ;;       ("DLA" "RZ")
-  ;;       font-lock-function-name-face 2 (command 1 t))))
-  ;; ) 
-
-  (require 'font-latex)
-  (setq font-latex-match-reference-keywords
-        '(
-          ("fref" "{")
-          ("Fref" "{")
-          ("citep" "{")
-          ("citet" "{")
-          ("acs" "{")
-          ("acsp" "{")
-          ("ac" "{")
-          ("acp" "{")
-          ("acl" "{")
-          ("aclp" "{")
-          ("acsu" "{")
-          ("aclu" "{")
-          ("acused" "{")
-  ;         ))
-  ; (setq font-latex-match-warning-keywords
-  ;       '(
-          ("DLA" "{")
-          ("RZ" "{")
-          ("OM" "{")
-          ("DL" "{")
-          ("fixme" "{")))
-      
-  (setq-default TeX-parse-self t)
-  (setq-default TeX-auto-save t)
-  (setq-default TeX-master nil)
-  (eval-after-load
-      "latex"
-    '(TeX-add-style-hook
-      "cleveref"
-      (lambda ()
-        (if (boundp 'reftex-ref-style-alist)
-        (add-to-list
-         'reftex-ref-style-alist
-         '("Cleveref" "cleveref"
-           (("\\cref" ?c) ("\\Cref" ?C) ("\\cpageref" ?d) ("\\Cpageref" ?D)))))
-        (reftex-ref-style-activate "Cleveref")
-        (TeX-add-symbols
-         '("cref" TeX-arg-ref)
-         '("Cref" TeX-arg-ref)
-         '("cpageref" TeX-arg-ref)
-         '("Cpageref" TeX-arg-ref)))))
-  ;; this doesn't seem to work; not currently sure why
-  ; (setq font-latex-user-keyword-classes
-  ;       '(("my-warning-commands"
-  ;          (("DLA" "{")
-  ;           ("RZ" "{")
-  ;           ("OM" "{")
-  ;           ("DL" "{")
-  ;           ("fixme" "{")
-  ;           )
-  ;          (:foreground "red" :weight bold :underline (:color foreground-color :style line)))
-  ;         ))
-
-  (setq-default reftex-default-bibliography
-        '("~/projects/research/references.bib"))
-
+  (use-package tex
+    :defer t
+    :ensure auctex
+    :config
+    (add-to-list 'LaTeX-fill-excluded-macros
+                 '("Sexpr"))
+    (add-to-list 'TeX-style-path '"/home/don/lib/emacs_el/auctex/style")
+    ;; REFTEX (much enhanced management of cross-ref, labels, etc)
+    ;; http://www.strw.leidenuniv.nl/~dominik/Tools/reftex/
+    (autoload 'reftex-mode     "reftex" "RefTeX Minor Mode" t)
+    (autoload 'turn-on-reftex  "reftex" "RefTeX Minor Mode" nil)
+    (autoload 'reftex-citation "reftex-cite" "Make citation" nil)
+    (autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t)
+    (add-hook 'LaTeX-mode-hook 'turn-on-reftex)   ; with AUCTeX LaTeX mode
+    (add-hook 'latex-mode-hook 'turn-on-reftex)   ; with Emacs latex mode
+    (add-hook 'LaTeX-mode-hook 'outline-minor-mode)   ; with AUCTeX LaTeX mode
+    (add-hook 'latex-mode-hook 'outline-minor-mode)   ; with Emacs latex mode
+
+    ;; support fake section headers
+    (setq TeX-outline-extra
+          '(("%chapter" 1)
+            ("%section" 2)
+            ("%subsection" 3)
+            ("%subsubsection" 4)
+            ("%paragraph" 5)))
+    ;; add font locking to the headers
+    (font-lock-add-keywords
+     'latex-mode
+     '(("^%\\(chapter\\|\\(sub\\|subsub\\)?section\\|paragraph\\)"
+        0 'font-lock-keyword-face t)
+       ("^%chapter{\\(.*\\)}"       1 'font-latex-sectioning-1-face t)
+       ("^%section{\\(.*\\)}"       1 'font-latex-sectioning-2-face t)
+       ("^%subsection{\\(.*\\)}"    1 'font-latex-sectioning-3-face t)
+       ("^%subsubsection{\\(.*\\)}" 1 'font-latex-sectioning-4-face t)
+       ("^%paragraph{\\(.*\\)}"     1 'font-latex-sectioning-5-face t)))
+
+    ;; use smart quotes by default instead of `` and ''
+    ;; taken from http://kieranhealy.org/esk/kjhealy.html
+    (setq TeX-open-quote "“")
+    (setq TeX-close-quote "”")
+
+    ;; (TeX-add-style-hook
+    ;;  "latex"
+    ;;  (lambda ()
+    ;;    (TeX-add-symbols
+    ;;     '("DLA" 1))))
+    ;; (custom-set-variables
+    ;;  '(font-latex-user-keyword-classes 
+    ;;    '(("fixme" 
+    ;;       ("DLA" "RZ")
+    ;;       font-lock-function-name-face 2 (command 1 t))))
+    ;; ) 
+    (setq-default TeX-parse-self t)
+    (setq-default TeX-auto-save t)
+    (setq-default TeX-master nil)
+    (eval-after-load
+        "latex"
+      '(TeX-add-style-hook
+        "cleveref"
+        (lambda ()
+          (if (boundp 'reftex-ref-style-alist)
+              (add-to-list
+               'reftex-ref-style-alist
+               '("Cleveref" "cleveref"
+                 (("\\cref" ?c) ("\\Cref" ?C) ("\\cpageref" ?d) ("\\Cpageref" ?D)))))
+          (reftex-ref-style-activate "Cleveref")
+          (TeX-add-symbols
+           '("cref" TeX-arg-ref)
+           '("Cref" TeX-arg-ref)
+           '("cpageref" TeX-arg-ref)
+           '("Cpageref" TeX-arg-ref)))))
+
+    (setq-default reftex-default-bibliography
+                  '("~/projects/research/references.bib"))
+    (use-package font-latex
+      :config
+      (setq font-latex-match-reference-keywords
+            '(
+              ("fref" "{")
+              ("Fref" "{")
+              ("citep" "{")
+              ("citet" "{")
+              ("acs" "{")
+              ("acsp" "{")
+              ("ac" "{")
+              ("acp" "{")
+              ("acl" "{")
+              ("aclp" "{")
+              ("acsu" "{")
+              ("aclu" "{")
+              ("acused" "{")
+              ("DLA" "{")
+              ("RZ" "{")
+              ("OM" "{")
+              ("DL" "{")
+              ("fixme" "{"))
+            )
+      )
+  )
 
 #+END_SRC
 ** Org
 #+BEGIN_SRC emacs-lisp
   (require 'org-mode-configuration)
 #+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
-  (require 'ess_configuration)
+  (use-package ess
+    :ensure t
+    :config (require 'ess_configuration))
 #+END_SRC
 
+** Rainbowmode
+From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colorizes color strings
+
+#+BEGIN_SRC emacs-lisp
+  (use-package rainbow-mode
+    ;; add ess to the x major mode
+    :config (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[S])
+    (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[R])
+  )
+#+END_SRC
 
 ** Polymode
 #+BEGIN_SRC emacs-lisp
-  (setq load-path
-        (append '("~/lib/emacs_el/polymode/modes")
-                load-path))
-  (require 'polymode)
-  (require 'poly-R)
-  (require 'poly-noweb)
-  (require 'poly-markdown)
-  (add-to-list 'auto-mode-alist '("\\.Snw" . poly-noweb+r-mode))
-  (add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode))
-  (add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))
+  (use-package polymode
+    :config
+    (use-package poly-R)
+    (use-package poly-noweb)
+    (use-package poly-markdown)
+    :mode ("\\.Snw" . poly-noweb+r-mode)
+    :mode ("\\.Rnw" . poly-noweb+r-mode)
+    :mode ("\\.Rmd" . poly-markdown+r-mode)
+    )
 #+END_SRC
 
+** Outlining
+*** Outline magic
+#+BEGIN_SRC emacs-lisp
+  (use-package outline-magic)
+#+END_SRC
 * Keybindings
 ** Override other things
 #+BEGIN_SRC emacs-lisp
@@ -417,7 +545,7 @@ value, scrolling continues until there is no more output.
   ; use iedit everywhere
   (define-key my-keys-minor-mode-map (kbd "C-;") 'iedit-mode)
   ;; use outline mode keybindings everywhere
-  (define-key my-keys-minor-mode-map (kbd "C-;") 'my/mydra-outline/body)
+  ;; (define-key my-keys-minor-mode-map (kbd "C-;") 'my/mydra-outline/body)
 
   (define-minor-mode my-keys-minor-mode
     "A minor mode so that my key settings override annoying major modes."
@@ -437,7 +565,7 @@ value, scrolling continues until there is no more output.
   (ad-activate 'load)
 #+END_SRC
 
-* Mis1c (uncharacterized)
+* Misc (uncharacterized)
 #+BEGIN_SRC emacs-lisp
   (setq bibtex-user-optional-fields (quote (("annote" "Personal annotation (ignored)") ("abstract" "") ("pmid" "") ("doi" ""))))
   (setq calendar-latitude 40.11)
@@ -507,14 +635,7 @@ value, scrolling continues until there is no more output.
   ; (require 'google-weather)
   ; (require 'org-google-weather)
   ; (setq-default org-google-weather-format "%i %c, [%l,%h] %s %C")
-
-  ; http://julien.danjou.info/projects/emacs-packages#rainbow-mode
-  ; this colorizes color strings
-  (require 'rainbow-mode)
-  ; add ess to the x major mode
-  (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[S])
-  (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[R])
-
+  
   (global-set-key "\C-xp" 'server-edit)
 
   (setq-default auto-mode-alist (cons '("\.wml$" . 
@@ -690,13 +811,6 @@ value, scrolling continues until there is no more output.
   (put 'downcase-region 'disabled nil)
   (put 'narrow-to-region 'disabled nil)
 
-
-  (autoload 'flyspell-mode "flyspell" "On-the-fly spelling checker." t)
-  (add-hook 'message-mode-hook 'turn-on-flyspell)
-  (add-hook 'text-mode-hook 'turn-on-flyspell)
-  (add-hook 'c-mode-common-hook 'flyspell-prog-mode)
-  (add-hook 'cperl-mode-hook 'flyspell-prog-mode)
-  (add-hook 'tcl-mode-hook 'flyspell-prog-mode)
   ; (defun turn-on-flyspell ()
   ;    "Force flyspell-mode on using a positive arg.  For use in hooks."
   ;    (interactive)
@@ -777,94 +891,98 @@ value, scrolling continues until there is no more output.
 
   ; fix up tmux xterm keys
   ; stolen from http://unix.stackexchange.com/questions/24414/shift-arrow-not-working-in-emacs-within-tmux
-  (if (getenv "TMUX")
-      (progn
-        (let ((x 2) (tkey ""))
-          (while (<= x 8)
-            ;; shift
-            (if (= x 2)
-                (setq tkey "S-"))
-            ;; alt
-            (if (= x 3)
-                (setq tkey "M-"))
-            ;; alt + shift
-            (if (= x 4)
-                (setq tkey "M-S-"))
-            ;; ctrl
-            (if (= x 5)
-                (setq tkey "C-"))
-            ;; ctrl + shift
-            (if (= x 6)
-                (setq tkey "C-S-"))
-            ;; ctrl + alt
-            (if (= x 7)
-                (setq tkey "C-M-"))
-            ;; ctrl + alt + shift
-            (if (= x 8)
-                (setq tkey "C-M-S-"))
-  
-            ;; arrows
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d A" x)) (kbd (format "%s<up>" tkey)))
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d B" x)) (kbd (format "%s<down>" tkey)))
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d C" x)) (kbd (format "%s<right>" tkey)))
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d D" x)) (kbd (format "%s<left>" tkey)))
-            ;; home
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d H" x)) (kbd (format "%s<home>" tkey)))
-            ;; end
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d F" x)) (kbd (format "%s<end>" tkey)))
-            ;; page up
-            (define-key key-translation-map (kbd (format "M-[ 5 ; %d ~" x)) (kbd (format "%s<prior>" tkey)))
-            ;; page down
-            (define-key key-translation-map (kbd (format "M-[ 6 ; %d ~" x)) (kbd (format "%s<next>" tkey)))
-            ;; insert
-            (define-key key-translation-map (kbd (format "M-[ 2 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
-            ;; delete
-            (define-key key-translation-map (kbd (format "M-[ 3 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
-            ;; f1
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d P" x)) (kbd (format "%s<f1>" tkey)))
-            ;; f2
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d Q" x)) (kbd (format "%s<f2>" tkey)))
-            ;; f3
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d R" x)) (kbd (format "%s<f3>" tkey)))
-            ;; f4
-            (define-key key-translation-map (kbd (format "M-[ 1 ; %d S" x)) (kbd (format "%s<f4>" tkey)))
-            ;; f5
-            (define-key key-translation-map (kbd (format "M-[ 15 ; %d ~" x)) (kbd (format "%s<f5>" tkey)))
-            ;; f6
-            (define-key key-translation-map (kbd (format "M-[ 17 ; %d ~" x)) (kbd (format "%s<f6>" tkey)))
-            ;; f7
-            (define-key key-translation-map (kbd (format "M-[ 18 ; %d ~" x)) (kbd (format "%s<f7>" tkey)))
-            ;; f8
-            (define-key key-translation-map (kbd (format "M-[ 19 ; %d ~" x)) (kbd (format "%s<f8>" tkey)))
-            ;; f9
-            (define-key key-translation-map (kbd (format "M-[ 20 ; %d ~" x)) (kbd (format "%s<f9>" tkey)))
-            ;; f10
-            (define-key key-translation-map (kbd (format "M-[ 21 ; %d ~" x)) (kbd (format "%s<f10>" tkey)))
-            ;; f11
-            (define-key key-translation-map (kbd (format "M-[ 23 ; %d ~" x)) (kbd (format "%s<f11>" tkey)))
-            ;; f12
-            (define-key key-translation-map (kbd (format "M-[ 24 ; %d ~" x)) (kbd (format "%s<f12>" tkey)))
-            ;; f13
-            (define-key key-translation-map (kbd (format "M-[ 25 ; %d ~" x)) (kbd (format "%s<f13>" tkey)))
-            ;; f14
-            (define-key key-translation-map (kbd (format "M-[ 26 ; %d ~" x)) (kbd (format "%s<f14>" tkey)))
-            ;; f15
-            (define-key key-translation-map (kbd (format "M-[ 28 ; %d ~" x)) (kbd (format "%s<f15>" tkey)))
-            ;; f16
-            (define-key key-translation-map (kbd (format "M-[ 29 ; %d ~" x)) (kbd (format "%s<f16>" tkey)))
-            ;; f17
-            (define-key key-translation-map (kbd (format "M-[ 31 ; %d ~" x)) (kbd (format "%s<f17>" tkey)))
-            ;; f18
-            (define-key key-translation-map (kbd (format "M-[ 32 ; %d ~" x)) (kbd (format "%s<f18>" tkey)))
-            ;; f19
-            (define-key key-translation-map (kbd (format "M-[ 33 ; %d ~" x)) (kbd (format "%s<f19>" tkey)))
-            ;; f20
-            (define-key key-translation-map (kbd (format "M-[ 34 ; %d ~" x)) (kbd (format "%s<f20>" tkey)))
-
-            (setq x (+ x 1))
-            ))
+  (defun fix-up-tmux-keys ()
+      "Fix up tmux xterm keys"
+      (if (getenv "TMUX")
+          (progn
+            (let ((x 2) (tkey ""))
+              (while (<= x 8)
+                ;; shift
+                (if (= x 2)
+                    (setq tkey "S-"))
+                ;; alt
+                (if (= x 3)
+                    (setq tkey "M-"))
+                ;; alt + shift
+                (if (= x 4)
+                    (setq tkey "M-S-"))
+                ;; ctrl
+                (if (= x 5)
+                    (setq tkey "C-"))
+                ;; ctrl + shift
+                (if (= x 6)
+                    (setq tkey "C-S-"))
+                ;; ctrl + alt
+                (if (= x 7)
+                    (setq tkey "C-M-"))
+                ;; ctrl + alt + shift
+                (if (= x 8)
+                    (setq tkey "C-M-S-"))
+
+                ;; arrows
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d A" x)) (kbd (format "%s<up>" tkey)))
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d B" x)) (kbd (format "%s<down>" tkey)))
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d C" x)) (kbd (format "%s<right>" tkey)))
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d D" x)) (kbd (format "%s<left>" tkey)))
+                ;; home
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d H" x)) (kbd (format "%s<home>" tkey)))
+                ;; end
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d F" x)) (kbd (format "%s<end>" tkey)))
+                ;; page up
+                (define-key key-translation-map (kbd (format "M-[ 5 ; %d ~" x)) (kbd (format "%s<prior>" tkey)))
+                ;; page down
+                (define-key key-translation-map (kbd (format "M-[ 6 ; %d ~" x)) (kbd (format "%s<next>" tkey)))
+                ;; insert
+                (define-key key-translation-map (kbd (format "M-[ 2 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
+                ;; delete
+                (define-key key-translation-map (kbd (format "M-[ 3 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
+                ;; f1
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d P" x)) (kbd (format "%s<f1>" tkey)))
+                ;; f2
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d Q" x)) (kbd (format "%s<f2>" tkey)))
+                ;; f3
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d R" x)) (kbd (format "%s<f3>" tkey)))
+                ;; f4
+                (define-key key-translation-map (kbd (format "M-[ 1 ; %d S" x)) (kbd (format "%s<f4>" tkey)))
+                ;; f5
+                (define-key key-translation-map (kbd (format "M-[ 15 ; %d ~" x)) (kbd (format "%s<f5>" tkey)))
+                ;; f6
+                (define-key key-translation-map (kbd (format "M-[ 17 ; %d ~" x)) (kbd (format "%s<f6>" tkey)))
+                ;; f7
+                (define-key key-translation-map (kbd (format "M-[ 18 ; %d ~" x)) (kbd (format "%s<f7>" tkey)))
+                ;; f8
+                (define-key key-translation-map (kbd (format "M-[ 19 ; %d ~" x)) (kbd (format "%s<f8>" tkey)))
+                ;; f9
+                (define-key key-translation-map (kbd (format "M-[ 20 ; %d ~" x)) (kbd (format "%s<f9>" tkey)))
+                ;; f10
+                (define-key key-translation-map (kbd (format "M-[ 21 ; %d ~" x)) (kbd (format "%s<f10>" tkey)))
+                ;; f11
+                (define-key key-translation-map (kbd (format "M-[ 23 ; %d ~" x)) (kbd (format "%s<f11>" tkey)))
+                ;; f12
+                (define-key key-translation-map (kbd (format "M-[ 24 ; %d ~" x)) (kbd (format "%s<f12>" tkey)))
+                ;; f13
+                (define-key key-translation-map (kbd (format "M-[ 25 ; %d ~" x)) (kbd (format "%s<f13>" tkey)))
+                ;; f14
+                (define-key key-translation-map (kbd (format "M-[ 26 ; %d ~" x)) (kbd (format "%s<f14>" tkey)))
+                ;; f15
+                (define-key key-translation-map (kbd (format "M-[ 28 ; %d ~" x)) (kbd (format "%s<f15>" tkey)))
+                ;; f16
+                (define-key key-translation-map (kbd (format "M-[ 29 ; %d ~" x)) (kbd (format "%s<f16>" tkey)))
+                ;; f17
+                (define-key key-translation-map (kbd (format "M-[ 31 ; %d ~" x)) (kbd (format "%s<f17>" tkey)))
+                ;; f18
+                (define-key key-translation-map (kbd (format "M-[ 32 ; %d ~" x)) (kbd (format "%s<f18>" tkey)))
+                ;; f19
+                (define-key key-translation-map (kbd (format "M-[ 33 ; %d ~" x)) (kbd (format "%s<f19>" tkey)))
+                ;; f20
+                (define-key key-translation-map (kbd (format "M-[ 34 ; %d ~" x)) (kbd (format "%s<f20>" tkey)))
+
+                (setq x (+ x 1))
+                ))
+            )
         )
-    )
+      )
+  ; (add-hook 'tty-setup-hook 'fix-up-tmux-keys)
 
   ; procmailmode configuration
   (load "procmail_mode")