misc minor fixes
[dot-emacs] / my-init.org
index 1bd6421f5ad46ed5bd37caff4a4f998d05b5f0f1..35c03baa5581b390d29b3b18110e1cf38ffb4b04 100644 (file)
@@ -1,7 +1,7 @@
-#+TITLE: My Personal Init Customization
+#+title: My Personal Init Customization
 #+OPTIONS: toc:nil num:nil ^:nil
 * copyright
-# Copyright (C) 2016 Ian Kelling
+# Copyright (C) 2017 Ian Kelling
 
 # 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
@@ -19,8 +19,7 @@
 * things that should be at the beginning
 #+begin_src emacs-lisp
 ;; todo, evaluating this manually disables debug on error instead of toggling it
-;(toggle-debug-on-error) ;uncomment to help debug and catch errors
-
+;;(toggle-debug-on-error) ;uncomment to help debug and catch errors
 
 #+end_src
 
@@ -76,17 +75,13 @@ alternate keyboards
 ;; little kit to help remove a down server
 ;; (setq package-archives nil)
 
-(add-to-list 'package-archives
-             '("marmalade" .
-               "http://marmalade-repo.org/packages/"))
+;;(add-to-list 'package-archives
+;;             '("marmalade" .
+;;               "http://marmalade-repo.org/packages/"))
 
 (add-to-list 'package-archives
              '("melpa" . "http://melpa.milkbox.net/packages/") t)
-
-;; if this is a new machine/config, get package list
-;; not sure why we need it, but it is recommended in starter kit,
-;; and doesn't seem like a bad thing
-(unless package-archive-contents (package-refresh-contents))
+(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
 
   #+end_src
 
@@ -159,24 +154,73 @@ find a recently dated file in ~/.emacs.d/auto-save-list/, and see the files list
 If it is different, emacs will give a message about recovering it when you open it.
 
 
+* TODO try out which key mode
+* TODO make installed emacs package declarative
+* TODO see if there are more cool functions in sh-script
+like sh-cd-here, and bind that to a key
+* TODO assign a key to append-next-kill
+* TODO keybinds to remember
+
+keys worth memorizing
+
+c-2
+c-m-3
+
+s-return
+
+in isearch, C-o
+isearch-occur
+
+org, C-c / t
+make just todo items visible
+
+C-mouse-1
+buffer list menu
+
+C-up/down
+move up/down fast
+
+M-right-scroll
+forward/back sexp
+
+C-M-right-scroll
+scroll
+
+C-S-scroll
+change text size
+
+how to control+left scroll on kinesis
+right shift = control
+
+C-left-scroll
+forward/backward word
+
+C-M-d
+swap buffers across windows
+
+shell-cd-to-file
+M-2
+
+* TODO add simpler keybind for make-frame-command
+current one is C-x 5 2.
 
-* TODO update comint-exec-1
 * TODO learn some more ivy mode stuff
-* TODO disable return overriding ctrl-m
 * TODO declarative package installations,
 with documentation.
 * TODO shell mode reverse search hides 2nd+ line of multi-line result
-* TODO report bug in latest emacs,
-c-c ', does't exit org-mode src editing mode.
-* TODO button for switching to scratch buffer
 * TODO figure out browsing files with broken nfs mount
 causes emacs to freeze until I kill -9 it.
 * TODO make a keybind to print var under cursor
 and actually, putting the start of it in th emodeline might be cool
-* TODO fix undo tree files literering filesystem
+* TODO make recent files save periodically,
+normally it just saves on exit, but half the time I don't exit cleanly
+so they don't get saved, because I leave emacs running until it crashes
+* TODO fix undo tree outside visible buffer bug
 * TODO c-<delete> in shell mode should send over
 previous line if current line is empty
 * TODO make c-m-s be just a control key for easier use
+* TODO try out avy mode for laptop
+i used to have ace jump mode, but google says avy is better.
 * TODO bind a in group mode of gnus to c-u a,
 also, make a default for number of articles
 * TODO make auto-complete be on by default in sql-mode
@@ -286,7 +330,6 @@ outside of emacs
 * TODO try mark word, which might be a useful keybind
 * TODO fix org-cycle: it assumes which key it is bound to for its last alternative
 * TODO checkout lisp-complete-symbol to augment auto-complete
-* TODO learn dired.
 * TODO emacs keylogger to optimize key binds
 * TODO remap/investigate find tag, find tag at point
 * TODO set key to cycle buffers by mode, example below
@@ -423,7 +466,6 @@ if all else fails, edit the abbrev file
 * auto-complete readline-complete
 #+begin_src emacs-lisp
 
-(add-to-list 'load-path "~/.emacs.d/src/readline-complete")
 (require 'readline-complete)
 ;; not sure how I made these, but I deleted, and
 ;; it would be nice to make them again sometime
@@ -440,7 +482,7 @@ if all else fails, edit the abbrev file
 (setq explicit-shell-file-name "bash")
 
 ;; readline-complete says to add this line.
-;; however, it messes up my procfs directory tracking hook
+;; however, it  up my procfs directory tracking hook
 ;; because get-process doesn't notice the child shell.
 ;; instead, I've removed export EMACS=t from
 ;;  comint-exec-1 (the function which initially sets it)
@@ -470,43 +512,112 @@ if all else fails, edit the abbrev file
 #+RESULTS:
 : comint-exec-1
 
-debugging
+** readline complete fix
 
+I need this function here, where INSIDE_EMACS is replaced with RLC_INSIDE_EMACS.
+#+begin_src emacs-lisp
+;; ian: last update 2017-1-7. update this periodically from upstream
+;; like when we do a major emacs update
+(defun comint-exec-1 (name buffer command switches)
+  (let ((process-environment
+        (nconc
+         ;; If using termcap, we specify `emacs' as the terminal type
+         ;; because that lets us specify a width.
+         ;; If using terminfo, we specify `dumb' because that is
+         ;; a defined terminal type.  `emacs' is not a defined terminal type
+         ;; and there is no way for us to define it here.
+         ;; Some programs that use terminfo get very confused
+         ;; if TERM is not a valid terminal type.
+         ;; ;; There is similar code in compile.el.
+         (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
+             (list "TERM=dumb" "TERMCAP="
+                   (format "COLUMNS=%d" (window-width)))
+           (list "TERM=emacs"
+                 (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width))))
+         (list (format "RLC_INSIDE_EMACS=%s,comint" emacs-version))
+         process-environment))
+       (default-directory
+         (if (file-accessible-directory-p default-directory)
+             default-directory
+           "/"))
+       proc decoding encoding changed)
+    (let ((exec-path (if (and command (file-name-directory command))
+                        ;; If the command has slashes, make sure we
+                        ;; first look relative to the current directory.
+                        (cons default-directory exec-path) exec-path)))
+      (setq proc (apply 'start-file-process name buffer command switches)))
+    ;; Some file name handler cannot start a process, fe ange-ftp.
+    (unless (processp proc) (error "No process started"))
+    (let ((coding-systems (process-coding-system proc)))
+      (setq decoding (car coding-systems)
+           encoding (cdr coding-systems)))
+    ;; Even if start-file-process left the coding system for encoding data
+    ;; sent from the process undecided, we had better use the same one
+    ;; as what we use for decoding.  But, we should suppress EOL
+    ;; conversion.
+    (if (and decoding (not encoding))
+       (setq encoding (coding-system-change-eol-conversion decoding 'unix)
+             changed t))
+    (if changed
+       (set-process-coding-system proc decoding encoding))
+    proc))
 
-* auto save & backup
-
-there is a bug that when emacs has been running for a long time,
-auto-save-timeout never happens simply by waiting.
-doing something like an M-x function will trigger it.
-Todo: report this bug.
+#+end_src
 
+* auto save & backup
 #+begin_src emacs-lisp
-
-;; enable auto-save hook
 (setq auto-save-timeout 1) ; idle time before auto-save.
 
-
 ;; main hook for my auto save
 (add-hook 'auto-save-hook 'my-auto-save)
 ;; additional hook to try to deal with emacs not auto-saving when a buffer isn't active
-(add-hook 'window-configuration-change-hook 'my-auto-save)
-
-
-(defun my-auto-save ()
-  (if (and my-as (buffer-file-name) (buffer-modified-p))
-      (let (message-log-max)
-        ;; a bit of a hack to partially suppress the constant saving in the echo area
-        (with-temp-message ""
-          (basic-save-buffer)))))
-
-(defun my-as-off ()
+(add-hook 'window-configuration-change-hook 'my-auto-save-win)
+
+;; this function from mu4e really does not like buffer saving
+(advice-add 'message-send-and-exit :before 'my-as-off)
+(advice-add 'message-send-and-exit :after 'my-as-on)
+
+;; avoid window config hook saving too much, it can
+;; get into loops in some random situations
+(setq my-auto-save-last nil)
+(defun my-auto-save-win ()
+  (unless (eq (current-buffer) my-auto-save-last)
+  (my-auto-save (current-buffer))))
+
+(defun my-auto-save (&optional last)
+  (when (and
+         my-as
+         (buffer-file-name)
+         ;; mu4e has a bug right now, undo breaks when saving drafts
+         (not (string= (buffer-file-name) "*draft*"))
+         (buffer-modified-p)
+         (not (org-src-edit-buffer-p)))
+         ;; serial is incremented on each save, so let's do a bit less of them
+         (not (derived-mode-p 'dns-mode))
+    (setq my-auto-save-last last)
+    (let (message-log-max)
+      ;; a bit of a hack to partially suppress the constant saving in the echo area
+      (with-temp-message ""
+        (basic-save-buffer)))))
+
+;; in the message-send-and-exit advice, got an error because it passed an arg.
+;; didn't look into why, just add ignored args.
+(defun my-as-off (&rest ignore)
   (interactive)
   (setq my-as nil))
 
-(defun my-as-on ()
+(defun my-as-off-local (&rest ignore)
+  (interactive)
+  (setq-local my-as nil))
+
+(defun my-as-on (&rest ignore)
   (interactive)
   (setq my-as t))
 
+(defun my-as-on-local (&rest ignore)
+  (interactive)
+  (setq-local my-as on))
+
 ;; based on suggestion in the emacs docs, redefine these 2 functions
 ;; to avoid prompt spamming the user when we do auto-save
 (defun ask-user-about-supersession-threat (fn)
@@ -625,8 +736,7 @@ seems they are created
 
 ;; recommended by gnus,
 ;; but seems like it could be good to have set for other stuff
-(setq user-full-name "Ian Kelling"
-      user-mail-address "ian@iankelling.org")
+(setq user-full-name "Ian Kelling")
 ;; general email setting? recommended by mu4e
 (setq message-kill-buffer-on-exit t)
 
@@ -642,8 +752,8 @@ seems they are created
 (add-hook 'bbdb-mode-hook
           (lambda () (define-key bbdb-mode-map (kbd "C-k") nil)))
 
-(add-to-list 'load-path "~/.emacs.d/src/bbdb-csv-import")
 (require 'bbdb-csv-import)
+
         #+end_src
 
 * bookmark settings
@@ -677,64 +787,70 @@ interesting light themes
 
 
   #+begin_src emacs-lisp
-    (defun override-theme (arg)
-      (interactive)
-      (while custom-enabled-themes
-        (disable-theme (car custom-enabled-themes)))
-      (load-theme arg t))
-    (setq color-theme-is-global t)
-
-    (defun toggle-night ()
-     (interactive)
-      (if (equal (car custom-enabled-themes) 'naquadah)
-          (override-theme 'leuven)
-      (override-theme 'naquadah)))
-
+(defun override-theme (arg)
+  (interactive)
+  (while custom-enabled-themes
+    (disable-theme (car custom-enabled-themes)))
+  (load-theme arg t))
+(setq color-theme-is-global t)
 
-    (override-theme 'leuven) ;; org mode features, with monitor darkened. part of org-mode i think
+(defun toggle-night ()
+  (interactive)
+  (cond  ((equal (car custom-enabled-themes) 'naquadah)
+          ;; background off white to be better on the eyes. took this
+          ;; color from gitweb.
+          (custom-set-faces `(default ((t (:background "#F6F6F0")))))
+          (override-theme 'leuven))
+         (t
+          ;; revert previous background change
+          (custom-set-faces `(default ((t (:background nil)))))
+          (override-theme 'naquadah))))
 
+(custom-set-faces `(default ((t (:background "#F6F6F0")))))
+(override-theme 'leuven) ;; org mode features, with monitor darkened. part of org-mode i think
 
 
-    ;; disable color thing with this:
-    ;;(disable-theme (car custom-enabled-themes))
+;; disable color thing with this:
+;;(disable-theme (car custom-enabled-themes))
 
-    ;; decent dark themes
+;; decent dark themes
 
-   ;;(override-theme 'tangotango)
-    ;;(override-theme 'deeper-blue)
-    ;;(override-theme 'tango-dark)
-    ;;(override-theme 'tsdh-dark)
+;;(override-theme 'tangotango)
+;;(override-theme 'deeper-blue)
+;;(override-theme 'tango-dark)
+;;(override-theme 'tsdh-dark)
 
-    ;;(override-theme 'heroku)
-    ;;(override-theme 'inkpot)  ;; part of inkpot-theme package
-    ;;(override-theme 'naquadah) ; org mode features, part of  naquadah-theme package
-    ;;(override-theme 'spolsky) ;; part of sublime-themes package
-    ;;(override-theme 'twilight-anti-bright)  ;; from twilight-anti-bright-theme package
+;;(override-theme 'heroku)
+;;(override-theme 'inkpot)  ;; part of inkpot-theme package
+;;(override-theme 'naquadah) ; org mode features, part of  naquadah-theme package
+;;(override-theme 'spolsky) ;; part of sublime-themes package
+;;(override-theme 'twilight-anti-bright)  ;; from twilight-anti-bright-theme package
 
-    ;; interesting but not usable colors
-    ;;(override-theme 'cyberpunk) ; cool org mode features, from cyberpunk-theme package
-    ;;(override-theme 'wombat) ; cursor not visible enough. from a wombat package, not sure which
-    ;;(override-theme 'misterioso) ; cursor not visible enough
+;; interesting but not usable colors
+;;(override-theme 'cyberpunk) ; cool org mode features, from cyberpunk-theme package
+;;(override-theme 'wombat) ; cursor not visible enough. from a wombat package, not sure which
+;;(override-theme 'misterioso) ; cursor not visible enough
 
 
 
-    ;;decent light themes
-    ;;(override-theme 'alect-light) ; theres a -alt version, don't see a dif. could use this without dimming. from alect-something package
-    ;;(override-theme 'occidental) ; from occidental-theme package
+;;decent light themes
+;;(override-theme 'alect-light) ; theres a -alt version, don't see a dif. could use this without dimming. from alect-something package
+;;(override-theme 'occidental) ; from occidental-theme package
 
 
-    ;;color-theme is deprecated in emacs 24.
+;;color-theme is deprecated in emacs 24.
 
 ;; theme packages i tried then removed:
 ;; ignored ones that didn't use the new theme engine
 
-;;66 packages (zenburn-theme-2.1, zen-and-art-theme-1.0.1, waher-theme-20130917.7, ujelly-theme-1.0.35, twilight-theme-1.0.0, twilight-bright-theme-20130605.143, twilight-anti-bright-theme-20120713.316, tronesque-theme-1.3, tron-theme-12, toxi-theme-0.1.0, tommyh-theme-1.2, tango-2-theme-1.0.0, sunny-day-theme-20131203.1250, sublime-themes-20140117.323, subatomic-theme-20131011.1048, soothe-theme-0.3.16, soft-morning-theme-20131211.1342, soft-charcoal-theme-20130924.1206, sea-before-storm-theme-0.3, purple-haze-theme-20130929.1751, phoenix-dark-pink-theme-20130905.941, phoenix-dark-mono-theme-20130306.1215, pastels-on-dark-theme-0.3, obsidian-theme-20130920.937, nzenburn-theme-20130513, noctilux-theme-20131019.31, mustang-theme-20130920.939, monokai-theme-0.0.10, molokai-theme-20130828.0, late-night-theme-0.0, jujube-theme-0.1, ir-black-theme-20130302.2355, gruvbox-theme-20131229.1458, gruber-darker-theme-0.6, grandshell-theme-20140118.1003, github-theme-0.0.3, gandalf-theme-0.1, flatland-theme-20131204.858, django-theme-20131022.202, deep-thought-theme-0.1.1, dakrone-theme-20131212.1159, colorsarenice-theme-20131128.1106, color-theme-wombat+-0.0.2, color-theme-wombat-0.0.1, color-theme-twilight-0.1, color-theme-tango-0.0.2, color-theme-solarized-20120301, color-theme-sanityinc-solarized-2.25, color-theme-railscasts-0.0.2, color-theme-monokai-0.0.5, color-theme-molokai-0.1, color-theme-ir-black-1.0.1, color-theme-heroku-1.0.0, color-theme-github-0.0.3, color-theme-eclipse-0.0.2, color-theme-dpaste-0.0.1, color-theme-dawn-night-1.0, color-theme-colorful-obsolescence-0.0.1, color-theme-cobalt-0.0.2, color-theme-20080305.34, clues-theme-20130908.801, busybee-theme-20130920.942, bubbleberry-theme-0.1.2, assemblage-theme-20130715.621, anti-zenburn-theme-20140104.1542, ample-zen-theme-0.2)
+;;66 packages (zenburn-theme-2.1, zen-and-art-theme-1.0.1, waher-theme-20130917.7, ujelly-theme-1.0.35, twilight-theme-1.0.0, twilight-bright-theme-20130605.143, twilight-anti-bright-theme-20120713.316, tronesque-theme-1.3, tron-theme-12, toxi-theme-0.1.0, tommyh-theme-1.2, tango-2-theme-1.0.0, sunny-day-theme-20131203.1250, sublime-themes-20140117.323, subatomic-theme-20131011.1048, soothe-theme-0.3.16, soft-morning-theme-20131211.1342, soft-charcoal-theme-20130924.1206, sea-before-storm-theme-0.3, purple-haze-theme-20130929.1751, phoenix-dark-pink-theme-20130905.941, phoenix-dark-mono-theme-20130306.1215, pastels-on-dark-theme-0.3, obsidian-theme-20130920.937, nzenburn-theme-20130513, noctilux-theme-20131019.31, mustang-theme-20130920.939, monokai-theme-0.0.10, molokai-theme-20130828.0, late-night-theme-0.0, jujube-theme-0.1, ir-black-theme-20130302.2355, gruvbox-theme-20131229.1458, gruber-darker-theme-0.6, grandshell-theme-20140118.1003, github-theme-0.0.3, gandalf-theme-0.1, flatland-theme-20131204.858, django-theme-20131022.202, deep-thought-theme-0.1.1, dakrone-theme-20131212.1159, colorsarenice-theme-20131128.1106, color-theme-wombat+-0.0.2, color-theme-wombat-0.0.1, color-theme-twilight-0.1, color-theme-tango-0.0.2, color-theme-solarized-20120301, color-theme-sanityinc-solarized-2.25, color-theme-railscasts-0.0.2, color-theme-monokai-0.0.5, color-theme-molokai-0.1, color-theme-ir-black-1.0.1, color-theme-heroku-1.0.0, color-theme-github-0.0.3, color-theme-eclipse-0.0.2, color-theme-dpaste-0.0.1, color-theme-dawn-night-1.0, color-theme-colorful-obsolescence-0.0.1, color-theme-cobalt-0.0.2, color-theme-20080305.34, clues-theme-20130908.801, busybee-theme-20130920.942, bubbleberry-theme-0.1.2, mblage-theme-20130715.621, anti-zenburn-theme-20140104.1542, ample-zen-theme-0.2)
 
 
 
 #+end_src
 
 * yasnippet
+
 cd ~/.emacs.d/src
 git clone --recursive https://github.com/capitaomorte/yasnippet
 touch snippets/.yas-make-groups
@@ -821,10 +937,228 @@ Things I tried which didn't work, which intuitively I think should work better:
 (put 'dired-find-alternate-file 'disabled nil)
 #+end_src
 
+* mu4e
+[[info:org#External links]]
+[[info:mu4e#Keybindings]]
+
+alsot tried notmuch, it had some glitches, and it's config
+has a list of folders which i'd rather not publish, so it's config is archived.
+
+#+begin_src emacs-lisp
+;;(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e")
+;;(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e")
+(require 'mu4e)
+
+;; (setq mu4e-headers-results-limit 2000)
+
+(setq
+;; common to gnus. default sendmail-query-once asks us, then sets this via customize.
+send-mail-function (quote sendmail-send-it)
+      ;; use the standard imap folders
+      mu4e-sent-folder   "/Sent"
+      mu4e-drafts-folder "/Drafts"
+      mu4e-trash-folder  "/Trash"
+      ;; reindex new mail this often in seconds
+      ;; show addresses instead of just names
+      mu4e-view-show-addresses t
+      mu4e-use-fancy-chars t
+      mu4e-confirm-quit nil
+      mu4e-headers-leave-behavior 'apply ;; dont ask, do whatever was marked
+      mu4e-headers-fields (delq (assoc :mailing-list mu4e-headers-fields) mu4e-headers-fields)
+      ;; default 500.
+      mu4e-headers-results-limit 1000
+      ;; tell exim to use from: as envelope from.
+      ;; exim's default is use outgoing_msg_localpart@hostname.
+      mail-specify-envelope-from t
+
+      ;; looking up the list of maildirs when doing jo from summary
+      ;; can take a few seconds if we have a ton of messages.
+      ;; Only take that time for the first lookup.
+      ;; if we add a new maildir, just restart mu4e for it to be in that list.
+      mu4e-cache-maildir-list t
+      ;; default is 8, way too small for my big monitors
+      mu4e-headers-visible-lines 50
+      )
+
+;; fucks up reading unread bookmark. when that is fixed, enable it
+;; (setq mu4e-update-interval 60)
+
+
+;; this file includes setting up my email addresses, which are not public,
+;; including
+;; mu4e-user-mail-address-list
+;; and a function
+;; inspired by mu4e info manual, search for mu4e-compose-pre-hook.
+(load "/p/c/mu4e.el")
+
+(defun my-decrypt ()
+  ;; use for decrypting in mu4e
+  (interactive)
+  (beginning-of-buffer)
+  (when (search-forward "-----BEGIN PGP MESSAGE-----" nil t)
+    (read-only-mode 0)
+    (let ((start (match-beginning 0))
+          (end (search-forward "-----END PGP MESSAGE-----" nil t)))
+      (shell-command-on-region start end "gpg2 -dq" nil t shell-command-default-error-buffer t)
+      )))
+(add-hook 'mu4e-view-mode-hook 'my-decrypt)
+
+(defun mu-set-from-name (regexes)
+  "If we find an address matching regex, then set that address as the to,
+and whatever was used"
+  (when mu4e-compose-parent-message
+    (let ((found nil))
+      (while (and regexes (not found))
+        (setq re (car regexes)
+              regexes (cdr regexes)
+              found (mu4e-message-contact-field-matches
+                     mu4e-compose-parent-message :to re)))
+      (when found (setq user-mail-address (cdr found)
+                        user-full-name (car found)))
+      found)))
+(defun mu-set-from (regexes)
+  "If we find an address matching regex, then set that address as the to,
+and Ian Kelling as the name"
+  (when mu4e-compose-parent-message
+    (let ((found nil))
+      (while (and regexes (not found))
+        (setq re (car regexes)
+              regexes (cdr regexes)
+              found (cdr (mu4e-message-contact-field-matches
+                          mu4e-compose-parent-message :to re))))
+      (when found (setq user-mail-address found
+                        user-full-name "Ian Kelling"))
+      found)))
+
+
+(defun my-mu4e-to-fsf ()
+  "inspired by mu4e info manual, search for mu4e-compose-pre-hook."
+  (cond
+   ((mu-set-from '("iank@fsf.org"
+                   "iank@gnu.org")))
+   ((setq user-mail-address "iank@fsf.org"
+          user-full-name "Ian Kelling"))))
+
+
+;; on first run   mkdir -p /nocow/user/.mufsf; mu index --maildir=/nocow/user/fsfmd
+(defun mu-exit-wait ()
+  (interactive)
+  ;; taken from the mu source
+    (let* ((buf (get-buffer mu4e~proc-name))
+         (proc (and (buffer-live-p buf) (get-buffer-process buf))))
+    (mu4e-quit)
+    ;; without sleep, we get database locked by another process error when hitting u
+    ;; if another mu was running.
+    (if proc (sleep-for 0 1000))))
+
+(defun fsf-mu4e ()
+  (interactive)
+  (unless (equal mu4e-maildir "/nocow/user/fsfmd") (mu-exit-wait))
+  (setq
+   ;; fsf monitor is smaller
+   mu4e-headers-visible-lines 15
+   mu4e-maildir "/nocow/user/fsfmd"
+   mu4e-refile-folder "/Spam"
+   mu4e-index-lazy-check nil
+   mu4e-get-mail-command "true"
+   user-mail-address "iank@fsf.org"
+   mail-signature "
+
+-- 
+Ian Kelling | Senior Systems Administrator, Free Software Foundation
+GPG Key: B125 F60B 7B28 7FF6 A2B7  DF8F 170A F0E2 9542 95DF
+https://fsf.org | https://gnu.org
+"
+
+   mu4e-user-mail-address-list '("iank@fsf.org"
+                                 "iank@gnu.org")
+   mu4e-maildir-shortcuts
+   '( ("/INBOX"     . ?i)
+      ("/sysadmin" . ?a)
+      ("/sec"  . ?x)
+      ("/rtcc"  . ?c)
+      ("/Drafts"     . ?d)
+      ("/Sent"     . ?s)
+      )
+   ) ;; end setq
+  (call-process "/a/exe/lnf" nil nil nil "-T" "/nocow/user/.mufsf" (concat (getenv "HOME") "/.mu"))
+  (add-hook 'mu4e-compose-pre-hook 'my-mu4e-to-fsf)
+  (remove-hook 'mu4e-compose-pre-hook 'my-mu4e-to)
+  (mu4e)) ;; end defun fsf-mu4e
+
+
+;; it's implemented in mu4e, but not in the actions list for
+;; some reason.
+(add-to-list 'mu4e-view-actions
+             '("browser view" . mu4e-action-view-in-browser) t)
+
+;; normally, you would add to this, but we want to
+;; modify unread messages. the first 4 are defined by default.
+(setq mu4e-bookmarks
+      `( ,(make-mu4e-bookmark
+           :name  "Unread messages"
+           ;; old less restrictive unread, for adapting in the future:
+           ;; flag:unread AND NOT flag:trashed AND NOT maildir:/Junk AND NOT maildir:/fwfw AND NOT maildir:/log
+           :query "flag:unread maildir:/INBOX"
+           :key ?u)
+         ,(make-mu4e-bookmark
+           :name "Today's messages"
+           :query "date:today..now"
+           :key ?t)
+         ,(make-mu4e-bookmark
+           :name "Last 7 days"
+           :query "date:7d..now"
+           :key ?w)
+         ,(make-mu4e-bookmark
+           :name "Messages with images"
+           :query "mime:image/*"
+           :key ?p))
+      )
+
+
+(defun mu4e-action-msgs-by-this-sender (msg)
+  "In header view, view messages by the sender of the message under point."
+  (let ((from (mu4e-message-field msg :from)))
+    (unless from
+      (mu4e-error "No from header for this message"))
+    ;; from is structured like: (("Anacron" . "root@x2.lan"))
+    (mu4e-headers-search (concat "f:" (cdar from)))))
+
+(add-to-list 'mu4e-headers-actions
+             '("from this sender" . mu4e-action-msgs-by-this-sender) t)
+(add-to-list 'mu4e-view-actions
+             '("from this sender" . mu4e-action-msgs-by-this-sender) t)
+#+end_src
+
+
+
 * disabled but saved for documentation purposes
-  :PROPERTIES:
-  :tangle:   no
-  :END:
+:PROPERTIES:
+:header-args: :tangle no
+:END:
+
+** ido keybinds
+*** C-j
+ido-find-file create file
+*** //]
+ido goto root
+*** C-k]
+ido kill buffer/file
+*** C-d]
+ido open dired buffer
+*** M-d]
+ido search within all subdirectories
+*** M-m]
+ido create subdirectory
+*** M-s]
+ido search recently used directories
+*** M-n/p]
+ido next/previous recently used directory
+*** C-s]
+**** TODO implement this keybind, normally ctrl-space
+ido use current pattern and start a new one
+
+
 ** indent settings for git's perl code
 don't have a way to set this automatically or a good place to put this
 #+begin_src emacs-lisp
@@ -899,42 +1233,13 @@ don't have a way to set this automatically or a good place to put this
 
 #+end_src
 
-** ace-jump
+** misc stuff
   It is an awesome mode for keyboard navigation.
-  However, using the mouse takes less thought and works as well,
-  especially with my foot mouse ;)
+  However, using the mouse takes less thought and works as well
 
   #+begin_src emacs-lisp
 
 
-
-
-    ;; this has a problem that it doesn't work with emacsclient, so I'm using a more standard method
-    ;; This has the benefit of working with less fuss otherwise, I think.
-    ;; no method works on a terminal
-    ;; makes C-i and tab be distinct. same deal is done for c-m
-    ;;(setq local-function-key-map (delete '(tab . [9]) local-function-key-map))
-    ;;  (define-key input-decode-map (kbd "C-i") [f15])
-    ;;  (define-key input-decode-map (kbd "<f15>") [?\C-i])
-    ;;  (define-key input-decode-map (kbd "<tab>") [?\C-i])
-    ;;  (global-set-key (kbd "<f15>") 'query-replace)
-
-
-                                            ; not using ace jump mode, but if mouse is ever not good,
-                                            ; here is config for it
-    (require 'ace-jump-mode)
-    (eval-after-load "ace-jump-mode"
-      '(ace-jump-mode-enable-mark-sync))
-    (define-key global-map (kbd "") 'ace-jump-mode)
-
-
-
-    ;; revert buffers automatically when underlying files are changed externally
-    ;; too dangerous, and thus disabled.
-    ;; do m-x auto-revert-mode to auto-rever a specific buffer
-    ;;(global-auto-revert-mode t)
-
-
     ;; whitespace-mode config. minimal for bad whitespace
                                             ;(setq whitespace-line-column 80) ; for style of lines-tail, but I have it disabled
     (setq whitespace-style '(face tabs empty trailing))
@@ -1060,55 +1365,6 @@ seems like 1 in 100 times, an invisible command to restore prompt didn't work
 
 
 
-** mu4e
-
-alsot tried notmuch, it had some glitches, and it's config
-has a list of folders which i'd rather not publish, so it's config is archived.
-
-#+begin_src emacs-lisp
-(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e")
-(require 'mu4e)
-(setq send-mail-function (quote sendmail-send-it) ;; common to gnus also
-      mu4e-sent-folder   "/Sent Items"
-      mu4e-drafts-folder "/Drafts"
-      mu4e-trash-folder  "/Trash"
-      mu4e-refile-folder "/Archive"
-      mu4e-get-mail-command "offlineimap"
-      mu4e-update-interval 60
-      mu4e-sent-messages-behavior 'delete
-      mu4e-use-fancy-chars t
-      mu4e-confirm-quit nil
-      mu4e-headers-leave-behavior 'apply ;; dont ask
-      mu4e-headers-fields (delq (assoc :mailing-list mu4e-headers-fields) mu4e-headers-fields)
-      ;; a bit faster than the default 500
-      mu4e-headers-results-limit 80)
-
-(define-key mu4e-headers-mode-map (kbd "<return>") 'mu4e-headers-view-message)
-
-(defun my-mu4e-to ()
-  "inspired by mu4e info manual"
-  (--reduce-from (if (mu4e-message-contact-field-matches
-                      mu4e-compose-parent-message :to (cadr it))
-                     (concat (car it) (cadr it))
-                   acc)
-                 '("Ian Kelling <ian@iankelling.org")
-                 ;;'(("Ian Kelling " "<alternate1@example.com>")
-                 ;;  ("Ian Kelling " "<alternate2@example.com>"))
-                   ))
-
-(add-hook 'mu4e-compose-pre-hook 'my-mu4e-to)
-
-(add-to-list 'mu4e-view-actions
-             '("ViewInBrowser" . mu4e-action-view-in-browser) t)
-(setq mu4e-maildir-shortcuts
-      '( ("/INBOX"     . ?i)
-         ("/bog"  . ?b)
-         ("/Drafts"     . ?d)))
-
-#+end_src
-
-
-
 
 ** org-mode auto-complete source
 
@@ -1144,64 +1400,15 @@ this looks nice, but it lags gnus just a bit
 
 #+end_src
 
-** readline complete fix, replaced with proper solution
+** misc
+#+begin_src emacs-lisp
 
-update: I need this function here, where INSIDE_EMACS is replaced with RLC_INSIDE_EMACS.
+;; this makes more ergonomic sense, since our eyes are mostly on the left,
+;; but after using it a while, it's too much cognitive dissonance that
+;; every other program has it on the right
+;;(set-scroll-bar-mode 'left)
 
-i had commented out a few lines here, but instead I am setting in my profile
-the environment variable I commented out here. Yes, that is not the best explanation, but I will probably delete this as
-old history anyways.
-#+begin_src emacs-lisp
 
-(defun comint-exec-1 (name buffer command switches)
-  (let ((process-environment
-        (nconc
-         ;; If using termcap, we specify `emacs' as the terminal type
-         ;; because that lets us specify a width.
-         ;; If using terminfo, we specify `dumb' because that is
-         ;; a defined terminal type.  `emacs' is not a defined terminal type
-         ;; and there is no way for us to define it here.
-         ;; Some programs that use terminfo get very confused
-         ;; if TERM is not a valid terminal type.
-         ;; ;; There is similar code in compile.el.
-         (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
-             (list "TERM=dumb" "TERMCAP="
-                   (format "COLUMNS=%d" (window-width)))
-           (list "TERM=emacs"
-                 (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width))))
-          ;; ian: commented this out
-         ;;(unless (getenv "EMACS")
-         ;;  (list "EMACS=t"))
-          (list (format "RLC_INSIDE_EMACS=%s,comint" emacs-version))
-         process-environment))
-       (default-directory
-         (if (file-accessible-directory-p default-directory)
-             default-directory
-           "/"))
-       proc decoding encoding changed)
-    (let ((exec-path (if (and command (file-name-directory command))
-                        ;; If the command has slashes, make sure we
-                        ;; first look relative to the current directory.
-                        (cons default-directory exec-path) exec-path)))
-      (setq proc (apply 'start-file-process name buffer command switches)))
-    ;; Some file name handler cannot start a process, fe ange-ftp.
-    (unless (processp proc) (error "No process started"))
-    (let ((coding-systems (process-coding-system proc)))
-      (setq decoding (car coding-systems)
-           encoding (cdr coding-systems)))
-    ;; Even if start-file-process left the coding system for encoding data
-    ;; sent from the process undecided, we had better use the same one
-    ;; as what we use for decoding.  But, we should suppress EOL
-    ;; conversion.
-    (if (and decoding (not encoding))
-       (setq encoding (coding-system-change-eol-conversion decoding 'unix)
-             changed t))
-    (if changed
-       (set-process-coding-system proc decoding encoding))
-    proc))
-#+end_src
-** misc
-#+begin_src emacs-lisp
 
 ; todo, is this require things necessary?
 ;    (require 'flyspell)
@@ -1218,10 +1425,6 @@ old history anyways.
   ;(global-set-key (kbd "<tab>")  'complete-symbol)
 
 
-  ; todo, see how mastering emacs defines this function
-  ;(global-set-key (kbd "M-j") 'ido-goto-symbol)
-
-
   ; todo, make my custom overlays have an underline if they are
   ;  overriding a paren matching overlay
   ; make right click set the mark
@@ -1361,6 +1564,21 @@ disabled, as I haven't used it in a long time. I think it was good for learning
 #+end_src
 
 
+** icomplete
+#+begin_src emacs-lisp
+;; without this, on partial completion return would exit the minibuffer, and i had to
+;; keep typing out letters do a full completion before pressing enter.
+;; super annoying. So I picked ctrl-j as a free key to put exit,
+;; but in practice, I would just use ctrl-g to quit. Anyways,
+;; ivy is doing all the minibuffer stuff, so removed this as it's
+;; unused, so it can't cause any problems in future
+(when (boundp 'icomplete-minibuffer-map)
+  (define-key icomplete-minibuffer-map (kbd "C-j") 'exit-minibuffer)
+  (define-key icomplete-minibuffer-map (kbd "<return>")
+    'minibuffer-force-complete-and-exit))
+
+
+#+end_src
 * elisp settings
 #+begin_src emacs-lisp
 ; when manually evaluating lisp, go into debugger on error
@@ -1377,50 +1595,10 @@ disabled, as I haven't used it in a long time. I think it was good for learning
 good info http://www.emacswiki.org/emacs/GnusTutorial
 good info http://www.emacs.uniyar.ac.ru/doc/em24h/emacs183.htm
 
-searching / accessing old mailing list messages:
-http://wiki.list.org/display/DOC/How+do+I+make+the+archives+searchable
-3 options suggested. nabble is very good, and you can even reply directly from their web interface with your own email
-address.
-google with site:example.com/archive works
-However, it has the downside of relying on a 3rd party running unreleased software.
-mail-archive.com and gmane.org search do not work.
-
-Some lists mirror to a newsgroup via gmane, and then mirror the newsgroup via a google group, which has good search
-ability, and you can post via the newsgroup.
-
-Downsides of nabble/google. Doesn't integrate with normal email programs, and lock in. They store and show you what you
-have and haven't read, what messages you've sent, etc. migrating that data to a normal mail program is undocumented and
- unsupported.
-
-mailmans normal public archives are a bit obfuscated, but there is also a "private" archive, available to subscribers,
-which is not obfuscated, and can be easily imported to your local email program.
-you have to sub and log in to the web interfact to access it, and then the url is unpublished, but follows a format,
-which is documented in a few places around the web like
-https://mail.python.org/pipermail/mailman-users/2005-September/046757.html
-its form is:
-https://lists.fedorahosted.org/mailman/private/hyperkitty-devel.mbox/hyperkitty-devel.mbox
-http://www.example.com/mailman/private/<listname>.mbox/<listname>.mbox
-if you copy the url after logging in, and pass it to this function, it will print the transformed url
-lurl() { local x="${1#*/options/}"; x="${x%%/*}.mbox"; echo "${1%/mailman/*}/mailman/private/$x/$x"; }
-
-Then you can download that url. Actually downloading the url is something firefox doesn't make the easiest out of the box.
- Here are some options:
-- paste in the url bar, the save the page
-as a file after it loads.
-- use downthemall extension or similar and paste the url in it.
-- put it in an html page as
-a link (or a small javascript program which will display input as a link), then right click and save as.
-wget won't work because you need to have (i assume) the authorization cookie mailman gives your browser
-
-people have written various tools to de-obfuscate the normal public archives and sometimes import them to a mail
-program. It seems they were not aware of the private archive. However, these tools are probably still useful to automate
-things. None of them has a lot of usage, so I decided it was not worth the risk of hitting bugs vs doing a few extra clicks.
-
-this was the most interesting one I found within a few minutes of googling.
-https://github.com/wcdolphin/mailman-downloader
-
-Once you have an mbox file, there are rather straightforward ways to get it into any mail program, but I will cover
-gnus, which I use and is a bit tricky.
+
+After downloading mailing list archives, once you have an mbox file,
+there are rather straightforward ways to get it into any mail program,
+but I will cover gnus, which I use and is a bit tricky.
 
 gnus has a native search (limited, too slow for body text searches), and external search engine integration.
 gnus manual recommends converting to maildir for searching local mail, but importing lots of maildir messages to gnus
@@ -1620,7 +1798,6 @@ make all
 
 
 
-(add-to-list 'load-path "~/.emacs.d/src/ghci-completion")
 ;; from the package readme for ghci-completion
 (require 'ghci-completion)
 (add-hook 'inferior-haskell-mode-hook 'turn-on-ghci-completion)
@@ -1632,6 +1809,10 @@ make all
      (define-key haskell-mode-map (kbd "C-a") 'nil)
      (define-key haskell-mode-map (kbd "C-j") 'nil)))
 
+(eval-after-load "python-mode"
+  '(progn
+(define-key python-mode-map (kbd "C-j") nil)))
+
 (defun pretty-lambdas-haskell ()
   (font-lock-add-keywords
    nil `((,(concat "(?\\(" (regexp-quote "\\") "\\)")
@@ -1899,7 +2080,6 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
 * mediawiki
 #+begin_src emacs-lisp
 
-(add-to-list 'load-path "~/.emacs.d/src/mediawiki-el")
 (eval-after-load "mediawiki"
   '(progn
     (remove-hook 'outline-minor-mode-hook 'mediawiki-outline-magic-keys)
@@ -1914,13 +2094,48 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
 #+end_src
 * modes with little configuration needed
   #+begin_src emacs-lisp
+;; busted:
+  ;;(require 'csv-mode)
+;;(add-to-list 'auto-mode-alist '("\\.[Cc][Ss][Vv]\\'" . csv-mode))
+
+(require 'outshine)
+(add-hook 'outline-minor-mode-hook 'outshine-hook-function)
+(add-hook 'emacs-lisp-mode-hook 'outline-minor-mode)
+(add-hook 'sh-mode-hook 'outline-minor-mode)
+
+
+
+(setq org-caldav-url "https://cal.iankelling.org"
+org-caldav-calendar-id "ian"
+org-caldav-inbox "/p/cal.org")
+;;(org-caldav-sync)
+
+
+;;(require 'dtrt-indent)
+;;(setq dtrt-indent-mode t)
+
+(setq css-indent-offset 2)
 
 (load-file "/a/h/iank-mod.el")
 
+;; from when i was running my own patches
+;;(add-to-list 'load-path "/a/opt/ws-butler")
+
 (require 'ws-butler)
+;; todo: I think this is broken, it keeps collapsing the last line
+;; for empty messages.
+
+;; the main problem is when it deletes the blank line at the end
+;; of a message with an empty body. but I might also
+;; be pasting whitespace significant things in here, so
+;; just don't do anything.
+;; todo: propose this upstream
+(add-to-list 'ws-butler-global-exempt-modes 'message-mode)
+
 (ws-butler-global-mode)
 
 
+
 (require 'nginx-mode)
 ;;The mode should automatically activate for files called nginx.conf and files under /etc/nginx - if not, you can add something like this to your init file:
 ;;(add-to-list 'auto-mode-alist '("/etc/nginx/sites-available/.*" . nginx-mode))
@@ -1980,35 +2195,7 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
 (require 'magit)
 
 
-;; http://ergoemacs.org/emacs/emacs_CSS_colors.html
-;; there's also rainbow mode, which seems to only work for specific colors? it didn't work at all for me in a css file.
-;; todo, do config group on it, and try out one of those colors.
-(defun xah-syntax-color-hsl ()
-  "Syntax color hex color spec such as 「hsl(0,90%,41%)」 in current buffer."
-  (interactive)
-  (font-lock-add-keywords
-   nil
-   '(("hsl( *\\([0-9]\\{1,3\\}\\) *, *\\([0-9]\\{1,3\\}\\)% *, *\\([0-9]\\{1,3\\}\\)% *)"
-      (0 (put-text-property
-          (+ (match-beginning 0) 3)
-          (match-end 0)
-          'face (list :background
-                      (concat "#" (mapconcat 'identity
-                                             (mapcar
-                                              (lambda (x) (format "%02x" (round (* x 255))))
-                                              (color-hsl-to-rgb
-                                               (/ (string-to-number (match-string-no-properties 1)) 360.0)
-                                               (/ (string-to-number (match-string-no-properties 2)) 100.0)
-                                               (/ (string-to-number (match-string-no-properties 3)) 100.0)
-                                               ) )
-                                             "" )) ;  "#00aa00"
-                      ))))) )
-  (font-lock-fontify-buffer)
-  )
-
-(add-hook 'css-mode-hook 'xah-syntax-color-hsl)
-(add-hook 'php-mode-hook 'xah-syntax-color-hsl)
-(add-hook 'html-mode-hook 'xah-syntax-color-hsl)
+;; colorize hex colors: use rainbow mode
 
 
 ;; message mode prompted me on first message.
@@ -2017,7 +2204,6 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
 ;; here we use the standard sendmail interface, which I use postfix for
 (setq send-mail-function (quote sendmail-send-it))
 
-(add-to-list 'load-path "~/.emacs.d/src/spray")
 (require 'spray)
 (global-set-key (kbd "C-M-w") 'spray-mode)
 ;; remember, h/l = move. f/s = faster/slower, space = pause, all others quit
@@ -2146,7 +2332,11 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
 * misc general settings
 
 #+begin_src emacs-lisp
+;; https://www.emacswiki.org/emacs/FillParagraph
+;; make list items start paragraphs.
+(setq paragraph-start "\f\\|[ \t]*$\\|[ \t]*[-+*] ")
 
+(setq sh-basic-offset 2)
 (setq vc-follow-symlinks t)
 
 ;; give us a shell to start instead of scratch
@@ -2155,9 +2345,6 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
 ;; disable this nasty function, as I always use a gui
 (defun suspend-frame() (interactive))
 
-;; to reopen just ido-switch-buffer (c-l), *scratch*
-;;  (kill-buffer "*scratch*")
-
 ;; Seed the random-number generator
 (random t)
 
@@ -2178,9 +2365,8 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
 ;; this starter kit setting is probably good
 (if window-system (setq frame-title-format '(buffer-file-name "%f" ("%b"))))
 
-(set-terminal-coding-system 'utf-8)
-(set-keyboard-coding-system 'utf-8)
-(prefer-coding-system 'utf-8)
+
+;;(prefer-coding-system 'utf-8-unix)
 
 ;; remove ugly 3d box feature
 (set-face-attribute 'mode-line nil :box nil)
@@ -2201,8 +2387,11 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
       mark-ring-max 160
       sort-fold-case t  ; case insensitive line sorting
       global-mark-ring-max 1000
-      ;; the bell seems to lag the ui
+      ;; the visible bell seems to lag the ui
       ;;visible-bell t
+      ;; turn off audible bell
+      ;; https://www.emacswiki.org/emacs/AlarmBell
+      ring-bell-function 'ignore
       case-replace nil
       revert-without-query '(".*")
       ;; don't pause display code on input.
@@ -2224,7 +2413,6 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead
 (blink-cursor-mode '(-4))
 (menu-bar-mode -1)
 (tool-bar-mode -1)
-(set-scroll-bar-mode 'left)
 
 
 ;; enable various commands
@@ -2290,7 +2478,12 @@ unchecked some stuff so that it inherits from default.
 #+begin_src emacs-lisp
 
 
-
+(defun fill-buffer ()
+  (interactive)
+  (save-mark-and-excursion
+    (beginning-of-buffer)
+    (while (= (forward-line) 0)
+      (fill-paragraph))))
 
 
 (defun next-backup-dir ()
@@ -2368,8 +2561,8 @@ Go to the next directory based on where the cursor is."
 (defun sudo-edit (&optional arg)
   (interactive "P")
   (if (or arg (not buffer-file-name))
-      (find-file (concat "/sudo:root@localhost:" (ido-read-file-name "File: ")))
-    (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))
+      (find-file (concat "/sudo::" (ido-read-file-name "File: ")))
+    (find-alternate-file (concat "/sudo::" buffer-file-name))))
 
 
 
@@ -2381,6 +2574,8 @@ Go to the next directory based on where the cursor is."
 
 * mode line
 #+begin_src emacs-lisp
+;; make window title be the buffer name
+(setq frame-title-format "%b")
 
   ; -----------------------------
   ; fixing up the mode line
@@ -2448,12 +2643,12 @@ Go to the next directory based on where the cursor is."
       (force-mode-line-update)))
 
 
-(add-hook 'after-change-major-mode-hook (lambda ()
-
-(setq mode-line-mule-info nil
-mode-line-position nil
-mode-line-modes nil))) ; todo, make only flymake status show up
+(defun my-after-change-major-mode-hook ()
+  (setq mode-line-mule-info nil
+        minor-mode-alist nil
+        mode-line-position nil)) ; todo, make only flymake status show up
 
+(add-hook 'after-change-major-mode-hook 'my-after-change-major-mode-hook)
 #+end_src
 
 * mouse related
@@ -2608,7 +2803,6 @@ disabled until fixed
 
   #+end_src
 ** mouse 1 drag func
-  :PROPERTIES:
 
 disabled as it breaks in newer emacs versions with this error, when
 clicking on info links
@@ -2964,10 +3158,10 @@ clicking on info links
 ;; todo, generally fix org mode keys
 ;; todo, org-mark-element, unbdind from M-h, bind to mark defun key
 
-(org-babel-do-load-languages
- 'org-babel-load-languages
- '((emacs-lisp . t)
-   (sh . t)))
+;(org-babel-do-load-languages
+; 'org-babel-load-languages
+; '((emacs-lisp . t)
+;   (sh . t)))
 
 ;; make shell work like interactive bash shell
 (setq org-babel-default-header-args:sh
@@ -3027,7 +3221,7 @@ clicking on info links
 
 (defun my-org-confirm-babel-evaluate (lang body)
   (not (or (string= (buffer-file-name) "/a/t.org")
-           (string= (buffer-file-name) "/home/ian/.emacs.d/my-init.org")
+           (string= (buffer-file-name) "/home/iank/.emacs.d/my-init.org")
            )))
 (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
 
@@ -3061,13 +3255,16 @@ clicking on info links
 (add-hook 'fundamental-mode-hook 'variable-pitch-on)
 (add-hook 'org-mode-hook 'variable-pitch-on)
 (add-hook 'text-mode-hook 'variable-pitch-on)
+(defun variable-pitch-off ()
+  (variable-pitch-mode 0))
+(add-hook 'yaml-mode-hook 'variable-pitch-off)
+
 
 (set-face-attribute 'org-table nil :family (face-attribute 'fixed-pitch :family))
 (set-face-attribute 'org-code nil :family (face-attribute 'fixed-pitch :family))
 (set-face-attribute 'org-formula nil :family (face-attribute 'fixed-pitch :family))
 (set-face-attribute 'org-link nil :family (face-attribute 'fixed-pitch :family))
 (set-face-attribute 'org-block nil :family (face-attribute 'fixed-pitch :family))
-(set-face-attribute 'org-block-background nil :family (face-attribute 'fixed-pitch :family))
 (set-face-attribute 'org-date nil :family (face-attribute 'fixed-pitch :family))
 
 
@@ -3301,9 +3498,6 @@ downgraded to marmalade version and everything is working fine.
 
 ;; Except in HTML
 (sp-local-pair 'html-mode "\"" nil :unless '(:rem sp-point-after-word-p))
-;; CoffeeScript PyStrings
-(push 'coffee-mode sp-autoescape-string-quote-if-empty)
-
 
 
   #+end_src
@@ -3410,7 +3604,6 @@ these colors were better for dark theme
 
 #+begin_src emacs-lisp
 
-(add-to-list 'load-path "~/.emacs.d/src/visible-mark")
 
     ;; since it is not easy to change the mark overlay priority, I change this one.
     (setq show-paren-priority 999)
@@ -3451,6 +3644,43 @@ these colors were better for dark theme
 : t
 
 
+* zrc
+#+begin_src emacs-lisp
+(require 'znc)
+(setq erc-fill-prefix "")
+(defun chirp()
+  (interactive)
+  (setq vol 50)
+  (when (string= (system-name) "tp") (setq vol 40))
+  (start-process-shell-command "ignoreme" nil (format "mpv --no-terminal --vo=null --volume=%d /a/bin/data/bird.mp3" vol)))
+;; from https://www.emacswiki.org/emacs/ErcSound
+
+(defun erc-my-privmsg-sound (proc parsed)
+  (let* ((tgt (car (erc-response.command-args parsed)))
+         (privp (erc-current-nick-p tgt)))
+    (and
+     privp (chirp)
+                                        ;; We must return nil. See help for `erc-server-PRIVMSG-functions'
+     nil)))
+
+(add-hook 'erc-server-PRIVMSG-functions
+          'erc-my-privmsg-sound)
+
+(defun erc-sound-if-not-server (match-type nickuserhost msg)
+  (unless (string-match "Server:[0-9]+" nickuserhost)
+    (chirp)))
+(add-hook 'erc-text-matched-hook 'erc-sound-if-not-server)
+
+(erc-track-mode 1)
+ (setq
+ ;; consider invisible frames to be unseen. seems like an obvious default
+ erc-track-visibility 'visible
+ ;; switch to buffer where i've been mentioned, etc instead of oldest
+  erc-track-switch-direction 'importance)
+
+#+end_src
+
+
 * key binds. keep at end of file
 this should come at the end because it depends on key maps being
 created in earlier sections.
@@ -3562,6 +3792,8 @@ commands to change: select other window: C-x o.
 #+end_src
 
 ** named commands
+*** gdb
+gdb-many-windows
 *** tramp sudo
 /ssh:host|sudo:host:
 when in the same session, you can then do:
@@ -3569,50 +3801,14 @@ when in the same session, you can then do:
 
 *** org insert table row
 [org-shiftmetadown/up]
-*** toggle line continuation / truncation / wrap                      :drill:
-SCHEDULED: <2014-04-07 Mon>
-:PROPERTIES:
-:ID:       5f3f567a-0926-4d92-81f3-4e4cd6070af2
-:DRILL_LAST_INTERVAL: 28.6736
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 5
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.4
-:DRILL_EASE: 2.666
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:37>
-:END:
-    [toggle-truncate-lines]
-*** auto-save on/off                                                  :drill:
-SCHEDULED: <2014-05-13 Tue>
-:PROPERTIES:
-:ID:       462f859d-1a06-46a3-ac72-6ffe5b4417c9
-:DRILL_LAST_INTERVAL: 71.5839
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.75
-:DRILL_EASE: 4.85
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:11>
-:END:
-    [my-as-on/my-as-off]
+*** toggle line continuation / truncation / wrap
+    toggle-truncate-lines
+*** auto-save on/off
+    my-as-on/my-as-off
 *** toggle menu bar
-[menu-bar-mode]
-*** show abbreviations  :drill:
-SCHEDULED: <2014-03-24 Mon>
-:PROPERTIES:
-:ID:       479a2ced-b952-4088-a6e3-862cd37693a9
-:DRILL_LAST_INTERVAL: 32.7466
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.0
-:DRILL_EASE: 3.204
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 18:03>
-:END:
-[list-abbrevs]
+menu-bar-mode
+*** show abbreviations
+list-abbrevs
 
 *** rename-file-and-buffer
 *** ediff-buffers
@@ -3621,6 +3817,7 @@ automatically balance a paragraph with newlines
 *** executable-make-buffer-file-executable-if-script-p
 make a script executable
 *** (setq lazy-highlight-cleanup nil)
+keep search highlight on after search is done
 *** auto-revert-tail-mode
 tail a file
 *** trash-file-and-buffer
@@ -3648,37 +3845,10 @@ format xml in nxml-mode
 toggle word wrap.
 ** compound commands
 *** C-xc
-:PROPERTIES:
-:ID:       d0802daa-9281-4a9f-ab4a-47d9f7ef7cfd
-:END:
-exit
-*** [C-x x]                                                           :drill:
-SCHEDULED: <2014-03-24 Mon>
-:PROPERTIES:
-:ID:       2f7d1353-3c20-4e00-95ea-1f84c4d87fc1
-:DRILL_LAST_INTERVAL: 32.7466
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.0
-:DRILL_EASE: 3.204
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 18:03>
-:END:
+exit0
+*** C-x s
 save file
-*** [C-x e]                                                           :drill:
-SCHEDULED: <2014-03-27 Thu>
-:PROPERTIES:
-:ID:       b802eeb8-ddcd-4778-844a-b6e737b54d7d
-:DRILL_LAST_INTERVAL: 50.6823
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 5.0
-:DRILL_EASE: 5.815
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:41>
-:END:
+*** C-x e
 eval last sexp
 *** C-x u
 [undo-tree-visualize]
@@ -3686,20 +3856,8 @@ eval last sexp
 [undo-tree save/restore state via register]
 *** C-c -
 [org insert table horizontal line or create list]
-*** [C-x tab]                                                         :drill:
-SCHEDULED: <2014-03-24 Mon>
-:PROPERTIES:
-:ID:       ceb701d7-3d44-4781-ae23-7309ca887a01
-:DRILL_LAST_INTERVAL: 32.7466
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.0
-:DRILL_EASE: 3.204
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:50>
-:END:
-dumb indent
+*** C-x tab
+indent/dedent region
 
 [shift-left and shift-right are default for indenting by tab stop,
 and they are only defined as lambdas so I copy them here
@@ -3719,7 +3877,6 @@ to use with up and down.
                (next (indent--next-tab-stop current 'prev)))
           (indent-rigidly beg end (- next current))))))
 #+end_src
-]
 *** C-x *
 [calc-dispatch]
 *** C-x =
@@ -3731,27 +3888,30 @@ to use with up and down.
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-x C-b") 'ibuffer)
 #+end_src
+
+*** C-x r c
+rectangular clear, replace area with whitespace
 ** gnus
 searching overview.
 3 types:
 ingroup searching
 nnir searching with notmuch, specific group (not sure if it can do multiple)
 search all groups with mairix
-*** [a]
+*** a]
 compose new message
-*** [C-c C-c]
+*** C-c C-c]
 send message
-*** [s]
+*** s]
 save newsrc file, alterations to groups.
-*** [g]
+*** g]
 gnus refresh / get new
-*** [m]
+*** m]
 gnus new message
-*** [F]
+*** F]
 gnus quoted reply all
-*** [e]
+*** e]
 gnus draft edit message
-*** [delete]
+*** delete]
 gnus delete draft
 #+begin_src emacs-lisp
 (add-hook 'gnus-startup-hook
@@ -3759,7 +3919,7 @@ gnus delete draft
             (define-key gnus-summary-mode-map (kbd "<delete>") 'gnus-summary-delete-article)))
 #+end_src
 
-*** [b]
+*** b]
 mairix search
 #+begin_src emacs-lisp
 (add-hook 'gnus-startup-hook
@@ -3767,13 +3927,13 @@ mairix search
             (define-key gnus-group-mode-map "b" 'nnmairix-search)
             (define-key gnus-summary-mode-map "b" 'nnmairix-search)))
 #+end_src
-*** [B m]
+*** B m]
 move message, or messages in region
-*** [#]
+*** #]
 mark article, move with B m
-*** [B delete]
+*** B delete]
 gnus delete draft
-*** [/ plus x a / b]
+*** / plus x a / b]
 search current group (or see info manual for more groups),
 using the gnus native search (its slow, do a notmuch or mairix search instead)
 x= extra (ie. to)
@@ -3782,735 +3942,102 @@ a = author
 / = subject
 b = body
 see C-h m for a full list
-*** [ G G ]
+***  G G ]
 do a nnir notmuch search, for the group on the current line
-*** [ A T ]
+***  A T ]
 jump to thread from nnir group
 
-*** [marks]
+*** marks]
 ! = saved for later
 E = expired
 M-& apply process mark to a non-process mark command
-*** [S D e]
+*** S D e]
 edit as new
+*** T k / C-M-k
+maybe rebind this to a shorter keybind, like del
+gnus-summary-kill-thread
 ** message mode
-*** [C-ck]
+*** C-ck]
 discard message
 ** notmuch
-*** [space]
+*** space]
 notmuch advance to next message/thread
 
 ** readline / bash / .inputrc
-*** [M-0-9]
-SCHEDULED: <2014-05-13 Tue>
-:PROPERTIES:
-:ID:       dac68f2e-37c2-448e-861d-0554e51f1414
-:DRILL_LAST_INTERVAL: 71.5839
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.75
-:DRILL_EASE: 4.85
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-:END:
-bash digit-argument
-
-removed drill from all these because I'm using emacs for shell now
-*** [C-2]
-SCHEDULED: <2014-03-15 Sat>
-:PROPERTIES:
-:ID:       d2e87812-6ab7-432f-ad7c-4281c0e3b86b
-:DRILL_LAST_INTERVAL: 12.979
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.333
-:DRILL_EASE: 2.626
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:00>
-:END:
-terminal X paste
-*** [C-3]
-SCHEDULED: <2014-03-15 Sat>
-:PROPERTIES:
-:ID:       3b156730-eb92-4149-b4ce-f93a9098d2b4
-:DRILL_LAST_INTERVAL: 12.979
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.333
-:DRILL_EASE: 2.626
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:00>
-:END:
-terminal open file manager
-*** [C-q]
-SCHEDULED: <2014-03-12 Wed>
-:PROPERTIES:
-:ID:       ed6a19de-d000-4469-9dd9-7b9e35f6c751
-:DRILL_LAST_INTERVAL: 2.8975
-:DRILL_REPEATS_SINCE_FAIL: 2
-:DRILL_TOTAL_REPEATS: 10
-:DRILL_FAILURE_COUNT: 12
-:DRILL_AVERAGE_QUALITY: 2.692
-:DRILL_EASE: 2.311
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:33>
-:END:
-bash exchange-point-and-mark
-
-*** [C-M-q]
-SCHEDULED: <2014-03-14 Fri>
-:PROPERTIES:
-:ID:       9827eb7e-532e-41fb-8d91-8c95c23553f5
-:DRILL_LAST_INTERVAL: 11.6739
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.333
-:DRILL_EASE: 2.626
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:09>
-:END:
-quoted insert
-*** [C-w]
-SCHEDULED: <2014-04-07 Mon>
-:PROPERTIES:
-:ID:       58fea89a-def9-4aac-95d4-fdd63fde8097
-:DRILL_LAST_INTERVAL: 28.6736
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 5
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.4
-:DRILL_EASE: 2.666
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:36>
-:END:
-    bash kill-region
-*** [C-e]
-SCHEDULED: <2014-03-27 Thu>
-:PROPERTIES:
-:ID:       3ee7662f-3ac7-46ff-afe7-73244656d48b
-:DRILL_LAST_INTERVAL: 50.6823
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 5.0
-:DRILL_EASE: 5.815
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:40>
-:END:
-    bash yank-last-arg
-*** C-r
-:PROPERTIES:
-:ID:       579a9008-0758-4ba9-a52f-175f264fe96a
-:END:
-    bash history-search-backward
-*** [C-t]
-SCHEDULED: <2014-04-04 Fri>
-:PROPERTIES:
-:ID:       25e737fe-52c4-452b-ab93-037575375579
-:DRILL_LAST_INTERVAL: 26.2331
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 5
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.2
-:DRILL_EASE: 2.554
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:36>
-:END:
-    shell-expand-line, expand like bash does u hit enter
-*** [C-a]
-SCHEDULED: <2014-04-06 Sun>
-:PROPERTIES:
-:ID:       384b3337-3cb0-4b3b-8a1a-8ae299ae212b
-:DRILL_LAST_INTERVAL: 27.9921
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 5
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.6
-:DRILL_EASE: 2.802
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:37>
-:END:
-    bash comment-line
-*** [C-s]
-SCHEDULED: <2014-03-10 Mon>
-:PROPERTIES:
-:ID:       4b5c71f9-6035-4b92-bcad-e400e5e25d66
-:DRILL_LAST_INTERVAL: 8.225
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 7
-:DRILL_FAILURE_COUNT: 4
-:DRILL_AVERAGE_QUALITY: 2.879
-:DRILL_EASE: 2.399
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 20:57>
-:END:
-    bash yank-nth-arg
-    yank $1 of last argument, or nth if prefixed with a digit argument
-*** [C-d]
-SCHEDULED: <2014-03-12 Wed>
-:PROPERTIES:
-:ID:       f5da97c1-6e3c-44dd-a2f1-7dacd7f523da
-:DRILL_LAST_INTERVAL: 9.8132
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 7
-:DRILL_FAILURE_COUNT: 3
-:DRILL_AVERAGE_QUALITY: 3.21
-:DRILL_EASE: 2.559
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:04>
-:END:
-   bash undo
-*** [C-f]
-SCHEDULED: <2014-05-13 Tue>
-:PROPERTIES:
-:ID:       0f1def18-0d94-45e7-b258-f621e67cefd7
-:DRILL_LAST_INTERVAL: 71.5839
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.75
-:DRILL_EASE: 4.85
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:11>
-:END:
-bash menu-complete
-*** [C-g]
-SCHEDULED: <2014-03-10 Mon>
-:PROPERTIES:
-:ID:       263e9479-de1d-4e78-8600-5a0f3a8e2dd9
-:DRILL_LAST_INTERVAL: 8.0608
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 8
-:DRILL_FAILURE_COUNT: 5
-:DRILL_AVERAGE_QUALITY: 2.966
-:DRILL_EASE: 2.439
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:04>
-:END:
-   bash edit-and-execute-command
-*** C-z
-*** C-x
-    emacs hard to rebind
-    looks like it actually wouldn't be that hard.
-    possibly take the output from bind -p, make all those keys undefined.
-*** C-c
-    quit/cancel
-*** C-v
-    yank, aka paste
-*** C-M-v
-    yank-pop
-*** [C-b]
-SCHEDULED: <2014-03-14 Fri>
-:PROPERTIES:
-:ID:       1a688c40-4bba-4053-a28b-0e1e8d3f4985
-:DRILL_LAST_INTERVAL: 4.9208
-:DRILL_REPEATS_SINCE_FAIL: 2
-:DRILL_TOTAL_REPEATS: 8
-:DRILL_FAILURE_COUNT: 4
-:DRILL_AVERAGE_QUALITY: 3.066
-:DRILL_EASE: 2.487
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:33>
-:END:
-   bash menu-complete-backward
-*** tab
-completion
-*** [C-tab]
-SCHEDULED: <2014-03-14 Fri>
-:PROPERTIES:
-:ID:       75d57537-8a32-4a18-982e-6d6f756a9ba6
-:DRILL_LAST_INTERVAL: 12.2744
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 2
-:DRILL_AVERAGE_QUALITY: 3.667
-:DRILL_EASE: 2.855
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:09>
-:END:
-terminal find
-*** [C-left/right]
-SCHEDULED: <2014-03-27 Thu>
-:PROPERTIES:
-:ID:       5587c07b-c003-470f-bef4-fa55f00524ff
-:DRILL_LAST_INTERVAL: 50.6823
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 5.0
-:DRILL_EASE: 5.815
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:41>
-:END:
-   forward/backward-word
-
-*** [C-u]
-SCHEDULED: <2014-03-19 Wed>
-:PROPERTIES:
-:ID:       b5342b6b-f14f-4a6b-99d8-110fdef243f2
-:DRILL_LAST_INTERVAL: 24.3844
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 5
-:DRILL_FAILURE_COUNT: 2
-:DRILL_AVERAGE_QUALITY: 3.0
-:DRILL_EASE: 2.456
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-02-23 Sun 01:51>
-:END:
-   bash backward-kill-word
-*** [C-i]
-SCHEDULED: <2014-03-14 Fri>
-:PROPERTIES:
-:ID:       6e306a04-8f21-4142-8c00-8a87a3544d6e
-:DRILL_LAST_INTERVAL: 11.6739
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.333
-:DRILL_EASE: 2.626
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 20:58>
-:END:
-terminal find up
-[ terminal crap, duplicate of tab ]
-*** [C-o]
-SCHEDULED: <2014-03-15 Sat>
-:PROPERTIES:
-:ID:       40b6d9ce-2427-4905-b444-d6d90c5a4da4
-:DRILL_LAST_INTERVAL: 23.5247
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.5
-:DRILL_EASE: 2.73
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:25>
-:END:
-   bash operate-and-get-next, submit and bring up next item in history
-*** [C-p]
-SCHEDULED: <2014-03-11 Tue>
-:PROPERTIES:
-:ID:       4956027e-c5da-48de-8925-6f6b6dd98cec
-:DRILL_LAST_INTERVAL: 1.575
-:DRILL_REPEATS_SINCE_FAIL: 1
-:DRILL_TOTAL_REPEATS: 9
-:DRILL_FAILURE_COUNT: 8
-:DRILL_AVERAGE_QUALITY: 2.597
-:DRILL_EASE: 2.265
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:38>
-:END:
-bash dabbrev-expand,
-    complete historical command names
-*** C-h
-    terminal incompatible junk
-*** [C-k]
-SCHEDULED: <2014-05-09 Fri>
-:PROPERTIES:
-:ID:       f91ff161-8d8c-4f47-beb5-09f86bf774d5
-:DRILL_LAST_INTERVAL: 67.6174
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 4.75
-:DRILL_EASE: 4.85
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-:END:
-   bash kill-line, to end of line
-*** [C-l]
-SCHEDULED: <2014-05-13 Tue>
-:PROPERTIES:
-:ID:       4798acc1-4fc8-406e-bc95-8131cfa255a5
-:DRILL_LAST_INTERVAL: 71.5839
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.75
-:DRILL_EASE: 4.85
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:12>
-:END:
-   bash clear screen
-*** [C-m]
-SCHEDULED: <2014-03-14 Fri>
-:PROPERTIES:
-:ID:       119a0a90-9253-4131-b0c8-5aa7d8cf2259
-:DRILL_LAST_INTERVAL: 11.6739
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.333
-:DRILL_EASE: 2.626
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 20:58>
-:END:
+*** C-m
 [--------]
 #+begin_src emacs-lisp
 (add-hook 'comint-mode-hook
           (lambda ()
             (define-key comint-mode-map "\C-m" nil)))
-
 #+end_src
-*** [C-space]
-SCHEDULED: <2014-03-12 Wed>
-:PROPERTIES:
-:ID:       803e2480-4e11-41d0-a261-4f5930a7f9a9
-:DRILL_LAST_INTERVAL: 10.0687
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 6
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 2.875
-:DRILL_EASE: 2.397
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:06>
-:END:
-bash set mark
-*** [C-delete]
-SCHEDULED: <2014-03-15 Sat>
-:PROPERTIES:
-:ID:       3d0c188b-3cf0-4f0a-83c8-78f6e4040ee5
-:DRILL_LAST_INTERVAL: 24.4352
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.75
-:DRILL_EASE: 2.929
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:44>
-:END:
-   bash delete word
+terminal crap, duplicate of enter
+
 ** isearch
-*** [C-w]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-:PROPERTIES:
-:ID:       f0e2b6e2-809b-40c2-8d72-0f7e35eda9b3
-:DRILL_LAST_INTERVAL: 50.6823
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 5.0
-:DRILL_EASE: 5.815
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:40>
-:END:
+*** C-w
 paste word/char under cursor into isearch
-*** [M-n/p]                                                           :drill:
-SCHEDULED: <2014-03-27 Thu>
-:PROPERTIES:
-:ID:       b3692e47-458e-41a0-b2be-c5f61b4eadbd
-:DRILL_LAST_INTERVAL: 50.6823
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 5.0
-:DRILL_EASE: 5.815
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:41>
-:END:
+*** M-n/p
 next/previous isearch history
-*** [C-o]                                                             :drill:
-SCHEDULED: <2014-03-11 Tue>
-:PROPERTIES:
-:ID:       8e36b562-7e0c-45e6-a41b-3cd96c134b33
-:DRILL_LAST_INTERVAL: 19.9622
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.5
-:DRILL_EASE: 2.73
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:30>
-:END:
+*** C-o
 isearch-occur
     Activate occur easily inside isearch
-[
     from starter-kit
 #+begin_src emacs-lisp
-  (define-key isearch-mode-map (kbd "C-o")
-    (lambda () (interactive)
-      (let ((case-fold-search isearch-case-fold-search))
-        (occur (if isearch-regexp
-                   isearch-string
-                 (regexp-quote isearch-string))))))
+(define-key isearch-mode-map (kbd "C-o")
+  (lambda () (interactive)
+    (let ((case-fold-search isearch-case-fold-search))
+      (occur (if isearch-regexp
+                 isearch-string
+               (regexp-quote isearch-string))))))
 #+end_src
-]
-*** [m-r]
+*** m-r
 #+begin_src emacs-lisp
-  (defun my-isearch-toggle-regexp ()
-    (interactive)
-    (isearch-toggle-regexp)
-    (cond (isearch-regexp
-           (global-set-key (kbd "C-r") 'isearch-backward-regexp)
-           (define-key global-map (kbd "<kp-add>") 'isearch-forward-regexp))
-          (t
-           (global-set-key (kbd "C-r") 'isearch-backward)
-           (define-key global-map (kbd "<kp-add>") 'isearch-forward))))
-  (define-key isearch-mode-map (kbd "M-r") 'my-isearch-toggle-regexp)
+(defun my-isearch-toggle-regexp ()
+  (interactive)
+  (isearch-toggle-regexp)
+  (cond (isearch-regexp
+         (global-set-key (kbd "C-r") 'isearch-backward-regexp)
+         (define-key global-map (kbd "<f12>") 'isearch-forward-regexp)
+         (define-key global-map (kbd "<kp-add>") 'isearch-forward-regexp))
+        (t
+         (global-set-key (kbd "C-r") 'isearch-backward)
+         (define-key global-map (kbd "<f12>") 'isearch-forward)
+         (define-key global-map (kbd "<kp-add>") 'isearch-forward))))
+(define-key isearch-mode-map (kbd "M-r") 'my-isearch-toggle-regexp)
   #+end_src
 
 ** icomplete
 *** C-. C-,
 icomplete-forward/backward-completions
 
-** ido
-*** [C-j]                                                             :drill:
-SCHEDULED: <2014-04-01 Tue>
-:PROPERTIES:
-:ID:       9cc3392d-00a1-4564-8c57-b418a20d9235
-:DRILL_LAST_INTERVAL: 22.6411
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 6
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 2.833
-:DRILL_EASE: 2.378
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:34>
-:END:
-ido-find-file create file
-*** [//]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-:PROPERTIES:
-:ID:       18ce7d51-93ca-4d41-8e8d-1958cff9c726
-:DRILL_LAST_INTERVAL: 50.6823
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 5.0
-:DRILL_EASE: 5.815
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:40>
-:END:
-ido goto root
-*** [C-k]                                                             :drill:
-:PROPERTIES:
-:ID:       af4cc865-fe0c-424b-aa5b-2097320d6fb6
-:DRILL_LAST_INTERVAL: 0.0
-:DRILL_REPEATS_SINCE_FAIL: 0
-:DRILL_TOTAL_REPEATS: 5
-:DRILL_FAILURE_COUNT: 2
-:DRILL_AVERAGE_QUALITY: 3.083
-:DRILL_EASE: 2.496
-:DRILL_LAST_QUALITY: 2
-:DRILL_LAST_REVIEWED: <2014-04-14 Mon 11:31>
-:END:
-    ido kill buffer/file
-*** [C-d]                                                             :drill:
-SCHEDULED: <2014-04-04 Fri>
-:PROPERTIES:
-:ID:       c93d6e0c-ae33-45aa-9610-ce33cfc406a0
-:DRILL_LAST_INTERVAL: 25.8141
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 5
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.0
-:DRILL_EASE: 2.456
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:37>
-:END:
-ido open dired buffer
-*** [M-d]                                                             :drill:
-SCHEDULED: <2014-03-11 Tue>
-:PROPERTIES:
-:ID:       8eab4299-207f-4a4a-a698-38f31cb5ff1b
-:DRILL_LAST_INTERVAL: 1.7651
-:DRILL_REPEATS_SINCE_FAIL: 1
-:DRILL_TOTAL_REPEATS: 6
-:DRILL_FAILURE_COUNT: 6
-:DRILL_AVERAGE_QUALITY: 2.583
-:DRILL_EASE: 2.258
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:38>
-:END:
-ido search within all subdirectories
-*** [M-m]                                                             :drill:
-SCHEDULED: <2014-03-10 Mon>
-:PROPERTIES:
-:ID:       cb7f6420-1f70-4ddb-ad73-83c3b22ef0e2
-:DRILL_LAST_INTERVAL: 7.6174
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 8
-:DRILL_FAILURE_COUNT: 4
-:DRILL_AVERAGE_QUALITY: 2.583
-:DRILL_EASE: 2.257
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:01>
-:END:
-ido create subdirectory
-*** [M-s]                                                             :drill:
-SCHEDULED: <2014-04-01 Tue>
-:PROPERTIES:
-:ID:       eb798918-4dd2-40e1-9d08-82ade145869d
-:DRILL_LAST_INTERVAL: 23.2268
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 6
-:DRILL_FAILURE_COUNT: 4
-:DRILL_AVERAGE_QUALITY: 3.083
-:DRILL_EASE: 2.496
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:34>
-:END:
-ido search recently used directories
-*** [M-n/p]                                                           :drill:
-SCHEDULED: <2014-03-14 Fri>
-:PROPERTIES:
-:ID:       db965c9e-feb0-4213-b631-7cfa0208cfdb
-:DRILL_LAST_INTERVAL: 23.0811
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.75
-:DRILL_EASE: 2.929
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:36>
-:END:
-ido next/previous recently used directory
-*** [C-s]
-**** TODO implement this keybind, normally ctrl-space
-ido use current pattern and start a new one
 ** info
-*** [[]]
-goto next-prev node regardless of structure
-*** [f]
-goto cross reference
-*** [x]
+*** [, ]
+forward / previous node, descend/ascend tree as needed
+*** x
 Info-follow-nearest-node
 #+begin_src emacs-lisp
 (define-key Info-mode-map "x" 'Info-follow-nearest-node)
 #+end_src
 m, f, n, p or ^ command, depending on where you click.
 ** auto-complete
-*** [S-return]                                                        :drill:
-SCHEDULED: <2014-03-11 Tue>
-:PROPERTIES:
-:ID:       b9e47939-8033-4adc-8bf4-734b25f4fc47
-:DRILL_LAST_INTERVAL: 2.0943
-:DRILL_REPEATS_SINCE_FAIL: 1
-:DRILL_TOTAL_REPEATS: 7
-:DRILL_FAILURE_COUNT: 3
-:DRILL_AVERAGE_QUALITY: 2.633
-:DRILL_EASE: 2.282
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:38>
-:END:
-ac-expand, then select next candidates
-*** [C-s]                                                             :drill:
-SCHEDULED: <2014-03-14 Fri>
-:PROPERTIES:
-:ID:       828416d4-7ce4-4817-aede-068b80f3041f
-:DRILL_LAST_INTERVAL: 23.0811
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.75
-:DRILL_EASE: 2.929
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:38>
-:END:
-ac filter completions
+*** S-return
+select next completion candidate
+ac-expand
 ** agenda
-*** [t]                                                               :drill:
-SCHEDULED: <2014-03-22 Sat>
-:PROPERTIES:
-:ID:       173e9cec-e401-4f03-90cc-72cba462b2f2
-:DRILL_LAST_INTERVAL: 31.1381
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.75
-:DRILL_EASE: 2.929
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:50>
-:END:
+*** t]
 agenda cycle todo state
 ** org
-*** [C-c / t]                                                         :drill:
-SCHEDULED: <2014-03-13 Thu>
-:PROPERTIES:
-:ID:       a5775c4f-c5d3-4024-a280-6628c5e7ab39
-:DRILL_LAST_INTERVAL: 10.7692
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 6
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.167
-:DRILL_EASE: 2.537
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:09>
-:END:
-show todo items
-*** [S-<tab>]                                                         :drill:
-SCHEDULED: <2014-03-27 Thu>
-:PROPERTIES:
-:ID:       1c1a4061-5cff-4826-aec2-8f677aab33a9
-:DRILL_LAST_INTERVAL: 50.6823
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 5.0
-:DRILL_EASE: 5.815
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:44>
-:END:
+*** C-c / t]
+make just todo items visible
+*** S-<tab>
 org-shifttab global visibility cycle / move table cell
-*** [C-cs]                                                            :drill:
-SCHEDULED: <2014-03-14 Fri>
-:PROPERTIES:
-:ID:       9ba74a38-655c-4f96-8443-b574ee25c544
-:DRILL_LAST_INTERVAL: 5.238
-:DRILL_REPEATS_SINCE_FAIL: 2
-:DRILL_TOTAL_REPEATS: 7
-:DRILL_FAILURE_COUNT: 2
-:DRILL_AVERAGE_QUALITY: 2.801
-:DRILL_EASE: 2.362
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:33>
-:END:
+*** C-cs]
 schedule todo item
-*** [C-cx p]                                                          :drill:
-SCHEDULED: <2014-03-15 Sat>
-:PROPERTIES:
-:ID:       4b486f48-219d-4517-96c2-83ef839abda5
-:DRILL_LAST_INTERVAL: 24.4352
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.75
-:DRILL_EASE: 2.929
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:39>
-:END:
+*** C-cx p]
 org set property
-*** [C-c -]                                                           :drill:
-SCHEDULED: <2014-03-24 Mon>
-:PROPERTIES:
-:ID:       60e57e56-d815-4d9b-ba78-2a56164db209
-:DRILL_LAST_INTERVAL: 32.7466
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.0
-:DRILL_EASE: 3.204
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:52>
-:END:
+*** C-c -]
 org insert horizontal line
-*** [C-cq]                                                            :drill:
-SCHEDULED: <2014-03-24 Mon>
-:PROPERTIES:
-:ID:       6987ba15-fbc0-459b-bc27-cf9016baebc3
-:DRILL_LAST_INTERVAL: 32.7466
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.0
-:DRILL_EASE: 3.204
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:50>
-:END:
+*** C-cq]
     org tag
 ** calc
 i'd like to drill these sometime when I have space in my head, or I
@@ -4551,28 +4078,20 @@ plan to use calc.
 [calc edit mode, to edit the top of stack]
 
 ** single/special keys
-:PROPERTIES:
-:ID:       beginning-of-keybind-table-data
-:END:
-*** [tab key]
-:PROPERTIES:
-:CUSTOM_ID: 6c10a716-1d8e-4ce4-8e26-64468f19c17a
-:END:
+*** tab key
 isearch
 #+begin_src emacs-lisp
 (define-key isearch-mode-map (kbd "<tab>") 'isearch-query-replace)
 #+end_src
 *** tab
-    :PROPERTIES:
-    :ID:       d93321a4-6732-421f-9c03-0073c4cbfdcb
-    :CUSTOM_ID: 51ece189-1840-41a1-8ca0-19f9a0481895
-    :END:
 isearch-forward
 #+begin_src emacs-lisp
 ;; explained in http://stackoverflow.com/questions/7411920/how-to-bind-search-and-search-repeat-to-c-f-in-emacs
 (global-set-key (kbd "<kp-add>") 'isearch-forward)
+(global-set-key (kbd "<f12>") 'isearch-forward)
 (define-key isearch-mode-map "\t" nil)
 (define-key isearch-mode-map (kbd "<kp-add>") 'isearch-repeat-forward)
+(define-key isearch-mode-map (kbd "<f12>") 'isearch-repeat-forward)
 ;; get rid of the standard completion binding, always use auto-complete
 ;; this didn't work very well
 ;;(global-set-key (kbd "TAB") 'auto-complete)
@@ -4581,10 +4100,6 @@ isearch-forward
 #+end_src
 
 *** end
-    :PROPERTIES:
-    :ID:       7e71b6fe-dcef-4f91-87d9-d996ddf7db5d
-    :CUSTOM_ID: 00d589b7-2b8e-494c-b761-3afefebe6ec6
-    :END:
     move-end-of-line
 #+begin_src emacs-lisp
 ;; taken from emacs wiki, along with home function
@@ -4618,10 +4133,6 @@ isearch-forward
 #+end_src
 
 *** home
-    :PROPERTIES:
-    :ID:       f52de4a4-212c-4133-9038-2b652c739ad2
-    :CUSTOM_ID: 7800e455-c3f6-4a8f-8907-b2292449ab67
-    :END:
 back-to-indentation
 #+begin_src emacs-lisp
   (defun back-to-indentation-or-beginning ()
@@ -4634,20 +4145,12 @@ back-to-indentation
 
 #+end_src
 
-*** [s-tab]
-:PROPERTIES:
-:CUSTOM_ID: 3072901e-5cf3-4d6e-9ac8-3ef64a5f6ad2
-:END:
+*** s-tab
 indent-buffer
-    [
 #+begin_src emacs-lisp
 (global-set-key (kbd "<S-iso-lefttab>") 'indent-buffer)
 #+end_src
-    ]
-*** [s-delete]
-:PROPERTIES:
-:CUSTOM_ID: e53728b6-054d-4443-a03e-6cf02d13724d
-:END:
+*** s-delete
 send-shell
 #+begin_src emacs-lisp
 
@@ -4764,14 +4267,18 @@ modes like org-mode which have their own yank function."
       (send-comint-input buffer-name start end init))))
 
 ;; supporting functions
-
-
 (defun send-comint-input (buffer-name start end &optional init)
   "Input the region to BUFFER-NAME, assuming it is a comint-derived buffer.
                              Show BUFFER-NAME if it is not show.
                              Call INIT if BUFFER-NAME does not exist."
-  (let ((input (filter-buffer-substring start end))
-        (buffer (get-buffer buffer-name)))
+  (let ((input (filter-buffer-substring start end)))
+    (send-comint-string buffer-name input init)))
+
+(defun send-comint-string (buffer-name string &optional init)
+  "Input the string to BUFFER-NAME, assuming it is a comint-derived buffer.
+                             Show BUFFER-NAME if it is not show.
+                             Call INIT if BUFFER-NAME does not exist."
+  (let ((buffer (get-buffer buffer-name)))
     (unless buffer
       (message "nobuffer")
       ;; save-excursion etc. don't work for (shell), so I do this instead
@@ -4784,7 +4291,7 @@ modes like org-mode which have their own yank function."
     (with-current-buffer buffer
       (let ((proc (get-buffer-process buffer)))
         (goto-char (process-mark proc))
-        (insert input)
+        (insert string)
         (comint-send-input nil t)))))
 
 (defun buffer-window-show (&optional buffer action)
@@ -4830,116 +4337,60 @@ modes like org-mode which have their own yank function."
 #+end_src
 
 *** s-left arrow
-:PROPERTIES:
-:CUSTOM_ID: d8c473ac-5507-4a6b-9e5a-46558c17b09f
-:END:
 shell
 #+begin_src emacs-lisp
 (global-set-key (kbd "<S-kp-equal>") 'shell-wrap)
+(global-set-key (kbd "<S-left>") 'shell-wrap)
 #+end_src
 *** s-right arrow
-:PROPERTIES:
-:CUSTOM_ID: 2365f5a7-b89a-4a97-b272-ac8ae9c2cc66
-:END:
 previous-buffer
 #+begin_src emacs-lisp
 (global-set-key (kbd "<S-kp-divide>") 'previous-buffer)
 #+end_src
 *** esc
-:PROPERTIES:
-:CUSTOM_ID: 60a56803-f38d-4d0a-8ed5-1c94ba97b6f6
-:END:
 *** return
-:PROPERTIES:
-:CUSTOM_ID: fab6adea-ed20-45ab-a0a3-776c68d5c3a5
-:END:
 new line
 
 #+begin_src emacs-lisp
 ;; todo, this doesn't set the keybind for the help minibuffer
-(when (boundp 'icomplete-minibuffer-map)
-  (define-key icomplete-minibuffer-map (kbd "C-j") 'exit-minibuffer)
-  (define-key icomplete-minibuffer-map (kbd "<return>")
-    'minibuffer-force-complete-and-exit))
-
-(add-hook 'ido-setup-hook
-          (lambda()
-            (define-key ido-completion-map (kbd "<return>") 'ido-exit-minibuffer)))
-(define-key minibuffer-local-completion-map (kbd "<return>") 'exit-minibuffer)
 
 
-(define-key isearch-mode-map (kbd "<return>") 'isearch-exit)
-(define-key isearch-mode-map "\r" nil)
+(global-set-key (kbd "\r") 'indent-new-comment-line)
 
-
-(global-set-key (kbd "<return>") 'indent-new-comment-line)
+;; don't use enter for autocomplete, we use tab or something
 (define-key ac-completing-map (kbd "<return>") nil)
 (define-key ac-completing-map "\r" nil)
-(define-key minibuffer-local-map "\r" nil)
-(define-key minibuffer-local-map (kbd "<return>") 'exit-minibuffer)
-(define-key minibuffer-local-map (kbd "C-j") 'exit-minibuffer)
-(define-key minibuffer-local-must-match-map (kbd "C-j") 'exit-minibuffer)
-(define-key minibuffer-local-must-match-map "\r" nil)
-(define-key minibuffer-local-must-match-map (kbd "<return>")
-  'minibuffer-complete-and-exit)
-
-(add-hook 'Man-mode-hook
+
+(add-hook 'org-mode-hook
           (lambda ()
-            (define-key Man-mode-map "\r" nil)
-            (define-key Man-mode-map "x" 'man-follow)))
+          ;; copied from org-mode, replace org-enter with org-enter-indent
+(org-defkey org-mode-map "\C-m"     'org-return-indent)))
+
 
 (add-hook 'comint-mode-hook
           (lambda ()
             (define-key comint-mode-map "\r" nil)
             (define-key comint-mode-map (kbd "<return>") 'comint-send-input)))
 
-(add-hook 'org-mode-hook
-          (lambda ()
-            (define-key org-mode-map "\r" nil)
-            (define-key org-mode-map (kbd "<return>") 'org-return-indent)))
-
 (add-hook 'comint-mode-hook
           (lambda ()
             (define-key comint-mode-map "\C-m" nil)
             (define-key comint-mode-map "\C-d" nil)))
-;; use space instead of enter in calc mode,
-;; cuz it is not easy to rebind enter in calc mode
-#+end_src
-
-*** [s-return]                                                        :drill:
-SCHEDULED: <2014-03-10 Mon>
-    :PROPERTIES:
-    auto-correct-prev-word
-    :ID:       db46193b-f202-4927-bc76-2ad74d9f0ed7
-    :CUSTOM_ID: 819cfb55-3a2f-4f20-8591-f819d1a6869a
-    :DRILL_LAST_INTERVAL: 7.9493
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 7
-    :DRILL_FAILURE_COUNT: 4
-    :DRILL_AVERAGE_QUALITY: 2.696
-    :DRILL_EASE: 2.312
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:05>
-    :END:
+
+#+end_src
+
+*** s-return
 auto-correct-prev-word
-    [
     #+begin_src emacs-lisp
     (global-set-key (kbd "<S-return>") 'flyspell-auto-correct-previous-word)
 #+end_src
-]
 
 *** down arrow
-    :PROPERTIES:
-    :CUSTOM_ID: 7a868484-9c63-4a73-abda-7751cb2c02be
-    :END:
 mark
 #+begin_src emacs-lisp
   (global-set-key (kbd "<kp-enter>") 'set-mark-command)
 #+end_src
 *** s-down arrow
-:PROPERTIES:
-:CUSTOM_ID: 097b97e0-8ad8-40f7-8388-c4ace1706b38
-:END:
 extended command
 #+begin_src emacs-lisp
   (global-set-key (kbd "<S-kp-enter>") 'smex)
@@ -4947,269 +4398,75 @@ extended command
 *** s-up arrow
 
 ** mouse
-*** [mouse-2 mode line]                                               :drill:
-SCHEDULED: <2014-03-17 Mon>
-    :PROPERTIES:
-    :ID:       d79167ad-9782-40b3-8e40-55aaa8428dec
-    :CUSTOM_ID: 69aaa631-6fb5-4beb-b2d8-c0f3d92c0a98
-    :DRILL_LAST_INTERVAL: 15.2345
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 7
-    :DRILL_FAILURE_COUNT: 2
-    :DRILL_AVERAGE_QUALITY: 2.893
-    :DRILL_EASE: 2.405
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:06>
-    :END:
-    mouse-delete-other-windows
+*** mouse-2 mode line
+mouse-delete-other-windows
 *** C-mouse-2 mode line
-:PROPERTIES:
-:CUSTOM_ID: 501479ab-e1e2-497e-bd86-071f8afa3378
-:END:
     mouse-split-window-horizontally
 *** M-mouse-2 mode line
-:PROPERTIES:
-:CUSTOM_ID: 8de14d73-499e-406a-b5c4-e295e53d3f4c
-:END:
 *** S-mouse-2 mode line
-:PROPERTIES:
-:CUSTOM_ID: f389cdbb-186a-4cad-af45-b3c75a508275
-:END:
 *** C-M-mouse-2 mode line
-:PROPERTIES:
-:CUSTOM_ID: cb2be69c-f86c-4120-b7f2-1c09b7bcd816
-:END:
 *** C-S-mouse2 mode line
-:PROPERTIES:
-:CUSTOM_ID: 7b4eced3-ce5e-49ce-8bfe-8823e8f5f93e
-:END:
-*** [mouse-3 mode line]                                               :drill:
-SCHEDULED: <2014-03-19 Wed>
-    :PROPERTIES:
-    :ID:       324e43e7-d468-4edc-b892-c1e249ff49fa
-    :CUSTOM_ID: 917a1844-8c38-4f31-8616-50fc81334f2c
-    :DRILL_LAST_INTERVAL: 27.607
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.5
-    :DRILL_EASE: 2.73
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:50>
-    :END:
+*** mouse-3 mode line
     mouse-delete-window
 *** C-mouse-3 mode line
-:PROPERTIES:
-:CUSTOM_ID: b36a218f-6a92-4594-940b-13ffdf79cc9c
-:END:
 *** M-mouse-3 mode line
-:PROPERTIES:
-:CUSTOM_ID: 11c48311-05a4-440e-b742-ec397f22f479
-:END:
 *** S-mouse-3 mode line
-:PROPERTIES:
-:CUSTOM_ID: 03768943-d8cd-4dcb-bc48-393e9a6bb31f
-:END:
 *** C-M-mouse-3 mode line
-:PROPERTIES:
-:CUSTOM_ID: ab213201-bab7-4d30-8f61-fee80e7f2c6f
-:END:
 *** C-S-mouse-3 mode line
-:PROPERTIES:
-:CUSTOM_ID: 0bcac7a3-2943-49b7-b281-d834d374caf9
-:END:
 *** mouse-1
-:PROPERTIES:
-:CUSTOM_ID: 4e60e2e4-8c2f-4450-8060-2d793ede530c
-:END:
     set cursor/mark
-*** [C-mouse-1]                                                       :drill:
-SCHEDULED: <2014-03-15 Sat>
-:PROPERTIES:
-:CUSTOM_ID: b661f84f-57df-4095-9dc1-d1a876a53ee5
-:ID:       6b82708e-d5de-48cc-8abd-225186eb8729
-:DRILL_LAST_INTERVAL: 24.4352
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.75
-:DRILL_EASE: 2.929
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 18:03>
-:END:
+*** C-mouse-1
 buffer list context menu
 *** M-mouse-1
-:PROPERTIES:
-:CUSTOM_ID: c71c8a71-7027-44f3-be19-1d3c18ff5129
-:END:
 *** S-mouse-1
-:PROPERTIES:
-:CUSTOM_ID: 84507cd6-8a75-4754-bf9e-5a30f57fa4ac
-:END:
 *** C-M-mouse-1
-:PROPERTIES:
-:CUSTOM_ID: 95eea58e-82b0-48a3-a7c8-0d17c50b7c2e
-:END:
 *** C-S-mouse-1
-:PROPERTIES:
-:CUSTOM_ID: 2d450c06-d9aa-4751-a926-0922c0c3a402
-:END:
 *** mouse-2
-:PROPERTIES:
-:CUSTOM_ID: 086b0b50-054f-462d-92fa-b27852f887b0
-:END:
     paste
 *** C-mouse-2
-:PROPERTIES:
-:CUSTOM_ID: 48b8de22-6638-44da-986f-16e0e69312dd
-:END:
 *** M-mouse-2
-:PROPERTIES:
-:CUSTOM_ID: fb315a27-6351-4ce2-9692-589608793c43
-:END:
 *** S-mouse-2
-:PROPERTIES:
-:CUSTOM_ID: 7cc73036-844b-44d3-afe1-1e76ee626b53
-:END:
 *** C-M-mouse-2
-:PROPERTIES:
-:CUSTOM_ID: 85f35287-5130-47ab-832d-af78dc2a3e70
-:END:
 *** C-S-mouse-2
-:PROPERTIES:
-:CUSTOM_ID: a27ad43f-3be2-4155-9a9f-c144170372ce
-:END:
 *** mouse-3
-:PROPERTIES:
-:CUSTOM_ID: 0481632e-9c50-4328-9365-c4b5bf967b66
-:END:
 set-mark
 #+begin_src emacs-lisp
   (define-key global-map [down-mouse-3] 'mouse3-func)
   (global-set-key [mouse-3]       'mouse3-set-mark)
   (global-set-key [drag-mouse-3]  'mouse3-set-mark)
 #+end_src
-*** [C-mouse-3]                                                       :drill:
-SCHEDULED: <2014-03-13 Thu>
-    :PROPERTIES:
-    :ID:       b075e62c-55c6-46f5-a23a-4c4c5b9f267e
-    :CUSTOM_ID: 9623c78f-7705-4cbe-a990-c24eb1067377
-    :DRILL_LAST_INTERVAL: 22.1939
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.5
-    :DRILL_EASE: 2.73
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:38>
-    :END:
+*** C-mouse-3
     global menu
 *** M-mouse-3
-:PROPERTIES:
-:CUSTOM_ID: fb6f4840-7e44-4c94-b913-f2014fda3325
-:END:
 *** S-mouse-3
-:PROPERTIES:
-:CUSTOM_ID: a6d91332-c731-474c-9959-ddd03e8b2786
-:END:
 *** C-M-mouse-3
-:PROPERTIES:
-:CUSTOM_ID: 6b4d0e4d-1a2c-4e42-a925-e39548c4e264
-:END:
 *** C-S-mouse-3
-:PROPERTIES:
-:CUSTOM_ID: a983a7c5-c17e-4e08-b3e2-a45a44d7a2b6
-:END:
-*** [mouse-9]
-:PROPERTIES:
-:CUSTOM_ID: efaec161-b279-4129-86fd-b410430926e4
-:END:
+*** mouse-9
 move-mouse-to-point
-[
 #+begin_src emacs-lisp
   (global-set-key (kbd "<mouse-6>") 'move-mouse-to-point)
 #+end_src
-]
 *** C-mouse-9
-:PROPERTIES:
-:CUSTOM_ID: e055ae8a-cc94-4e0f-9e98-9cb62453b8d6
-:END:
 *** M-mouse-9
-:PROPERTIES:
-:CUSTOM_ID: 7d1c03a9-b153-47dc-a037-7ee333ca8da9
-:END:
 *** S-mouse-9
-:PROPERTIES:
-:CUSTOM_ID: 8f688d00-8cdb-4163-818c-a0cfba3b1c0a
-:END:
 *** C-M-mouse-9
-:PROPERTIES:
-:CUSTOM_ID: 90ce7df8-2346-4203-8ced-5da51c7c1bfc
-:END:
 *** C-S-mouse-9
-:PROPERTIES:
-:CUSTOM_ID: 0afdad0a-f9c4-4bfa-baa8-cc20d6cab628
-:END:
 *** mouse-8
-:PROPERTIES:
-:CUSTOM_ID: ea9d2415-0fd7-4f83-9867-a7a81899e74b
-:END:
 *** C-mouse-8
-:PROPERTIES:
-:CUSTOM_ID: dc2428d2-412c-4811-8327-3bb70bfa0e76
-:END:
 *** M-mouse-8
-:PROPERTIES:
-:CUSTOM_ID: 530ed41d-6ed6-4bcd-9df7-58ddbfe8b44a
-:END:
 *** S-mouse-8
-:PROPERTIES:
-:CUSTOM_ID: c7d388c3-f4a6-4489-b23a-20ebb7515430
-:END:
 *** C-M-mouse-8
-:PROPERTIES:
-:CUSTOM_ID: fc6ac9e8-fd9a-4270-9cd8-26713d6bc40f
-:END:
 *** C-S-mouse-8
-:PROPERTIES:
-:CUSTOM_ID: 401503ad-3750-4002-a28e-1f1345412bc6
-:END:
 *** 1/kp-end
-:PROPERTIES:
-:CUSTOM_ID: c306a3ef-4b81-4d54-a914-99f312d8f92f
-:END:
 *** C-1/kp-end
-:PROPERTIES:
-:CUSTOM_ID: 11059916-0a48-4f08-b85a-9b82243e4145
-:END:
 *** M-1/kp-end
-:PROPERTIES:
-:CUSTOM_ID: fddd8716-5b16-484e-9d70-358fea201d99
-:END:
 *** S-1/kp-end
-:PROPERTIES:
-:CUSTOM_ID: c6a7978b-a5cf-4ae7-b1d2-57ea72adb487
-:END:
 *** C-M-1/kp-end
-:PROPERTIES:
-:CUSTOM_ID: 376b8b84-ae1b-4bff-b1c8-263049186637
-:END:
 *** C-S-1/kp-end
-:PROPERTIES:
-:CUSTOM_ID: 4e8081cb-5692-4d2e-8657-c6c7931046fd
-:END:
 *** 2/kp-down
-:PROPERTIES:
-:CUSTOM_ID: a1108fd9-0df0-43ac-9dbb-0402d24f5b57
-:END:
 *** C-2/kp-down
-:PROPERTIES:
-:CUSTOM_ID: e9fe4916-14f5-4dc6-8dba-ed982b7172a1
-:END:
 *** M-2/kp-down
-:PROPERTIES:
-:CUSTOM_ID: 50db5a06-452e-491f-875b-3de936a4d04a
-:END:
+smex
 #+begin_src emacs-lisp
 ;; for when we have a standard keyboard which is not remapped
 (global-set-key (kbd "M-2") 'smex)
@@ -5217,302 +4474,91 @@ move-mouse-to-point
 #+end_src
 
 *** S-2/kp-down
-:PROPERTIES:
-:CUSTOM_ID: c3ad691b-0082-46f3-8588-ef2223eab643
-:END:
 *** C-M-2/kp-down
-:PROPERTIES:
-:CUSTOM_ID: 90963055-086b-4d96-8131-d890ff3cb597
-:END:
 *** C-S-2/kp-down
-:PROPERTIES:
-:CUSTOM_ID: 4d13741e-2207-4d2c-a719-e818bb9f3419
-:END:
 *** 3/kp-next
-:PROPERTIES:
-:CUSTOM_ID: b441f9e2-d035-4907-b947-0f3b4d6d062d
-:END:
 *** C-3/kp-next
-:PROPERTIES:
-:CUSTOM_ID: 3ea6ff26-4db4-46c8-b681-e08acd9b6a06
-:END:
 *** M-3/kp-next
-:PROPERTIES:
-:CUSTOM_ID: a376d2fb-999d-48fd-8c9e-36b7661c5ba7
-:END:
 *** S-3/kp-next
-:PROPERTIES:
-:CUSTOM_ID: 50b8356c-7ba5-4e89-b4d6-618f6c571678
-:END:
 *** C-M-3/kp-next
-:PROPERTIES:
-:CUSTOM_ID: cd997379-f611-4d06-91c7-ed6cabb618ee
-:END:
 *** C-S-3/kp-next
-:PROPERTIES:
-:CUSTOM_ID: 1c8941c9-3025-4dff-bcf3-09d8de44f44f
-:END:
 *** 4/kp-left
-    :PROPERTIES:
-    :ID:       bef4fed5-5338-4c66-a759-13dc20ab9bfb
-    :CUSTOM_ID: c44d0f65-9502-4cc6-9642-96d907f6b093
-    :END:
     indent-region
 #+begin_src emacs-lisp
   (global-set-key (kbd "<kp-left>") 'indent-region)
 #+end_src
 *** C-4/kp-left
-:PROPERTIES:
-:CUSTOM_ID: dd0cd32a-1d62-4b19-9d4f-ee242fb7c7b9
-:END:
 *** M-4/kp-left
-:PROPERTIES:
-:CUSTOM_ID: 4f7c3799-28a7-4fc2-85fc-16d768d2047c
-:END:
 *** S-4/kp-left
-:PROPERTIES:
-:CUSTOM_ID: f84a7347-f88a-4888-bf5d-e15b98b5c3a2
-:END:
 *** C-M-4/kp-left
-:PROPERTIES:
-:CUSTOM_ID: 74a1afca-bd24-469b-93e9-7a9681a9e467
-:END:
 *** C-S-4/kp-left
-:PROPERTIES:
-:CUSTOM_ID: 6c822a4a-0e64-430b-8d21-46b387911f2f
-:END:
 *** 5/kp-begin
-    :PROPERTIES:
-    :ID:       0e93f6a0-3d6f-45b1-b14e-10abbdfa3ee4
-    :CUSTOM_ID: 2458c6bc-7113-4d4b-bbdf-206e1cb842a7
-    :END:
     mark-defun
 #+begin_src emacs-lisp
   (global-set-key (kbd "<kp-begin>") 'mark-defun)
 #+end_src
 *** C-5/kp-begin
-:PROPERTIES:
-:CUSTOM_ID: 39588066-77b8-4863-be0d-0f1fad8f0e2a
-:END:
 *** M-5/kp-begin
-:PROPERTIES:
-:CUSTOM_ID: b3542b42-9d71-4a3f-92b1-f79f275bcf52
-:END:
 *** S-5/kp-begin
-:PROPERTIES:
-:CUSTOM_ID: 66aed3e7-d7bb-4393-a95b-b90b3a410684
-:END:
 *** C-M-5/kp-begin
-:PROPERTIES:
-:CUSTOM_ID: 1060d464-eed3-4a17-a5c4-d8e8941f6925
-:END:
 *** C-S-5/kp-begin
-:PROPERTIES:
-:CUSTOM_ID: efd7867a-a87f-43ef-a849-0e4029431d7f
-:END:
 *** 6/kp-right
-    :PROPERTIES:
-    :ID:       d156225a-b48e-45e2-80a7-ea1a7dbbc794
-    :CUSTOM_ID: 3b79bc58-6067-43bd-9471-9d592744a25a
-    :END:
     ibuffer
 #+begin_src emacs-lisp
   (global-set-key (kbd "<kp-right>") 'ibuffer)
 #+end_src
 *** C-6/kp-right
-:PROPERTIES:
-:CUSTOM_ID: 5592b3d3-7ade-4486-ac94-aed0aa3d78f5
-:END:
 *** M-6/kp-right
-:PROPERTIES:
-:CUSTOM_ID: c76bedd9-90a7-41fe-9327-607f88f60a3a
-:END:
 *** S-6/kp-right
-:PROPERTIES:
-:CUSTOM_ID: 8bbda9a2-7909-44fb-af24-a86dbbd5d16f
-:END:
 *** C-M-6/kp-right
-:PROPERTIES:
-:CUSTOM_ID: 7c5838f6-5cc9-4bbc-bd07-403cc009cf35
-:END:
 *** C-S-6/kp-right
-:PROPERTIES:
-:CUSTOM_ID: c6f2edc9-ffd3-400f-8014-bb92ea6e520b
-:END:
 *** 7/kp-home
-:PROPERTIES:
-:CUSTOM_ID: c98ba390-f2e3-4c14-8d41-142b54e76d77
-:END:
 *** C-7/kp-home
-:PROPERTIES:
-:CUSTOM_ID: 5597d00f-4a89-4af2-aac1-98808763744c
-:END:
 *** M-7/kp-home
-:PROPERTIES:
-:CUSTOM_ID: 5cbafd0e-0c8f-4e14-a24e-f847c341e5c1
-:END:
 *** S-7/kp-home
-:PROPERTIES:
-:CUSTOM_ID: 92f7d836-ae32-4bba-9120-72e747feb832
-:END:
 *** C-M-7/kp-home
-:PROPERTIES:
-:CUSTOM_ID: 30170d01-412e-4098-b27e-ed9294d8cf92
-:END:
 *** C-S-7/kp-home
-:PROPERTIES:
-:CUSTOM_ID: 81300d39-e60e-4b09-865e-584153f3b827
-:END:
 *** 8/kp-up
-:PROPERTIES:
-:CUSTOM_ID: 0591db2b-6c5c-4438-9451-dcd686170c9d
-:END:
 *** C-8/kp-up
-:PROPERTIES:
-:CUSTOM_ID: 028ad953-1641-4f0c-83c2-72787310e447
-:END:
 *** M-8/kp-up
-:PROPERTIES:
-:CUSTOM_ID: 7c55f717-1093-48a7-b764-8f788540a4d7
-:END:
 *** S-8/kp-up
-:PROPERTIES:
-:CUSTOM_ID: f477fa15-3f04-48f6-a66a-4ba6eb0475f1
-:END:
 *** C-M-8/kp-up
-:PROPERTIES:
-:CUSTOM_ID: f280c9ab-49a8-4399-987b-bfde07c339be
-:END:
 *** C-S-8/kp-up
-:PROPERTIES:
-:CUSTOM_ID: 68a316aa-a05d-4ab0-87e4-88e8f2613795
-:END:
 *** 9/kp-prior
-    :PROPERTIES:
-    :ID:       f3c60889-d948-4144-b5b0-04aeeec95309
-    :CUSTOM_ID: a3b51adb-4405-4d9f-9b88-a8faa479fbe7
-    :END:
     delete-horizontal-space
 #+begin_src emacs-lisp
   (global-set-key (kbd "<kp-prior>") 'delete-horizontal-space)
 #+end_src
 *** C-9/kp-prior
-:PROPERTIES:
-:CUSTOM_ID: 2683f49c-a465-42d0-b85b-6aa345ac2213
-:END:
 *** M-9/kp-prior
-:PROPERTIES:
-:CUSTOM_ID: 91b0ee09-9eba-4b60-b05f-720eaca53065
-:END:
 *** S-9/kp-prior
-:PROPERTIES:
-:CUSTOM_ID: b79e626c-4425-409f-92ce-b88335629c34
-:END:
 *** C-M-9/kp-prior
-:PROPERTIES:
-:CUSTOM_ID: 4838285f-905b-4e18-8605-ff24a20ce9e1
-:END:
 *** C-S-9/kp-prior
-:PROPERTIES:
-:CUSTOM_ID: 763edfac-da7d-4360-a383-6a7f42cc2e02
-:END:
 *** 10/kp-insert
-:PROPERTIES:
-:CUSTOM_ID: 57e1a794-26f8-4fb6-b753-ef1ad1ff0af9
-:END:
 *** C-10/kp-insert
-:PROPERTIES:
-:CUSTOM_ID: 32426751-f87b-4fd5-b435-914ac8f54e5f
-:END:
 *** M-10/kp-insert
-:PROPERTIES:
-:CUSTOM_ID: 1b83659c-61dc-425f-bead-fc2a0d198dde
-:END:
 *** S-10/kp-insert
-:PROPERTIES:
-:CUSTOM_ID: d2f07180-2d20-4633-9c79-78f4d992f7a6
-:END:
 *** C-M-10/kp-insert
-:PROPERTIES:
-:CUSTOM_ID: 1f6eabdc-703c-4a05-829c-553ccf7d082d
-:END:
 *** C-S-10/kp-insert
-:PROPERTIES:
-:CUSTOM_ID: bb361418-370f-4b15-b7e1-8e85c7a6f032
-:END:
 *** 11/kp-subtract
-:PROPERTIES:
-:CUSTOM_ID: 0f84dddc-a1d2-428d-8c17-cf9ddbd24784
-:END:
 *** C-11/kp-subtract
-:PROPERTIES:
-:CUSTOM_ID: 4c3309ee-eb67-43ff-bc4a-44574b1c5e0f
-:END:
 *** M-11/kp-subtract
-:PROPERTIES:
-:CUSTOM_ID: e95a2822-5f0d-4b32-a17f-15d4650e086f
-:END:
 *** S-11/kp-subtract
-:PROPERTIES:
-:CUSTOM_ID: 667a9853-38c6-4bb2-8c01-6a30075929b4
-:END:
 *** C-M-11/kp-subtract
-:PROPERTIES:
-:CUSTOM_ID: d5b17698-9bfe-4bd7-af26-b5dd51684e7d
-:END:
 *** C-S-11/kp-subtract
-:PROPERTIES:
-:CUSTOM_ID: cfde57be-a728-4955-8b96-9ae5aa1cce01
-:END:
 *** 12/kp-add
-:PROPERTIES:
-:CUSTOM_ID: 5e7a0116-a847-4fec-81ed-a0286bb08ac5
-:END:
 *** C-12/kp-add
-:PROPERTIES:
-:CUSTOM_ID: 41dcdb69-8436-495b-9e55-a0cd623ac5aa
-:END:
 *** M-12/kp-add
-:PROPERTIES:
-:CUSTOM_ID: ebda57a2-cab3-4fed-b3b0-014a7e60c96f
-:END:
 *** S-12/kp-add
-:PROPERTIES:
-:CUSTOM_ID: 7e4c6085-cfbe-4c05-9edb-2aec2325f7b9
-:END:
 *** C-M-12/kp-add
-:PROPERTIES:
-:CUSTOM_ID: 7904cafb-7371-4bc9-a661-262d78f8f9b8
-:END:
 *** C-S-12/kp-add
-    :PROPERTIES:
-    :CUSTOM_ID: dcf498f0-5bcf-4402-bce0-561c11effb38
-    :END:
 *** scroll
-:PROPERTIES:
-:CUSTOM_ID: 33433f0f-5b0e-46ba-8452-d2a51e54769b
-:END:
     up/dn / scroll
 on standard mouse, this scrolls,
 because we have the accuracy to pick things up and
 down easier, and because it is familiar.
-*** [C-scroll]                                                        :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    cycle recent buffers
-    :ID:       678b14e8-e991-46da-84a0-50d142ecbbba
-    :CUSTOM_ID: 16506ba5-e8f2-4aec-bc1b-d2854d4e504c
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:36>
-    :END:
+*** C-scroll
 cursor up/down fast
-    [
 #+begin_src emacs-lisp
 ;; compiling warns that next-line should be called interactively,
 ;; but we would have to do something dumb, like give it a
@@ -5532,36 +4578,15 @@ cursor up/down fast
             (define-key comint-mode-map (kbd "<C-mouse-4>") 'comint-previous-prompt)
             (define-key comint-mode-map (kbd "<C-mouse-5>") 'comint-next-prompt)))
 #+end_src
-]
 
-*** [M-scroll]
-:PROPERTIES:
-:CUSTOM_ID: e1e2e253-450d-4620-af9e-78d378f49ad5
-:END:
+*** M-scroll
 forward/back s-exp
-[
 #+begin_src emacs-lisp
   (global-set-key (kbd "<M-mouse-4>") 'backward-sexp)
   (global-set-key (kbd "<M-mouse-5>") 'forward-sexp)
 #+end_src
-]
-*** [S-scroll]                                                        :drill:
-SCHEDULED: <2014-03-22 Sat>
-    :PROPERTIES:
-    expand region
-    :ID:       c2da442e-b8c0-4b8a-899f-989af89bd857
-    :CUSTOM_ID: 74b2196a-345d-453a-b7be-1915360eb201
-    :DRILL_LAST_INTERVAL: 27.0855
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 5
-    :DRILL_FAILURE_COUNT: 2
-    :DRILL_AVERAGE_QUALITY: 3.4
-    :DRILL_EASE: 2.666
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-23 Sun 02:26>
-    :END:
+*** S-scroll
 expand/contract region
-    [
 #+begin_src emacs-lisp
 (global-set-key (kbd "<S-mouse-13>") 'my-contract-region)
 (global-set-key (kbd "<S-mouse-14>") 'er/expand-region)
@@ -5575,24 +4600,8 @@ expand/contract region
   (let ((current-prefix-arg '-))
     (call-interactively 'er/expand-region)))
 #+end_src
-    ]
-*** [C-M-scroll]                                                      :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    scroll
-    :ID:       b94d89ed-5a06-4916-b5f5-e0bf1a552362
-    :CUSTOM_ID: bd2ca117-408c-49fc-a5ac-a938be21dfc0
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:40>
-    :END:
+*** C-M-scroll
 scroll
-    [
 background: I originally tried to make c-scroll be scroll
 , but this made
 for better compatibility with the standard mouse
@@ -5604,24 +4613,8 @@ for better compatibility with the standard mouse
  ; (global-set-key (kbd "<C-M-mouse-4>") 'scroll-up-1)
   ;(global-set-key (kbd "<C-M-mouse-5>") 'scroll-down-1)
 #+end_src
-]
-*** [C-S-scroll]                                                      :drill:
-SCHEDULED: <2014-03-18 Tue>
-    :PROPERTIES:
-    zoom
-    :ID:       368f60cb-91e5-4694-b342-e0049e5d3e2c
-    :CUSTOM_ID: a69254a4-cf2d-450f-b477-2694b44a7e0d
-    :DRILL_LAST_INTERVAL: 9.2113
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 7
-    :DRILL_FAILURE_COUNT: 3
-    :DRILL_AVERAGE_QUALITY: 2.943
-    :DRILL_EASE: 2.429
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:34>
-    :END:
+*** C-S-scroll
 increase / decrease text size
-    [
 #+begin_src emacs-lisp
 (global-set-key (kbd "<C-S-mouse-4>") 'text-scale-increase)
 (global-set-key (kbd "<C-S-mouse-5>") 'text-scale-decrease)
@@ -5630,77 +4623,30 @@ increase / decrease text size
 (global-set-key (kbd "<C-S-down>") 'text-scale-increase)
 (global-set-key (kbd "<C-S-up>") 'text-scale-decrease)
 #+end_src
-]
 *** left-scroll
-:PROPERTIES:
-:CUSTOM_ID: d2d5c5c7-f0de-4e08-953b-d41d3e282ba7
-:END:
 left/right
-*** [C-left-scroll]                                                   :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    :CUSTOM_ID: 7bb95aa5-381e-454a-a6c6-aaeec728db08
-    :ID:       04bdffa0-52fe-4d90-a222-a6e41d75b13b
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:35>
-    :END:
+*** C-left-scroll
 back / forward word
 #+begin_src emacs-lisp
   (global-set-key (kbd "<C-left>") 'backward-symbol)
   (global-set-key (kbd "<C-right>") 'forward-symbol)
   #+end_src
-*** [M-left-scroll]                                                   :drill:
-    :PROPERTIES:
-    winner undo redo
-    :CUSTOM_ID: 49db3764-b154-4cfc-8d0d-f0e0451815e3
-    :ID:       97ef29fd-aea5-49ce-aff2-7a8c8d1b3d5d
-    :DRILL_LAST_INTERVAL: 0.0
-    :DRILL_REPEATS_SINCE_FAIL: 0
-    :DRILL_TOTAL_REPEATS: 9
-    :DRILL_FAILURE_COUNT: 10
-    :DRILL_AVERAGE_QUALITY: 2.518
-    :DRILL_EASE: 2.225
-    :DRILL_LAST_QUALITY: 2
-    :DRILL_LAST_REVIEWED: <2014-04-14 Mon 11:30>
-    :END:
-
+*** M-left-scroll
+---
+unreachable
 *** S-left-scroll
-:PROPERTIES:
-:CUSTOM_ID: ca5cdcd4-b3da-4d7b-86ab-4c7c0ac2caf7
-:END:
 ---
-    unreachable
+unreachable
 *** C-M-left-scroll
+---
 unreachable
 *** C-S-left-scroll
-:PROPERTIES:
-:CUSTOM_ID: 7b4f1f49-6d93-4210-a30c-8278d6e63655
-:ID:       b6ea3b66-d9a6-4a33-ae1c-0464d118f006
-:END:
+---
 unreachable
 ** left primary
-*** [C-2]                                                             :drill:
-SCHEDULED: <2014-04-04 Fri>
-    :PROPERTIES:
-    :ID:       845cf47f-22d5-4100-837d-fbc066e33c9c
-    :CUSTOM_ID: 4f29b011-3844-4a4a-b75d-cdf8f49e9adb
-    :DRILL_LAST_INTERVAL: 26.3927
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 6
-    :DRILL_FAILURE_COUNT: 2
-    :DRILL_AVERAGE_QUALITY: 3.25
-    :DRILL_EASE: 2.58
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:36>
-    :END:
-narrow-to-defun/subtree
-[
+
+*** C-2
+copy-symbol
 #+begin_src emacs-lisp
 (global-unset-key (kbd "C-2"))
 (defun copy-symbol (&optional arg)
@@ -5709,326 +4655,124 @@ narrow-to-defun/subtree
   (kill-new (thing-at-point 'symbol)))
 
 (global-set-key (kbd "C-2") 'copy-symbol)
-
-(global-set-key (kbd "C-4") 'narrow-to-defun)
-(add-hook 'org-mode-hook
-          (lambda () (local-set-key (kbd "C-4") 'org-narrow-to-subtree)))
 #+end_src
-]
 *** M-2
-:PROPERTIES:
-:CUSTOM_ID: 53ecfda2-d9f6-4882-b7a2-9b3c859e3bcb
-:END:
-*** [C-M-2]
-:PROPERTIES:
-:CUSTOM_ID: 33c4996d-92bc-4df0-b005-11553677be13
-:END:
+shell-cd-to-file
+#+begin_src emacs-lisp
+
+(defun shell-cd-to-file ()
+  (interactive)
+  (let ((file (buffer-file-name)))
+    (if file
+        (send-comint-string "*shell*"
+                            (concat "c " (file-name-directory file))
+                            'shell)
+      (message "%s" "shell-cd-to-file: buffer has no file name"))))
+(global-set-key (kbd "M-2") 'shell-cd-to-file)
+#+end_src
+*** C-M-2
 ---
-[
 #+begin_src emacs-lisp
   (global-unset-key (kbd "C-M-2"))
 #+end_src
-]
 *** C-S-2
-:PROPERTIES:
-:CUSTOM_ID: 43af8e87-216d-47f7-9779-48ef66c7ca5f
-:END:
-*** [C-3]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    :ID:       9495ba60-017a-49b0-b0b6-366c3334e909
-    :CUSTOM_ID: 7851a05e-7177-4a8f-af5a-3325a8f116fe
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:41>
-    :END:
-    dot-mode-execute
-    [
+*** C-3
+dot-mode-execute
 #+begin_src emacs-lisp
-  (global-set-key (kbd "C-3") 'dot-mode-execute)
+(global-set-key (kbd "C-3") 'dot-mode-execute)
  #+end_src
-    ]
 *** M-3
-:PROPERTIES:
-:CUSTOM_ID: ddceb843-06db-4078-914f-da225cac107e
-:END:
-*** [C-M-3]                                                           :drill:
-SCHEDULED: <2014-03-11 Tue>
-    :PROPERTIES:
-    :CUSTOM_ID: 9a00e17f-a1c9-48fc-b03b-c6a1a3cbda1c
-    :ID:       75be5945-8bc4-4041-a44f-de2d9af66f4f
-    :DRILL_LAST_INTERVAL: 19.6736
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 5
-    :DRILL_FAILURE_COUNT: 1
-    :DRILL_AVERAGE_QUALITY: 3.4
-    :DRILL_EASE: 2.666
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:48>
-    :END:
+*** C-M-3
     recenter-top-bottom
-    [
 #+begin_src emacs-lisp
-    (global-set-key (kbd "C-M-3") 'recenter-top-bottom)
+(global-set-key (kbd "C-M-3") 'recenter-top-bottom)
 #+end_src
-    ]
 *** C-S-3
-:PROPERTIES:
-:CUSTOM_ID: 224cf9b0-2e12-4cc7-a7e1-746784c87777
-:END:
-*** [C-q]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    :ID:       e7f30a61-8557-4b7e-898c-96db9d649f39
-    :CUSTOM_ID: 679fd3cd-c43b-409c-be36-4175a5f27cd3
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:42>
-    :END:
-    org-cycle, comint previous arg
-    [
+*** C-q
+org-cycle, comint previous arg
 #+begin_src emacs-lisp
-  (add-hook 'org-mode-hook
-            (lambda () (define-key org-mode-map (kbd "C-q") 'org-cycle)))
-  (define-key widget-keymap (kbd "C-q") 'widget-forward)
-  (add-hook 'comint-mode-hook
-            (lambda () (define-key comint-mode-map (kbd "C-q") 'comint-insert-previous-argument)))
-#+end_src
-    ]
-*** [M-q]                                                             :drill:
-SCHEDULED: <2014-03-19 Wed>
-:PROPERTIES:
-org-archive-to-archive-sibling
-:CUSTOM_ID: 72bada0e-5d62-4a8f-ae62-4972778ff1bc
-:ID:       4c8104f4-9251-4915-b076-6989c7cce3be
-:DRILL_LAST_INTERVAL: 10.3717
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 8
-:DRILL_FAILURE_COUNT: 6
-:DRILL_AVERAGE_QUALITY: 2.6
-:DRILL_EASE: 2.266
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:35>
-:END:
+(global-set-key (kbd "C-q") 'outline-cycle)
+(add-hook 'org-mode-hook
+          (lambda () (define-key org-mode-map (kbd "C-q") 'org-cycle)))
+(define-key widget-keymap (kbd "C-q") 'widget-forward)
+(add-hook 'comint-mode-hook
+          (lambda () (define-key comint-mode-map (kbd "C-q") 'comint-insert-previous-argument)))
+#+end_src
+*** M-q
 org-archive-to-archive-sibling
-[
 #+begin_src emacs-lisp
 (global-set-key (kbd "M-q") 'org-archive-to-archive-sibling)
 #+end_src
-]
-
-*** [C-M-q]                                                           :drill:
-SCHEDULED: <2014-03-12 Wed>
-:PROPERTIES:
-:ID:       ab67e1da-41dd-40bd-96c1-556cafc6b630
-:DRILL_LAST_INTERVAL: 9.9427
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 6
-:DRILL_FAILURE_COUNT: 2
-:DRILL_AVERAGE_QUALITY: 3.104
-:DRILL_EASE: 2.506
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 20:57>
-:CUSTOM_ID: 1f5e9b63-7ce0-445c-a426-b41839585d38
-:END:
+*** C-M-q
 quoted-insert
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-q") 'quoted-insert)
 #+end_src
-    ]
 *** C-S-q
-:PROPERTIES:
-:CUSTOM_ID: c16f1753-126b-499b-af0e-669129ccd3ea
-:END:
-*** [C-w]
-:PROPERTIES:
-:CUSTOM_ID: 20005b6d-9a9d-4b58-882c-7ce860c7a395
-:END:
+*** C-w
 goto-t.org
-    [
-#+begin_src emacs-lisp
-    (global-set-key (kbd "C-w") (lambda () (interactive) (goto-buffer-or-find-file "/a/t.org")))
-#+end_src
-]
-*** [M-w]                                                             :drill:
-SCHEDULED: <2014-03-18 Tue>
-    :PROPERTIES:
-    org-clock-in
-    :ID:       c271d82d-e40a-43c3-9c16-753633c1fc14
-    :CUSTOM_ID: 331da6e5-7936-4663-8f58-9d8601b5915c
-    :DRILL_LAST_INTERVAL: 41.7787
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.667
-    :DRILL_EASE: 4.583
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:36>
-    :END:
+#+begin_src emacs-lisp
+(global-set-key (kbd "C-w") (lambda () (interactive) (goto-buffer-or-find-file "/a/t.org")))
+#+end_src
+*** M-w
 org-clock-in
-    [
 #+begin_src emacs-lisp
-    (global-set-key (kbd "M-w") 'org-clock-in)
+(global-set-key (kbd "M-w") 'org-clock-in)
 #+end_src
-    ]
 *** C-M-w
-:PROPERTIES:
-:CUSTOM_ID: cede4936-de2f-404f-a0e6-264f08215a7c
-:END:
 *** C-S-w
-:PROPERTIES:
-:CUSTOM_ID: 3465b986-717a-43b4-910f-3d187789c027
-:END:
-*** [C-e]
+*** C-e
 copy-line
-    [
 #+begin_src emacs-lisp
-; todo, make repeated calls to this append the kills
-  (defun copy-line (&optional arg)
-    "Copy lines (as many as prefix argument) in the kill ring.
+;; todo, make repeated calls to this append the kills
+(defun copy-line (&optional arg)
+  "Copy lines (as many as prefix argument) in the kill ring.
         Ease of use features:
         - Move to start of next line.
         - Appends the copy on sequential calls.
         - Use newline as last char even on the last line of the buffer.
         - If region is active, copy its lines."
-    (interactive "p")
-    (let ((beg (line-beginning-position))
-          (end (line-end-position (or arg 1))))
-      (when mark-active
-        (if (> (point) (mark))
-            (setq beg (save-excursion (goto-char (mark)) (line-beginning-position)))
-          (setq end (save-excursion (goto-char (mark)) (line-end-position)))))
-      (if (eq last-command 'copy-line)
-          (kill-append (buffer-substring beg end) (< end beg))
-        (kill-ring-save beg end)))
-    (kill-append "\n" nil)
-    ;; dun need cuz I have yank-better
-    ;;(beginning-of-line (or (and arg (1+ arg)) 2))
-    (if (and arg (not (= 1 arg))) (message "%d lines copied" arg)))
-
-  (global-set-key (kbd "C-e") 'copy-line)
-#+end_src
-    :PROPERTIES:
-    :ID:       4ff8e0ad-15c0-4cb0-b6cc-314e7b5f80c0
-    :CUSTOM_ID: 24e34f4b-d1e8-4380-933f-ab1f78ebc782
-    :DRILL_LAST_INTERVAL: 2.4849
-    :DRILL_REPEATS_SINCE_FAIL: 1
-    :DRILL_TOTAL_REPEATS: 1
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-01-11 Sat 01:30>
-    :END:
-    ]
-*** [M-e]                                                             :drill:
-SCHEDULED: <2014-04-01 Tue>
-    :PROPERTIES:
-    org-clock-in-last
-    :ID:       39424175-21e2-4126-9a51-dea451497841
-    :CUSTOM_ID: 0a771449-0cd5-4dc9-82ca-bcac5f7abd17
-    :DRILL_LAST_INTERVAL: 36.7949
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.0
-    :DRILL_EASE: 3.204
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-23 Sun 01:48>
-    :END:
+  (interactive "p")
+  (let ((beg (line-beginning-position))
+        (end (line-end-position (or arg 1))))
+    (when mark-active
+      (if (> (point) (mark))
+          (setq beg (save-excursion (goto-char (mark)) (line-beginning-position)))
+        (setq end (save-excursion (goto-char (mark)) (line-end-position)))))
+    (if (eq last-command 'copy-line)
+        (kill-append (buffer-substring beg end) (< end beg))
+      (kill-ring-save beg end)))
+  (kill-append "\n" nil)
+  ;; dun need cuz I have yank-better
+  ;;(beginning-of-line (or (and arg (1+ arg)) 2))
+  (if (and arg (not (= 1 arg))) (message "%d lines copied" arg)))
+
+(global-set-key (kbd "C-e") 'copy-line)
+#+end_src
+*** M-e
 org-clock-in-last
-    [
 #+begin_src emacs-lisp
-    (global-set-key (kbd "M-e") 'org-clock-in-last)
+(global-set-key (kbd "M-e") 'org-clock-in-last)
   #+end_src
-    ]
 *** C-M-e
-:PROPERTIES:
-:CUSTOM_ID: 4a7a4324-e03d-43dc-8e9c-9622788519fb
-:END:
 *** C-S-e
-:PROPERTIES:
-:CUSTOM_ID: e202e1d5-b7ac-4171-b86a-b77592344f30
-:END:
-*** [C-r]                                                             :drill:
-SCHEDULED: <2014-04-07 Mon>
-    :PROPERTIES:
-    isearch-backward
-    :ID:       39bcde9c-2b49-401e-9e81-ee42941233bf
-    :CUSTOM_ID: 5c55f461-f43f-493d-81eb-1ca747175ef1
-    :DRILL_LAST_INTERVAL: 42.8284
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.5
-    :DRILL_EASE: 4.122
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-23 Sun 01:51>
-    :END:
+*** C-r
 isearch-backward
-    [
 #+begin_src emacs-lisp
-    (global-set-key (kbd "C-r") 'isearch-backward)
+(global-set-key (kbd "C-r") 'isearch-backward)
 (add-hook 'comint-mode-hook
-            (lambda ()
-              (define-key comint-mode-map (kbd "C-r") 'comint-history-isearch-backward-regexp)))
-
-#+end_src
-    ]
-*** [M-r]                                                             :drill:
-SCHEDULED: <2014-04-30 Wed>
-    :PROPERTIES:
-    org-clock-out
-    :ID:       dc2c7192-6cfb-4c06-bd17-ff2cef3b05a6
-    :CUSTOM_ID: dd9575bd-e471-418e-9519-4fc2b874ddcd
-    :DRILL_LAST_INTERVAL: 59.1432
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.25
-    :DRILL_EASE: 3.59
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-    :END:
+          (lambda ()
+            (define-key comint-mode-map (kbd "C-r") 'comint-history-isearch-backward-regexp)))
+#+end_src
+*** M-r
 org-clock-out
-    [
 #+begin_src emacs-lisp
-    (global-set-key (kbd "M-r") 'org-clock-out)
+(global-set-key (kbd "M-r") 'org-clock-out)
 #+end_src
-    ]
 *** C-M-r
 *** C-S-r
-:PROPERTIES:
-:CUSTOM_ID: 05e2290b-0d2c-407c-9bf0-adc7a008336b
-:END:
-*** [C-a]                                                             :drill:
-SCHEDULED: <2014-03-15 Sat>
-    :PROPERTIES:
-    copy-all
-    :CUSTOM_ID: db4b76df-9420-4256-8242-dc44b56d55d7
-    :ID:       f6b2b504-b88d-418b-b6b0-5e0e582bd205
-    :DRILL_LAST_INTERVAL: 24.4352
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.75
-    :DRILL_EASE: 2.929
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:39>
-    :END:
+*** C-a
 copy buffer
-    [
     #+begin_src emacs-lisp
 (defun copy-all ()
     "Copy entire buffer to clipboard"
@@ -6036,178 +4780,71 @@ copy buffer
     (clipboard-kill-ring-save (point-min) (point-max)))
 (global-set-key (kbd "C-a") 'copy-all)
     #+end_src
-]
-*** [M-a]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    kmacro-start-macro-or-in...
-    :ID:       4019514b-abb1-464e-b4c9-d9ca39af2a82
-    :CUSTOM_ID: e865a1e5-55bf-4a98-a0d0-cb05a88de352
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:40>
-    :END:
+*** M-a
 macro record
-    [
-#+begin_src emacs-lisp
-    (global-set-key (kbd "M-a") 'kmacro-start-macro-or-insert-counter)
-
-#+end_src
-    ]
-*** [C-M-a]                                                           :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    kmacro-end-or-call-macro
-    :ID:       10cdc522-2bea-4601-acf9-ec81a52a34d8
-    :CUSTOM_ID: c6278a5a-024f-4c80-a8d4-65f127fd24a8
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:35>
-    :END:
+#+begin_src emacs-lisp
+(global-set-key (kbd "M-a") 'kmacro-start-macro-or-insert-counter)
+#+end_src
+*** C-M-a
 macro end / call
-    [
 #+begin_src emacs-lisp
-    (global-set-key (kbd "C-M-a") 'kmacro-end-or-call-macro)
-    (add-hook 'perl-mode-hook (lambda () (define-key perl-mode-map (kbd "C-M-a") nil)))
+(global-set-key (kbd "C-M-a") 'kmacro-end-or-call-macro)
+(add-hook 'perl-mode-hook (lambda () (define-key perl-mode-map (kbd "C-M-a") nil)))
 (add-hook 'LaTeX-mode-hook (lambda () (define-key LaTeX-mode-map (kbd "C-M-a") nil)))
+(add-hook 'c++-mode-hook
+          (lambda () (define-key c++-mode-map (kbd "C-M-a") nil)))
 (add-hook 'c-mode-hook
           (lambda () (define-key c-mode-map (kbd "C-M-a") nil)))
 
+
 #+end_src
-    ]
 *** C-S-a
-:PROPERTIES:
-:CUSTOM_ID: 649a3fe7-3932-475a-b23c-28db9874de27
-:END:
 *** C-s
-    :PROPERTIES:
-    C-x prefix
-    :ID:       e05a67d7-f7ee-4b23-afb1-0053d5eefb4c
-    :CUSTOM_ID: 01da04da-cdba-493f-892b-c4c064cf937e
-    :END:
 c-x prefix
 
 *** M-s
-:PROPERTIES:
-:CUSTOM_ID: 5e4bf939-90a1-4ace-a7bf-add95c8596d2
-:END:
-*** [C-M-s]                                                           :drill:
-SCHEDULED: <2014-03-18 Tue>
-    :PROPERTIES:
-    split-window-vertically
-    :ID:       18a271e1-c1d2-45e6-aed3-6b81b4b6ea71
-    :CUSTOM_ID: 4b33022d-27f0-4d21-9931-2e2e692790e8
-    :DRILL_LAST_INTERVAL: 26.5334
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.75
-    :DRILL_EASE: 2.929
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:46>
-    :END:
+*** C-M-s
 split-window-vertically
-    [
 #+begin_src emacs-lisp
-    (global-set-key (kbd "C-M-s") 'split-window-vertically)
+(global-set-key (kbd "C-M-s") 'split-window-vertically)
 #+end_src
-    ]
 *** C-S-s
-:PROPERTIES:
-:CUSTOM_ID: 901a2445-200c-42f2-91c6-4309d71b39dd
-:END:
 *** C-d
-:PROPERTIES:
-:CUSTOM_ID: b699614a-9994-4fe7-b2c6-f0fe81b7ad2b
-:END:
     C-c prefix
-*** [M-d]                                                             :drill:
-SCHEDULED: <2014-04-05 Sat>
-    :PROPERTIES:
-    whitespace-cleanup
-    :ID:       58f5421a-9df0-44cd-acb9-d018ccdba58c
-    :CUSTOM_ID: 06bcc5e2-f3a7-41c6-a793-ac6c9813fb6e
-    :DRILL_LAST_INTERVAL: 27.3693
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 6
-    :DRILL_FAILURE_COUNT: 2
-    :DRILL_AVERAGE_QUALITY: 3.417
-    :DRILL_EASE: 2.676
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:36>
-    :END:
-whitespace-cleanup
-    [
-#+begin_src emacs-lisp
-    (global-set-key (kbd "M-d") 'whitespace-cleanup)
-#+end_src
-    ]
-*** [C-M-d]                                                           :drill:
-SCHEDULED: <2014-03-19 Wed>
-:PROPERTIES:
-swap buffer
-:CUSTOM_ID: 8cf6053d-792b-4abd-a3a6-66efd7fbee68
-:ID:       747aabec-b164-4813-93c8-92d5c8778635
-:DRILL_LAST_INTERVAL: 9.5325
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 10
-:DRILL_FAILURE_COUNT: 8
-:DRILL_AVERAGE_QUALITY: 2.636
-:DRILL_EASE: 2.284
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:35>
-:END:
+*** M-d
+*** C-M-d
 swap buffer across windows
-[
 from http://www.emacswiki.org/emacs/TransposeWindows
 #+begin_src emacs-lisp
- (setq swapping-buffer nil)
- (setq swapping-window nil)
-  (defun swap-buffers-in-windows ()
-   "Swap buffers between two windows"
-   (interactive)
-   (if (and swapping-window
-            swapping-buffer)
-       (let ((this-buffer (current-buffer))
-             (this-window (selected-window)))
-         (if (and (window-live-p swapping-window)
-                  (buffer-live-p swapping-buffer))
-             (progn (switch-to-buffer swapping-buffer)
-                    (select-window swapping-window)
-                    (switch-to-buffer this-buffer)
-                    (select-window this-window)
-                    (message "Swapped buffers."))
-           (message "Old buffer/window killed.  Aborting."))
-         (setq swapping-buffer nil)
-         (setq swapping-window nil))
-     (progn
-       (setq swapping-buffer (current-buffer))
-       (setq swapping-window (selected-window))
-       (message "Buffer and window marked for swapping."))))
-
- (global-set-key (kbd "C-M-d") 'swap-buffers-in-windows)
-#+end_src
-]
+(setq swapping-buffer nil)
+(setq swapping-window nil)
+(defun swap-buffers-in-windows ()
+  "Swap buffers between two windows"
+  (interactive)
+  (if (and swapping-window
+           swapping-buffer)
+      (let ((this-buffer (current-buffer))
+            (this-window (selected-window)))
+        (if (and (window-live-p swapping-window)
+                 (buffer-live-p swapping-buffer))
+            (progn (switch-to-buffer swapping-buffer)
+                   (select-window swapping-window)
+                   (switch-to-buffer this-buffer)
+                   (select-window this-window)
+                   (message "Swapped buffers."))
+          (message "Old buffer/window killed.  Aborting."))
+        (setq swapping-buffer nil)
+        (setq swapping-window nil))
+    (progn
+      (setq swapping-buffer (current-buffer))
+      (setq swapping-window (selected-window))
+      (message "Buffer and window marked for swapping."))))
+
+(global-set-key (kbd "C-M-d") 'swap-buffers-in-windows)
+#+end_src
 *** C-S-d
-:PROPERTIES:
-:CUSTOM_ID: d3166178-3d87-4caa-a937-9797fc2b6a39
-:END:
-*** [C-f]
-:PROPERTIES:
-:CUSTOM_ID: 2695ed8a-e0d3-4e84-8688-98e3c50723b0
-:END:
+*** C-f]
 kill-whole-line
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-f") 'kill-whole-line-wrapper)
   (defun kill-whole-line-wrapper (&optional arg)
@@ -6217,17 +4854,20 @@ kill-whole-line
         (kill-whole-line -1)
       (kill-whole-line arg)))
 #+end_src
-    ]
-*** M-f
-:PROPERTIES:
-:CUSTOM_ID: 869f0aec-c739-4fb7-8e3a-8b55ab637765
-:END:
-*** [C-M-f]
-:PROPERTIES:
-:CUSTOM_ID: e7e4dd0b-418f-48ee-b366-9e733e3bec61
-:END:
+*** M-f]
+print-var-at-point
+#+begin_src emacs-lisp
+(defun print-var-at-point ()
+  (interactive)
+  (let ((v (variable-at-point)))
+    (if (symbolp v)
+        (message "%s: %s" v (symbol-value v))
+      (message "no symbol found at point"))))
+(global-set-key (kbd "M-f") 'print-var-at-point)
+#+end_src
+
+*** C-M-f]
 kill rest of line
-    [
 #+begin_src emacs-lisp
 
   (add-hook 'org-mode-hook
@@ -6236,132 +4876,42 @@ kill rest of line
 
     (global-set-key (kbd "C-M-f") 'kill-line)
 #+end_src
-    ]
 *** C-S-f
-:PROPERTIES:
-:CUSTOM_ID: a59eb2ca-9439-4836-81f9-384bc8c07739
-:END:
-*** [C-g]
-SCHEDULED: <2014-01-13 Mon>
-    :PROPERTIES:
-    other-window / cancel
-    :ID:       a4e9c495-02c1-432e-beba-12a9d4d61e8a
-    :CUSTOM_ID: 4af40595-7010-4be6-8cfe-a43797ca6e33
-    :DRILL_LAST_INTERVAL: 2.4849
-    :DRILL_REPEATS_SINCE_FAIL: 1
-    :DRILL_TOTAL_REPEATS: 1
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-01-11 Sat 01:41>
-    :END:
+*** C-g]
 cancel / other window
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-g") 'other-window)
 #+end_src
-    ]
-*** [M-g]                                                             :drill:
-SCHEDULED: <2014-03-13 Thu>
-    :PROPERTIES:
-    abort-recursive-edit
-    :ID:       1e8e0c57-2885-4c0c-9b94-3ec0c02b706e
-    :CUSTOM_ID: fb0b343f-fdff-463a-94f4-3152191e17c4
-    :DRILL_LAST_INTERVAL: 22.1939
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.5
-    :DRILL_EASE: 2.73
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:33>
-    :END:
+*** M-g]
 abort-recursive-edit
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "M-g") 'abort-recursive-edit)
 #+end_src
-    ]
-*** [C-M-g]
-:PROPERTIES:
-:CUSTOM_ID: 327e18af-30b7-47e5-aa53-5f678788b4c1
-:END:
+*** C-M-g]
 gnus
-[
 #+begin_src emacs-lisp
-    (global-set-key (kbd "C-M-g") 'gnus)
+    (global-set-key (kbd "C-M-g") 'mu4e)
 #+end_src
-    ]
 *** C-S-g
-:PROPERTIES:
-:CUSTOM_ID: 1d4edc55-7b30-4648-b869-b82f8f1d7b1a
-:END:
 *** C-z
-    :PROPERTIES:
-    undo-tree-undo
-    :ID:       42d7f2bf-3ba3-488b-b501-bd4680dbb8de
-    :CUSTOM_ID: 707c4938-a790-4da9-8230-61855ea57d09
-    :END:
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-z") 'undo-tree-undo)
 #+end_src
-    ]
 *** M-z
-:PROPERTIES:
-:CUSTOM_ID: a01c110e-9970-4571-84ab-379eecc7dd31
-:END:
-*** [C-M-z]
+*** C-M-z]
 *** C-S-z
-:PROPERTIES:
-:CUSTOM_ID: 3d56370d-11cd-4026-8e6b-3ae9b7b51714
-:END:
 *** C-x
-:PROPERTIES:
-:CUSTOM_ID: ec1403d3-528e-41b1-a195-5563bc93e124
-:END:
 kill-region
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-s") 'kill-region)
 #+end_src
-*** [M-x]                                                             :drill:
-SCHEDULED: <2014-03-31 Mon>
-:PROPERTIES:
-:CUSTOM_ID: bb7c95d5-dd97-439d-bf1f-cdac98d11543
-:ID:       909cf249-c2f2-4251-bf18-c990ca9c6ff9
-:DRILL_LAST_INTERVAL: 21.5453
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.25
-:DRILL_EASE: 2.58
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:33>
-:END:
-append-next-kill
-[
-#+begin_src emacs-lisp
-(global-set-key (kbd "M-x") 'append-next-kill)
-#+end_src
-]
-*** [C-M-x]                                                           :drill:
-SCHEDULED: <2014-03-17 Mon>
-    :PROPERTIES:
-    append-next-kill
-    :ID:       b2b60fb4-95a3-4311-8ccd-7132f03ac9a8
-    :CUSTOM_ID: c988370e-602c-431c-80a9-608459583f8b
-    :DRILL_LAST_INTERVAL: 26.0772
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 1
-    :DRILL_AVERAGE_QUALITY: 3.5
-    :DRILL_EASE: 2.73
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:49>
-    :END:
+*** M-x]
+smex
+#+begin_src emacs-lisp
+(global-set-key (kbd "M-x") 'smex)
+#+end_src
+*** C-M-x]
 cut-to-register
-    [
 #+begin_src emacs-lisp
 ;; same args as copy-to-register
 (defun cut-to-register (register start end &optional delete-flag region)
@@ -6374,16 +4924,8 @@ cut-to-register
 
 (global-set-key (kbd "C-M-x") 'cut-to-register)
 #+end_src
-    ]
 *** C-S-x
-:PROPERTIES:
-:CUSTOM_ID: 0ce7383c-0776-407e-9ac5-981d1476f541
-:END:
 *** C-c
-    :PROPERTIES:
-    :ID:       5416e482-6f36-4d35-84c3-49bb184a53e9
-    :CUSTOM_ID: 400f06e1-8e45-443c-8d7b-3d1bb1176aab
-    :END:
 copy
 #+begin_src emacs-lisp
 (global-set-key (kbd "C-d") 'kill-ring-save)
@@ -6399,56 +4941,18 @@ copy
             (define-key c-mode-base-map (kbd "<deletechar>") 'c-electric-delete-forward)))
 
 #+end_src
-*** [M-c]                                                             :drill:
-SCHEDULED: <2014-03-24 Mon>
-    :PROPERTIES:
-    org-capture
-    :ID:       bf1cb358-ec72-425d-aebb-0c1f0ece7717
-    :CUSTOM_ID: f4c3317a-a317-4d04-8cb7-e46d0716bf1d
-    :DRILL_LAST_INTERVAL: 32.7466
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.0
-    :DRILL_EASE: 3.204
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:53>
-    :END:
+*** M-c]
 org-capture
-    [
 #+begin_src emacs-lisp
   (define-key global-map "\M-c" 'org-capture)
 #+end_src
-]
-*** [C-M-c]                                                           :drill:
-SCHEDULED: <2014-03-24 Mon>
-    :PROPERTIES:
-    copy-to-register
-    :ID:       956fd2ec-ad26-4842-b56c-f2165648c461
-    :CUSTOM_ID: 0a151d99-47ae-4e8f-8407-82e77d24a3e7
-    :DRILL_LAST_INTERVAL: 32.7466
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.0
-    :DRILL_EASE: 3.204
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:51>
-    :END:
+*** C-M-c]
 copy-to-register
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-M-c") 'copy-to-register)
 #+end_src
-]
 *** C-S-c
-:PROPERTIES:
-:CUSTOM_ID: b78d717f-cfb3-477a-b951-63f523635f5c
-:END:
 *** C-v
-:PROPERTIES:
-:CUSTOM_ID: 16411f68-7fe0-49e8-9a73-212471594f9e
-:END:
 yank
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-v") 'yank-better)
@@ -6472,182 +4976,43 @@ yank
 
     (put 'yank-better 'delete-selection 'yank)
 #+end_src
-*** [M-v]                                                             :drill:
-SCHEDULED: <2014-03-11 Tue>
-    :PROPERTIES:
-    insert-register
-    :ID:       7e21df8d-fdf7-47ed-8648-f9d182445145
-    :CUSTOM_ID: d67f6371-a13f-4a75-8d8c-e4013ff4e131
-    :DRILL_LAST_INTERVAL: 2.2172
-    :DRILL_REPEATS_SINCE_FAIL: 1
-    :DRILL_TOTAL_REPEATS: 5
-    :DRILL_FAILURE_COUNT: 2
-    :DRILL_AVERAGE_QUALITY: 2.84
-    :DRILL_EASE: 2.381
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:38>
-    :END:
+*** M-v]
 insert-register
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "M-v") 'insert-register)
 #+end_src
-    ]
-*** [C-M-v]                                                           :drill:
-SCHEDULED: <2014-05-13 Tue>
-    :PROPERTIES:
-    yank pop
-    :ID:       e05d9d8f-1387-44b3-b348-a45cf6083bd2
-    :CUSTOM_ID: 25f86658-9999-40f7-b3a4-615981751b93
-    :DRILL_LAST_INTERVAL: 71.5839
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.75
-    :DRILL_EASE: 4.85
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-    :END:
+*** C-M-v]
 yank-pop
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-v") 'yank-pop)
 #+end_src
-    ]
 *** C-S-v
-:PROPERTIES:
-:CUSTOM_ID: 6732ed10-a473-445d-b14a-5f4c17c6a3ef
-:END:
-*** [C-b]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    delete-other-windows
-    :ID:       c9309da7-6801-4d94-a21e-140f4b258c28
-    :CUSTOM_ID: e682305e-0110-4d2f-afbd-2c401bcb9313
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:34>
-    :END:
+*** C-b]
 delete-other-windows
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-b") 'delete-other-windows)
 #+end_src
-    ]
-*** [M-b]                                                             :drill:
-SCHEDULED: <2014-04-07 Mon>
-    :PROPERTIES:
-    isearch-backward-current-symbol
-    :CUSTOM_ID: 05e3d0db-36dc-455f-8bed-f87886ca6004
-    :ID:       0272efdb-eb85-485c-b24f-410ceabeb330
-    :DRILL_LAST_INTERVAL: 28.6736
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 5
-    :DRILL_FAILURE_COUNT: 1
-    :DRILL_AVERAGE_QUALITY: 3.4
-    :DRILL_EASE: 2.666
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:36>
-    :END:
+*** M-b]
 isearch-backward-current-symbol
-    [
 #+begin_src emacs-lisp
    (global-set-key (kbd "M-b") 'isearch-backward-current-symbol)
 #+end_src
-]
-*** [C-M-b]                                                           :drill:
-SCHEDULED: <2014-04-04 Fri>
-    :PROPERTIES:
-    isearch-current-symbol
-    :ID:       235b96a8-e724-419d-8d07-8d0a021213eb
-    :CUSTOM_ID: 6c63790c-28c1-4b73-96e2-ee859f57e734
-    :DRILL_LAST_INTERVAL: 40.0706
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.75
-    :DRILL_EASE: 2.929
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-23 Sun 02:26>
-    :END:
+*** C-M-b]
 isearch-current-symbol
-    [
     #+begin_src emacs-lisp
 (global-set-key (kbd "C-M-b") 'isearch-current-symbol)
 #+end_src
-]
 *** C-S-b
-:PROPERTIES:
-:CUSTOM_ID: a220d7e0-12df-4d37-a57a-266785e7f3c5
-:END:
-*** [C-tab]                                                           :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    yas-insert-snippet
-    :CUSTOM_ID: edc45592-c69f-4439-8305-48f2c65696c3
-    :ID:       92eac3e1-0675-4746-a130-7539f9bc213a
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:42>
-    :END:
+*** C-tab]
 ---
-[
 in terminal, it's just TAB, duplicate keybind.
-]
-*** [M-tab]                                                           :drill:
-SCHEDULED: <2014-03-14 Fri>
-    :PROPERTIES:
-    indent line
-    :ID:       35b77d8a-9e69-4f8e-a2ac-c78fcf6dc1f5
-    :CUSTOM_ID: 71264957-45fd-455a-a6d1-b08823c02d25
-    :DRILL_LAST_INTERVAL: 23.0811
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 1
-    :DRILL_AVERAGE_QUALITY: 3.75
-    :DRILL_EASE: 2.929
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:35>
-    :END:
+*** M-tab]
 ---
-    [
 in terminal it's duplicated of C-M-i
-]
 *** C-M-tab
-:PROPERTIES:
-:CUSTOM_ID: 33b76824-317c-4657-8a5b-2b126b8f7fc9
-:END:
 *** C-S-tab
-:PROPERTIES:
-:CUSTOM_ID: 89d1aeca-47ed-4e4a-89d2-ff70c06e08c8
-:END:
-*** [C-delete]                                                        :drill:
-SCHEDULED: <2014-05-13 Tue>
-    :PROPERTIES:
-    kill-symbol
-    :ID:       bb7ae41f-8fab-42ee-9338-33dd22d7f173
-    :CUSTOM_ID: 2688b61d-9fdd-44af-b9bd-b126f0da00bd
-    :DRILL_LAST_INTERVAL: 71.5839
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.75
-    :DRILL_EASE: 4.85
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:12>
-    :END:
+*** C-delete]
 kill-symbol
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "<C-delete>") 'kill-symbol)
 (defun kill-symbol (arg)
@@ -6655,55 +5020,16 @@ kill-symbol
     (kill-region (point) (save-excursion (forward-symbol arg) (point))))
 
 #+end_src
-]
 *** M-delete
-:PROPERTIES:
-:CUSTOM_ID: 60747222-b0e5-4983-9bed-e6d44f65483a
-:END:
-*** [C-M-delete]                                                      :drill:
-SCHEDULED: <2014-03-24 Mon>
-    :PROPERTIES:
-    kill-sexp
-    kill-sexp
-    :CUSTOM_ID: 21876759-a8e6-4896-8a08-eda40d0eaff3
-    :ID:       7f2797e1-dd39-4d0a-8b87-264e2757543b
-    :DRILL_LAST_INTERVAL: 28.5089
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 5
-    :DRILL_FAILURE_COUNT: 2
-    :DRILL_AVERAGE_QUALITY: 3.6
-    :DRILL_EASE: 2.802
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-23 Sun 02:27>
-    :END:
+*** C-M-delete]
 kill-sexp
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "<C-M-delete>") 'kill-sexp)
 #+end_src
-    ]
 *** C-S-delete
-:PROPERTIES:
-:CUSTOM_ID: 696e9e0f-f717-44cd-90e7-a73d76a58162
-:END:
 
-*** [C-left-arrow]                                                    :drill:
-SCHEDULED: <2014-03-15 Sat>
-    :PROPERTIES:
-    compile
-    :ID:       fbc09f29-fb89-479f-b509-255352e4e9d1
-    :CUSTOM_ID: b15da91f-0786-49d1-b0b9-331b3b94f6ae
-    :DRILL_LAST_INTERVAL: 24.2738
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 1
-    :DRILL_AVERAGE_QUALITY: 4.0
-    :DRILL_EASE: 3.204
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:24>
-    :END:
+*** C-left-arrow]
 compile / comint search
-    [
 #+begin_src emacs-lisp
 (defun set-p (var)
   (and (bound-and-true-p var)
@@ -6728,99 +5054,34 @@ compile / comint search
             (define-key comint-mode-map (kbd "C-(") 'isearch-backward)))
 
 #+end_src
-]
 *** M-left-arrow
-:PROPERTIES:
-:CUSTOM_ID: 73085b60-95f3-44bf-af71-70d6a7f9b9c6
-:END:
-*** [C-M-left-arrow]                                                  :drill:
-SCHEDULED: <2014-03-10 Mon>
-:PROPERTIES:
+*** C-M-left-arrow]
 org-shiftup
-:CUSTOM_ID: 13faf5d4-34be-4363-948d-4ff04a9f570b
-:ID:       39390478-6d33-460e-ab47-0dc6ac4c5249
-:DRILL_LAST_INTERVAL: 7.6079
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 7
-:DRILL_FAILURE_COUNT: 6
-:DRILL_AVERAGE_QUALITY: 2.886
-:DRILL_EASE: 2.402
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:01>
-:END:
-org-shiftup
-[
 #+begin_src emacs-lisp
  (add-hook 'org-mode-hook
             (lambda () (define-key org-mode-map (kbd "C-M-(") 'org-shiftup)))
 #+end_src
-]
 *** C-S-left-arrow
-:PROPERTIES:
-:CUSTOM_ID: 4e3a7ead-efb5-46d8-9465-1867d47e5ec2
-:END:
-*** [C-right-arrow]                                                   :drill:
-SCHEDULED: <2014-05-13 Tue>
-:PROPERTIES:
-paste selection
-:CUSTOM_ID: 3f3cac16-097d-451a-a14a-da7717d06730
-:ID:       1b0ac338-d87b-4a37-b192-bc4305a337cc
-:DRILL_LAST_INTERVAL: 71.5839
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.75
-:DRILL_EASE: 4.85
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:11>
-:END:
+*** C-right-arrow]
 keyboard-yank-primary
-[
 #+begin_src emacs-lisp
 (defun keyboard-yank-primary ()
   (interactive)
   (let ((mouse-yank-at-point t))
     (mouse-yank-primary nil)))
 ;; paste selection
-(global-set-key (kbd "C-)") 'keyboard-yank-primary)
+(global-set-key (kbd "C-)") 'keyboard-yank-primary) ;; kinesis binding
+(global-set-key (kbd "<S-right>") 'keyboard-yank-primary)
 #+end_src
-]
 *** M-right-arrow
-:PROPERTIES:
-:CUSTOM_ID: 97a4513f-6837-47c5-9e2b-354542d67d29
-:END:
 *** C-M-right-arrow
-:PROPERTIES:
-org-shiftdown
-:CUSTOM_ID: 34e66314-1d97-4eeb-b704-fe0733849ae4
-:END:
-[
 #+begin_src emacs-lisp
  (add-hook 'org-mode-hook
             (lambda () (define-key org-mode-map (kbd "C-M-)") 'org-shiftdown)))
 #+end_src
-]
 *** C-S-right-arrow
-:PROPERTIES:
-:CUSTOM_ID: f441e351-ccd7-4ac1-9a4d-a0a1dd17b73e
-:END:
-*** [C-backspace]                                                     :drill:
-SCHEDULED: <2014-05-13 Tue>
-    :PROPERTIES:
-    backward-kill-symbol
-    :CUSTOM_ID: 85bb4701-42e6-4617-8de8-dfb1f03b0358
-    :ID:       9c0e1f0a-7b45-4670-86a2-9df945142cbe
-    :DRILL_LAST_INTERVAL: 71.5839
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.75
-    :DRILL_EASE: 4.85
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:12>
-    :END:
+*** C-backspace]
 backward-kill-symbol
-    [
 #+begin_src emacs-lisp
 (global-set-key (kbd "<C-backspace>") 'backward-kill-symbol)
 (add-hook 'comint-mode-hook
@@ -6830,146 +5091,46 @@ backward-kill-symbol
     (interactive "p")
     (kill-region (point) (save-excursion (backward-symbol arg) (point))))
 #+end_src
-]
 *** M-backspace
-:PROPERTIES:
-:CUSTOM_ID: d4b3e996-208a-4b6d-a747-076e56bd7da3
-:END:
-*** [C-M-backspace]                                                   :drill:
-SCHEDULED: <2014-03-18 Tue>
-:PROPERTIES:
-:ID:       1030c81d-2cc2-42ba-8aa5-fe98271a00f2
-:DRILL_LAST_INTERVAL: 26.5334
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.75
-:DRILL_EASE: 2.929
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:46>
-:CUSTOM_ID: 606b0991-7431-4a8a-a909-b872e104cc88
-:END:
+*** C-M-backspace]
 backward-kill-sexp
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "<C-M-backspace>") 'backward-kill-sexp)
 #+end_src
-    ]
 *** C-S-backspace
-:PROPERTIES:
-:CUSTOM_ID: 9c826109-76fd-403e-b15e-ceee5f925f6c
-:END:
 *** C-f7
-:PROPERTIES:
-:CUSTOM_ID: 8e4b9a2c-35ff-4300-91ff-65d19d6b2fde
-:END:
 *** M-f7
-:PROPERTIES:
-:CUSTOM_ID: 390a5b78-f5fe-41b6-bb36-ea9c81806989
-:END:
 *** C-M-f7
-:PROPERTIES:
-:CUSTOM_ID: a8e9d8e4-4f29-4da6-a7b8-3d136a3e1c18
-:END:
 *** C-S-f7
-:PROPERTIES:
-:CUSTOM_ID: 60bb5cd8-aeb3-4014-81f2-4cee72e9547c
-:END:
 
 ** right primary
-*** [C-*]                                                             :drill:
-SCHEDULED: <2014-03-16 Sun>
-    :PROPERTIES:
-    split-window-horizontally
-    :ID:       c9f11b06-583f-48e5-8d0a-56107feb0010
-    :CUSTOM_ID: f745b337-8b65-44cc-849a-5e0953c9ebd9
-    :DRILL_LAST_INTERVAL: 13.9711
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 6
-    :DRILL_FAILURE_COUNT: 3
-    :DRILL_AVERAGE_QUALITY: 2.982
-    :DRILL_EASE: 2.447
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:04>
-    :END:
+*** C-*]
 split-window-horizontally
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-*") 'split-window-horizontally)
 #+end_src
-    ]
 *** M-*
-*** [C-M-*]                                                           :drill:
-SCHEDULED: <2014-03-17 Mon>
-:PROPERTIES:
-calc-dispatch
-:CUSTOM_ID: 5dbe3437-7364-4802-b558-00b2d5faacf6
-:ID:       2cffe3fb-a21a-4a49-83f8-65218c7a45a2
-:DRILL_LAST_INTERVAL: 15.2345
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 7
-:DRILL_FAILURE_COUNT: 2
-:DRILL_AVERAGE_QUALITY: 2.893
-:DRILL_EASE: 2.405
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:09>
-:END:
+*** C-M-*]
 calc-dispatch
-[
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-M-*") 'calc-dispatch)
 #+end_src
-]
 *** C-S-*
-:PROPERTIES:
-:CUSTOM_ID: 8c414142-8a42-46df-9ab2-898f1be636c8
-:END:
-*** [C-9]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-:PROPERTIES:
-:ID:       eda4444e-f1c4-4db7-918d-96789f6a0b2b
-:CUSTOM_ID: 43d14154-2722-4ba5-b547-1b78c6274ebf
-:DRILL_LAST_INTERVAL: 50.6823
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 5.0
-:DRILL_EASE: 5.815
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:40>
-:END:
+*** C-9]
 delete-window-or-exit
-[
 #+begin_src emacs-lisp
-  (global-set-key (kbd "C-9") 'delete-window-or-exit)
+(global-set-key (kbd "C-9") 'delete-window-or-exit)
 
-  (defun delete-window-or-exit ()
-    "Delete window or exit emacs."
-    (interactive)
-    (if (condition-case nil (delete-window) (error t))
-        (if (or (boundp 'server-process) (> (length (frame-list)) 1))
-            (delete-frame)
-          (save-buffers-kill-terminal t))))
-
-#+end_src
-]
-*** [M-9]                                                             :drill:
-SCHEDULED: <2014-03-12 Wed>
-    :PROPERTIES:
-    kill-buffer-and-window
-    :CUSTOM_ID: 9dc95338-4321-4354-9de2-69409f383a10
-    :ID:       24b7dd06-c5cc-4264-954f-d8190d44c1bf
-    :DRILL_LAST_INTERVAL: 20.7344
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.75
-    :DRILL_EASE: 2.928
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:33>
-    :END:
+(defun delete-window-or-exit ()
+  "Delete window or exit emacs."
+  (interactive)
+  (if (condition-case nil (delete-window) (error t))
+      (if (or (boundp 'server-process) (> (length (frame-list)) 1))
+          (progn (basic-save-buffer) (delete-frame))
+        (save-buffers-kill-terminal t))))
+#+end_src
+*** M-9]
 kill-buffer
-    [
     #+begin_src emacs-lisp
 (defun kill-buffer-no-ido ()
 "kill-buffer, avoid the ido remapping"
@@ -6977,76 +5138,28 @@ kill-buffer
   (kill-buffer))
 (global-set-key (kbd "M-9") 'kill-buffer-no-ido)
     #+end_src
-]
 strangely, in simple mode, this is overridden.
 I found this map to override, but it didn't work, so it seems its being bound some other way.
 I did a grep of the emacs sources, but couldn't find anything.
 (define-key universal-argument-map [?9] nil)
 
-*** [C-M-9]                                                           :drill:
-SCHEDULED: <2014-03-17 Mon>
-    :PROPERTIES:
-    kill client buffer
-    :ID:       2046ac28-1c06-410b-bdd9-39eaeada50c0
-    :CUSTOM_ID: ffe9f636-31e5-48ba-b8fe-7c158ace744c
-    :DRILL_LAST_INTERVAL: 25.6978
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.0
-    :DRILL_EASE: 3.204
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:41>
-    :END:
+*** C-M-9]
 end server edit
-    ,save & kill buffer it was opened externally via emacsclient
+    ,save & kill buffer if it was opened externally via emacsclient
 
- [
     #+begin_src emacs-lisp
-      (defun server-edit-save ()
-        (interactive)
-        (save-buffer)
-        (server-edit))
-      (global-set-key (kbd "C-M-9") 'server-edit-save)
+(defun server-edit-save ()
+  (interactive)
+  (save-buffer)
+  (server-edit))
+(global-set-key (kbd "C-M-9") 'server-edit-save)
     #+end_src
-]
 *** C-S-9
-:PROPERTIES:
-:CUSTOM_ID: 56d86cb3-cb86-42d8-9516-d7f2e086d88a
-:END:
-*** [C-u]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    :ID:       a254c137-8a33-440d-b71e-5fbf9a21e2f5
-    :CUSTOM_ID: 327992c0-6eba-4935-aec1-49871c2a8619
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:45>
-    :END:
+*** C-u]
 universal-argument
 *** M-u
-*** [C-M-u]                                                           :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    search-keybind
-    :ID:       a2e31aed-143f-4aa2-841b-857729417993
-    :CUSTOM_ID: 62735d64-b89a-46b7-b32e-2453b651039d
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:43>
-    :END:
+*** C-M-u]
 search-keybind
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-M-u") 'search-keybind)
 
@@ -7059,37 +5172,12 @@ search-keybind
       (delete-windows-on "*Help*")
       ))
 #+end_src
-    ]
 *** C-S-u
-:PROPERTIES:
-:CUSTOM_ID: 7f72dfa0-ba8e-4cd5-b25b-8ff6066464e6
-:END:
 *** C-i
-:PROPERTIES:
-:CUSTOM_ID: 3124e200-1d6e-4ad2-9a36-0d03e1e7dc38
-:END:
 -----
 *** M-i
-:PROPERTIES:
-:CUSTOM_ID: 95ab2045-88bf-4656-b8b1-6cebc87b89e0
-:END:
-*** [C-M-i]                                                           :drill:
-SCHEDULED: <2014-03-17 Mon>
-    :PROPERTIES:
-    query-replace-regexp
-    :CUSTOM_ID: a3260b61-7c51-4d97-9a91-3ed702c5ae29
-    :ID:       93f569b8-4bc8-49e1-a38e-ced3d3198ce8
-    :DRILL_LAST_INTERVAL: 26.3579
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 1
-    :DRILL_AVERAGE_QUALITY: 4.0
-    :DRILL_EASE: 3.204
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:45>
-    :END:
+*** C-M-i]
 query-replace-regexp
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-M-i") 'query-replace-regexp)
  (add-hook 'flyspell-mode-hook
@@ -7098,111 +5186,33 @@ query-replace-regexp
             (lambda () (define-key text-mode-map (kbd "C-M-i") nil)))
 
 #+end_src
-    ]
 *** C-S-i
-:PROPERTIES:
-:CUSTOM_ID: 076edcc2-040e-4371-9851-4e587766e1fe
-:END:
-*** [C-o]                                                             :drill:
-SCHEDULED: <2014-05-13 Tue>
-    :PROPERTIES:
-    occur
-    :ID:       a502687a-24b4-4b73-9abc-bc85b89ab235
-    :CUSTOM_ID: 82215193-63b3-4d63-8f70-d11a328fe72d
-    :DRILL_LAST_INTERVAL: 71.5839
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.75
-    :DRILL_EASE: 4.85
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-    :END:
+*** C-o]
 occur
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-o") 'occur)
-#+end_src
-    ]
-*** M-o
-:PROPERTIES:
-:CUSTOM_ID: 8c58b99d-b1e4-4270-8d4a-8ae72e2a6470
-:END:
-*** [C-M-o]                                                           :drill:
-SCHEDULED: <2014-03-12 Wed>
-    :PROPERTIES:
-    ido-goto-symbol
-    :CUSTOM_ID: 05d1ef50-43ee-46d7-b1ad-dd952543ab45
-    :ID:       6dfcaa31-d223-4a14-904e-2f2395b2cf75
-    :DRILL_LAST_INTERVAL: 10.3122
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 9
-    :DRILL_FAILURE_COUNT: 9
-    :DRILL_AVERAGE_QUALITY: 2.994
-    :DRILL_EASE: 2.453
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:09>
-    :END:
-ido-goto-symbol
-    [
+#+end_src
+*** M-o
+*** C-M-o]
+counsel-imenu
 #+begin_src emacs-lisp
-  (global-set-key (kbd "C-M-o") 'ido-goto-symbol)
+  (global-set-key (kbd "C-M-o") 'counsel-imenu)
 #+end_src
-    ]
 *** C-S-o
-:PROPERTIES:
-:CUSTOM_ID: 7eacf048-4da8-4b2b-8a51-a4772111e285
-:END:
-*** [C-p]                                                             :drill:
-SCHEDULED: <2014-03-15 Sat>
-    :PROPERTIES:
-    move-mouse-to-point
-    :ID:       6b1abcf6-7f95-45c4-a87f-0e86c43c5af1
-    :CUSTOM_ID: 9c2e2ba9-f34e-48fe-b4ff-b9826882c1cc
-    :DRILL_LAST_INTERVAL: 23.5247
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.5
-    :DRILL_EASE: 2.73
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:41>
-    :END:
+*** C-p]
 move-mouse-to-point
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-p") 'move-mouse-to-point)
 #+end_src
-]
 *** M-p
-*** [C-M-p]                                                     :drill:leech:
-    :PROPERTIES:
-    delete-horizontal-space
-    :ID:       e2972d5b-28e7-46aa-896f-66d68a6df0de
-    :CUSTOM_ID: d55616d3-a3f6-4e83-8807-748578a7b726
-    :DRILL_LAST_INTERVAL: 0.0
-    :DRILL_REPEATS_SINCE_FAIL: 0
-    :DRILL_TOTAL_REPEATS: 10
-    :DRILL_FAILURE_COUNT: 16
-    :DRILL_AVERAGE_QUALITY: 2.433
-    :DRILL_EASE: 2.18
-    :DRILL_LAST_QUALITY: 2
-    :DRILL_LAST_REVIEWED: <2014-04-14 Mon 11:31>
-    :END:
+*** C-M-p]
 delete-horizontal-space
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-p") 'delete-horizontal-space)
 #+end_src
-    ]
 *** C-S-p
-:PROPERTIES:
-:CUSTOM_ID: f0cffe8d-d2cb-4f5d-a3f2-fa900e093ef7
-:END:
-*** [C-j]                                                             :drill:
-SCHEDULED: <2014-03-15 Sat>
+*** C-j]
 pop-to-mark
-    [
 #+begin_src emacs-lisp
 (defun my-pop-to-mark-command ()
   "Jump to mark, and pop a new position for mark off the ring.
@@ -7221,211 +5231,56 @@ pop-to-mark
             (define-key lisp-interaction-mode-map (kbd "C-j") nil)))
 
 #+end_src
-]
-*** [M-j]                                                             :drill:
-SCHEDULED: <2014-03-13 Thu>
-    :PROPERTIES:
-    previous-error
-    :ID:       cb5f0e6f-815d-488f-bfb2-5d31bd5dc215
-    :CUSTOM_ID: 474a3e12-95ac-4f43-b83a-36716f3e6f76
-    :DRILL_LAST_INTERVAL: 21.5453
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.25
-    :DRILL_EASE: 2.58
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:39>
-    :END:
+*** M-j]
 previous-error
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "M-j") 'previous-error)
 #+end_src
-    ]
-*** [C-M-j]
+*** C-M-j]
 
 register prefix
-[
-    :PROPERTIES:
-    :CUSTOM_ID: ebcf7c71-3c93-431b-af6b-7c5df7f2945e
-    :ID:       d2604f6e-341d-4d57-91c8-ec6f2cdeb901
-    :DRILL_LAST_INTERVAL: 23.5247
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.5
-    :DRILL_EASE: 2.73
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:45>
-    :END:
 #+begin_src emacs-lisp
 (define-key global-map (kbd "C-M-j") ctl-x-r-map)
 (define-key ctl-x-r-map "m" 'kmacro-to-register)
 #+end_src
-    ]
 
 *** C-S-j
-:PROPERTIES:
-:CUSTOM_ID: 381a6c7c-e763-4d9a-86f5-55a5e0afcee1
-:END:
-*** [C-k]                                                             :drill:
-SCHEDULED: <2014-05-13 Tue>
-    :PROPERTIES:
-    jump to register
-    :CUSTOM_ID: 25a7ba1c-ddf3-47f1-9516-914a552e7a36
-    :ID:       095be13e-f98c-4f42-9353-08329fa47d06
-    :DRILL_LAST_INTERVAL: 71.5839
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.75
-    :DRILL_EASE: 4.85
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-    :END:
+*** C-k]
 jump-to-register
-    [
 #+begin_src emacs-lisp
 
     (global-set-key (kbd "C-k") 'jump-to-register)
 #+end_src
-    ]
-*** [M-k]                                                             :drill:
-SCHEDULED: <2014-03-15 Sat>
-    :PROPERTIES:
-    next-error
-    :ID:       c9f19dcc-4c14-4bdd-b350-c426dff14189
-    :CUSTOM_ID: a96691bb-9e4c-414b-a093-d9961d453e21
-    :DRILL_LAST_INTERVAL: 24.4352
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.75
-    :DRILL_EASE: 2.929
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:40>
-    :END:
+*** M-k]
 next-error
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "M-k") 'next-error)
 #+end_src
-    ]
-*** [C-M-k]                                                           :drill:
-SCHEDULED: <2014-03-21 Fri>
-:PROPERTIES:
+*** C-M-k]
 man
-:CUSTOM_ID: f61ea4ea-4597-422e-b7e3-d3cfad82603d
-:ID:       4c874a82-22dd-4bc2-a0ac-24420c30b888
-:DRILL_LAST_INTERVAL: 29.8228
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.25
-:DRILL_EASE: 3.589
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:46>
-:END:
-man
-[
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-k") 'man)
 #+end_src
-]
 *** C-S-k
-:PROPERTIES:
-:CUSTOM_ID: da51b99a-1782-45ad-92be-f4c0a645bea8
-:END:
-*** [C-l]                                                             :drill:
-SCHEDULED: <2014-05-13 Tue>
-    :PROPERTIES:
-    ido-switch-buffer
-    :ID:       3c7fabd9-572d-4945-ab4b-d7a8dc2cd9c5
-    :CUSTOM_ID: 8a7572bd-4b5e-4464-b937-3d35adb1783f
-    :DRILL_LAST_INTERVAL: 71.5839
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.75
-    :DRILL_EASE: 4.85
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-    :END:
-ido-switch-buffer
-    [
+*** C-l]
+ivy-switch-buffer
 #+begin_src emacs-lisp
-    (global-set-key (kbd "C-l") 'ido-switch-buffer)
+    (global-set-key (kbd "C-l") 'ivy-switch-buffer)
 #+end_src
-    ]
 *** M-l
-:PROPERTIES:
-:CUSTOM_ID: 27f47c6c-36ad-430e-b4b0-5e96b635bf36
-:END:
 
-*** [C-M-l]                                                           :drill:
-SCHEDULED: <2014-04-04 Fri>
-    :PROPERTIES:
-    move cursor top bottom mid
-    :ID:       37a3ccad-9b61-44b0-bddb-219a024cd963
-    :CUSTOM_ID: 24b660d4-3ec4-4416-8a6a-b8224ed1ee8b
-    :DRILL_LAST_INTERVAL: 25.8141
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 5
-    :DRILL_FAILURE_COUNT: 1
-    :DRILL_AVERAGE_QUALITY: 3.0
-    :DRILL_EASE: 2.456
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:36>
-    :END:
+*** C-M-l]
 move cursor top bottom mid, comint clear screen
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-l") 'move-to-window-line-top-bottom)
 #+end_src
-    ]
 *** C-S-l
-:PROPERTIES:
-:CUSTOM_ID: c355178f-c9b4-4ae7-9627-b4117fef45b9
-:END:
-*** [C-;]                                                             :drill:
-SCHEDULED: <2014-03-19 Wed>
-    :PROPERTIES:
-    comment-dwim
-    :CUSTOM_ID: 7e3710eb-5460-4460-8bf0-488302e4ce35
-    :ID:       1c1b7a4a-484b-4faf-ae20-65d096ff2574
-    :DRILL_LAST_INTERVAL: 27.9041
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.0
-    :DRILL_EASE: 3.204
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:45>
-    :END:
+*** C-;]
 used in flyspell, not sure what for, otherwise unbound
 *** M-;
-:PROPERTIES:
-:CUSTOM_ID: 211e76d9-d89a-4cc6-abce-69397d456fda
-:END:
 comment-dwim
-*** [C-M-;]                                                           :drill:
-SCHEDULED: <2014-04-07 Mon>
-    :PROPERTIES:
-    comment-current-line-dwim
-    :ID:       9ff312cc-f460-4f5d-9e4b-37f7ed538209
-    :CUSTOM_ID: 28680a96-5223-4632-80b9-b1facdd541e7
-    :DRILL_LAST_INTERVAL: 42.8284
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.5
-    :DRILL_EASE: 4.122
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-23 Sun 01:51>
-    :END:
+*** C-M-;]
 comment-current-line-dwim
-    [
 #+begin_src emacs-lisp
   (defun comment-current-line-dwim ()
     "Comment or uncomment the current line."
@@ -7437,110 +5292,31 @@ comment-current-line-dwim
     (move-beginning-of-line 2))
   (global-set-key (kbd "C-M-;") 'comment-current-line-dwim)
 #+end_src
-    ]
 *** C-S-;
-:PROPERTIES:
-:CUSTOM_ID: c9f00d6c-f9d2-420f-a08e-21ea78023066
-:END:
-*** [C-m]
-:PROPERTIES:
-:CUSTOM_ID: deee53ba-dfa2-4910-894c-55ae98d11aa4
-:END:
+*** C-m]
 *** M-m
-:PROPERTIES:
-:CUSTOM_ID: f7237459-96b6-4de9-937f-5fbfa9ca5b1e
-:END:
-*** [C-M-m]                                                           :drill:
-SCHEDULED: <2014-03-11 Tue>
-    :PROPERTIES:
-    recursive grep
-    :CUSTOM_ID: f283f705-cba0-45db-b80f-5d20415b2eee
-    :ID:       b952fa90-b492-4f85-9d8e-5cd24c060b94
-    :DRILL_LAST_INTERVAL: 9.1491
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 7
-    :DRILL_FAILURE_COUNT: 3
-    :DRILL_AVERAGE_QUALITY: 2.924
-    :DRILL_EASE: 2.42
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:05>
-    :END:
+*** C-M-m]
 recursive grep
-    [
 #+begin_src emacs-lisp
   (define-key global-map (kbd "C-M-m") 'rgrep)
 #+end_src
-]
 *** C-S-m
-:PROPERTIES:
-:CUSTOM_ID: dd3136a5-5383-4fc7-8c9f-fcbaba251a76
-:END:
-*** [C-,]                                                             :drill:
-SCHEDULED: <2014-05-13 Tue>
-    :PROPERTIES:
-    ido-find-file
-    :CUSTOM_ID: 6cbf3a85-f260-453a-920b-850ff5e986b1
-    :ID:       df0f3769-bcfc-4cb9-8943-bb86dafb2711
-    :DRILL_LAST_INTERVAL: 71.5839
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.75
-    :DRILL_EASE: 4.85
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-    :END:
-ido-find-file
-    [
+*** C-,]
+counsel-find-file
 #+begin_src emacs-lisp
-    (global-set-key (kbd "C-,") 'ido-find-file)
+    (global-set-key (kbd "C-,") 'counsel-find-file)
 (add-hook 'flyspell-mode-hook
             (lambda () (define-key flyspell-mode-map (kbd "C-,") nil)))
 #+end_src
-    ]
 *** M-,
-*** [C-M-,]                                                           :drill:
-SCHEDULED: <2014-03-19 Wed>
-:PROPERTIES:
-find-file-in-project
-:ID:       fca85295-0567-4443-ac74-a54b93a2e603
-:CUSTOM_ID: bfdf6111-029d-462b-bcca-50a3ed2162d5
-:DRILL_LAST_INTERVAL: 24.3844
-:DRILL_REPEATS_SINCE_FAIL: 5
-:DRILL_TOTAL_REPEATS: 5
-:DRILL_FAILURE_COUNT: 2
-:DRILL_AVERAGE_QUALITY: 3.0
-:DRILL_EASE: 2.456
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-02-23 Sun 01:51>
-:END:
+*** C-M-,]
 find-file-in-project
-[
     #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-,") 'find-file-in-project)
 #+end_src
- ]
 *** C-S-,
-:PROPERTIES:
-:CUSTOM_ID: 74a86b9e-9a56-4f5e-a6eb-9f2cd09da613
-:END:
-*** [C-.]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    recentf-ido-find-file
-    :CUSTOM_ID: 0675c171-8677-44a8-882c-e7ed42715e31
-    :ID:       a600d171-1964-4a81-a39e-cfac4716f96d
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:41>
-    :END:
+*** C-.]
 find recent file
-    [
 Taken from starter kit.
 #+begin_src emacs-lisp
   (defun recentf-ido-find-file ()
@@ -7569,30 +5345,16 @@ Taken from starter kit.
  (add-hook 'php-mode-hook
             (lambda () (define-key php-mode-map (kbd "C-.") nil)))
 #+end_src
-]
 *** M-.
 *** C-M-.
-:PROPERTIES:
-:CUSTOM_ID: 824d422c-67b6-4d68-af11-6a2135e528f5
-:END:
 -
-[
 #+begin_src emacs-lisp
   (define-key dot-mode-map (kbd "C-M-.") nil)
 ;;  (global-set-key (kbd "C-M-.") 'execute-extended-command)
 #+end_src
-    ]
 *** C-S-.
-:PROPERTIES:
-:CUSTOM_ID: 346effe7-027b-4c4a-a236-3bc6ef541a0c
-:END:
-*** [C-/]                                                             :drill:
-:PROPERTIES:
-:CUSTOM_ID: 941a7fa8-84b9-434d-89a0-1487385ec479
-:ID:       1bf4af8d-58bb-4b58-af60-2ed87f32f4eb
-:END:
+*** C-/]
 join lines
-    [
 #+begin_src emacs-lisp
   (defun vim-style-join-line ()
     (interactive)
@@ -7600,19 +5362,11 @@ join lines
   (global-set-key (kbd "C-/") 'vim-style-join-line)
 (define-key undo-tree-map (kbd "C-/") nil)
 #+end_src
-    ]
 *** M-/
-:PROPERTIES:
-:CUSTOM_ID: f65acefa-7e11-438e-a59c-42a9c7c71607
-:END:
-*** [C-M-/]                                                           :drill:
-:PROPERTIES:
-:CUSTOM_ID: 37f67593-4f60-4d3b-9aad-6c9bc4882443
-:ID:       c41dd5ab-619f-40fe-9471-9ba59d0fef46
-:END:
-copy-variable
-[
+*** C-M-/]
+copy-buffer-file-name
 #+begin_src emacs-lisp
+;; haven't bound this atm, todo, maybe someday?
 (defun copy-variable (variable)
   (interactive
    (let ((v (variable-at-point))
@@ -7631,64 +5385,32 @@ copy-variable
      (list (if (equal val "")
               v (intern val)))))
   (kill-new (symbol-value variable)))
-(global-set-key (kbd "C-M-/") 'copy-variable)
+
+(defun copy-buffer-file-name ()
+  (interactive)
+  (let ((name (cond
+               ((derived-mode-p 'mu4e-view-mode) (mu4e-message-field-at-point :path))
+               (t buffer-file-name))
+              ))
+    (kill-new name)
+    (message name)))
+
+
+(global-set-key (kbd "C-M-/") 'copy-buffer-file-name)
+
 
 #+end_src
-]
 *** C-S-/
-:PROPERTIES:
-:CUSTOM_ID: ff612b05-8a3f-4599-a95b-f8af19b71b47
-:END:
-*** [C-8]                                                             :drill:
-SCHEDULED: <2014-03-13 Thu>
-:PROPERTIES:
+*** C-8]
 calc-embedded-word
-:CUSTOM_ID: 251c4a1a-a683-4804-a706-d0d3752e42fa
-:ID:       8084cd41-1833-4e16-ac01-60a5738d0bf3
-:DRILL_LAST_INTERVAL: 22.2211
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 1
-:DRILL_AVERAGE_QUALITY: 3.5
-:DRILL_EASE: 2.73
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:35>
-:END:
-calc-embedded-word
-[
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-8") 'calc-embedded-word)
 #+end_src
-]
 *** M-8
-:PROPERTIES:
-:CUSTOM_ID: 34f4f850-c3e4-4724-aabc-08eee19f034a
-:END:
 *** C-M-8
-:PROPERTIES:
-:CUSTOM_ID: 52191c76-756e-4dcc-87a5-2b84c550db5f
-:END:
 *** C-S-8
-:PROPERTIES:
-:CUSTOM_ID: 3f677c1a-7011-467e-ae4c-4b944807376b
-:END:
-*** [C-up-arrow]                                                      :drill:
-SCHEDULED: <2014-03-14 Fri>
-    :PROPERTIES:
-    back defun/headline
-    :CUSTOM_ID: f47d312a-063d-42ed-a352-176298a2cb0c
-    :ID:       93fe8dac-4206-4131-9264-3411e6467b01
-    :DRILL_LAST_INTERVAL: 23.4066
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 5
-    :DRILL_FAILURE_COUNT: 3
-    :DRILL_AVERAGE_QUALITY: 3.2
-    :DRILL_EASE: 2.554
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 18:04>
-    :END:
+*** C-up-arrow]
 org prev headline
-    [
 #+begin_src emacs-lisp
   (define-key undo-tree-map "\C-_" nil)
 ;; disabled just because i don't want to accidentally hit it
@@ -7702,36 +5424,15 @@ org prev headline
 #+end_src
 
 
-]
 *** M-up-arrow
-:PROPERTIES:
-:CUSTOM_ID: 30f87801-2c2d-4722-9348-fb38ea6c09b0
-:END:
 *** C-M-up-arrow
-*** C-S-up-arrow        :drill:
+*** C-S-up-arrow
 winner undo
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "<C-S-_>") 'winner-undo)
 #+end_src
-    ]
-*** [C-down-arrow]                                                    :drill:
-SCHEDULED: <2014-03-13 Thu>
-    :PROPERTIES:
-    forward dfun/headline
-    :CUSTOM_ID: 27435136-b3d7-4f25-aa85-2a7363a7f366
-    :ID:       da405d83-b0af-4778-9703-a3f109a1233d
-    :DRILL_LAST_INTERVAL: 10.7692
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 6
-    :DRILL_FAILURE_COUNT: 1
-    :DRILL_AVERAGE_QUALITY: 3.167
-    :DRILL_EASE: 2.537
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:09>
-    :END:
+*** C-down-arrow]
 org next headline
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "<C-kp-enter>") 'end-of-defun)
 
@@ -7742,25 +5443,9 @@ org next headline
 #+end_src
 
 
-    ]
 *** M-down-arrow
-*** [C-M-down-arrow]                                                  :drill:
-SCHEDULED: <2014-03-20 Thu>
-:PROPERTIES:
-toggle-mark-activation
-:ID:       c57f3bab-8ea1-423d-b759-e1ec2586753c
-:CUSTOM_ID: 3bcb35fd-6d54-4213-b94f-2739c0bc0041
-:DRILL_LAST_INTERVAL: 17.6506
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 7
-:DRILL_FAILURE_COUNT: 4
-:DRILL_AVERAGE_QUALITY: 3.661
-:DRILL_EASE: 2.851
-:DRILL_LAST_QUALITY: 5
-:DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10>
-:END:
+*** C-M-down-arrow]
 toggle-mark-activation
-[
 #+begin_src emacs-lisp
   (defun toggle-mark-activation ()
     (interactive)
@@ -7770,114 +5455,39 @@ toggle-mark-activation
 
   (global-set-key (kbd "<C-M-kp-enter>") 'toggle-mark-activation)
 #+end_src
-]
 winner redo
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "<C-S-kp-enter>") 'winner-redo)
 #+end_src
-    ]
-
-*** [C-S-down-arrow]                                                             :drill:
-SCHEDULED: <2014-03-19 Wed>
-    :PROPERTIES:
-    smex-major-mode-commands
-    :CUSTOM_ID: 1434bdd0-c5a8-4c96-9b92-9474e88fd1c5
-    :ID:       1e992e46-ec69-416c-b7d7-7c87da109b43
-    :DRILL_LAST_INTERVAL: 24.3844
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 5
-    :DRILL_FAILURE_COUNT: 2
-    :DRILL_AVERAGE_QUALITY: 3.0
-    :DRILL_EASE: 2.456
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-23 Sun 02:28>
-    :END:
+
+*** C-S-down-arrow]
 m-x for major mode
-    [
     #+begin_src emacs-lisp
   (global-set-key (kbd "<C-S-kp-enter>") 'smex-major-mode-commands)
 #+end_src
-]
 *** C-lbracket
-:PROPERTIES:
-:CUSTOM_ID: 9d9916dd-3280-47dd-aab1-cd28d5ebfe15
-:END:
 ----
 *** M-lbracket
-*** [C-M-lbracket]                                                    :drill:
-SCHEDULED: <2014-03-15 Sat>
-:PROPERTIES:
+*** C-M-lbracket]
 scroll-right
-:CUSTOM_ID: 7411b1a5-c8fa-4bcc-8788-798e5635dd62
-:ID:       0bf13532-1df9-4eb3-953c-10901f2a5da5
-:DRILL_LAST_INTERVAL: 23.5247
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.5
-:DRILL_EASE: 2.73
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:25>
-:END:
-scroll-right
-[
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-[") 'scroll-right)
     #+end_src
-]
 *** C-S-lbracket
-*** [C-rbracket]
-:PROPERTIES:
-:CUSTOM_ID: 21b38c6b-3a46-4a08-8eca-d44abb148287
-:END:
+*** C-rbracket]
 fill-paragraph
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-]") 'fill-paragraph)
 #+end_src
 *** M-rbracket
-*** [C-M-rbracket]                                                    :drill:
-SCHEDULED: <2014-03-15 Sat>
-:PROPERTIES:
-scroll-left
-:CUSTOM_ID: c9c18f48-d0ca-4a1b-a751-7165f40118a3
-:ID:       ff008422-b6f5-4770-9e53-e6acdac90b45
-:DRILL_LAST_INTERVAL: 24.4352
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 3.75
-:DRILL_EASE: 2.929
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:44>
-:END:
+*** C-M-rbracket]
 scroll-left
-[
     #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-]") 'scroll-left)
     #+end_src
-]
 *** C-S-rbracket
-:PROPERTIES:
-:CUSTOM_ID: d42245ca-3246-477b-bda9-8776cd668cd1
-:END:
-*** [C-return]                                                        :drill:
-SCHEDULED: <2014-03-12 Wed>
-    :PROPERTIES:
-    newline next line
-    :ID:       20e450f0-6467-40f2-bd1b-b4038693e73f
-    :CUSTOM_ID: baf7ea5a-d16d-4fee-a6ce-542cc11beb97
-    :DRILL_LAST_INTERVAL: 20.7344
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.75
-    :DRILL_EASE: 2.928
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:29>
-    :END:
+*** C-return]
 newline-anywhere
-    [
 #+begin_src emacs-lisp
 (defun newline-anywhere ()
   "Add a newline from anywhere in the line."
@@ -7887,38 +5497,16 @@ newline-anywhere
 (global-set-key (kbd "<C-return>") 'newline-anywhere)
 
 #+end_src
-]
-*** [M-return]                                                        :drill:
-SCHEDULED: <2014-03-11 Tue>
-    :PROPERTIES:
-    non-indented newline
-    :ID:       4fc4d372-765e-4e2e-87f4-0a0e1fd93f34
-    :CUSTOM_ID: e6895ad3-a2c8-46c8-abbc-1bba94a88596
-    :DRILL_LAST_INTERVAL: 19.9622
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.5
-    :DRILL_EASE: 2.73
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:30>
-    :END:
+*** M-return]
 plain newline
-    [
 #+begin_src emacs-lisp
 (defun plain-newline ()
 (interactive)
 (insert "\n"))
 (global-set-key (kbd "<M-return>") 'plain-newline)
 #+end_src
-]
 
 *** C-M-return
-:PROPERTIES:
-open newline on previous line
-:CUSTOM_ID: 2a8fc6ea-a550-4437-9e35-3b3f2776788a
-:END:
-[
 #+begin_src emacs-lisp
 (defun newline-anywhere-previous ()
   "Add a newline from anywhere in the line."
@@ -7928,172 +5516,59 @@ open newline on previous line
   (newline-and-indent))
 (global-set-key (kbd "<C-M-return>") 'newline-anywhere-previous)
 #+end_src
-]
 *** C-S-return
-:PROPERTIES:
-:CUSTOM_ID: 787cc59e-ce0f-4291-a9d5-fd4e14b0b83b
-:END:
-*** [C-space]                                                         :drill:
-SCHEDULED: <2014-03-18 Tue>
-:PROPERTIES:
+*** C-space]
 org-edit-special
-:CUSTOM_ID: 132daa1a-8e5f-47f1-a28d-35bee873aeac
-:ID:       3204f2ca-10b2-469b-8b70-fb660e35478a
-:DRILL_LAST_INTERVAL: 41.7787
-:DRILL_REPEATS_SINCE_FAIL: 3
-:DRILL_TOTAL_REPEATS: 3
-:DRILL_FAILURE_COUNT: 0
-:DRILL_AVERAGE_QUALITY: 4.667
-:DRILL_EASE: 4.583
-:DRILL_LAST_QUALITY: 4
-:DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:44>
-:END:
-org-edit-special
-[
 #+begin_src emacs-lisp
+;; commented due to new keyboard needing ctrl-space for mark
 ;; (kbd "<C-space>") does not work, (kbd "C-SPC") should work
-(add-hook 'org-mode-hook
-          (lambda ()
-            (define-key org-mode-map (kbd "C-SPC") 'org-edit-special)
-            ;; org-src-mode-map is broken in git version of emacs.
-            ;; temporarily use this for exiting edit-special mode.
-            (global-set-key (kbd "C-M--") 'org-edit-src-exit)
-            (define-key org-src-mode-map (kbd "C-SPC") 'org-edit-src-exit)))
+;; (add-hook 'org-mode-hook
+;;           (lambda ()
+;;             (define-key org-mode-map (kbd "C-SPC") 'org-edit-special)
+;;             ;; org-src-mode-map is broken in git version of emacs.
+;;             ;; temporarily use this for exiting edit-special mode.
+;;             (global-set-key (kbd "C-M--") 'org-edit-src-exit)
+;;             (define-key org-src-mode-map (kbd "C-SPC") 'org-edit-src-exit)))
 #+end_src
-]
 *** M-space
-:PROPERTIES:
-:CUSTOM_ID: bbffb12e-03f2-4a26-a9e4-fd263ad6b518
-:END:
 *** C-M-space
-:PROPERTIES:
-spell check word
-:CUSTOM_ID: 02359b66-bf6e-4f41-9f03-e83fcbe3e68c
-:END:
-    [
     before or under cursor
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-SPC") 'ispell-word)
 #+end_src
-    ]
 *** C-S-space
-:PROPERTIES:
-:CUSTOM_ID: a28e904f-f2bd-48d3-9718-af3f541e611e
-:END:
 ** left secondary
 *** C-=
-:PROPERTIES:
-:CUSTOM_ID: 6b01dcdd-d1c1-4e3f-9e28-9c3574682f95
-:END:
 *** M-=
-:PROPERTIES:
-:CUSTOM_ID: 6a63486f-ea5b-4ece-a535-5277022e0cde
-:END:
 *** C-M-=
-:PROPERTIES:
-:CUSTOM_ID: 1e245ef6-5bdb-4f99-b8e2-f5d45a7c0847
-:END:
 *** C-S-=
-:PROPERTIES:
-:CUSTOM_ID: 0f9aa2b8-83c7-433c-80e0-f90ee802365f
-:END:
 *** C-1
-:PROPERTIES:
-:CUSTOM_ID: 06374c1c-025b-47c2-90b2-82f37031093b
-:END:
 *** M-1
-:PROPERTIES:
-:CUSTOM_ID: 51810ebd-52f3-4e68-9434-e2347a834787
-:END:
 *** C-M-1
-:PROPERTIES:
-:CUSTOM_ID: 9207526f-a925-4ecc-bd30-98cbd580d67a
-:END:
 *** C-S-1
-:PROPERTIES:
-:CUSTOM_ID: 58a7a929-50b5-4393-9b08-59ad2039b263
-:END:
 *** C-4
-:PROPERTIES:
-:CUSTOM_ID: 24a0c3c4-bce7-4a94-8a31-e5259387c573
-:END:
 *** M-4
-:PROPERTIES:
-:CUSTOM_ID: 2d4fa927-2140-424b-9990-e8f2c3424e57
-:END:
-*** C-M-4                                                             :drill:
+*** C-M-4
 widen
-[
-:PROPERTIES:
-:CUSTOM_ID: 3ff50f5f-f286-4a73-962b-58dbcf3b09b1
-:ID:       addc832b-5547-4d45-a1f5-3e9283920612
-:END:
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-4") 'widen)
 #+end_src
-]
 *** C-S-4
-:PROPERTIES:
-:CUSTOM_ID: ba9ed568-7ba1-4283-b4c7-57fcb9a5a477
-:END:
 *** C-5
-:PROPERTIES:
-:CUSTOM_ID: 83bc2d8a-a225-4b6f-ab98-f47aa6d1e73f
-:END:
 *** M-5
-:PROPERTIES:
-:CUSTOM_ID: 1b8f04c3-91b5-43cd-8a1a-94c8105eff24
-:END:
 *** C-M-5
-:PROPERTIES:
-:CUSTOM_ID: fab28de6-7fe4-45d7-a856-5d29a9085f5d
-:END:
 *** C-S-5
-:PROPERTIES:
-:CUSTOM_ID: b22cdf04-bc77-493b-a65c-5992befc1a62
-:END:
-*** [C-tab-key]                                                       :drill:
-SCHEDULED: <2014-03-12 Wed>
-:PROPERTIES:
-query-replace
-:CUSTOM_ID: 68313551-90cd-47a6-8170-1745348add17
-:ID:       5b315ca6-c623-4b23-bef3-31b325591d01
-:DRILL_LAST_INTERVAL: 20.9905
-:DRILL_REPEATS_SINCE_FAIL: 4
-:DRILL_TOTAL_REPEATS: 4
-:DRILL_FAILURE_COUNT: 2
-:DRILL_AVERAGE_QUALITY: 3.5
-:DRILL_EASE: 2.73
-:DRILL_LAST_QUALITY: 3
-:DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:32>
-:END:
+*** C-tab-key]
 query-replace
-[
 #+begin_src emacs-lisp
 
   (global-set-key (kbd "<C-kp-add>") 'query-replace)
 #+end_src
-]
 *** M-tab-key
 *** C-M-tab-key
 *** C-S-tab-key
-*** [C-t]                                                             :drill:
-SCHEDULED: <2014-03-24 Mon>
-    :PROPERTIES:
-    org change todo state
-    :ID:       b9a6ec32-9b64-403f-be09-73769f778d1f
-    :CUSTOM_ID: aaac3048-9125-4fd5-b8f2-21bafcc1ff1c
-    :DRILL_LAST_INTERVAL: 32.7466
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.0
-    :DRILL_EASE: 3.204
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:53>
-    :END:
+*** C-t]
 org cycle todo / toggle comint motion
-    [
 #+begin_src emacs-lisp
 (add-hook 'org-mode-hook
           (lambda ()
@@ -8134,144 +5609,64 @@ org cycle todo / toggle comint motion
          (define-key map (kbd "<down>") 'my-comint-next-input)
          (goto-char (point-max)))))
 
-(defun ian-sign-email ()
-  (interactive)
-  (insert "Ian Kelling
-https://iankelling.org"))
-
 (eval-after-load "message"
-  '(define-key message-mode-map (kbd "C-t") 'ian-sign-email))
+  '(define-key message-mode-map (kbd "C-t") 'mail-signature))
 #+end_src
 Thanks for the update. I will be enjoying it.
 
 #+RESULTS:
 : comint-toggle-arrow-keys
-    ]
 *** M-t
-:PROPERTIES:
-:CUSTOM_ID: 4542dc3a-d876-4726-8c8e-61c7c9cecd64
-:END:
-*** [C-M-t]                                                           :drill:
-SCHEDULED: <2014-03-15 Sat>
-    :PROPERTIES:
-    org insert timestamp
-    :ID:       ed43d561-cf73-4123-8cf2-12e184f99e0f
-    :CUSTOM_ID: 5bc609b1-9428-4b82-a55d-811fefe65331
-    :DRILL_LAST_INTERVAL: 23.5247
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 3.5
-    :DRILL_EASE: 2.73
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:41>
-    :END:
+*** C-M-t]
 org timestamp
-    [
 #+begin_src emacs-lisp
 (global-set-key (kbd "C-M-t") 'org-time-stamp-with-time)
 #+end_src
-]
 *** C-S-t
-:PROPERTIES:
-:CUSTOM_ID: 6a6fcd06-5822-4a3d-8e2e-1fc0f64357b2
-:END:
 *** C-home
-:PROPERTIES:
-:CUSTOM_ID: 1919659a-b466-4519-9276-8bf06a916066
-:END:
 start of buffer
 *** M-home
-:PROPERTIES:
-:CUSTOM_ID: 29a3b536-201d-4499-b131-afe58e6f45b4
-:END:
 *** C-M-home
-:PROPERTIES:
-:CUSTOM_ID: d9df9b43-357a-43e1-bb1c-47d61f095738
-:END:
 *** C-S-home
-:PROPERTIES:
-:CUSTOM_ID: a91ee772-a59c-4083-a65c-6f9b294b517c
-:END:
 *** C-end
-:PROPERTIES:
-:CUSTOM_ID: 0a7bd629-cbcc-4761-8fe2-cc9370b985a4
-:END:
 end of buffer
 *** M-end
-:PROPERTIES:
-:CUSTOM_ID: 1c215db5-a50c-4718-868a-871d69acf117
-:END:
 *** C-M-end
-:PROPERTIES:
-:CUSTOM_ID: cf2df317-a0b1-41e6-9919-67e77bb796f8
-:END:
 *** C-S-end
-:PROPERTIES:
-:CUSTOM_ID: a4721bb0-9cbc-4f3c-b292-645d5121c839
-:END:
 *** C-f9
-:PROPERTIES:
-:CUSTOM_ID: 014536d9-68e3-46f5-9594-e74fe64f4d9e
-:END:
 *** M-f9
-:PROPERTIES:
-:CUSTOM_ID: 6dee0f1b-3680-4a72-8a80-e31b9c7c219d
-:END:
 *** C-M-f9
-:PROPERTIES:
-:CUSTOM_ID: f5e835dd-e2b8-42eb-b7f1-9ec76c7dfcb8
-:END:
 *** C-S-f9
-:PROPERTIES:
-:CUSTOM_ID: c3aba493-9e85-40b7-989d-7e17ba2b55a7
-:END:
 ** right secondary
 *** C-6
-:PROPERTIES:
-:CUSTOM_ID: e44e584b-d925-4036-9ad5-a90d02e74bef
-:END:
 save-buffers-kill-emacs
-[
 #+begin_src emacs-lisp
 (global-set-key (kbd "C-6") 'save-buffers-kill-emacs)
 #+end_src
-]
 *** M-6
-*** [C-M-6]                                                           :drill:
-:PROPERTIES:
-:CUSTOM_ID: da73de75-0914-4f48-81d5-9b408433b14b
-:ID:       bcf78e2e-810e-4a6d-9056-bd488aaa373b
-:END:
+*** C-M-6]
   insert-small-copyright
-[
 #+begin_src emacs-lisp
 (defun insert-small-copyright ()
     (interactive)
     (beginning-of-line)
     (let ((beg (point)))
-      (insert "Copyright (C) 2016 Ian Kelling\nThis program is under GPL v. 3 or later, see <http://www.gnu.org/licenses/>")
+      (insert "Copyright (C) 2017 Ian Kelling\nThis program is under GPL v. 3 or later, see <http://www.gnu.org/licenses/>")
       (comment-region beg (point))))
 
   (global-set-key (kbd "C-M-6") 'insert-small-copyright)
 #+end_src
-]
 *** C-S-6
 *** C-7
 *** M-7
-*** [C-M-7]              :drill:
-:PROPERTIES:
-:CUSTOM_ID: a68c6b8e-9911-475e-ab35-e239771fe881
-:ID:       ae9704b8-1492-4dc0-806a-dd3407526733
-:END:
+*** C-M-7]
 insert-full-copyright
-[
 #+begin_src emacs-lisp
 (defun insert-full-copyright ()
   (interactive)
   (beginning-of-line)
   (let ((beg (point)))
-    (insert "Copyright (C) 2016 Ian Kelling\n")
+    (insert "Copyright (C) 2017 Ian Kelling\n")
     (insert "\n")
     (insert "This program is free software: you can redistribute it and/or modify\n")
     (insert "it under the terms of the GNU General Public License as published by\n")
@@ -8290,40 +5685,24 @@ insert-full-copyright
 (global-set-key (kbd "C-M-7") 'insert-full-copyright)
 
 #+end_src
-]
 *** C-S-7
-:PROPERTIES:
-:CUSTOM_ID: 05f5737b-a320-403c-a8f1-fa0a02f679e1
-:END:
 *** C-0
-:PROPERTIES:
-:CUSTOM_ID: 96ae2fcc-3a0c-40c4-aef8-06aff3fd42be
-:END:
 text-scale-reset
-[
 #+begin_src emacs-lisp
 (defun text-scale-reset ()
   (interactive)
   (text-scale-set 0))
 (global-set-key (kbd "C-0") 'text-scale-reset)
 #+end_src
-]
 *** M-0
-:PROPERTIES:
-:CUSTOM_ID: c5735fdf-d0d9-468c-917c-3936e409a2bc
-:END:
 *** C-M-0
-:PROPERTIES:
-:CUSTOM_ID: 0e7f83a5-600e-4016-af98-95904300c016
-:END:
 insert-apache
-[
 #+begin_src emacs-lisp
 (defun insert-apache ()
   (interactive)
   (beginning-of-line)
   (let ((beg (point)))
-    (insert "Copyright (C) 2016 Ian Kelling\n")
+    (insert "Copyright (C) 2017 Ian Kelling\n")
     (insert "\n")
     (insert "Licensed under the Apache License, Version 2.0 (the \"License\");\n")
     (insert "you may not use this file except in compliance with the License.\n")
@@ -8339,155 +5718,49 @@ insert-apache
     (comment-region beg (point))))
 (global-set-key (kbd "C-M-0") 'insert-apache)
 #+end_src
-]
 
 *** C-S-0
-:PROPERTIES:
-:CUSTOM_ID: d1706bc7-7cf0-4b49-87d0-15bf76eaca5f
-:END:
 *** C--
-:PROPERTIES:
-:CUSTOM_ID: 3713b701-b31a-4612-b663-f232005b4122
-:END:
 *** M--
-:PROPERTIES:
-:CUSTOM_ID: ca833b78-b279-4d1f-b1c9-6c70fdf20f57
-:END:
 *** C-M--
-:PROPERTIES:
-:CUSTOM_ID: 6febc7ea-9cc7-488c-af34-538b8e69633b
-:END:
 org-edit-src-exit
 *** C-S--
-:PROPERTIES:
-:CUSTOM_ID: c73af1d7-61f2-4c1b-935e-43f077d8d915
-:END:
-*** [C-y]                                                             :drill:
-SCHEDULED: <2014-03-27 Thu>
-    :PROPERTIES:
-    :ID:       4c0f74f8-04ed-40d8-8ec3-6e2bed03c2b9
-    :CUSTOM_ID: 97aee7f1-3647-4602-a65a-45e8a3aa3a7c
-    :DRILL_LAST_INTERVAL: 50.6823
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 3
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 5.0
-    :DRILL_EASE: 5.815
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:45>
-    :END:
+*** C-y]
     undo-tree-redo
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-y") 'undo-tree-redo)
 #+end_src
 
-    ]
 *** M-y
-:PROPERTIES:
-:CUSTOM_ID: 35072ca8-7fd6-4a64-bc7a-2636de575bd1
-:END:
 *** C-M-y
 *** C-S-y
-:PROPERTIES:
-:CUSTOM_ID: 964fa784-37e3-48c6-af4b-c7e91f67a93a
-:END:
 *** C-\
-    :PROPERTIES:
-    sr-speedbar-toggle
-    :CUSTOM_ID: b8ad3ee9-7bf6-4069-a300-49cd298008a7
-    :END:
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-\\") 'sr-speedbar-toggle)
 #+end_src
-    ]
 *** M-\
-:PROPERTIES:
-:CUSTOM_ID: c1d53d84-b8a9-49cb-bfd6-4420931c8873
-:END:
-*** [C-M-\]                                                           :drill:
-SCHEDULED: <2014-03-21 Fri>
-    :PROPERTIES:
-    mark-defun
-    :ID:       d45bce17-45bc-41f0-8994-aa7bc3b2fa92
-    :CUSTOM_ID: 6a583354-48f8-4503-bf87-b8ba56411435
-    :DRILL_LAST_INTERVAL: 11.7003
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 9
-    :DRILL_FAILURE_COUNT: 6
-    :DRILL_AVERAGE_QUALITY: 2.815
-    :DRILL_EASE: 2.369
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:36>
-    :END:
+*** C-M-\]
 mark-defun
-    [
 #+begin_src emacs-lisp
   (global-set-key (kbd "C-M-\\") 'mark-defun)
 #+end_src
-    ]
 *** C-S-\
-:PROPERTIES:
-:CUSTOM_ID: 30edfb48-852f-4f2c-ba38-2635927d4950
-:END:
 *** C-h
-:PROPERTIES:
-:CUSTOM_ID: 3c5f241f-fc62-459d-ab85-6b7c1fb04801
-:END:
 help-prefix
 
 *** M-h
-:PROPERTIES:
-:CUSTOM_ID: 6df13b90-490b-4cca-a49d-4f2e3ce5bea3
-:END:
 *** C-M-h
-:PROPERTIES:
-:CUSTOM_ID: 47f0d1f3-78ea-49d7-a6d7-06627ca745bd
-:END:
 *** C-S-h
-:PROPERTIES:
-:CUSTOM_ID: 3be3db5c-9905-474b-b773-1aee515625f5
-:END:
 *** C-'
-:PROPERTIES:
-:CUSTOM_ID: 9f252721-a2d5-46c6-b268-8ed597256229
-:END:
 eval-expression
-[
 #+begin_src emacs-lisp
 (global-set-key (kbd "C-'") 'eval-expression)
 #+end_src
-]
 *** M-'
-:PROPERTIES:
-:CUSTOM_ID: f00b9c88-68bb-4831-872f-afb5ff82c104
-:END:
 *** C-M-'
-:PROPERTIES:
-:CUSTOM_ID: 0d39d36c-115a-4570-b4b1-818718409a49
-:END:
 *** C-S-'
-:PROPERTIES:
-:CUSTOM_ID: 230f50ef-48fd-4f13-aa62-e4a492c4515d
-:END:
-*** [C-n]                                                             :drill:
-SCHEDULED: <2014-04-07 Mon>
-    :PROPERTIES:
-    unpop-to-mark-command
-    :CUSTOM_ID: 52ebb720-589b-485c-89dc-0dfb78e6dad4
-    :ID:       32f1c87d-ee1f-4117-8059-32fd8facbeff
-    :DRILL_LAST_INTERVAL: 42.8284
-    :DRILL_REPEATS_SINCE_FAIL: 4
-    :DRILL_TOTAL_REPEATS: 4
-    :DRILL_FAILURE_COUNT: 0
-    :DRILL_AVERAGE_QUALITY: 4.5
-    :DRILL_EASE: 4.122
-    :DRILL_LAST_QUALITY: 5
-    :DRILL_LAST_REVIEWED: <2014-02-23 Sun 01:51>
-    :END:
+*** C-n]
 unpop to mark
-    [
     #+begin_src emacs-lisp
       (defun unpop-to-mark-command ()
         "Unpop off mark ring. Does nothing if mark ring is empty."
@@ -8503,185 +5776,146 @@ unpop to mark
 
       (global-set-key (kbd "C-n") 'unpop-to-mark-command)
 #+end_src
-]
 *** M-n
-:PROPERTIES:
-:CUSTOM_ID: 00c2ab64-696d-4492-8236-f7ebc12e4a93
-:END:
-*** [C-M-n]                                                           :drill:
-SCHEDULED: <2014-03-17 Mon>
-    :PROPERTIES:
-    narrow-to-region
-    :ID:       59e48dcc-434b-4c96-bdb3-c083c41ae8b3
-    :CUSTOM_ID: 43997316-8d3f-4750-873b-ade09628fdd5
-    :DRILL_LAST_INTERVAL: 7.6409
-    :DRILL_REPEATS_SINCE_FAIL: 3
-    :DRILL_TOTAL_REPEATS: 8
-    :DRILL_FAILURE_COUNT: 4
-    :DRILL_AVERAGE_QUALITY: 2.59
-    :DRILL_EASE: 2.261
-    :DRILL_LAST_QUALITY: 3
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:34>
-    :END:
+*** C-M-n]
 narrow-to-region
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "C-M-n") 'narrow-to-region)
 #+end_src
-]
 *** C-S-n
-:PROPERTIES:
-:CUSTOM_ID: f01c2c61-f606-49ea-885a-63a831eaae3d
-:END:
 *** C-rshift
 *** M-rshift
 *** C-M-rshift
 *** C-S-rshift
-*** [C-escape]                                                        :drill:
-SCHEDULED: <2014-04-05 Sat>
-    :PROPERTIES:
+*** C-escape]
     find-tag
     :ID:       a6dd7e4c-1831-4493-bbfd-557dc2f9c856
     :CUSTOM_ID: 6901fa1b-c827-4525-b24b-bdb8fe5f638b
-    :DRILL_LAST_INTERVAL: 27.3693
-    :DRILL_REPEATS_SINCE_FAIL: 5
-    :DRILL_TOTAL_REPEATS: 6
-    :DRILL_FAILURE_COUNT: 2
-    :DRILL_AVERAGE_QUALITY: 3.417
-    :DRILL_EASE: 2.676
-    :DRILL_LAST_QUALITY: 4
-    :DRILL_LAST_REVIEWED: <2014-03-09 Sun 18:37>
+
+
+
+
+
+
+
+
     :END:
 find-tag
-    [
 #+begin_src emacs-lisp
     (global-set-key (kbd "<C-escape>") 'find-tag)
 #+end_src
-    ]
 *** M-escape
-    :PROPERTIES:
-    :ID:       7224837b-addc-4c82-8313-467c6dcb7a52
-    :CUSTOM_ID: f505f1b9-82f6-4139-9e3e-78df548175ec
-    :END:
 *** C-M-escape
-:PROPERTIES:
-:CUSTOM_ID: d77136c5-4aec-4f02-8b4b-e417249fbac1
-:END:
 *** C-S-escape
-:PROPERTIES:
-:CUSTOM_ID: d61ae40a-3f2d-4ef6-a515-8864a7d7c8ea
-:END:
 * keybind table src
-  :PROPERTIES:
-  :CUSTOM_ID: ff8f3092-187a-4b2c-940f-01743f7a51b6
-  :END:
 not necessary to have at the end, but its convenient to have it next
 to its output.
   #+NAME: keybind-table-generator
 #+BEGIN_SRC emacs-lisp :results silent
-  (defun org-custom-id-get (&optional pom create prefix)
-    "Get the CUSTOM_ID property of the entry at point-or-marker POM.
+(defun org-custom-id-get (&optional pom create prefix)
+  "Get the CUSTOM_ID property of the entry at point-or-marker POM.
               If POM is nil, refer to the entry at point.
               If the entry does not have a CUSTOM_ID, the function returns nil.
               However, when CREATE is non nil, create an ID if none is present already.
               PREFIX will be passed through to `org-id-new'.
               In any case, the CUSTOM_ID of the entry is returned."
-    (org-with-point-at pom
-      (let ((id (org-entry-get nil "CUSTOM_ID")))
-        (cond
-         ((and id (stringp id) (string-match "\\S-" id))
-          id)
-         (create
-          (setq id (org-id-new prefix))
-          (org-entry-put pom "CUSTOM_ID" id)
-          (org-id-add-location id (buffer-file-name (buffer-base-buffer)))
-          id)))))
-
-  (defun get-title()
-    (interactive)
-    (let ((title (plist-get (cadr (org-element-at-point)) ':title)))
-      ;; remove brackets from [title]
-      (string-match "[^[ ][^]]*" title)
-      (setq title (match-string 0 title))
-      (print title)
-      title))
-
-
-  (defun org-dblock-write:keybind-dblock (arg)
-    (let (output)
-      (save-excursion
-        (goto-char (org-find-entry-with-id "beginning-of-keybind-table-data"))
-        (let* ((table-level (org-current-level))
-               (keybind-level (1+ table-level))
-               (prefixes (list "C-M-S-" "C-M-" "C-S-" "M-S-" "M-"  "C-" "S-"))
-               table-title
-               previous-prefixes
-               )
-          (while (>= (org-current-level) table-level)
-            (setq table-title (get-title))
-            (outline-next-heading)
-            (let (found-prefixes
-                  found-all-prefixes)
-              ;; go through the first few elements of the table to find out what column headings aka prefixes it should have
-              (save-excursion
-                (while (not found-all-prefixes)
-                  (let ((prefixes-copy prefixes)
-                        current-prefix
-                        found-prefix)
-                    (while (and prefixes-copy (not found-prefix))
-                      (setq current-prefix (car prefixes-copy))
-                      (when (and (> (length (get-title)) (length current-prefix))
-                                 (string= (substring (get-title) 0 (length current-prefix)) current-prefix))
-                        (setq found-prefix t))
-                      (setq prefixes-copy (cdr prefixes-copy)))
-                    (unless found-prefix
-                      (setq current-prefix ""))
-                    (if (and found-prefixes (string= (car (last found-prefixes)) current-prefix))
-                        (setq found-all-prefixes t)
-                      (push current-prefix found-prefixes)))
-                  (outline-next-heading)))
-              (setq found-prefixes (reverse found-prefixes))
-
-              ;; start a new table or repeat the prefixes in the current table
-
-              (if (or (not previous-prefixes) (equal previous-prefixes found-prefixes))
-                  (setq output (concat output "|-|\n| "))
-                (setq output (concat output "|-|\n\n|-|\n| ")))
-              (setq output (concat output table-title " | "))
-              (setq previous-prefixes found-prefixes)
-
-              ;; add the prefixes
-              (dolist (prefix found-prefixes)
-                (setq output (concat output prefix "|")))
-              (setq output (concat output "\n|-|\n"))
-
-
-              (let (subtree-end)
-                (while (>= (org-current-level) keybind-level)
-                  (dotimes (i (length found-prefixes))
-                    ;; add keybind name
-                    (when (= i 0)
-                      (setq output (concat output "| " (substring (get-title) (length (car found-prefixes))) " | ")))
-                    ;; add keybinds by searching for regex [keybind] to the start of the next heading
-                    (save-excursion
-                      (outline-next-heading)
-                      (setq subtree-end (point)))
-;; skip over scheduled line
-                    (re-search-forward "^SCHEDULED:" subtree-end t)
-
-                    ;; see comment after source block to understand this regex
-                    (re-search-forward "^\\s-*\\([^*: ].*?$\\)" subtree-end t)
-                    (let ((m (match-string 1)))
-                      (when m
-                        (setq output (concat output "[[#" (org-custom-id-get (point) 'create) "][" m "]]")))
-                      (setq output (concat output " | ")))
-                    ;; advance to next keybind
-                    (outline-next-heading))
-                  (setq output (concat output "\n"))
-                  ))))))
-      (setq output (concat output "|-|"))
-      (insert output))
-    (org-table-map-tables 'org-table-align 'quietly))
+  (org-with-point-at pom
+    (let ((id (org-entry-get nil "CUSTOM_ID")))
+      (cond
+       ((and id (stringp id) (string-match "\\S-" id))
+        id)
+       (create
+        (setq id (org-id-new prefix))
+        (org-entry-put pom "CUSTOM_ID" id)
+        (org-id-add-location id (buffer-file-name (buffer-base-buffer)))
+        id)))))
+
+(defun get-title()
+  (interactive)
+  (let ((title (plist-get (cadr (org-element-at-point)) ':title)))
+    ;; remove brackets from [title]
+    ;; I was at one point using org-drill for spaces repitition,
+    ;; and enclosed question and answer by 2 sets of brackets.
+    (string-match "[^[ ][^]]*" title)
+    (setq title (match-string 0 title))
+    (print title)
+    title))
+
+
+(defun org-dblock-write:keybind-dblock (arg)
+  (let (output)
+    (save-excursion
+      (goto-char (org-find-entry-with-id "beginning-of-keybind-table-data"))
+      (let* ((table-level (org-current-level))
+             (keybind-level (1+ table-level))
+             (prefixes (list "C-M-S-" "C-M-" "C-S-" "M-S-" "M-"  "C-" "S-"))
+             table-title
+             previous-prefixes
+             )
+        (while (>= (org-current-level) table-level)
+          (setq table-title (get-title))
+          (outline-next-heading)
+          (let (found-prefixes
+                found-all-prefixes)
+            ;; go through the first few elements of the table to find out what column headings aka prefixes it should have
+            (save-excursion
+              (while (not found-all-prefixes)
+                (let ((prefixes-copy prefixes)
+                      current-prefix
+                      found-prefix)
+                  (while (and prefixes-copy (not found-prefix))
+                    (setq current-prefix (car prefixes-copy))
+                    (when (and (> (length (get-title)) (length current-prefix))
+                               (string= (substring (get-title) 0 (length current-prefix)) current-prefix))
+                      (setq found-prefix t))
+                    (setq prefixes-copy (cdr prefixes-copy)))
+                  (unless found-prefix
+                    (setq current-prefix ""))
+                  (if (and found-prefixes (string= (car (last found-prefixes)) current-prefix))
+                      (setq found-all-prefixes t)
+                    (push current-prefix found-prefixes)))
+                (outline-next-heading)))
+            (setq found-prefixes (reverse found-prefixes))
+
+            ;; start a new table or repeat the prefixes in the current table
+
+            (if (or (not previous-prefixes) (equal previous-prefixes found-prefixes))
+                (setq output (concat output "|-|\n| "))
+              (setq output (concat output "|-|\n\n|-|\n| ")))
+            (setq output (concat output table-title " | "))
+            (setq previous-prefixes found-prefixes)
+
+            ;; add the prefixes
+            (dolist (prefix found-prefixes)
+              (setq output (concat output prefix "|")))
+            (setq output (concat output "\n|-|\n"))
+
+
+            (let (subtree-end)
+              (while (>= (org-current-level) keybind-level)
+                (dotimes (i (length found-prefixes))
+                  ;; add keybind name
+                  (when (= i 0)
+                    (setq output (concat output "| " (substring (get-title) (length (car found-prefixes))) " | ")))
+                  ;; add keybinds by searching for regex [keybind] to the start of the next heading
+                  (save-excursion
+                    (outline-next-heading)
+                    (setq subtree-end (point)))
+                  ;; skip over scheduled line
+
+                  ;; see comment after source block to understand this regex
+                  (re-search-forward "^\\s-*\\([^*: ].*?$\\)" subtree-end t)
+                  (let ((m (match-string 1)))
+                    (when m
+                      (setq output (concat output "[[#" (org-custom-id-get (point) 'create) "][" m "]]")))
+                    (setq output (concat output " | ")))
+                  ;; advance to next keybind
+                  (outline-next-heading))
+                (setq output (concat output "\n"))
+                ))))))
+    (setq output (concat output "|-|"))
+    (insert output))
+  (org-table-map-tables 'org-table-align 'quietly))
 
 
 #+END_SRC
@@ -8691,129 +5925,132 @@ to its output.
       subexpression for close bracket char or nothing: \\(\\]\\|\\)
 
 * keybind tables
+:LOGBOOK:
+CLOCK: [2016-11-28 Mon 10:59]--[2016-11-28 Mon 10:59] =>  0:00
+:END:
 dunno why but it takes doing ctrl-c twice to update this
   #+BEGIN: keybind-dblock
-|---------------------+------------------------|
-| single/special keys |                        |
-|---------------------+------------------------|
-| tab key             | [[#6c10a716-1d8e-4ce4-8e26-64468f19c17a][isearch]]                |
-| tab                 | [[#51ece189-1840-41a1-8ca0-19f9a0481895][isearch-forward]]        |
-| end                 | [[#00d589b7-2b8e-494c-b761-3afefebe6ec6][move-end-of-line]]       |
-| home                | [[#7800e455-c3f6-4a8f-8907-b2292449ab67][back-to-indentation]]    |
-| s-tab               | [[#3072901e-5cf3-4d6e-9ac8-3ef64a5f6ad2][indent-buffer]]          |
-| s-delete            | [[#e53728b6-054d-4443-a03e-6cf02d13724d][send-shell]]             |
-| s-left arrow        | [[#d8c473ac-5507-4a6b-9e5a-46558c17b09f][shell]]                  |
-| s-right arrow       | [[#2365f5a7-b89a-4a97-b272-ac8ae9c2cc66][previous-buffer]]        |
-| esc                 |                        |
-| return              | [[#fab6adea-ed20-45ab-a0a3-776c68d5c3a5][new line]]               |
-| s-return            | [[#819cfb55-3a2f-4f20-8591-f819d1a6869a][auto-correct-prev-word]] |
-| down arrow          | [[#7a868484-9c63-4a73-abda-7751cb2c02be][mark]]                   |
-| s-down arrow        | [[#097b97e0-8ad8-40f7-8388-c4ace1706b38][extended command]]       |
-| s-up arrow          |                        |
-|---------------------+------------------------|
-
-|-------------------+----------------------------+---------------------------------+--------------------+---------------+-------------------+-------------|
-| mouse             |                            | C-                              | M-                 | S-            | C-M-              | C-S-        |
-|-------------------+----------------------------+---------------------------------+--------------------+---------------+-------------------+-------------|
-| mouse-2 mode line | [[#69aaa631-6fb5-4beb-b2d8-c0f3d92c0a98][mouse-delete-other-windows]] | [[#501479ab-e1e2-497e-bd86-071f8afa3378][mouse-split-window-horizontally]] |                    |               |                   |             |
-| mouse-3 mode line | [[#917a1844-8c38-4f31-8616-50fc81334f2c][mouse-delete-window]]        |                                 |                    |               |                   |             |
-| mouse-1           | [[#4e60e2e4-8c2f-4450-8060-2d793ede530c][set cursor/mark]]            | [[#b661f84f-57df-4095-9dc1-d1a876a53ee5][buffer list context menu]]        |                    |               |                   |             |
-| mouse-2           | [[#086b0b50-054f-462d-92fa-b27852f887b0][paste]]                      |                                 |                    |               |                   |             |
-| mouse-3           | [[#0481632e-9c50-4328-9365-c4b5bf967b66][set-mark]]                   | [[#9623c78f-7705-4cbe-a990-c24eb1067377][global menu]]                     |                    |               |                   |             |
-| mouse-9           | [[#efaec161-b279-4129-86fd-b410430926e4][move-mouse-to-point]]        |                                 |                    |               |                   |             |
-| mouse-8           |                            |                                 |                    |               |                   |             |
-| 1/kp-end          |                            |                                 |                    |               |                   |             |
-| 2/kp-down         |                            |                                 |                    |               |                   |             |
-| 3/kp-next         |                            |                                 |                    |               |                   |             |
-| 4/kp-left         | [[#c44d0f65-9502-4cc6-9642-96d907f6b093][indent-region]]              |                                 |                    |               |                   |             |
-| 5/kp-begin        | [[#2458c6bc-7113-4d4b-bbdf-206e1cb842a7][mark-defun]]                 |                                 |                    |               |                   |             |
-| 6/kp-right        | [[#3b79bc58-6067-43bd-9471-9d592744a25a][ibuffer]]                    |                                 |                    |               |                   |             |
-| 7/kp-home         |                            |                                 |                    |               |                   |             |
-| 8/kp-up           |                            |                                 |                    |               |                   |             |
-| 9/kp-prior        | [[#a3b51adb-4405-4d9f-9b88-a8faa479fbe7][delete-horizontal-space]]    |                                 |                    |               |                   |             |
-| 10/kp-insert      |                            |                                 |                    |               |                   |             |
-| 11/kp-subtract    |                            |                                 |                    |               |                   |             |
-| 12/kp-add         |                            |                                 |                    |               |                   |             |
-| scroll            | [[#33433f0f-5b0e-46ba-8452-d2a51e54769b][up/dn / scroll]]             | [[#16506ba5-e8f2-4aec-bc1b-d2854d4e504c][cycle recent buffers]]            | [[#e1e2e253-450d-4620-af9e-78d378f49ad5][forward/back s-exp]] | [[#74b2196a-345d-453a-b7be-1915360eb201][expand region]] | [[#bd2ca117-408c-49fc-a5ac-a938be21dfc0][scroll]]            | [[#a69254a4-cf2d-450f-b477-2694b44a7e0d][zoom]]        |
-| left-scroll       | [[#d2d5c5c7-f0de-4e08-953b-d41d3e282ba7][left/right]]                 | [[#7bb95aa5-381e-454a-a6c6-aaeec728db08][back / forward word]]             | [[#49db3764-b154-4cfc-8d0d-f0e0451815e3][winner undo redo]]   | [[#ca5cdcd4-b3da-4d7b-86ab-4c7c0ac2caf7][---]]           | [[#32c00bb2-3e5a-4670-8849-04d23b9f8364][forward/back sexp]] | [[#7b4f1f49-6d93-4210-a30c-8278d6e63655][unreachable]] |
-|-------------------+----------------------------+---------------------------------+--------------------+---------------+-------------------+-------------|
-
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
-| left primary    | C-                             | M-                              | C-M-                          | C-S-                     |
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
-| 2               | [[#4f29b011-3844-4a4a-b75d-cdf8f49e9adb][narrow-to-defun/subtree]]        |                                 | [[#33c4996d-92bc-4df0-b005-11553677be13][---]]                           |                          |
-| 3               | [[#7851a05e-7177-4a8f-af5a-3325a8f116fe][dot-mode-execute]]               |                                 | [[#9a00e17f-a1c9-48fc-b03b-c6a1a3cbda1c][recenter-top-bottom]]           |                          |
-| q               | [[#679fd3cd-c43b-409c-be36-4175a5f27cd3][org-cycle, comint previous arg]] | [[#72bada0e-5d62-4a8f-ae62-4972778ff1bc][org-archive-to-archive-sibling]]  | [[#1f5e9b63-7ce0-445c-a426-b41839585d38][quoted-insert]]                 |                          |
-| w               | [[#20005b6d-9a9d-4b58-882c-7ce860c7a395][goto-t.org]]                     | [[#331da6e5-7936-4663-8f58-9d8601b5915c][org-clock-in]]                    |                               |                          |
-| e               | [[#24e34f4b-d1e8-4380-933f-ab1f78ebc782][copy-line]]                      | [[#0a771449-0cd5-4dc9-82ca-bcac5f7abd17][org-clock-in-last]]               |                               |                          |
-| r               | [[#5c55f461-f43f-493d-81eb-1ca747175ef1][isearch-backward]]               | [[#dd9575bd-e471-418e-9519-4fc2b874ddcd][org-clock-out]]                   |                               |                          |
-| a               | [[#db4b76df-9420-4256-8242-dc44b56d55d7][copy-all]]                       | [[#e865a1e5-55bf-4a98-a0d0-cb05a88de352][kmacro-start-macro-or-in...]]     | [[#c6278a5a-024f-4c80-a8d4-65f127fd24a8][kmacro-end-or-call-macro]]      |                          |
-| s               | [[#01da04da-cdba-493f-892b-c4c064cf937e][C-x prefix]]                     |                                 | [[#4b33022d-27f0-4d21-9931-2e2e692790e8][split-window-vertically]]       |                          |
-| d               | [[#b699614a-9994-4fe7-b2c6-f0fe81b7ad2b][C-c prefix]]                     | [[#06bcc5e2-f3a7-41c6-a793-ac6c9813fb6e][whitespace-cleanup]]              | [[#8cf6053d-792b-4abd-a3a6-66efd7fbee68][swap buffer]]                   |                          |
-| f               | [[#2695ed8a-e0d3-4e84-8688-98e3c50723b0][kill-whole-line]]                |                                 | [[#e7e4dd0b-418f-48ee-b366-9e733e3bec61][kill rest of line]]             |                          |
-| g               | [[#4af40595-7010-4be6-8cfe-a43797ca6e33][other-window / cancel]]          | [[#fb0b343f-fdff-463a-94f4-3152191e17c4][abort-recursive-edit]]            | [[#327e18af-30b7-47e5-aa53-5f678788b4c1][gnus]]                          |                          |
-| z               | [[#707c4938-a790-4da9-8230-61855ea57d09][undo-tree-undo]]                 |                                 |                               |                          |
-| x               | [[#ec1403d3-528e-41b1-a195-5563bc93e124][kill-region]]                    | [[#bb7c95d5-dd97-439d-bf1f-cdac98d11543][append-next-kill]]                | [[#c988370e-602c-431c-80a9-608459583f8b][append-next-kill]]              |                          |
-| c               | [[#400f06e1-8e45-443c-8d7b-3d1bb1176aab][copy]]                           | [[#f4c3317a-a317-4d04-8cb7-e46d0716bf1d][org-capture]]                     | [[#0a151d99-47ae-4e8f-8407-82e77d24a3e7][copy-to-register]]              |                          |
-| v               | [[#16411f68-7fe0-49e8-9a73-212471594f9e][yank]]                           | [[#d67f6371-a13f-4a75-8d8c-e4013ff4e131][insert-register]]                 | [[#25f86658-9999-40f7-b3a4-615981751b93][yank pop]]                      |                          |
-| b               | [[#e682305e-0110-4d2f-afbd-2c401bcb9313][delete-other-windows]]           | [[#05e3d0db-36dc-455f-8bed-f87886ca6004][isearch-backward-current-symbol]] | [[#6c63790c-28c1-4b73-96e2-ee859f57e734][isearch-current-symbol]]        |                          |
-| tab             | [[#edc45592-c69f-4439-8305-48f2c65696c3][yas-insert-snippet]]             | [[#71264957-45fd-455a-a6d1-b08823c02d25][indent line]]                     |                               |                          |
-| delete          | [[#2688b61d-9fdd-44af-b9bd-b126f0da00bd][kill-symbol]]                    |                                 | [[#21876759-a8e6-4896-8a08-eda40d0eaff3][kill-sexp]]                     |                          |
-| left-arrow      | [[#b15da91f-0786-49d1-b0b9-331b3b94f6ae][compile]]                        |                                 | [[#13faf5d4-34be-4363-948d-4ff04a9f570b][org-shiftup]]                   |                          |
-| right-arrow     | [[#3f3cac16-097d-451a-a14a-da7717d06730][paste selection]]                |                                 | [[#34e66314-1d97-4eeb-b704-fe0733849ae4][org-shiftdown]]                 |                          |
-| backspace       | [[#85bb4701-42e6-4617-8de8-dfb1f03b0358][backward-kill-symbol]]           |                                 | [[#606b0991-7431-4a8a-a909-b872e104cc88][backward-kill-sexp]]            |                          |
-| f7              |                                |                                 |                               |                          |
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
-| right primary   | C-                             | M-                              | C-M-                          | C-S-                     |
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
-| *               | [[#f745b337-8b65-44cc-849a-5e0953c9ebd9][split-window-horizontally]]      |                                 | [[#5dbe3437-7364-4802-b558-00b2d5faacf6][calc-dispatch]]                 |                          |
-| 9               | [[#43d14154-2722-4ba5-b547-1b78c6274ebf][delete-window-or-exit]]          | [[#9dc95338-4321-4354-9de2-69409f383a10][kill-buffer-and-window]]          | [[#ffe9f636-31e5-48ba-b8fe-7c158ace744c][kill client buffer]]            |                          |
-| u               | [[#327992c0-6eba-4935-aec1-49871c2a8619][universal-argument]]             |                                 | [[#62735d64-b89a-46b7-b32e-2453b651039d][search-keybind]]                |                          |
-| i               | [[#3124e200-1d6e-4ad2-9a36-0d03e1e7dc38][-----]]                          |                                 | [[#a3260b61-7c51-4d97-9a91-3ed702c5ae29][query-replace-regexp]]          |                          |
-| o               | [[#82215193-63b3-4d63-8f70-d11a328fe72d][occur]]                          |                                 | [[#05d1ef50-43ee-46d7-b1ad-dd952543ab45][ido-goto-symbol]]               |                          |
-| p               | [[#9c2e2ba9-f34e-48fe-b4ff-b9826882c1cc][move-mouse-to-point]]            |                                 | [[#d55616d3-a3f6-4e83-8807-748578a7b726][delete-horizontal-space]]       |                          |
-| j               | [[#ebcf7c71-3c93-431b-af6b-7c5df7f2945e][register prefix]]                | [[#474a3e12-95ac-4f43-b83a-36716f3e6f76][previous-error]]                  |                               |                          |
-| k               | [[#25a7ba1c-ddf3-47f1-9516-914a552e7a36][jump to register]]               | [[#a96691bb-9e4c-414b-a093-d9961d453e21][next-error]]                      | [[#f61ea4ea-4597-422e-b7e3-d3cfad82603d][man]]                           |                          |
-| l               | [[#8a7572bd-4b5e-4464-b937-3d35adb1783f][ido-switch-buffer]]              |                                 | [[#24b660d4-3ec4-4416-8a6a-b8224ed1ee8b][move cursor top bottom mid]]    |                          |
-| ;               | [[#7e3710eb-5460-4460-8bf0-488302e4ce35][comment-dwim]]                   |                                 | [[#28680a96-5223-4632-80b9-b1facdd541e7][comment-current-line-dwim]]     |                          |
-| m               | [[#deee53ba-dfa2-4910-894c-55ae98d11aa4][pop-to-mark]]                    |                                 | [[#f283f705-cba0-45db-b80f-5d20415b2eee][recursive grep]]                |                          |
-| ,               | [[#6cbf3a85-f260-453a-920b-850ff5e986b1][ido-find-file]]                  |                                 | [[#bfdf6111-029d-462b-bcca-50a3ed2162d5][find-file-in-project]]          |                          |
-| .               | [[#0675c171-8677-44a8-882c-e7ed42715e31][recentf-ido-find-file]]          |                                 | [[#824d422c-67b6-4d68-af11-6a2135e528f5][-]]                             |                          |
-| /               | [[#941a7fa8-84b9-434d-89a0-1487385ec479][join lines]]                     |                                 | [[#37f67593-4f60-4d3b-9aad-6c9bc4882443][copy-variable]]                 |                          |
-| 8               | [[#251c4a1a-a683-4804-a706-d0d3752e42fa][calc-embedded-word]]             |                                 |                               |                          |
-| up-arrow        | [[#f47d312a-063d-42ed-a352-176298a2cb0c][back defun/headline]]            |                                 |                               |                          |
-| down-arrow      | [[#27435136-b3d7-4f25-aa85-2a7363a7f366][forward dfun/headline]]          |                                 | [[#3bcb35fd-6d54-4213-b94f-2739c0bc0041][toggle-mark-activation]]        | [[#1434bdd0-c5a8-4c96-9b92-9474e88fd1c5][smex-major-mode-commands]] |
-| lbracket        | [[#9d9916dd-3280-47dd-aab1-cd28d5ebfe15][----]]                           |                                 | [[#7411b1a5-c8fa-4bcc-8788-798e5635dd62][scroll-right]]                  |                          |
-| rbracket        | [[#21b38c6b-3a46-4a08-8eca-d44abb148287][fill-paragraph]]                 |                                 | [[#c9c18f48-d0ca-4a1b-a751-7165f40118a3][scroll-left]]                   |                          |
-| return          | [[#baf7ea5a-d16d-4fee-a6ce-542cc11beb97][newline next line]]              | [[#e6895ad3-a2c8-46c8-abbc-1bba94a88596][non-indented newline]]            | [[#2a8fc6ea-a550-4437-9e35-3b3f2776788a][open newline on previous line]] |                          |
-| space           | [[#132daa1a-8e5f-47f1-a28d-35bee873aeac][org-edit-special]]               |                                 | [[#02359b66-bf6e-4f41-9f03-e83fcbe3e68c][spell check word]]              |                          |
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
-| left secondary  | C-                             | M-                              | C-M-                          | C-S-                     |
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
-| =               |                                |                                 |                               |                          |
-| 1               |                                |                                 |                               |                          |
-| 4               |                                |                                 | [[#3ff50f5f-f286-4a73-962b-58dbcf3b09b1][widen]]                         |                          |
-| 5               |                                |                                 |                               |                          |
-| tab-key         | [[#68313551-90cd-47a6-8170-1745348add17][query-replace]]                  |                                 |                               |                          |
-| t               | [[#aaac3048-9125-4fd5-b8f2-21bafcc1ff1c][org change todo state]]          |                                 | [[#5bc609b1-9428-4b82-a55d-811fefe65331][org insert timestamp]]          |                          |
-| home            | [[#1919659a-b466-4519-9276-8bf06a916066][start of buffer]]                |                                 |                               |                          |
-| end             | [[#0a7bd629-cbcc-4761-8fe2-cc9370b985a4][end of buffer]]                  |                                 |                               |                          |
-| f9              |                                |                                 |                               |                          |
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
-| right secondary | C-                             | M-                              | C-M-                          | C-S-                     |
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
-| 6               | [[#e44e584b-d925-4036-9ad5-a90d02e74bef][save-buffers-kill-emacs]]        |                                 | [[#da73de75-0914-4f48-81d5-9b408433b14b][insert-small-copyright]]        |                          |
-| 7               |                                |                                 | [[#a68c6b8e-9911-475e-ab35-e239771fe881][insert-full-copyright]]         |                          |
-| 0               |                                |                                 |                               |                          |
-| -               |                                |                                 |                               |                          |
-| y               | [[#97aee7f1-3647-4602-a65a-45e8a3aa3a7c][undo-tree-redo]]                 |                                 |                               |                          |
-| \               | [[#b8ad3ee9-7bf6-4069-a300-49cd298008a7][sr-speedbar-toggle]]             |                                 | [[#6a583354-48f8-4503-bf87-b8ba56411435][mark-defun]]                    |                          |
-| h               | [[#3c5f241f-fc62-459d-ab85-6b7c1fb04801][help-prefix]]                    |                                 |                               |                          |
-| '               | [[#9f252721-a2d5-46c6-b268-8ed597256229][eval-expression]]                |                                 |                               |                          |
-| n               | [[#52ebb720-589b-485c-89dc-0dfb78e6dad4][unpop-to-mark-command]]          |                                 | [[#43997316-8d3f-4750-873b-ade09628fdd5][narrow-to-region]]              |                          |
-| rshift          |                                |                                 |                               |                          |
-| escape          | [[#6901fa1b-c827-4525-b24b-bdb8fe5f638b][find-tag]]                       |                                 |                               |                          |
-|-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  |---------------------+------------------------|
+  | single/special keys |                        |
+  |---------------------+------------------------|
+  | tab key             | [[#6c10a716-1d8e-4ce4-8e26-64468f19c17a][isearch]]                |
+  | tab                 | [[#51ece189-1840-41a1-8ca0-19f9a0481895][isearch-forward]]        |
+  | end                 | [[#00d589b7-2b8e-494c-b761-3afefebe6ec6][move-end-of-line]]       |
+  | home                | [[#7800e455-c3f6-4a8f-8907-b2292449ab67][back-to-indentation]]    |
+  | s-tab               | [[#3072901e-5cf3-4d6e-9ac8-3ef64a5f6ad2][indent-buffer]]          |
+  | s-delete            | [[#e53728b6-054d-4443-a03e-6cf02d13724d][send-shell]]             |
+  | s-left arrow        | [[#d8c473ac-5507-4a6b-9e5a-46558c17b09f][shell]]                  |
+  | s-right arrow       | [[#cbae2b27-ff95-4b12-88e0-e1a0f7705db6][previous-buffer]]        |
+  | esc                 |                        |
+  | return              | [[#fab6adea-ed20-45ab-a0a3-776c68d5c3a5][new line]]               |
+  | s-return            | [[#c433c837-24fa-45e1-8991-a4d380550ea0][auto-correct-prev-word]] |
+  | down arrow          | [[#7a868484-9c63-4a73-abda-7751cb2c02be][mark]]                   |
+  | s-down arrow        | [[#097b97e0-8ad8-40f7-8388-c4ace1706b38][extended command]]       |
+  | s-up arrow          |                        |
+  |---------------------+------------------------|
+
+  |-------------------+----------------------------+---------------------------------+--------------------+---------------+-------------+-------------|
+  | mouse             |                            | C-                              | M-                 | S-            | C-M-        | C-S-        |
+  |-------------------+----------------------------+---------------------------------+--------------------+---------------+-------------+-------------|
+  | mouse-2 mode line | [[#69aaa631-6fb5-4beb-b2d8-c0f3d92c0a98][mouse-delete-other-windows]] | [[#501479ab-e1e2-497e-bd86-071f8afa3378][mouse-split-window-horizontally]] |                    |               |             |             |
+  | mouse-3 mode line | [[#917a1844-8c38-4f31-8616-50fc81334f2c][mouse-delete-window]]        |                                 |                    |               |             |             |
+  | mouse-1           | [[#4e60e2e4-8c2f-4450-8060-2d793ede530c][set cursor/mark]]            | [[#b661f84f-57df-4095-9dc1-d1a876a53ee5][buffer list context menu]]        |                    |               |             |             |
+  | mouse-2           | [[#086b0b50-054f-462d-92fa-b27852f887b0][paste]]                      |                                 |                    |               |             |             |
+  | mouse-3           | [[#0481632e-9c50-4328-9365-c4b5bf967b66][set-mark]]                   | [[#9623c78f-7705-4cbe-a990-c24eb1067377][global menu]]                     |                    |               |             |             |
+  | mouse-9           | [[#efaec161-b279-4129-86fd-b410430926e4][move-mouse-to-point]]        |                                 |                    |               |             |             |
+  | mouse-8           |                            |                                 |                    |               |             |             |
+  | 1/kp-end          |                            |                                 |                    |               |             |             |
+  | 2/kp-down         |                            |                                 | [[#50db5a06-452e-491f-875b-3de936a4d04a][smex]]               |               |             |             |
+  | 3/kp-next         |                            |                                 |                    |               |             |             |
+  | 4/kp-left         | [[#c44d0f65-9502-4cc6-9642-96d907f6b093][indent-region]]              |                                 |                    |               |             |             |
+  | 5/kp-begin        | [[#2458c6bc-7113-4d4b-bbdf-206e1cb842a7][mark-defun]]                 |                                 |                    |               |             |             |
+  | 6/kp-right        | [[#3b79bc58-6067-43bd-9471-9d592744a25a][ibuffer]]                    |                                 |                    |               |             |             |
+  | 7/kp-home         |                            |                                 |                    |               |             |             |
+  | 8/kp-up           |                            |                                 |                    |               |             |             |
+  | 9/kp-prior        | [[#a3b51adb-4405-4d9f-9b88-a8faa479fbe7][delete-horizontal-space]]    |                                 |                    |               |             |             |
+  | 10/kp-insert      |                            |                                 |                    |               |             |             |
+  | 11/kp-subtract    |                            |                                 |                    |               |             |             |
+  | 12/kp-add         |                            |                                 |                    |               |             |             |
+  | scroll            | [[#33433f0f-5b0e-46ba-8452-d2a51e54769b][up/dn / scroll]]             | [[#38c594ca-1d13-441b-833c-ad47b27e7073][cycle recent buffers]]            | [[#e1e2e253-450d-4620-af9e-78d378f49ad5][forward/back s-exp]] | [[#945cbcda-9a5a-4a9f-ad5c-4ede9a43656e][expand region]] | [[#10bc56d0-a6fe-4e2e-a287-1d280358ad1c][scroll]]      | [[#fc79fff3-259e-416a-a62a-c237b30ade28][zoom]]        |
+  | left-scroll       | [[#d2d5c5c7-f0de-4e08-953b-d41d3e282ba7][left/right]]                 | [[#7bb95aa5-381e-454a-a6c6-aaeec728db08][back / forward word]]             | [[#3aeb5be7-6026-42f6-a65b-b00799e44642][winner undo redo]]   | [[#ca5cdcd4-b3da-4d7b-86ab-4c7c0ac2caf7][---]]           | [[#7f7103f5-2488-46a6-8530-6d8a558e6eff][unreachable]] | [[#7b4f1f49-6d93-4210-a30c-8278d6e63655][unreachable]] |
+  |-------------------+----------------------------+---------------------------------+--------------------+---------------+-------------+-------------|
+
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  | left primary    | C-                             | M-                              | C-M-                          | C-S-                     |
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  | 2               | [[#b7db9f5c-f31d-45fb-ac70-eb3ef9369d3d][copy-symbol]]                    | [[#53ecfda2-d9f6-4882-b7a2-9b3c859e3bcb][shell-cd-to-file]]                | [[#33c4996d-92bc-4df0-b005-11553677be13][---]]                           |                          |
+  | 3               | [[#401f56ff-6aba-4156-b128-f449b18c27af][dot-mode-execute]]               |                                 | [[#eb0cc3a8-b62e-4a24-9f84-cc8e854f91dd][recenter-top-bottom]]           |                          |
+  | q               | [[#679fd3cd-c43b-409c-be36-4175a5f27cd3][org-cycle, comint previous arg]] | [[#9a186632-7b04-4af7-b7de-eaec87daf315][org-archive-to-archive-sibling]]  | [[#1f5e9b63-7ce0-445c-a426-b41839585d38][quoted-insert]]                 |                          |
+  | w               | [[#20005b6d-9a9d-4b58-882c-7ce860c7a395][goto-t.org]]                     | [[#9531a0da-269f-4359-9124-e83fbf61a92f][org-clock-in]]                    |                               |                          |
+  | e               | [[#11e8f541-f0a0-4058-883a-98bd1e7b8c4d][copy-line]]                      | [[#74d0ed51-ddb5-488e-bf55-0f033916e319][org-clock-in-last]]               |                               |                          |
+  | r               | [[#5088a8b2-a772-4660-a3b6-b8cca7099da6][isearch-backward]]               | [[#8fe64424-1f11-4086-84b3-07c2af210c1c][org-clock-out]]                   |                               |                          |
+  | a               | [[#d57dd0ac-2251-44af-b232-30f8a2b0b198][copy-all]]                       | [[#77987ef8-6a18-4123-8ede-77bc766aa2aa][kmacro-start-macro-or-in...]]     | [[#dd2c225e-2d18-4b95-bc30-765163a5e368][kmacro-end-or-call-macro]]      |                          |
+  | s               | [[#f26dd0f5-0655-485f-8c76-e6dfc6abd947][C-x prefix]]                     |                                 | [[#290ea04a-be99-416a-a95f-458045a91c93][split-window-vertically]]       |                          |
+  | d               | [[#b699614a-9994-4fe7-b2c6-f0fe81b7ad2b][C-c prefix]]                     |                                 | [[#d9f48fbe-0a32-4133-93fb-f43ff6ab0037][swap buffer]]                   |                          |
+  | f               | [[#2695ed8a-e0d3-4e84-8688-98e3c50723b0][kill-whole-line]]                | [[#869f0aec-c739-4fb7-8e3a-8b55ab637765][print-var-at-point]]              | [[#e7e4dd0b-418f-48ee-b366-9e733e3bec61][kill rest of line]]             |                          |
+  | g               | [[#a58a1eda-43ed-437e-b483-5c312e0754a7][other-window / cancel]]          | [[#a287d720-4419-4546-8262-1f377bb158d2][abort-recursive-edit]]            | [[#327e18af-30b7-47e5-aa53-5f678788b4c1][gnus]]                          |                          |
+  | z               | [[#5c30ce7e-8bc6-45bf-b9b1-5c75334a3e27][undo-tree-undo]]                 |                                 |                               |                          |
+  | x               | [[#ec1403d3-528e-41b1-a195-5563bc93e124][kill-region]]                    | [[#bb7c95d5-dd97-439d-bf1f-cdac98d11543][append-next-kill]]                | [[#47cc90e3-335f-4c44-9f39-b732e5440664][append-next-kill]]              |                          |
+  | c               | [[#400f06e1-8e45-443c-8d7b-3d1bb1176aab][copy]]                           | [[#7a265014-1e9c-4639-ad1d-26b3416379a8][org-capture]]                     | [[#503e0beb-6fda-4e94-9678-d58bd3cbbc8e][copy-to-register]]              |                          |
+  | v               | [[#16411f68-7fe0-49e8-9a73-212471594f9e][yank]]                           | [[#fe04fffa-6f85-483a-b329-938531109c35][insert-register]]                 | [[#c559e9ea-1218-4ccb-9c3a-74cbac4be220][yank pop]]                      |                          |
+  | b               | [[#3090fb11-9a11-47e5-bc98-080ebd250d37][delete-other-windows]]           | [[#c18b9197-3d52-45a6-9d20-50d18fe1e7a7][isearch-backward-current-symbol]] | [[#e9dd549f-d031-418a-a0d5-30cf85e91c37][isearch-current-symbol]]        |                          |
+  | tab             | [[#928505cb-707c-47ba-af54-5ae1df2ee07d][yas-insert-snippet]]             | [[#64f91d86-afa9-4500-8d7d-ce8b2668726b][indent line]]                     |                               |                          |
+  | delete          | [[#e3d8653e-2282-4e3a-a4f5-29211ba2e647][kill-symbol]]                    |                                 | [[#d9664937-d61c-4cc8-89c6-7f2182655c20][kill-sexp]]                     |                          |
+  | left-arrow      | [[#601c8172-f9b7-4e36-88ab-c66c2911b4d7][compile]]                        |                                 | [[#91ddc121-db27-4f1c-a9ec-a4d29b96a7d2][org-shiftup]]                   |                          |
+  | right-arrow     | [[#5f66f60b-adcd-45dc-86b2-5d1225e2455c][paste selection]]                |                                 | [[#fc2147b4-a19a-4fde-bb53-e7ac28f0bfa1][org-shiftdown]]                 |                          |
+  | backspace       | [[#96f90a00-2260-4340-ae03-f4a86bd65502][backward-kill-symbol]]           |                                 | [[#606b0991-7431-4a8a-a909-b872e104cc88][backward-kill-sexp]]            |                          |
+  | f7              |                                |                                 |                               |                          |
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  | right primary   | C-                             | M-                              | C-M-                          | C-S-                     |
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  | *               | [[#045c374c-b03e-42cb-b274-0f30c81fe3f3][split-window-horizontally]]      |                                 | [[#05cf6230-9263-4fd4-9812-4f32009eed46][calc-dispatch]]                 |                          |
+  | 9               | [[#43d14154-2722-4ba5-b547-1b78c6274ebf][delete-window-or-exit]]          | [[#ed93f5b8-2c7f-46f8-8d84-2e10d9bc8f87][kill-buffer-and-window]]          | [[#37ef629b-fdbc-4d0b-bfa0-335eb1d408ee][kill client buffer]]            |                          |
+  | u               | [[#327992c0-6eba-4935-aec1-49871c2a8619][universal-argument]]             |                                 | [[#7af825b1-92d8-4d5d-aaa1-8b4b466ea2e0][search-keybind]]                |                          |
+  | i               | [[#3124e200-1d6e-4ad2-9a36-0d03e1e7dc38][-----]]                          |                                 | [[#b2cc7cdd-c177-4ef2-af43-28ca7a338fda][query-replace-regexp]]          |                          |
+  | o               | [[#b87a2c8a-7eb3-4661-9b28-589d14206c41][occur]]                          |                                 | [[#d30ac3cd-1963-4bd0-8052-98e12b6524b0][counsel-imenu]]                 |                          |
+  | p               | [[#d84de055-e92e-478d-bb39-bc39acfa1586][move-mouse-to-point]]            |                                 | [[#08e65732-2fb1-4a78-9d18-cee87eb867a7][delete-horizontal-space]]       |                          |
+  | j               | [[#ca1ce86b-dcea-45c1-9a8e-dd4f306776e8][pop-to-mark]]                    | [[#b92414e2-0d5b-4576-8fa5-5e7f1e32819a][previous-error]]                  | [[#8fe7cac2-ab1a-4b39-aced-10c5e0157e68][register prefix]]               |                          |
+  | k               | [[#eb1c2360-bfd4-4d5c-b789-11b5ca5ba475][jump to register]]               | [[#9061b192-735a-4273-ae36-993e6fad9205][next-error]]                      | [[#e1d768be-6b9b-4322-931f-3e570376ae15][man]]                           |                          |
+  | l               | [[#137995db-ee30-4738-90e2-54dcd5cadcf2][ivy-switch-buffer]]              |                                 | [[#56fcff3b-ffd9-4280-a226-4b58558906b8][move cursor top bottom mid]]    |                          |
+  | ;               | [[#150bef9a-3faa-4c72-a176-88c3be56f612][comment-dwim]]                   | [[#211e76d9-d89a-4cc6-abce-69397d456fda][comment-dwim]]                    | [[#17035e1e-bbe6-44a6-ad54-6a39b04feac3][comment-current-line-dwim]]     |                          |
+  | m               |                                |                                 | [[#9a6a1998-4ed6-485e-9b2d-c36a42d7ec1a][recursive grep]]                |                          |
+  | ,               | [[#e4f617b2-d3f1-47e4-ae7f-2d64c4fd47b9][counsel-find-file]]              |                                 | [[#e0691924-11e1-48d2-abee-27945a409676][find-file-in-project]]          |                          |
+  | .               | [[#6e97b7f1-c5cf-48bb-9c09-db1950dc1eae][recentf-ido-find-file]]          |                                 | [[#824d422c-67b6-4d68-af11-6a2135e528f5][-]]                             |                          |
+  | /               | [[#941a7fa8-84b9-434d-89a0-1487385ec479][join lines]]                     |                                 | [[#37f67593-4f60-4d3b-9aad-6c9bc4882443][copy-variable]]                 |                          |
+  | 8               | [[#45644cfa-d408-4a69-a97a-545ef46ba656][calc-embedded-word]]             |                                 |                               |                          |
+  | up-arrow        | [[#2dade04a-8ac7-483c-8675-5268af6eca2b][back defun/headline]]            |                                 |                               | [[#572d6618-471a-43c7-8a50-3f5e56f45cd7][winner undo]]              |
+  | down-arrow      | [[#a1f25c12-3523-45bd-9bf5-62bf3cd5ca43][forward dfun/headline]]          |                                 | [[#57a09286-94c6-4b9f-953a-7368743f95ec][toggle-mark-activation]]        | [[#9c87093b-7e30-44fb-83c9-c1b176074a5d][smex-major-mode-commands]] |
+  | lbracket        | [[#9d9916dd-3280-47dd-aab1-cd28d5ebfe15][----]]                           |                                 | [[#c10b53e9-657c-48f4-8afb-cad0e709bcd6][scroll-right]]                  |                          |
+  | rbracket        | [[#21b38c6b-3a46-4a08-8eca-d44abb148287][fill-paragraph]]                 |                                 | [[#095c3d97-bc49-419a-a8c0-c7a21d46d980][scroll-left]]                   |                          |
+  | return          | [[#db6e4c41-c048-4bef-b0c9-e129464c056d][newline next line]]              | [[#10b2591a-5628-46ee-b395-682e91efcb83][non-indented newline]]            | [[#1fc4f025-719f-4866-a9ab-23b30e4581b1][open newline on previous line]] |                          |
+  | space           | [[#b7d5a893-3045-4968-a150-cb813fddfe9e][org-edit-special]]               |                                 | [[#47b5912e-edc7-42ec-841b-f0e202b7f593][spell check word]]              |                          |
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  | left secondary  | C-                             | M-                              | C-M-                          | C-S-                     |
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  | =               |                                |                                 |                               |                          |
+  | 1               |                                |                                 |                               |                          |
+  | 4               |                                |                                 | [[#2d4de3c9-9e0c-4ab4-89e3-e41bfed3c9a7][widen]]                         |                          |
+  | 5               |                                |                                 |                               |                          |
+  | tab-key         | [[#2f527321-7f78-421b-b0c4-6fc810da0246][query-replace]]                  |                                 |                               |                          |
+  | t               | [[#3bcdf4a3-f33c-4dad-ba94-e4fd3775eca6][org change todo state]]          |                                 | [[#47c64b9c-346d-45ad-8c38-865fe22d31a6][org insert timestamp]]          |                          |
+  | home            | [[#1919659a-b466-4519-9276-8bf06a916066][start of buffer]]                |                                 |                               |                          |
+  | end             | [[#0a7bd629-cbcc-4761-8fe2-cc9370b985a4][end of buffer]]                  |                                 |                               |                          |
+  | f9              |                                |                                 |                               |                          |
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  | right secondary | C-                             | M-                              | C-M-                          | C-S-                     |
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
+  | 6               | [[#e44e584b-d925-4036-9ad5-a90d02e74bef][save-buffers-kill-emacs]]        |                                 | [[#da73de75-0914-4f48-81d5-9b408433b14b][insert-small-copyright]]        |                          |
+  | 7               |                                |                                 | [[#a68c6b8e-9911-475e-ab35-e239771fe881][insert-full-copyright]]         |                          |
+  | 0               | [[#96ae2fcc-3a0c-40c4-aef8-06aff3fd42be][text-scale-reset]]               |                                 | [[#0e7f83a5-600e-4016-af98-95904300c016][insert-apache]]                 |                          |
+  | -               |                                |                                 | [[#6febc7ea-9cc7-488c-af34-538b8e69633b][org-edit-src-exit]]             |                          |
+  | y               | [[#97aee7f1-3647-4602-a65a-45e8a3aa3a7c][undo-tree-redo]]                 |                                 |                               |                          |
+  | \               | [[#69005926-08ab-4adc-a163-44fed609cc95][sr-speedbar-toggle]]             |                                 | [[#27045e96-59a3-45b4-b0ff-6247aa5ed47e][mark-defun]]                    |                          |
+  | h               | [[#3c5f241f-fc62-459d-ab85-6b7c1fb04801][help-prefix]]                    |                                 |                               |                          |
+  | '               | [[#9f252721-a2d5-46c6-b268-8ed597256229][eval-expression]]                |                                 |                               |                          |
+  | n               | [[#65ac9206-1a67-48dc-8b72-26d763d7bf2b][unpop-to-mark-command]]          |                                 | [[#34fb8fbd-42dc-46b0-8c3c-c7e51edc9687][narrow-to-region]]              |                          |
+  | rshift          |                                |                                 |                               |                          |
+  | escape          | [[#da8bae21-a7be-45de-8027-1b26e6285e40][find-tag]]                       |                                 |                               |                          |
+  |-----------------+--------------------------------+---------------------------------+-------------------------------+--------------------------|
   #+END:
 
 * persistent registers
@@ -8871,9 +6108,6 @@ command to make more accessible, ...
 
 * TESTING / DEVELOPMENT AREA
 
-:PROPERTIES:
-  :tangle:   no
-:END:
 ** new
 #+begin_src emacs-lisp