Changes
authorJoerg Jaspert <joerg@debian.org>
Tue, 15 Jan 2019 20:24:50 +0000 (21:24 +0100)
committerJoerg Jaspert <joerg@debian.org>
Tue, 15 Jan 2019 20:24:50 +0000 (21:24 +0100)
.emacs.d/config/emacs.org

index ba06443..bf9ee9a 100644 (file)
@@ -5,8 +5,6 @@
 #+SETUPFILE:   ~/.emacs.d/elisp/org-templates/level-0.org
 #+LATEX_CMD:   xelatex
 #+PROPERTY: header-args    :tangle yes
-# @compile: (message "FOO")
-# @compile: (byte-compile-file "config.el")
 
 * Base settings, Stuff without an extra package
 ** Configure package loading
@@ -81,13 +79,6 @@ Tangle my config on save, so next startup shouldn't need to do it.
 (add-hook 'after-save-hook #'my-tangle-config-org-hook-func)
 #+END_SRC
 
-** Schema validation for the config
-[2016-10-30 Sun 17:15]
-#+BEGIN_SRC emacs-lisp
-(use-package validate
-  :ensure t)
-#+END_SRC
-
 ** safe-load
 safe-load does not break emacs initialization, should a file be
 unreadable while emacs boots up.
@@ -200,21 +191,21 @@ Help emacs to find the info files
 *** Hide Startup message
  I dislike the startup message
  #+BEGIN_SRC emacs-lisp
- (validate-setq inhibit-splash-screen t)
- (validate-setq inhibit-startup-message t)
+ (setq inhibit-splash-screen t)
+ (setq inhibit-startup-message t)
  #+END_SRC
 
 *** Linebreak at 72
  Usually I want the lines to break at 72 characters.
  #+BEGIN_SRC emacs-lisp
- (validate-setq fill-column 72)
+ (setq fill-column 72)
  #+END_SRC
 
 *** Require final newline
  And it is nice to have a final newline in files.
  #+BEGIN_SRC emacs-lisp
- (validate-setq require-final-newline nil)
- (validate-setq mode-require-final-newline nil)
+ (setq require-final-newline nil)
+ (setq mode-require-final-newline nil)
  #+END_SRC
 
 *** Autosave
@@ -222,17 +213,17 @@ Help emacs to find the info files
  would be nice of emacs to save whatever I am on in one of its auto-save
  backups. See [[info:emacs#Auto%20Save%20Control][info:emacs#Auto Save Control]] for more details.
  #+BEGIN_SRC emacs-lisp
- (validate-setq auto-save-interval 300)
- (validate-setq auto-save-timeout   60)
+ (setq auto-save-interval 300)
+ (setq auto-save-timeout   60)
  #+END_SRC
 
 *** Name and mail settings
  Set my full name and my default mail address - for whatever wants to use
  it later. Also, I am using gnus.
  #+BEGIN_SRC emacs-lisp
- (validate-setq user-full-name "Joerg Jaspert")
- (validate-setq user-mail-address "joerg@ganneff.de")
- (validate-setq mail-user-agent (quote gnus-user-agent))
+ (setq user-full-name "Joerg Jaspert")
+ (setq user-mail-address "joerg@ganneff.de")
+ (setq mail-user-agent (quote gnus-user-agent))
  #+END_SRC
 
 *** Smtpmail
@@ -244,8 +235,8 @@ Help emacs to find the info files
    :ensure t
    :config
    (progn
-     (validate-setq smtpmail-default-smtp-server "localhost")
-     (validate-setq smtpmail-smtp-server "localhost")))
+     (setq smtpmail-default-smtp-server "localhost")
+     (setq smtpmail-smtp-server "localhost")))
  #+END_SRC
 
 *** Compressed files
@@ -269,7 +260,7 @@ Help emacs to find the info files
  Recenter in a different order - first go to top, then middle, then
  bottom
  #+BEGIN_SRC emacs-lisp
- (validate-setq recenter-positions '(top middle bottom))
+ (setq recenter-positions '(top middle bottom))
  #+END_SRC
 
 ** Look / Theme
@@ -277,8 +268,10 @@ Help emacs to find the info files
  I've tried various different fonts and while I like the Terminus font
  most for my shells, in Emacs Inconsolata clearly wins.
  #+BEGIN_SRC emacs-lisp
-; (set-frame-font "Inconsolata-14")
-(set-frame-font "Hack-10")
+ ; (set-frame-font "Inconsolata-14")
+ (set-frame-font "Hack-10")
+ (add-to-list 'default-frame-alist
+                 '(font . "Hack-10"))
  #+END_SRC
 
 *** Background dark
@@ -312,29 +305,29 @@ Help emacs to find the info files
        (setq solarized-distinct-fringe-background t)
 
        ;; ;; Don't change the font for some headings and titles
-       ;; (validate-setq solarized-use-variable-pitch nil)
+       ;; (setq solarized-use-variable-pitch nil)
 
        ;; ;; make the modeline high contrast
-       ;; (validate-setq solarized-high-contrast-mode-line nil)
+       ;; (setq solarized-high-contrast-mode-line nil)
 
        ;; ;; Use less bolding
-       ;; (validate-setq solarized-use-less-bold t)
+       ;; (setq solarized-use-less-bold t)
 
        ;; ;; Use more italics
-       ;; (validate-setq solarized-use-more-italic t)
+       ;; (setq solarized-use-more-italic t)
 
        ;; ;; Use less colors for indicators such as git:gutter, flycheck and similar
-       ;; (validate-setq solarized-emphasize-indicators nil)
+       ;; (setq solarized-emphasize-indicators nil)
 
        ;; ;; Don't change size of org-mode headlines (but keep other size-changes)
-       ;; (validate-setq solarized-scale-org-headlines nil)
+       ;; (setq solarized-scale-org-headlines nil)
 
        ;; ;; Avoid all font-size changes
-       ;; (validate-setq solarized-height-minus-1 1)
-       ;; (validate-setq solarized-height-plus-1 1)
-       ;; (validate-setq solarized-height-plus-2 1)
-       ;; (validate-setq solarized-height-plus-3 1)
-       ;; (validate-setq solarized-height-plus-4 1)
+       ;; (setq solarized-height-minus-1 1)
+       ;; (setq solarized-height-plus-1 1)
+       ;; (setq solarized-height-plus-2 1)
+       ;; (setq solarized-height-plus-3 1)
+       ;; (setq solarized-height-plus-4 1)
        (setq x-underline-at-descent-line t)
 
      (add-to-list 'custom-theme-load-path jj-theme-dir)
@@ -360,12 +353,16 @@ I do not want my cursor to blink.
 #+BEGIN_SRC emacs-lisp
 (blink-cursor-mode -1)
 #+END_SRC
-*** Menu, Tool and Scrollbar
+*** Menu, Tool and Scrollbar, File/Dialog boxes
 I don't want to see the menu-bar, tool-bar or scrollbar.
+And I don't want silly graphic file dialog or boxes.
 #+BEGIN_SRC emacs-lisp
 (when window-system
   (dolist (mode '(menu-bar-mode tool-bar-mode scroll-bar-mode))
-  (when (fboundp mode) (funcall mode -1))))
+    (when (fboundp mode) (funcall mode -1)))
+  (if (fboundp 'use-file-dialog) (setq use-file-dialog nil))
+  (if (fboundp 'use-dialog-box) (setq use-dialog-box nil))
+  )
 #+END_SRC
 **** When using emacs in daemon mode
 Emacs has a very nice mode where it detaches itself and runs as daemon -
@@ -396,17 +393,17 @@ As it says, it does a hilight of the current line.
 *** Allow recursive minibuffers
 This allows (additional) minibuffer commands while in the minibuffer.
 #+BEGIN_SRC emacs-lisp
-(validate-setq enable-recursive-minibuffers 't)
+(setq enable-recursive-minibuffers 't)
 #+END_SRC
 *** No GC during minibuffer action
 [2016-02-15 Mon 22:09]
 See [[https://bling.github.io/blog/2016/01/18/why-are-you-changing-gc-cons-threshold/][Why are you changing gc cons threshold?]] for more details.
 #+BEGIN_SRC emacs-lisp
 (defun my-minibuffer-setup-hook ()
-  (validate-setq gc-cons-threshold most-positive-fixnum))
+  (setq gc-cons-threshold most-positive-fixnum))
 
 (defun my-minibuffer-exit-hook ()
-  (validate-setq gc-cons-threshold 16777216))
+  (setq gc-cons-threshold 16777216))
 
 (add-hook 'minibuffer-setup-hook #'my-minibuffer-setup-hook)
 (add-hook 'minibuffer-exit-hook #'my-minibuffer-exit-hook)
@@ -422,12 +419,12 @@ modeline in red as soon as you are over the defined limit.
 (column-number-mode 1)
 (size-indication-mode 1)
 (display-time-mode 1)
-(validate-setq display-time-day-and-date nil)
-(validate-setq display-time-default-load-average nil)
-(validate-setq display-time-24hr-format t)
-(validate-setq display-time-mail-string "")
-(validate-setq display-time-default-load-average nil)
-(validate-setq display-time-interval 15)
+(setq display-time-day-and-date nil)
+(setq display-time-default-load-average nil)
+(setq display-time-24hr-format t)
+(setq display-time-mail-string "")
+(setq display-time-default-load-average nil)
+(setq display-time-interval 15)
 (setq modelinepos-column-limit 72)
 
 (use-package modeline-posn
@@ -482,7 +479,7 @@ character(s).
   ☃⌕☥
   ")
 
-;  (add-hook 'after-change-major-mode-hook 'clean-mode-line)
+(add-hook 'after-change-major-mode-hook 'clean-mode-line)
 #+END_SRC
 Unfortunately icicles breaks this with the way it adds/removes itself,
 so take it our for now...
@@ -501,8 +498,8 @@ so take it our for now...
  The variable at t (its default) lets emacs query before killing
  processes when exiting.
  #+BEGIN_SRC emacs-lisp :tangle yes
-   ;;(validate-setq confirm-kill-processes nil)
-   (validate-setq kill-buffer-query-functions
+   ;;(setq confirm-kill-processes nil)
+   (setq kill-buffer-query-functions
                   (delq 'process-kill-buffer-query-function kill-buffer-query-functions))
  #+END_SRC
 ** Keyboard related changes
@@ -559,7 +556,7 @@ From [[http://endlessparentheses.com/faster-pop-to-mark-command.html?source=rss]
   (let ((p (point)))
     (dotimes (i 10)
       (when (= p (point)) ad-do-it))))
-(validate-setq set-mark-command-repeat-pop t)
+(setq set-mark-command-repeat-pop t)
 #+END_SRC
 *** Don't kill-buffer, kill-this-buffer instead
 From [[http://pragmaticemacs.com/emacs/dont-kill-buffer-kill-this-buffer-instead/][Pragmatic Emacs]]: By default C-x k runs the command kill-buffer
@@ -583,7 +580,16 @@ make up our own.
 #+BEGIN_SRC emacs-lisp
 (bind-key "C-c C-q" 'mark-sexp)
 #+END_SRC
+*** Make it easy to edit this config
+[2018-12-30 Sun 16:54]
+#+BEGIN_SRC emacs-lisp
+(defun find-config ()
+    "Edit emacs.org"
+    (interactive)
+    (find-file "~/.emacs.d/config/emacs.org"))
 
+(bind-key "C-c I" 'find-config)
+#+END_SRC
 ** Miscellaneous stuff
 *** Isearch related
 Incremental search is great, but annoyingly you need to type whatever
@@ -601,7 +607,7 @@ jump to the next/previous occurence of it.
 I want to see the buffername and its size, not the host I am on in my
 frame title.
 #+BEGIN_SRC emacs-lisp
-(validate-setq frame-title-format "%b (%i)")
+(setq frame-title-format "%b (%I/%i)")
 #+END_SRC
 
 *** yes-or-no-p
@@ -621,9 +627,9 @@ In this day and age, UTF-8 is the way to go.
 (set-clipboard-coding-system 'utf-8)
 (prefer-coding-system 'utf-8)
 (set-charset-priority 'unicode)
-(validate-setq default-process-coding-system '(utf-8-unix . utf-8-unix))
+(setq default-process-coding-system '(utf-8-unix . utf-8-unix))
 (when (display-graphic-p)
-  (validate-setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)))
+  (setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)))
 #+END_SRC
 
 *** Kill other buffers
@@ -637,11 +643,11 @@ you are in", emacs doesn't have this... Except, now it will.
 Default scrolling behaviour in emacs is a bit annoying, who wants to
 jump half-windows?
 #+BEGIN_SRC emacs-lisp
-(validate-setq scroll-margin 3)
-(validate-setq scroll-conservatively 100000)
-(validate-setq scroll-up-aggressively 0.0)
-(validate-setq scroll-down-aggressively 0.0)
-(validate-setq scroll-preserve-screen-position 'always)
+(setq scroll-margin 3)
+(setq scroll-conservatively 100000)
+(setq scroll-up-aggressively 0.0)
+(setq scroll-down-aggressively 0.0)
+(setq scroll-preserve-screen-position 'always)
 #+END_SRC
 
 *** Copy/Paste with X
@@ -649,10 +655,10 @@ jump half-windows?
 The default how emacs handles cutting/pasting with the primary selection
 changed in emacs24. I am used to the old way, so get it back.
 #+BEGIN_SRC emacs-lisp
-(validate-setq select-enable-primary t)
-(validate-setq select-enable-clipboard nil)
-(validate-setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
-(validate-setq mouse-drag-copy-region t)
+(setq select-enable-primary t)
+(setq select-enable-clipboard nil)
+(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
+(setq mouse-drag-copy-region t)
 #+END_SRC
 *** Global keyboard changes not directly related to a mode
 **** disable suspend frame
@@ -786,7 +792,7 @@ changed in emacs24. I am used to the old way, so get it back.
                      (other-window -1)))
  #+END_SRC
 **** Edit file as root
- #+BEGIN_SRC emacs-lisp 
+ #+BEGIN_SRC emacs-lisp
  (bind-key "C-x C-r" 'prelude-sudo-edit)
  #+END_SRC
 **** Just one space with newline
@@ -804,8 +810,8 @@ changed in emacs24. I am used to the old way, so get it back.
    :ensure keyfreq
    :config
    (progn
-     (validate-setq keyfreq-file (expand-file-name "keyfreq" jj-cache-dir))
-     (validate-setq keyfreq-file-lock (expand-file-name "keyfreq.lock" jj-cache-dir))
+     (setq keyfreq-file (expand-file-name "keyfreq" jj-cache-dir))
+     (setq keyfreq-file-lock (expand-file-name "keyfreq.lock" jj-cache-dir))
      (keyfreq-mode 1)
      (keyfreq-autosave-mode 1)))
  #+END_SRC
@@ -822,7 +828,7 @@ changed in emacs24. I am used to the old way, so get it back.
        (newline)
        (insert line-text))))
 
- (bind-key "C-c p" 'duplicate-line)
+ (bind-key "C-x d" 'duplicate-line)
  #+END_SRC
 **** Smarter move to the beginning of the line.
 That is, it first moves to the beginning of the line - and on second
@@ -839,7 +845,7 @@ That is, it first moves to the beginning of the line - and on second
  If ARG is not nil or 1, move forward ARG - 1 lines first.  If
  point reaches the beginning or end of the buffer, stop there."
    (interactive "^p")
-   (validate-setq arg (or arg 1))
+   (setq arg (or arg 1))
 
    ;; Move lines first
    (when (/= arg 1)
@@ -898,7 +904,7 @@ That is, it first moves to the beginning of the line - and on second
 
  Show keystrokes in progress
  #+BEGIN_SRC emacs-lisp
- (validate-setq echo-keystrokes 0.1)
+ (setq echo-keystrokes 0.1)
  #+END_SRC
 **** Overwrite mode
 Usually you can press the *Ins*ert key, to get into overwrite mode. I
@@ -955,7 +961,7 @@ disabling that.
  #+END_SRC
 **** Quickly find emacs lisp sources
  [2014-06-22 Sun 23:05]
- #+BEGIN_SRC emacs-lisp
+ #+BEGIN_SRC emacs-lisp :tangle no
  (bind-key "C-l" 'find-library 'help-command)
  (bind-key "C-f" 'find-function 'help-command)
  (bind-key "C-k" 'find-function-on-key 'help-command)
@@ -978,13 +984,13 @@ disabling that.
 What should be displayed in the mode-line for files with those types
 of line endings.
 #+BEGIN_SRC emacs-lisp
-(validate-setq eol-mnemonic-dos "(DOS)")
-(validate-setq eol-mnemonic-mac "(Mac)")
+(setq eol-mnemonic-dos "(DOS)")
+(setq eol-mnemonic-mac "(Mac)")
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp
-(validate-setq max-lisp-eval-depth 1000)
-(validate-setq max-specpdl-size 3000)
+(setq max-lisp-eval-depth 1000)
+(setq max-specpdl-size 3000)
 #+END_SRC
 *** Unfill paragraph
 From https://raw.github.com/qdot/conf_emacs/master/emacs_conf.org
@@ -999,7 +1005,7 @@ From https://raw.github.com/qdot/conf_emacs/master/emacs_conf.org
 
 #+BEGIN_SRC emacs-lisp
 (setq-default indicate-empty-lines t)
-(validate-setq sentence-end-double-space nil)
+(setq sentence-end-double-space nil)
 #+END_SRC
 *** Hilight annotations in comments, like FIXME/TODO/...
 #+BEGIN_SRC emacs-lisp :tangle yes
@@ -1007,11 +1013,11 @@ From https://raw.github.com/qdot/conf_emacs/master/emacs_conf.org
 #+END_SRC
 *** Wait a bit longer before considering emacs idle
 #+BEGIN_SRC emacs-lisp :tangle yes
-(validate-setq idle-update-delay 2)
+(setq idle-update-delay 2)
 #+END_SRC
 *** Make gnutls a bit safer, the default is an absurdly low 256
 #+BEGIN_SRC emacs-lisp :tangle yes
-(validate-setq gnutls-min-prime-bits 4096)
+(setq gnutls-min-prime-bits 4096)
 #+END_SRC
 *** Emacs defaults to using --insecure - and supporting ssl3. No thanks.
 #+BEGIN_SRC emacs-lisp :tangle yes
@@ -1050,7 +1056,7 @@ From https://raw.github.com/qdot/conf_emacs/master/emacs_conf.org
 (use-package edit-server
   :config
   (progn
-    (validate-setq edit-server-new-frame nil)
+    (setq edit-server-new-frame nil)
     (edit-server-start)))
 #+END_SRC
 *** Adjust buffer mode for zsh commandline editing buffers
@@ -1067,6 +1073,19 @@ Now I want the buffers of it appear in sh-mode by default
 #+BEGIN_SRC emacs-lisp
 (setq create-lockfiles nil)
 (setq make-backup-files nil)
+#+END_SRC
+*** Always kick trailing whitespace
+[2018-12-30 Sun 16:58]
+#+BEGIN_SRC emacs-lisp
+(add-hook 'before-save-hook 'delete-trailing-whitespace)
+#+END_SRC
+*** kill ring settings
+[2018-12-30 Sun 23:06]
+#+BEGIN_SRC emacs-lisp
+(setq kill-ring-max 200                 ; More killed items
+      kill-do-not-save-duplicates t     ; No duplicates in kill ring
+      ;; Save the contents of the clipboard to kill ring before killing
+      save-interprogram-paste-before-kill t)
 
 #+END_SRC
 * Customized variables
@@ -1109,7 +1128,7 @@ This can be 0 for immediate, or a floating point value."
  custom-set here, but we need it anyways.
 
  #+BEGIN_SRC emacs-lisp
- (validate-setq custom-file jj-custom-file)
+ (setq custom-file jj-custom-file)
  (safe-load custom-file)
  #+END_SRC
 
@@ -1124,68 +1143,71 @@ different text. Abbrevs are defined by the user to expand in specific
 ways.
 Also see [[http://endlessparentheses.com/ispell-and-abbrev-the-perfect-auto-correct.html][Ispell and Abbrev, the Perfect Auto-Correct]].
 #+BEGIN_SRC emacs-lisp :tangle yes
-  (use-package abbrev
-    :commands abbrev-mode
-    :diminish abbrev-mode
-    :bind (:map ctl-x-map
-           ("C-i" . endless/ispell-word-then-abbrev))
-    :init
-    (progn
-      (setq-default abbrev-mode t)
-      (hook-into-modes #'abbrev-mode '(text-mode-hook)))
-    :config
-    (progn
-      (validate-setq save-abbrevs 'silently)
-      (validate-setq abbrev-file-name (expand-file-name "abbrev_defs" jj-cache-dir))
-      (if (file-exists-p abbrev-file-name)
-          (quietly-read-abbrev-file))
-
-      (add-hook 'expand-load-hook
-                (lambda ()
-                  (add-hook 'expand-expand-hook 'indent-according-to-mode)
-                  (add-hook 'expand-jump-hook 'indent-according-to-mode)))
-
-      (defun endless/ispell-word-then-abbrev (p)
-        "Call `ispell-word', then create an abbrev for it.
-  With prefix P, create local abbrev. Otherwise it will
-  be global.
-  If there's nothing wrong with the word at point, keep
-  looking for a typo until the beginning of buffer. You can
-  skip typos you don't want to fix with `SPC', and you can
-  abort completely with `C-g'."
-        (interactive "P")
-        (let (bef aft)
-          (save-excursion
-            (while (if (validate-setq bef (thing-at-point 'word))
-                       ;; Word was corrected or used quit.
-                       (if (ispell-word nil 'quiet)
-                           nil ; End the loop.
-                         ;; Also end if we reach `bob'.
-                         (not (bobp)))
-                     ;; If there's no word at point, keep looking
-                     ;; until `bob'.
-                     (not (bobp)))
-              (backward-word))
-            (validate-setq aft (thing-at-point 'word)))
-          (if (and aft bef (not (equal aft bef)))
-              (let ((aft (downcase aft))
-                    (bef (downcase bef)))
-                (define-abbrev
-                  (if p local-abbrev-table global-abbrev-table)
-                  bef aft)
-                (message "\"%s\" now expands to \"%s\" %sally"
-                         bef aft (if p "loc" "glob")))
-            (user-error "No typo at or before point"))))
-            (validate-setq save-abbrevs 'silently)))
+(use-package abbrev
+  :commands abbrev-mode
+  :diminish abbrev-mode
+  :bind (:map ctl-x-map
+              ("C-i" . endless/ispell-word-then-abbrev))
+  :init
+  (progn
+    (setq-default abbrev-mode t)
+    (hook-into-modes #'abbrev-mode '(text-mode-hook)))
+  :config
+  (progn
+    (setq save-abbrevs 'silently)
+    (setq abbrev-file-name (expand-file-name "abbrev_defs" jj-cache-dir))
+    (if (file-exists-p abbrev-file-name)
+        (quietly-read-abbrev-file))
+
+    (add-hook 'expand-load-hook
+              (lambda ()
+                (add-hook 'expand-expand-hook 'indent-according-to-mode)
+                (add-hook 'expand-jump-hook 'indent-according-to-mode)))
+
+    (defun endless/ispell-word-then-abbrev (p)
+      "Call `ispell-word', then create an abbrev for it.
+With prefix P, create local abbrev. Otherwise it will
+be global.
+If there's nothing wrong with the word at point, keep
+looking for a typo until the beginning of buffer. You can
+skip typos you don't want to fix with `SPC', and you can
+abort completely with `C-g'."
+      (interactive "P")
+      (let (bef aft)
+        (save-excursion
+          (while (if (setq bef (thing-at-point 'word))
+                     ;; Word was corrected or used quit.
+                     (if (ispell-word nil 'quiet)
+                         nil ; End the loop.
+                       ;; Also end if we reach `bob'.
+                       (not (bobp)))
+                   ;; If there's no word at point, keep looking
+                   ;; until `bob'.
+                   (not (bobp)))
+            (backward-word))
+          (setq aft (thing-at-point 'word)))
+        (if (and aft bef (not (equal aft bef)))
+            (let ((aft (downcase aft))
+                  (bef (downcase bef)))
+              (define-abbrev
+                (if p local-abbrev-table global-abbrev-table)
+                bef aft)
+              (message "\"%s\" now expands to \"%s\" %sally"
+                       bef aft (if p "loc" "glob")))
+          (user-error "No typo at or before point"))))
+    (setq save-abbrevs 'silently)))
 #+END_SRC
 ** Atomic chrome, edit text from Chrome in Emacs
 [2017-03-09 Do 14:56]
 #+BEGIN_SRC emacs-lisp
 (use-package atomic-chrome
   :ensure t
+  :if window-system
   :init
   (progn
-    (atomic-chrome-start-server)))
+    (atomic-chrome-start-server)
+    (setq atomic-chrome-buffer-open-style 'full)
+))
 #+END_SRC
 ** ace-window
 [2013-04-21 So 20:27]
@@ -1197,7 +1219,7 @@ Use H-w to switch windows
   :bind ("H-w" . ace-window)
   :config
   (progn
-    (validate-setq aw-keys '(?a ?s ?d ?f ?j ?k ?l))
+    (setq aw-keys '(?a ?s ?d ?f ?j ?k ?l))
     ))
 #+END_SRC
 ** anzu
@@ -1213,7 +1235,7 @@ information in the mode-line in various search modes.
     (global-anzu-mode 1)
   :config
   (progn
-    (validate-setq anzu-search-threshold 1000)
+    (setq anzu-search-threshold 1000)
     (set-face-attribute 'anzu-mode-line nil :foreground "yellow" :weight 'bold)))
 #+END_SRC
 ** CANCELLED ansible                                             :CANCELLED:
@@ -1241,7 +1263,7 @@ avy is a GNU Emacs package for jumping to visible text using a char-based decisi
          )
   :config
   (progn
-    (validate-setq avy-all-windows 'all-frames)
+    (setq avy-all-windows 'all-frames)
     (setq avi-keys '(?a ?s ?d ?e ?f ?h ?j ?k ?l ?n ?m ?v ?r ?u) )
     ))
 #+END_SRC
@@ -1252,8 +1274,8 @@ avy is a GNU Emacs package for jumping to visible text using a char-based decisi
     :commands (browse-url)
     :config
     (progn
-      (validate-setq browse-url-browser-function (quote browse-url-generic))
-      (validate-setq browse-url-generic-program "/usr/bin/x-www-browser")))
+      (setq browse-url-browser-function (quote browse-url-generic))
+      (setq browse-url-generic-program "/usr/bin/x-www-browser")))
 #+END_SRC
 
 ** CANCELLED Emacs shell                                         :CANCELLED:
@@ -1299,7 +1321,7 @@ Basic settings for emacs integrated shell
     (use-package 'em-prompt)
     (use-package 'em-term)
 
-    (validate-setq eshell-cmpl-cycle-completions nil
+    (setq eshell-cmpl-cycle-completions nil
           eshell-save-history-on-exit t
           eshell-buffer-maximum-lines 20000
           eshell-history-size 350
@@ -1309,9 +1331,9 @@ Basic settings for emacs integrated shell
           eshell-cmpl-dir-ignore "\\`\\(\\.\\.?\\|CVS\\|\\.svn\\|\\.git\\)/\\'")
 
     (setenv "PAGER" "cat")
-    (validate-setq eshell-visual-commands
+    (setq eshell-visual-commands
           '("less" "tmux" "htop" "top" "bash" "zsh" "tail"))
-    (validate-setq eshell-visual-subcommands
+    (setq eshell-visual-subcommands
           '(("git" "log" "l" "diff" "show")))
 
     (add-to-list 'eshell-command-completions-alist
@@ -1358,7 +1380,7 @@ Basic settings for emacs integrated shell
       :ensure t
       :init
       (progn
-        (validate-setq eshell-highlight-prompt nil
+        (setq eshell-highlight-prompt nil
               ;; epe-git-dirty-char "Ϟ"
               epe-git-dirty-char "*"
               eshell-prompt-function 'epe-theme-dakrone)))
@@ -1366,12 +1388,12 @@ Basic settings for emacs integrated shell
     (defun eshell/magit ()
       "Function to open magit-status for the current directory"
       (interactive)
-      (magit-status default-directory)
+      (magit-status-internal default-directory)
       nil)
 
-    (validate-setq eshell-prompt-function 'eshell/my-prompt)
-    (validate-setq eshell-highlight-prompt nil)
-    (validate-setq eshell-prompt-regexp "^[^#$\n]+[#$] ")))
+    (setq eshell-prompt-function 'eshell/my-prompt)
+    (setq eshell-highlight-prompt nil)
+    (setq eshell-prompt-regexp "^[^#$\n]+[#$] ")))
 #+END_SRC
 
 ** keep-buffers
@@ -1396,7 +1418,7 @@ In the past I had a long function that just recreated them, but the
     (midnight-mode)
     :config
     (progn
-      (validate-setq clean-buffer-list-kill-buffer-names (quote ("*Help*" "*Apropos*"
+      (setq clean-buffer-list-kill-buffer-names (quote ("*Help*" "*Apropos*"
                                                                  "*Man " "*Buffer List*"
                                                                  "*Compile-Log*"
                                                                  "*info*" "*vc*"
@@ -1431,32 +1453,32 @@ Paradox is a nicer interface to the package system
    :defer 5
    :init
      (paradox-enable)
-    
+
 #+END_SRC
 ** Shell (ZSH)
 [2013-04-23 Tue 16:43]
 Shell. zsh in my case.
 #+BEGIN_SRC emacs-lisp
-  (use-package shell
-    :commands (shell)
-    :defer t
-    :config
-    (progn
-       (validate-setq shell-file-name "zsh")
-       (validate-setq shell-command-switch "-c")
-       (validate-setq explicit-shell-file-name shell-file-name)
-       (setenv "SHELL" shell-file-name)
-       (setq explicit-sh-args '("-login" "-i"))
-       (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
-       (validate-setq comint-scroll-to-bottom-on-input t)  ; always insert at the bottom
-       (validate-setq comint-scroll-to-bottom-on-output t) ; always add output at the bottom
-       (validate-setq comint-scroll-show-maximum-output t) ; scroll to show max possible output
-       (validate-setq comint-completion-autolist t)        ; show completion list when ambiguous
-       (validate-setq comint-input-ignoredups t)           ; no duplicates in command history
-       (validate-setq comint-completion-addsuffix t)       ; insert space/slash after file completion
-       (validate-setq comint-buffer-maximum-size 20000)    ; max lenght of the buffer in lines
-       (validate-setq comint-prompt-read-only nil)         ; if this is t, it breaks shell-command
-       ))
+(use-package shell
+  :commands (shell)
+  :defer t
+  :hook (shell-mode . ansi-color-for-comint-mode-on)
+  :config
+  (progn
+     (setq shell-file-name "zsh")
+     (setq shell-command-switch "-c")
+     (setq explicit-shell-file-name shell-file-name)
+     (setenv "SHELL" shell-file-name)
+     (setq explicit-sh-args '("-login" "-i"))
+     (setq comint-scroll-to-bottom-on-input t)  ; always insert at the bottom
+     (setq comint-scroll-to-bottom-on-output t) ; always add output at the bottom
+     (setq comint-scroll-show-maximum-output t) ; scroll to show max possible output
+     (setq comint-completion-autolist t)        ; show completion list when ambiguous
+     (setq comint-input-ignoredups t)           ; no duplicates in command history
+     (setq comint-completion-addsuffix t)       ; insert space/slash after file completion
+     (setq comint-buffer-maximum-size 20000)    ; max lenght of the buffer in lines
+     (setq comint-prompt-read-only nil)         ; if this is t, it breaks shell-command
+     ))
 #+END_SRC
 
 ** ascii
@@ -1495,104 +1517,11 @@ Shell. zsh in my case.
      ;; Compilation command
      (add-hook 'LaTeX-mode-hook (lambda () (setq compile-command "latexmk -pdf")))))
  #+END_SRC
-** CANCELLED auto-complete mode                                  :CANCELLED:
-CLOSED: [2017-12-08 Fri 15:25]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-12-08 Fri 15:25]
-:END:
- [2013-04-27 Sa 16:33]
- And aren't we all lazy? I definitely am, and I like my emacs doing as
- much possible work for me as it can.
- So here, auto-complete-mode, which lets emacs do this, based on what I
- already had typed.
- #+BEGIN_SRC emacs-lisp
- (use-package auto-complete
-   :ensure auto-complete
-   :commands auto-complete-mode
-   :bind (("C-n" . ac-next)
-          ("C-p" . ac-previous)
-          :map ac-complete-mode-map
-          ("\t" . ac-expand)
-          ("\r" . ac-complete)
-          ("M-n" . ac-next)
-          ("M-p" . ac-previous)
-          :map ac-mode-map
-          ("M-TAB" . auto-complete)
-          :map ac-completing-map
-          ("C-s" . ac-isearch))
-   :init
-   (progn
-     (auto-complete-mode t))
-   :config
-   (progn
-     (ac-config-default)
-     ;; hook AC into completion-at-point
-     (defun sanityinc/auto-complete-at-point ()
-       (when (and (not (minibufferp))
-                  (fboundp 'auto-complete-mode)
-                  auto-complete-mode)
-         (auto-complete)))
-     (defun set-auto-complete-as-completion-at-point-function ()
-       (add-to-list 'completion-at-point-functions 'sanityinc/auto-complete-at-point))
-     ;; Exclude very large buffers from dabbrev
-     (defun sanityinc/dabbrev-friend-buffer (other-buffer)
-       (< (buffer-size other-buffer) (* 1 1024 1024)))
-
-     (use-package pos-tip
-       :ensure t)
-
-     (validate-setq ac-comphist-file (expand-file-name "ac-comphist.dat" jj-cache-dir))
-     (validate-setq ac-use-comphist t)
-     (validate-setq ac-expand-on-auto-complete nil)
-     (validate-setq ac-dwim t)
-     (validate-setq ac-auto-start 3)
-     (validate-setq ac-delay 0.3)
-     (validate-setq ac-menu-height 15)
-     (validate-setq ac-quick-help-delay 0.5)
-     (validate-setq ac-use-fuzzy t)
-
-     (ac-flyspell-workaround)
-
-     ;; use 't when auto-complete is disabled
-     (validate-setq tab-always-indent 'complete)
-     (add-to-list 'completion-styles 'initials t)
-
-      ;; Use space and punctuation to accept the current the most likely completion.
-     (setq auto-completion-syntax-alist (quote (global accept . word)))
-      ;; Avoid completion for short trivial words.
-     (setq auto-completion-min-chars (quote (global . 3)))
-     (setq completion-use-dynamic t)
-
-     (add-hook 'auto-complete-mode-hook 'set-auto-complete-as-completion-at-point-function)
-
-     ;; Exclude very large buffers from dabbrev
-     (setq dabbrev-friend-buffer-function 'sanityinc/dabbrev-friend-buffer)
-
-     (use-package ac-dabbrev
-       :ensure t)
-
-     (set-default 'ac-sources
-                  '(ac-source-imenu
-                    ac-source-dictionary
-                    ac-source-words-in-buffer
-                    ac-source-words-in-same-mode-buffers
-     ;               ac-source-words-in-all-buffer
-                    ac-source-dabbrev))
-
-     (dolist (mode '(magit-log-edit-mode log-edit-mode org-mode text-mode haml-mode
-                     sass-mode yaml-mode csv-mode espresso-mode haskell-mode 
-                     html-mode nxml-mode sh-mode smarty-mode clojure-mode go-mode
-                     lisp-mode textile-mode markdown-mode tuareg-mode python-mode
-                     js3-mode css-mode less-css-mode sql-mode ielm-mode))
-       (add-to-list 'ac-modes mode))
-
-     (hook-into-modes 'auto-complete-mode '(latex-mode-hook LaTeX-mode-hook prog-mode-hook html-mode lisp-mode css-mode org-mode-hook))))
- #+END_SRC
 ** company-mode
 [2017-12-08 Fri 09:42]
 Auto-completion comp any mode.
 #+BEGIN_SRC emacs-lisp
-(use-package company               
+(use-package company
   :ensure t
   :defer t
   :diminish company-mode
@@ -1649,7 +1578,7 @@ Auto-completion comp any mode.
    :diminish auto-revert-mode
    :init
    (progn
-     (validate-setq global-auto-revert-mode t)
+     (setq global-auto-revert-mode t)
      (setq global-auto-revert-non-file-buffers t)
      (global-auto-revert-mode)))
  #+END_SRC
@@ -1670,22 +1599,22 @@ CLOSED: [2017-08-26 Sa 14:41]
             ("\C-cw" . backup-walker-start))
    :init
    (progn
-     (validate-setq backup-directory jj-backup-directory)
- ;    (validate-setq tramp-backup-directory (concat jj-backup-directory "/tramp"))
+     (setq backup-directory jj-backup-directory)
+ ;    (setq tramp-backup-directory (concat jj-backup-directory "/tramp"))
  ;    (if (not (file-exists-p tramp-backup-directory))
  ;        (make-directory tramp-backup-directory))
- ;    (validate-setq tramp-backup-directory-alist `((".*" . ,tramp-backup-directory)))
-     (validate-setq backup-directory-alist `(("." . ,jj-backup-directory)))
-     (validate-setq auto-save-list-file-prefix (concat jj-backup-directory ".auto-saves-"))
-     (validate-setq auto-save-file-name-transforms `((".*" ,jj-backup-directory t)))
-
-     (validate-setq version-control t)     ;; Use version numbers for backups
-     (validate-setq kept-new-versions 10)  ;; Number of newest versions to keep
-     (validate-setq kept-old-versions 2)   ;; Number of oldest versions to keep
-     (validate-setq delete-old-versions t) ;; Ask to delete excess backup versions?
-     (validate-setq backup-by-copying t)
-     (validate-setq backup-by-copying-when-linked t) ;; Copy linked files, don't rename.
-     (validate-setq make-backup-files t)
+ ;    (setq tramp-backup-directory-alist `((".*" . ,tramp-backup-directory)))
+     (setq backup-directory-alist `(("." . ,jj-backup-directory)))
+     (setq auto-save-list-file-prefix (concat jj-backup-directory ".auto-saves-"))
+     (setq auto-save-file-name-transforms `((".*" ,jj-backup-directory t)))
+
+     (setq version-control t)     ;; Use version numbers for backups
+     (setq kept-new-versions 10)  ;; Number of newest versions to keep
+     (setq kept-old-versions 2)   ;; Number of oldest versions to keep
+     (setq delete-old-versions t) ;; Ask to delete excess backup versions?
+     (setq backup-by-copying t)
+     (setq backup-by-copying-when-linked t) ;; Copy linked files, don't rename.
+     (setq make-backup-files t)
 
      (defadvice kill-buffer (around kill-buffer)
        "Always save before killing a file buffer"
@@ -1712,7 +1641,7 @@ CLOSED: [2017-08-26 Sa 14:41]
          (set-buffer-modified-p nil))
        (kill-buffer))
 
-     (validate-setq backup-enable-predicate
+     (setq backup-enable-predicate
            (lambda (name)
              (and (normal-backup-enable-predicate name)
                   (not
@@ -1721,54 +1650,6 @@ CLOSED: [2017-08-26 Sa 14:41]
                        (member method '("su" "sudo"))))))))))
 
  #+END_SRC
-** CANCELLED browse-kill-ring                                    :CANCELLED:
-CLOSED: [2017-08-26 Sat 14:46]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 14:46] \\
-  deactivated
-:END:
- [2014-12-11 Thu 11:31]
- Currently replaced with counsel, see Ivy
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package browse-kill-ring
-   :ensure t
-   :commands (browse-kill-ring browse-kill-ring-mode)
-   :bind ("M-y" . browse-kill-ring)
-   )
- #+END_SRC
-** CANCELLED calendar                                            :CANCELLED:
-CLOSED: [2017-08-26 Sat 14:47]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 14:47]
-:END:
- [2014-06-10 Tue 22:20]
- #+BEGIN_SRC emacs-lisp
- (use-package calendar
-   :commands (cal/insert)
-   :bind ("C-c c" . cal/insert)
-   :config
-   (progn
-     ; Weeks start on Monday, not sunday.
-     (validate-setq calendar-week-start-day 1)
-     (validate-setq calendar-date-style 'european)
-
-     ; Display ISO week numbers in Calendar Mode
-     (copy-face font-lock-constant-face 'calendar-iso-week-face)
-     (set-face-attribute 'calendar-iso-week-face nil :height 0.7)
-     (validate-setq calendar-intermonth-text
-           '(propertize
-             (format "%2d"
-                     (car
-                      (calendar-iso-from-absolute
-                       (calendar-absolute-from-gregorian (list month day year)))))
-             'font-lock-face 'calendar-iso-week-face))
-     (copy-face 'default 'calendar-iso-week-header-face)
-     (set-face-attribute 'calendar-iso-week-header-face nil :height 0.7)
-     (validate-setq calendar-intermonth-header
-           (propertize "Wk"                  ; or e.g. "KW" in Germany
-                       'font-lock-face 'calendar-iso-week-header-face))))
-
- #+END_SRC
 ** corral
  [2015-10-15 Thu 11:34]
  Corral is a lightweight package that lets you quickly wrap parentheses
@@ -1781,7 +1662,7 @@ CLOSED: [2017-08-26 Sat 14:47]
    :config
    (progn
      ; Interpret # and * as part of the word
-     (validate-setq corral-syntax-entries '((?# "_")
+     (setq corral-syntax-entries '((?# "_")
                                    (?* "_")
                                    (?$ ".")
                                    (?/ ".")))
@@ -1809,36 +1690,6 @@ CLOSED: [2017-08-26 Sat 14:47]
    :mode ("\\.?cron\\(tab\\)?\\'" . crontab-mode))
  #+END_SRC
 
-** CANCELLED css                                                 :CANCELLED:
-CLOSED: [2017-08-26 Sat 14:50]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 14:50] \\
-  web mode it is
-:END:
- web-mode takes over, see [[*web-mode][web-mode]]
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package css-mode
-   :mode ("\\.css\\'" . css-mode)
-   :defer t
-   :config
-   (progn
-   ;;; CSS flymake
-     (use-package flymake-css
-       :ensure flymake-css
-       :config
-       (progn
-         (defun maybe-flymake-css-load ()
-           "Activate flymake-css as necessary, but not in derived modes."
-           (when (eq major-mode 'css-mode)
-             (flymake-css-load)))
-         (add-hook 'css-mode-hook 'maybe-flymake-css-load)))
-     ;;; Auto-complete CSS keywords
-     (eval-after-load 'auto-complete
-       '(progn
-          (dolist (hook '(css-mode-hook sass-mode-hook scss-mode-hook))
-            (add-hook hook 'ac-css-mode-setup))))))
- #+END_SRC
-
 ** cua
  I know that this lets it look "more like windows", but I don't much care
  about its paste/copy/cut keybindings, the really nice part is the great
@@ -1846,7 +1697,7 @@ CLOSED: [2017-08-26 Sat 14:50]
  know this mode. The normal keybindings for those are just to useless.
  #+BEGIN_SRC emacs-lisp
  (cua-mode t)
- (validate-setq cua-enable-cua-keys (quote shift))
+ (setq cua-enable-cua-keys (quote shift))
  #+END_SRC
 
  Luckily cua-mode easily supports this, with the following line I just
@@ -1882,19 +1733,20 @@ CLOSED: [2017-08-26 Sat 14:50]
    :defines (dired-omit-regexp-orig)
    :bind (:map dired-mode-map
           ("F" . find-name-dired)
-          ("/" . dired-narrow))
+          ("/" . dired-narrow)
+          ("r" . wdired-change-to-wdired-mode))
    :defer
    :init
    (progn
      (setq diredp-hide-details-initially-flag nil))
    :config
    (progn
-     (validate-setq dired-auto-revert-buffer (quote dired-directory-changed-p))
-     (validate-setq dired-dwim-target t)
-     (validate-setq dired-listing-switches "-alh")
-     (validate-setq dired-listing-switches "-alXh --group-directories-first")
-     (validate-setq dired-recursive-copies (quote top))
-     (validate-setq dired-recursive-deletes (quote top))
+     (setq dired-auto-revert-buffer (quote dired-directory-changed-p))
+     (setq dired-dwim-target t)
+     (setq dired-listing-switches "-alh")
+     (setq dired-listing-switches "-alXh --group-directories-first")
+     (setq dired-recursive-copies (quote top))
+     (setq dired-recursive-deletes (quote top))
 
      (use-package dired+
           :load-path "elisp/local")
@@ -1902,7 +1754,7 @@ CLOSED: [2017-08-26 Sat 14:50]
      (use-package dired-x
        :init
        (progn
-         (validate-setq dired-guess-shell-alist-user
+         (setq dired-guess-shell-alist-user
                         '(("\\.pdf\\'" "mupdf")
                           ("\\.\\(?:djvu\\|eps\\)\\'" "evince")
                           ("\\.\\(?:jpg\\|jpeg\\|png\\|gif\\|xpm\\)\\'" "eog")
@@ -1925,8 +1777,7 @@ CLOSED: [2017-08-26 Sat 14:50]
 
      (use-package wdired
        :ensure wdired
-       :bind (:map dired-mode-map
-              ("r" . wdired-change-to-wdired-mode))
+       :commands (wdired-change-to-wdired-mode)
        :config
        (progn
          (setq wdired-allow-to-change-permissions t)))
@@ -1950,13 +1801,13 @@ CLOSED: [2017-08-26 Sat 14:50]
      (defun mark-similar-versions (name)
        (let ((pat name))
          (if (string-match "^\\(.+?\\)-[0-9._-]+$" pat)
-             (validate-setq pat (match-string 1 pat)))
+             (setq pat (match-string 1 pat)))
          (or (gethash pat mark-files-cache)
              (ignore (puthash pat t mark-files-cache)))))
 
      (defun dired-mark-similar-version ()
        (interactive)
-       (validate-setq mark-files-cache (make-hash-table :test #'equal))
+       (setq mark-files-cache (make-hash-table :test #'equal))
        (dired-mark-sexp '(mark-similar-versions name)))
 
      (defun dired-package-initialize ()
@@ -1974,7 +1825,7 @@ CLOSED: [2017-08-26 Sat 14:50]
                  parent-dir)
              (while (and (not (file-exists-p file))
                          (progn
-                           (validate-setq parent-dir
+                           (setq parent-dir
                                           (file-name-directory
                                            (directory-file-name
                                             (file-name-directory file))))
@@ -1982,7 +1833,7 @@ CLOSED: [2017-08-26 Sat 14:50]
                            (not (string= (file-name-directory file)
                                          parent-dir))))
                ;; Move up to the parent dir and try again.
-               (validate-setq file (expand-file-name ".git" parent-dir)))
+               (setq file (expand-file-name ".git" parent-dir)))
              ;; If we found a change log in a parent, use that.
              (if (file-exists-p file)
                  (let ((regexp (funcall dired-omit-regexp-orig))
@@ -2012,17 +1863,17 @@ CLOSED: [2017-08-26 Sat 14:50]
 
      (add-hook 'dired-mode-hook 'dired-package-initialize)
 
-     (defun dired-double-jump (first-dir second-dir)
-       (interactive
-        (list (read-directory-name "First directory: "
-                                   (expand-file-name "~")
-                                   nil nil "/Downloads/")
-              (read-directory-name "Second directory: "
-                                   (expand-file-name "~")
-                                   nil nil "/")))
-       (dired first-dir)
-       (dired-other-window second-dir))
-     (bind-key "C-c J" 'dired-double-jump)
+     ;; (defun dired-double-jump (first-dir second-dir)
+     ;;   (interactive
+     ;;    (list (read-directory-name "First directory: "
+     ;;                               (expand-file-name "~")
+     ;;                               nil nil "~/Downloads/")
+     ;;          (read-directory-name "Second directory: "
+     ;;                               (expand-file-name "~")
+     ;;                               nil nil "~/")))
+     ;;   (dired first-dir)
+     ;;   (dired-other-window second-dir))
+     ;; (bind-key "C-c J" 'dired-double-jump)
 
      (defun dired-back-to-top ()
        (interactive)
@@ -2095,322 +1946,11 @@ CLOSED: [2017-08-26 Sat 14:50]
           ("C-. = l" . ediff-regions-linewise)
           ("C-. = w" . ediff-regions-wordwise))
    :config (progn
-             (validate-setq ediff-window-setup-function 'ediff-setup-windows-plain)
-             (validate-setq ediff-split-window-function 'split-window-horizontally)
+             (setq ediff-window-setup-function 'ediff-setup-windows-plain)
+             (setq ediff-split-window-function 'split-window-horizontally)
              )
  )
  #+END_SRC
-** CANCELLED edit-server                                         :CANCELLED:
-CLOSED: [2017-08-26 Sat 14:55]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 14:55] \\
-  no more workinng
-:END:
- [2015-12-16 Wed 22:13]
- Allows chromium to "send" files (textbox inputs) to emacs to edit.
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package edit-server
-   :ensure t
-   :if window-system
-   :config
-   (progn
-     (validate-setq edit-server-new-frame t)
-     (edit-server-start)))
- #+END_SRC
-** CANCELLED emms                                                :CANCELLED:
-CLOSED: [2017-08-26 Sat 14:55]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 14:55]
-:END:
-
- EMMS is the Emacs Multimedia System.
- #+BEGIN_SRC emacs-lisp :tangle no
- (require 'emms-source-file)
- (require 'emms-source-playlist)
- (require 'emms-info)
- (require 'emms-cache)
- (require 'emms-playlist-mode)
- (require 'emms-playing-time)
- (require 'emms-player-mpd)
- (require 'emms-playlist-sort)
- (require 'emms-mark)
- (require 'emms-browser)
- (require 'emms-lyrics)
- (require 'emms-last-played)
- (require 'emms-score)
- (require 'emms-tag-editor)
- (require 'emms-history)
- (require 'emms-i18n)
-
- (validate-setq emms-playlist-default-major-mode 'emms-playlist-mode)
- (add-to-list 'emms-track-initialize-functions 'emms-info-initialize-track)
- (emms-playing-time 1)
- (emms-lyrics 1)
- (add-hook 'emms-player-started-hook 'emms-last-played-update-current)
- ;(add-hook 'emms-player-started-hook 'emms-player-mpd-sync-from-emms)
- (emms-score 1)
- (when (fboundp 'emms-cache) ; work around compiler warning
-   (emms-cache 1))
- (validate-setq emms-score-default-score 3)
-
- (defun emms-mpd-init ()
-   "Connect Emms to mpd."
-   (interactive)
-   (emms-player-mpd-connect))
-
- ;; players
- (require 'emms-player-mpd)
- (validate-setq emms-player-mpd-server-name "localhost")
- (validate-setq emms-player-mpd-server-port "6600")
- (add-to-list 'emms-info-functions 'emms-info-mpd)
- (add-to-list 'emms-player-list 'emms-player-mpd)
- (validate-setq emms-volume-change-function 'emms-volume-mpd-change)
- (validate-setq emms-player-mpd-sync-playlist t)
-
- (validate-setq emms-source-file-default-directory "/var/lib/mpd/music")
- (validate-setq emms-player-mpd-music-directory "/var/lib/mpd/music")
- (validate-setq emms-info-auto-update t)
- (validate-setq emms-lyrics-scroll-p t)
- (validate-setq emms-lyrics-display-on-minibuffer t)
- (validate-setq emms-lyrics-display-on-modeline nil)
- (validate-setq emms-lyrics-dir "~/.emacs.d/var/lyrics")
-
- (validate-setq emms-last-played-format-alist
-       '(((emms-last-played-seconds-today) . "%H:%M")
-         (604800                           . "%a %H:%M") ; this week
-         ((emms-last-played-seconds-month) . "%d.%m.%Y")
-         ((emms-last-played-seconds-year)  . "%d.%m.%Y")
-         (t                                . "Never played")))
-
- ;; Playlist format
- (defun my-describe (track)
-   (let* ((empty "...")
-          (name (emms-track-name track))
-          (type (emms-track-type track))
-          (short-name (file-name-nondirectory name))
-          (play-count (or (emms-track-get track 'play-count) 0))
-          (last-played (or (emms-track-get track 'last-played) '(0 0 0)))
-          (artist (or (emms-track-get track 'info-artist) empty))
-          (year (emms-track-get track 'info-year))
-          (playing-time (or (emms-track-get track 'info-playing-time) 0))
-          (min (/ playing-time 60))
-          (sec (% playing-time 60))
-          (album (or (emms-track-get track 'info-album) empty))
-          (tracknumber (emms-track-get track 'info-tracknumber))
-          (short-name (file-name-sans-extension
-                       (file-name-nondirectory name)))
-          (title (or (emms-track-get track 'info-title) short-name))
-          (rating (emms-score-get-score name))
-          (rate-char ?☭)
-          )
-     (format "%12s %20s (%.4s) [%-20s] - %2s. %-30s | %2d %s"
-             (emms-last-played-format-date last-played)
-             artist
-             year
-             album
-             (if (and tracknumber ; tracknumber
-                      (not (zerop (string-to-number tracknumber))))
-                 (format "%02d" (string-to-number tracknumber))
-               "")
-             title
-             play-count
-             (make-string rating rate-char)))
- )
-
- (validate-setq emms-track-description-function 'my-describe)
-
- ;; (global-set-key (kbd "C-<f9> t") 'emms-play-directory-tree)
- ;; (global-set-key (kbd "H-<f9> e") 'emms-play-file)
- (global-set-key (kbd "H-<f9> <f9>") 'emms-mpd-init)
- (global-set-key (kbd "H-<f9> d") 'emms-play-dired)
- (global-set-key (kbd "H-<f9> x") 'emms-start)
- (global-set-key (kbd "H-<f9> v") 'emms-stop)
- (global-set-key (kbd "H-<f9> n") 'emms-next)
- (global-set-key (kbd "H-<f9> p") 'emms-previous)
- (global-set-key (kbd "H-<f9> o") 'emms-show)
- (global-set-key (kbd "H-<f9> h") 'emms-shuffle)
- (global-set-key (kbd "H-<f9> SPC") 'emms-pause)
- (global-set-key (kbd "H-<f9> a") 'emms-add-directory-tree)
- (global-set-key (kbd "H-<f9> b") 'emms-smart-browse)
- (global-set-key (kbd "H-<f9> l") 'emms-playlist-mode-go)
-
- (global-set-key (kbd "H-<f9> r") 'emms-toggle-repeat-track)
- (global-set-key (kbd "H-<f9> R") 'emms-toggle-repeat-playlist)
- (global-set-key (kbd "H-<f9> m") 'emms-lyrics-toggle-display-on-minibuffer)
- (global-set-key (kbd "H-<f9> M") 'emms-lyrics-toggle-display-on-modeline)
-
- (global-set-key (kbd "H-<f9> <left>") (lambda () (interactive) (emms-seek -10)))
- (global-set-key (kbd "H-<f9> <right>") (lambda () (interactive) (emms-seek +10)))
- (global-set-key (kbd "H-<f9> <down>") (lambda () (interactive) (emms-seek -60)))
- (global-set-key (kbd "H-<f9> <up>") (lambda () (interactive) (emms-seek +60)))
-
- (global-set-key (kbd "H-<f9> s u") 'emms-score-up-playing)
- (global-set-key (kbd "H-<f9> s d") 'emms-score-down-playing)
- (global-set-key (kbd "H-<f9> s o") 'emms-score-show-playing)
- (global-set-key (kbd "H-<f9> s s") 'emms-score-set-playing)
-
- (define-key emms-playlist-mode-map "u" 'emms-score-up-playing)
- (define-key emms-playlist-mode-map "d" 'emms-score-down-playing)
- (define-key emms-playlist-mode-map "o" 'emms-score-show-playing)
- (define-key emms-playlist-mode-map "s" 'emms-score-set-playing)
- (define-key emms-playlist-mode-map "r" 'emms-mpd-init)
- (define-key emms-playlist-mode-map "N"  'emms-playlist-new)
-
- (define-key emms-playlist-mode-map "x" 'emms-start)
- (define-key emms-playlist-mode-map "v" 'emms-stop)
- (define-key emms-playlist-mode-map "n" 'emms-next)
- (define-key emms-playlist-mode-map "p" 'emms-previous)
-
- (validate-setq emms-playlist-buffer-name "*EMMS Playlist*"
-       emms-playlist-mode-open-playlists t)
-
- ;; Faces
- (if (window-system)
-     ((lambda ()
-        (set-face-attribute
-         'emms-browser-artist-face nil
-         :family "Arno Pro")
-        )
- ))
-
- (validate-setq emms-player-mpd-supported-regexp
-       (or (emms-player-mpd-get-supported-regexp)
-           (concat "\\`http://\\|"
-                   (emms-player-simple-regexp
-                    "m3u" "ogg" "flac" "mp3" "wav" "mod" "au" "aiff"))))
- (emms-player-set emms-player-mpd 'regex emms-player-mpd-supported-regexp)
-
- #+END_SRC
-** CANCELLED Emacs shell                                         :CANCELLED:
-CLOSED: [2017-08-26 Sat 14:56]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 14:56]
-:END:
- Basic settings for emacs integrated shell
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package eshell
-   :defer t
-   :commands eshell
-   :init
-   (progn
-     (defun eshell-initialize ()
-       (defun eshell-spawn-external-command (beg end)
-         "Parse and expand any history references in current input."
-         (save-excursion
-           (goto-char end)
-           (when (looking-back "&!" beg)
-             (delete-region (match-beginning 0) (match-end 0))
-             (goto-char beg)
-             (insert "spawn "))))
-       (add-hook 'eshell-expand-input-functions 'eshell-spawn-external-command)
-       (eval-after-load "em-unix"
-         '(progn
-            (unintern 'eshell/su)
-            (unintern 'eshell/sudo))))
-     (add-hook 'eshell-first-time-mode-hook 'eshell-initialize)
-     )
-   :config
-   (progn
-     (defalias 'emacs 'find-file)
-     (defalias 'ec 'find-file)
-     (defalias 'e 'find-file)
-
-     (use-package f
-       :ensure f)
-     (use-package 'em-cmpl)
-     (use-package 'em-prompt)
-     (use-package 'em-term)
-
-     (validate-setq eshell-cmpl-cycle-completions nil
-           eshell-save-history-on-exit t
-           eshell-buffer-maximum-lines 20000
-           eshell-history-size 350
-           eshell-buffer-shorthand t
-           eshell-highlight-prompt t
-           eshell-plain-echo-behavior t
-           eshell-cmpl-dir-ignore "\\`\\(\\.\\.?\\|CVS\\|\\.svn\\|\\.git\\)/\\'")
-
-     (setenv "PAGER" "cat")
-     (validate-setq eshell-visual-commands
-           '("less" "tmux" "htop" "top" "bash" "zsh" "tail"))
-     (validate-setq eshell-visual-subcommands
-           '(("git" "log" "l" "diff" "show")))
-
-     (add-to-list 'eshell-command-completions-alist
-                  '("gunzip" "gz\\'"))
-     (add-to-list 'eshell-command-completions-alist
-                  '("tar" "\\(\\.tar|\\.tgz\\|\\.tar\\.gz\\)\\'"))
-
-     (when (not (functionp 'eshell/rgrep))
-       (defun eshell/rgrep (&rest args)
-         "Use Emacs grep facility instead of calling external grep."
-         (eshell-grep "rgrep" args t)))
-
-     ;(set-face-attribute 'eshell-prompt nil :foreground "turquoise1")
-     (add-hook 'eshell-mode-hook ;; for some reason this needs to be a hook
-               '(lambda () (define-key eshell-mode-map "\C-a" 'eshell-bol)))
-     (add-hook 'eshell-preoutput-filter-functions
-               'ansi-color-filter-apply)
-     ;; Prompt with a bit of help from http://www.emacswiki.org/emacs/EshellPrompt
-
-     (defmacro with-face (str &rest properties)
-       `(propertize ,str 'face (list ,@properties)))
-
-     (defun eshell/abbr-pwd ()
-       (let ((home (getenv "HOME"))
-             (path (eshell/pwd)))
-         (cond
-          ((string-equal home path) "~")
-          ((f-ancestor-of? home path) (concat "~/" (f-relative path home)))
-          (path))))
-
-     (defun eshell/my-prompt ()
-       (let ((header-bg "#161616"))
-         (concat
-          (with-face user-login-name :foreground "cyan")
-          (with-face (concat "@" hostname) :foreground "white")
-          " "
-          (with-face (eshell/abbr-pwd) :foreground "#009900")
-          (if (= (user-uid) 0)
-              (with-face "#" :foreground "red")
-            (with-face "$" :foreground "#69b7f0"))
-          " ")))
-
-     (use-package eshell-prompt-extras
-       :ensure t
-       :init
-       (progn
-         (validate-setq eshell-highlight-prompt nil
-               ;; epe-git-dirty-char "Ϟ"
-               epe-git-dirty-char "*"
-               eshell-prompt-function 'epe-theme-dakrone)))
-
-     (defun eshell/magit ()
-       "Function to open magit-status for the current directory"
-       (interactive)
-       (magit-status default-directory)
-       nil)
-
-     (validate-setq eshell-prompt-function 'eshell/my-prompt)
-     (validate-setq eshell-highlight-prompt nil)
-     (validate-setq eshell-prompt-regexp "^[^#$\n]+[#$] ")))
-
- #+END_SRC
-
-** CANCELLED ethan-wspace                                        :CANCELLED:
-CLOSED: [2017-08-26 Sat 14:57]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 14:57]
-:END:
- [2014-06-01 Sun 15:00]
- Proper whitespace handling
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package ethan-wspace
-   :ensure ethan-wspace
-   :diminish (ethan-wspace-mode . "ew")
-   :init
-   (global-ethan-wspace-mode 1))
- #+END_SRC
 ** Eww - Emacs browser
  [2016-10-03 Mo 21:30]
 Eww - Emacs browser (needs emacs 24.4 or higher)
@@ -2438,13 +1978,13 @@ Eww - Emacs browser (needs emacs 24.4 or higher)
       ;; Make the binding for `revert-buffer' do `eww-reload' in eww-mode
       (define-key eww-mode-map [remap revert-buffer] #'eww-reload)
 
-      ;; (validate-setq eww-search-prefix                 "https://duckduckgo.com/html/?q=")
-      (validate-setq eww-search-prefix                 "https://www.google.com/search?q=")
-      (validate-setq eww-download-directory            "~/Downloads")
-      ;; (validate-setq eww-form-checkbox-symbol          "[ ]")
-      (validate-setq eww-form-checkbox-symbol          "☐") ; Unicode hex 2610
-      ;; (validate-setq eww-form-checkbox-selected-symbol "[X]")
-      (validate-setq eww-form-checkbox-selected-symbol "☑") ; Unicode hex 2611
+      ;; (setq eww-search-prefix                 "https://duckduckgo.com/html/?q=")
+      (setq eww-search-prefix                 "https://www.google.com/search?q=")
+      (setq eww-download-directory            "~/Downloads")
+      ;; (setq eww-form-checkbox-symbol          "[ ]")
+      (setq eww-form-checkbox-symbol          "☐") ; Unicode hex 2610
+      ;; (setq eww-form-checkbox-selected-symbol "[X]")
+      (setq eww-form-checkbox-selected-symbol "☑") ; Unicode hex 2611
       ;; Improve the contract of pages like Google results
       ;; http://emacs.stackexchange.com/q/2955/115
       (setq shr-color-visible-luminance-min 80) ; default = 40
@@ -2590,8 +2130,20 @@ Eww - Emacs browser (needs emacs 24.4 or higher)
    :ensure t
    :config
    (progn
-     (exec-path-from-shell-initialize)
-     (exec-path-from-shell-copy-env "GOPATH")))
+     ;; Import additional environment variables beyond just $PATH
+     (dolist (var '("PYTHONPATH"         ; Python modules
+                    "INFOPATH"           ; Info directories
+                    "JAVA_OPTS"          ; Options for java processes
+                    "RUST_SRC_PATH"      ; Rust sources, for racer
+                    "CARGO_HOME"         ; Cargo home, for racer
+                    "GOPATH"
+                    "GPG_TTY"
+                    "GPG_AGENT_INFO"
+                    "SSH_AUTH_SOCK"
+                    "SSH_AGENT_PID"
+                    ))
+       (add-to-list 'exec-path-from-shell-variables var))
+     (exec-path-from-shell-initialize)))
  #+END_SRC
 ** expand-region
  [2014-06-01 Sun 15:16]
@@ -2617,7 +2169,7 @@ Eww - Emacs browser (needs emacs 24.4 or higher)
    :ensure t
    :config
    (progn
-     (validate-setq eyebrowse-mode-line-separator " "
+     (setq eyebrowse-mode-line-separator " "
                     eyebrowse-new-workspace t)
      (eyebrowse-setup-opinionated-keys)
      (setq eyebrowse-new-workspace t)
@@ -2625,23 +2177,6 @@ Eww - Emacs browser (needs emacs 24.4 or higher)
      ))
  #+END_SRC
 
-** CANCELLED filladapt                                           :CANCELLED:
-CLOSED: [2017-12-10 So 14:58]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-12-10 So 14:58] \\
-  Old style backquotes
-:END:
- [2013-05-02 Thu 00:04]
- Filladapt by KyleJones enhances Emacs’ fill functions by guessing a
- fill prefix, such as a comment sequence in program code, and handling
- bullet points like “1.” or “*”.
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package filladapt
-   :load-path ("elisp/local")
-   :diminish filladapt-mode
-   :init
-   (setq-default filladapt-mode t))
- #+END_SRC
 ** flycheck
  [2013-04-28 So 22:21]
  Flycheck is a on-the-fly syntax checking tool, supposedly better than Flymake.
@@ -2657,10 +2192,10 @@ CLOSED: [2017-12-10 So 14:58]
    (progn
      (use-package flycheck-color-mode-line
        :ensure flycheck-color-mode-line)
-     (validate-setq flycheck-highlighting-mode 'nil)
-     (validate-setq flycheck-flake8-maximum-line-length '150)
+     (setq flycheck-highlighting-mode 'nil)
+     (setq flycheck-flake8-maximum-line-length '150)
      (add-hook 'flycheck-mode-hook 'flycheck-color-mode-line-mode)
-     (validate-setq flycheck-sh-shellcheck-executable "/usr/bin/shellcheck -e 2086")
+     (setq flycheck-sh-shellcheck-executable "/usr/bin/shellcheck -e 2086")
      (add-hook 'find-file-hook
            (lambda ()
              (when (not (equal 'emacs-lisp-mode major-mode))
@@ -2676,83 +2211,11 @@ CLOSED: [2017-12-10 So 14:58]
    :init
    (progn
      (global-font-lock-mode 1)
-     (validate-setq font-lock-maximum-decoration t)
-     (validate-setq jit-lock-defer-time nil)
-     (validate-setq jit-lock-stealth-nice 0.1)
-     (validate-setq jit-lock-stealth-time 0.2)
-     (validate-setq jit-lock-stealth-verbose nil)))
- #+END_SRC
-** CANCELLED form-feed-mode                                      :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:07]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:07]
-:END:
- [2015-08-31 Mon 11:27]
- Display nice lines instead of page breaks
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package form-feed
-   :ensure t
-   )
- #+END_SRC
-** CANCELLED framegroups                                         :CANCELLED:
-CLOSED: [2018-04-12 Do 23:37]
-:LOGBOOK:
-- State "CANCELLED"  from              [2018-04-12 Do 23:37] \\
-  tut nicht
-:END:
-[2018-04-11 Wed 17:09]
-Workspace management using frames
-#+BEGIN_SRC emacs-lisp :tangle yes
-(use-package framegroups
-  :load-path "elisp/local"
-  :config
-  (progn
-    (fg-desktop-setup)
-    ;; default layouts for framegroups
-    (defun my-framegroup-setup (name &rest _)
-      "Set up default framegroup layouts."
-      (interactive)
-      (pcase name
-        ;; emacs configuration
-        ("emacs"
-         (find-file "~/.emacs.d/config/emacs.org")
-         (split-window-right)
-         (find-file "~/.emacs.d/init.el"))
-        ;; programming projects
-        ("mail"
-         (gnus))
-        ;; dotfiles
-        ("zsh"
-         (find-file "~/.zsh"))
-        ("debian"
-         (find-file "~/devel/debian/"))
-        ))
-
-    (add-hook 'fg-create-hook #'my-framegroup-setup)
-
-    )
-)
-#+END_SRC
-** CANCELLED git commit mode                                     :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:07]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:07]
-:END:
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package git-commit
-   :commands git-commit
-   :mode ("COMMIT_EDITMSG" . git-commit-mode))
- #+END_SRC
-
-** CANCELLED git rebase mode                                     :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:07]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:07]
-:END:
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package git-rebase
-   :commands git-rebase
-   :mode ("git-rebase-todo" . git-rebase-mode))
+     (setq font-lock-maximum-decoration t)
+     (setq jit-lock-defer-time nil)
+     (setq jit-lock-stealth-nice 0.1)
+     (setq jit-lock-stealth-time 0.2)
+     (setq jit-lock-stealth-verbose nil)))
  #+END_SRC
 ** git-gutter+
  [2014-05-21 Wed 22:56]
@@ -2777,7 +2240,7 @@ CLOSED: [2017-08-26 Sat 15:07]
        :ensure git-gutter-fringe+
        :config
        (progn
-         (validate-setq git-gutter-fr+-side 'right-fringe)
+         (setq git-gutter-fr+-side 'right-fringe)
          ;(git-gutter-fr+-minimal)
          ))))
  #+END_SRC
@@ -2794,7 +2257,7 @@ CLOSED: [2017-08-26 Sat 15:07]
    (progn
      (bind-key "m" 'git-messenger:copy-message git-messenger-map)
      (add-hook 'git-messenger:popup-buffer-hook 'magit-revision-mode)
-     (validate-setq git-messenger:show-detail t)))
+     (setq git-messenger:show-detail t)))
  #+END_SRC
 ** git timemachine
  [2014-07-23 Mi 12:57]
@@ -2820,7 +2283,7 @@ CLOSED: [2017-08-26 Sat 15:07]
      (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)
 
      (setq bbdb-add-mails t)
-     (setq bbdb-canonicalize-redundant-mails t)
+     (setq bbdb-ignore-redundant-mails t)
      (setq bbdb-complete-mail-allow-cycling t)
      (setq bbdb-complete-name-allow-cycling t)
      (setq bbdb-completion-type 'primary-or-name)
@@ -2913,7 +2376,7 @@ CLOSED: [2017-08-26 Sat 15:07]
      (setq message-subscribed-address-functions
            '(gnus-find-subscribed-addresses))
 
-     (if (string-match system-name "delenn.ganneff.de")
+     (if (string-match (system-name) "delenn.ganneff.de")
          (progn
            (setq imap-ssl-program "openssl s_client -no_ssl2 -no_ssl3 -tls1 -connect %s:%p")
 
@@ -3058,7 +2521,7 @@ CLOSED: [2017-08-26 Sat 15:07]
 
      ;;** Grosse Newsgroups. Gnus fragt da laestigerweise immer nach.
      ;;** Aber da ich viele grosse Gruppen und nen schnellen Rechner habe
-     ;;** soll der erst recht spaet nachfragen. Erst wenns wirklich fies wird. 
+     ;;** soll der erst recht spaet nachfragen. Erst wenns wirklich fies wird.
      (setq gnus-large-newsgroup "15000")
 
      ;;** Beim Betreten einer Gruppe keinen Artikel auswählen. Gegen Adaptive Scoring iss des !
@@ -3137,7 +2600,7 @@ CLOSED: [2017-08-26 Sat 15:07]
          ))
 
      ;;** Damit ich nicht mit Megabytegrossen Scorefiles rummachen muss, muss bei Adaptive-Scoring
-     ;;** der Kram automagisch gelöscht werden. Sonst hats keinen Sinn ! 
+     ;;** der Kram automagisch gelöscht werden. Sonst hats keinen Sinn !
      (setq gnus-decay-scores t)
 
      ;;** Artikel mit weniger Score werden nicht angezeigt
@@ -3178,33 +2641,10 @@ CLOSED: [2017-08-26 Sat 15:07]
          (setq smiley-flesh-color "Yellow")
          (setq smiley-data-directory "~/emacs/etc/smilies/")))
 
-     (use-package mml-sec
-       :commands (sign-or-crypt)
-       :config
-       (progn
-         (setq mm-verify-option 'always)
-         ;; Keine extra Signatur erzeugen.
-         (mml-signencrypt-style "pgpmime" 'combined)
-         (setq mml-secure-openpgp-sign-with-sender 't)
-         (setq gpg-unabbrev-trust-alist
-               '(("TRUST_UNDEFINED" . trust-undefined)
-                 ("TRUST_NEVER"     . trust-none)
-                 ("TRUST_MARGINAL"  . trust-marginal)
-                 ("TRUST_FULLY"     . trust-full)
-                 ("TRUST_ULTIMATE"  . trust-ultimate)))
-         ))
-     (add-hook 'gnus-message-setup-hook 'sign-or-crypt)
-
      ;;** utf-8, coding systems
      (setq mm-coding-system-priorities
            '(iso-latin-1 iso-latin-9 utf-8))
 
-     (unify-8859-on-encoding-mode 1)
-     (unify-8859-on-decoding-mode 1)
-     (prefer-coding-system 'latin-9)
-     (prefer-coding-system 'latin-1)
-     (prefer-coding-system 'utf-8)
-
      (use-package sieve
        :mode ("\\.siv\\'" . sieve-mode)
        :config
@@ -3279,13 +2719,12 @@ CLOSED: [2017-08-26 Sat 15:07]
      (setq gnus-treat-capitalize-sentences nil)
      (setq gnus-treat-date-local (quote head))
      (setq gnus-treat-display-picons nil)
-     (setq gnus-treat-display-xface (quote head))
+     (setq gnus-treat-display-x-face (quote head))
      (setq gnus-treat-fill-article nil)
      (setq gnus-treat-fill-long-lines nil)
      (setq gnus-treat-from-picon (quote head))
      (setq gnus-treat-mail-picon (quote head))
      (setq gnus-treat-newsgroups-picon (quote head))
-     (setq gnus-treat-strip-pgp (quote head))
      (setq gnus-treat-unsplit-urls t)
      (setq gnus-treat-x-pgp-sig (quote head))
      (setq gnus-use-picons t)
@@ -3357,15 +2796,45 @@ CLOSED: [2017-08-26 Sat 15:07]
  #+BEGIN_SRC emacs-lisp
  (use-package golden-ratio
    :ensure golden-ratio
-   :diminish golden-ratio-mode
+   :diminish (golden-ratio-mode . "ⓖ")
+   :commands (golden-ratio-mode golden-ratio)
+   :bind (("C-c t g" . my-toggle-golden-ratio))
    :init
    (progn
+     (defun my-toggle-golden-ratio ()
+       (interactive)
+       (if (bound-and-true-p golden-ratio-mode)
+           (progn
+             (golden-ratio-mode -1)
+             (balance-windows))
+         (golden-ratio-mode)
+         (golden-ratio)))
      (golden-ratio-mode 1)
-     (validate-setq golden-ratio-exclude-buffer-names '("*LV*" "*guide-key*" "*Ediff Control Panel*"))
-     (validate-setq golden-ratio-exclude-modes '("calendar-mode" "gnus-summary-mode"
-                                        "gnus-article-mode" "calc-mode" "calc-trail-mode"
-                                        "bbdb-mode"))
-     ))
+     )
+   :config
+   (progn
+     (setq golden-ratio-exclude-buffer-names '("*LV*" "*guide-key*" "*Ediff Control Panel*"))
+     (setq golden-ratio-exclude-modes '("calendar-mode"
+                                        "gnus-summary-mode"
+                                        "gnus-article-mode"
+                                        "calc-mode"
+                                        "calc-trail-mode"
+                                        "bbdb-mode"
+                                        "notmuch-message-mode"
+                                        "dired-mode"
+                                        "ediff-mode"
+                                        ))
+     (setq golden-ratio-exclude-buffer-regexp `(,(rx bos "*which-key*" eos)
+                                                ,(rx bos "*NeoTree*" eos)))
+     (setq golden-ratio-extra-commands '(windmove-up
+                                         windmove-down
+                                         windmove-left
+                                         windmove-right
+                                         ace-window
+                                         ace-delete-window
+                                         ace-select-window
+                                         ace-swap-window
+                                         ace-maximize-window))))
  #+END_SRC
 ** goto last change
  [2015-02-22 Sun 13:28]
@@ -3376,7 +2845,12 @@ CLOSED: [2017-08-26 Sat 15:07]
    :bind (("M-g l" . goto-last-change))
    )
  #+END_SRC
-** guide-key
+** CANCELLED guide-key                                           :CANCELLED:
+CLOSED: [2018-12-30 Sun 17:09]
+:LOGBOOK:
+- State "CANCELLED"  from              [2018-12-30 Sun 17:09] \\
+  ersetzt von which-key
+:END:
  [2014-06-11 Wed 22:27]
  guide-key.el displays the available key bindings automatically and
  dynamically.
@@ -3387,20 +2861,21 @@ CLOSED: [2017-08-26 Sat 15:07]
  (use-package guide-key
    :ensure guide-key
    :diminish guide-key-mode
+   :disable t
    :config
    (progn
-     (validate-setq guide-key/guide-key-sequence '("C-x" "C-c" "M-g" "M-s"))
+     (setq guide-key/guide-key-sequence '("C-x" "C-c" "M-g" "M-s"))
      (guide-key-mode 1)
-     (validate-setq guide-key/recursive-key-sequence-flag t)
-     (validate-setq guide-key/popup-window-position 'bottom)
-     (validate-setq guide-key/idle-delay 0.5)))
+     (setq guide-key/recursive-key-sequence-flag t)
+     (setq guide-key/popup-window-position 'bottom)
+     (setq guide-key/idle-delay 0.5)))
 
  #+END_SRC
 
 ** highlighting modes
  [2014-05-21 Wed 23:51]
  #+BEGIN_SRC emacs-lisp
-(use-package hi-lock
+ (use-package hi-lock
    :bind (("M-o l" . highlight-lines-matching-regexp)
           ("M-o r" . highlight-regexp)
           ("M-o w" . highlight-phrase)
@@ -3419,6 +2894,12 @@ CLOSED: [2017-08-26 Sat 15:07]
    (set-face-background 'highlight-indentation-face "#283d83")
    (set-face-background 'highlight-indentation-current-column-face "#285f85")
    )
+
+ (use-package highlight-numbers          ; Fontify number literals
+   :ensure t
+   :init (add-hook 'prog-mode-hook #'highlight-numbers-mode))
+ :defer t
+
  #+END_SRC
 ** hippie-exp
  Crazy way of completion. It looks at the word before point and then
@@ -3429,7 +2910,7 @@ CLOSED: [2017-08-26 Sat 15:07]
    :commands hippie-expand
    :config
    (progn
-     (validate-setq hippie-expand-try-functions-list '(try-expand-dabbrev
+     (setq hippie-expand-try-functions-list '(try-expand-dabbrev
                                               try-expand-dabbrev-all-buffers
                                               try-expand-dabbrev-from-kill
                                               try-complete-file-name-partially
@@ -3439,20 +2920,6 @@ CLOSED: [2017-08-26 Sat 15:07]
                                               try-complete-lisp-symbol-partially
                                               try-complete-lisp-symbol))))
  #+END_SRC
-** CANCELLED html-helper                                         :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:09]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:09]
-:END:
- Replaced by web-mode [[*web-mode][web-mode]]
- #+BEGIN_SRC emacs-lisp :tangle no
- (autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
- (add-auto-mode 'html-helper-mode "\\.html$")
- (add-auto-mode 'html-helper-mode "\\.asp$")
- (add-auto-mode 'html-helper-mode "\\.phtml$")
- (add-auto-mode 'html-helper-mode "\\.(jsp|tmpl)\\'")
- (defalias 'html-mode 'html-helper-mode)
- #+END_SRC
 ** hydra
  [2015-01-26 Mon 15:50]
  This is a package for GNU Emacs that can be used to tie related
@@ -3473,8 +2940,8 @@ CLOSED: [2017-08-26 Sat 15:09]
    :ensure hydra
    :init
    (progn
-     (validate-setq hydra-is-helpful t)
-     (validate-setq hydra-lv t)
+     (setq hydra-is-helpful t)
+     (setq hydra-lv t)
 
      (defhydra hydra-error (:color red)
        "goto-error"
@@ -3520,7 +2987,7 @@ CLOSED: [2017-08-26 Sat 15:09]
  "
        ("a" abbrev-mode nil)
        ("c" auto-complete-mode nil)
-       ("i" aggressive-indent-mode nil)
+;       ("i" aggressive-indent-mode nil)
        ("d" toggle-debug-on-error nil)
        ("f" auto-fill-mode nil)
        ("g" golden-ratio-mode nil)
@@ -3554,7 +3021,7 @@ CLOSED: [2017-08-26 Sat 15:09]
    :config
    (progn
      (defvar my-ibufffer-separator " • ")
-     (validate-setq ibuffer-filter-group-name-face 'variable-pitch
+     (setq ibuffer-filter-group-name-face 'variable-pitch
            ibuffer-use-header-line t)
      (unbind-key "M-o" ibuffer-mode-map)
 
@@ -3594,9 +3061,9 @@ CLOSED: [2017-08-26 Sat 15:09]
                     (if (file-regular-p buffer-path)
                         (file-name-directory buffer-path)
                       buffer-path)))
-             (magit-status default-directory)))))
+             (magit-status-internal default-directory)))))
 
-     (validate-setq ibuffer-directory-abbrev-alist
+     (setq ibuffer-directory-abbrev-alist
            (-uniq
             (-flatten
              (--map
@@ -3630,7 +3097,7 @@ CLOSED: [2017-08-26 Sat 15:09]
 
      (use-package ibuf-ext
        :config
-       (validate-setq ibuffer-old-time 12))
+       (setq ibuffer-old-time 12))
 
      (define-ibuffer-filter filename2
          "Toggle current view to buffers with filename matching QUALIFIER."
@@ -3646,18 +3113,18 @@ CLOSED: [2017-08-26 Sat 15:09]
      (defun ibuffer-magit-define-filter-groups ()
        (when (and (not ibuffer-magit-filter-groups)
                 (boundp 'magit-repo-dirs))
-         (validate-setq ibuffer-magit-filter-groups
+         (setq ibuffer-magit-filter-groups
                (--map (list
                        (concat "git:: "
                                (file-name-nondirectory (directory-file-name it)))
                        `(filename2 . ,it))
-                      (mapcar 'cdr (magit-list-repos magit-repo-dirs))))))
+                      (mapcar 'cdr (magit-list-repos))))))
 
      (defun ibuffer-set-filter-groups-by-root  ()
        (interactive)
        ;; (ibuffer-projectile-define-filter-groups)
        ;; (ibuffer-magit-define-filter-groups)
-       (validate-setq ibuffer-filter-groups
+       (setq ibuffer-filter-groups
              (-concat
               ;; ibuffer-projectile-filter-groups
               ibuffer-magit-filter-groups
@@ -3692,7 +3159,7 @@ CLOSED: [2017-08-26 Sat 15:09]
              (let ((selected-buffer (ibuffer-current-buffer)))
                (if (not ibuffer-filter-groups)
                    (ibuffer-set-filter-groups-by-root)
-                 (validate-setq ibuffer-filter-groups nil))
+                 (setq ibuffer-filter-groups nil))
                (pop-to-buffer ibuf)
                (ibuffer-update nil t)
                (ibuffer-jump-to-buffer (buffer-name selected-buffer )))))))
@@ -3701,14 +3168,14 @@ CLOSED: [2017-08-26 Sat 15:09]
 
      (defun ibuffer-back-to-top ()
        (interactive)
-       (beginning-of-buffer)
-       (next-line 3))
+       (goto-char (point-min))
+       (forward-line 3))
 
      (defun ibuffer-jump-to-bottom ()
        (interactive)
-       (end-of-buffer)
+       (goto-char (point-max))
        (beginning-of-line)
-       (next-line -2))
+       (forward-line -2))
 
      (define-key ibuffer-mode-map
        (vector 'remap 'end-of-buffer) 'ibuffer-jump-to-bottom)
@@ -3723,7 +3190,7 @@ CLOSED: [2017-08-26 Sat 15:09]
            ibuffer-default-directory "~/"
            )
 
-     (validate-setq ibuffer-formats '((mark vc-status-mini
+     (setq ibuffer-formats '((mark vc-status-mini
                                    " "
                                    (git-status 8 8 :left)
                                    " "
@@ -3742,7 +3209,7 @@ CLOSED: [2017-08-26 Sat 15:09]
                                    " " filename)
                              ))
 
-      (validate-setq ibuffer-saved-filter-groups
+      (setq ibuffer-saved-filter-groups
             (quote (("flat")
                     ("default"
                      ("dired"  (mode . dired-mode))
@@ -3885,31 +3352,32 @@ CLOSED: [2017-08-26 Sat 15:09]
    ;; too cautious for most people. You’ll still be prompted for
    ;; confirmation when deleting modified buffers after the option has
    ;; been turned off.
-   (validate-setq ibuffer-expert t)
+   (setq ibuffer-expert t)
  ))
  #+END_SRC
 ** ivy-mode, swiper, counsel
  [2015-10-16 Fri 16:28]
  Full docs at http://oremacs.com/swiper/
  #+BEGIN_SRC emacs-lisp
- (use-package swiper
-   :ensure swiper
-   :bind (("C-s" . swiper)
-          ("C-r" . swiper)
-          ("C-c r" . ivy-resume)
-          ("<f7>" . ivy-resume))
-   :config
-   (progn
-     ;(ivy-mode 1)
-     (validate-setq ivy-use-virtual-buffers t)
-     (setq ivy-count-format "(%d/%d) ")
-     ;;advise swiper to recenter on exit
-     (defun bjm-swiper-recenter (&rest args)
-       "recenter display after swiper"
-       (recenter)
-       )
-     (advice-add 'swiper :after #'bjm-swiper-recenter)
-     ))
+  (use-package swiper
+    :ensure swiper
+    :bind (("C-s" . swiper)
+           ("C-r" . swiper)
+           ("C-c r" . ivy-resume)
+           ("<f7>" . ivy-resume))
+    :config
+    (progn
+      ;(ivy-mode 1)
+      (setq ivy-use-virtual-buffers t)
+      (setq ivy-count-format "(%d/%d) ")
+      (setq ivy-initial-inputs-alist nil)
+      ;;advise swiper to recenter on exit
+      (defun bjm-swiper-recenter (&rest args)
+        "recenter display after swiper"
+        (recenter)
+        )
+      (advice-add 'swiper :after #'bjm-swiper-recenter)
+      ))
  #+END_SRC
  counsel is a collection of Ivy enhanced versions of common Emacs
  commands, see https://github.com/abo-abo/swiper
@@ -3923,7 +3391,7 @@ CLOSED: [2017-08-26 Sat 15:09]
            ("<f1> u" . counsel-unicode-char)
            ("C-c j" . counsel-git-grep)
             :map ivy-minibuffer-map
-            ("M-y" . ivy-next-line)))
+            ("M-y" . ivy-forward-line)))
  #+END_SRC
 ** icicles
  [[http://article.gmane.org/gmane.emacs.orgmode/4574/match%3Dicicles]["In case you never heard of it, Icicles is to ‘TAB’ completion what
@@ -3934,17 +3402,6 @@ CLOSED: [2017-08-26 Sat 15:09]
    :config
    (icy-mode 1))
  #+END_SRC
-** CANCELLED icomplete                                           :CANCELLED:
-CLOSED: [2017-08-26 Sat 14:44]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 14:44] \\
-  ivy and icomplete dont work together
-:END:
- Incremental mini-buffer completion preview: Type in the minibuffer,
- list of matching commands is echoed
- #+BEGIN_SRC emacs-lisp
- (icomplete-mode 99)
- #+END_SRC
 ** iedit
  [2014-05-26 Mon 22:49]
  #+BEGIN_SRC emacs-lisp
@@ -3983,14 +3440,36 @@ CLOSED: [2017-08-26 Sat 14:44]
    :defer t
    :config
    (progn
-     (validate-setq ispell-personal-dictionary (expand-file-name "~/flydict" jj-cache-dir))
+     (setq ispell-personal-dictionary (expand-file-name "~/flydict" jj-cache-dir))
 
-     (validate-setq ispell-dictionary "de_DE")
-     (validate-setq ispell-program-name "hunspell")
+     (setq ispell-dictionary "de_DE")
+     (setq ispell-program-name "hunspell")
      (add-to-list 'ispell-skip-region-alist '("#\\+BEGIN_SRC" . "#\\+END_SRC"))
      (add-to-list 'ispell-skip-region-alist '("#\\+BEGIN_EXAMPLE" . "#\\+END_EXAMPLE"))
      ))
  #+END_SRC
+** json mode
+[2018-12-30 Sun 23:20]
+#+BEGIN_SRC emacs-lisp
+(use-package json-mode                  ; JSON files
+  :ensure t
+  :defer t
+  :mode ("config.data" . json-mode)
+  :config
+  (progn                                ; https://github.com/skeeto/.emacs.d
+    (setf json-reformat:pretty-string? t
+          json-reformat:indent-width 2)
+    (define-key json-mode-map (kbd "M-q")
+      (lambda ()
+        (interactive)
+        (if (region-active-p)
+            (call-interactively #'json-reformat-region)
+          (json-reformat-region (point-min) (point-max)))))
+
+    (add-hook 'json-mode-hook
+              ;; Fix JSON mode indentation
+              (lambda () (setq-local js-indent-level 4)))))
+#+END_SRC
 ** linum (line number)
  Various modes should have line numbers in front of each line.
 
@@ -4007,9 +3486,10 @@ CLOSED: [2017-08-26 Sat 14:44]
     ; Old emacs versions
     (use-package linum
       :diminish linum-mode
+      :defines (linum-mode-inhibit-modes-list)
       :config
       (progn
-        (validate-setq linum-format "%3d ")
+        (setq linum-format "%3d ")
         (setq linum-mode-inhibit-modes-list '(org-mode
                                               eshell-mode
                                               shell-mode
@@ -4028,7 +3508,7 @@ CLOSED: [2017-08-26 Sat 14:44]
           :ensure linum-relative
           :init
           (progn
-            (validate-setq linum-format 'dynamic)
+            (setq linum-format 'dynamic)
             )))
       :init
       (global-linum-mode 1))
@@ -4095,7 +3575,7 @@ CLOSED: [2017-08-26 Sat 14:44]
  #+BEGIN_SRC emacs-lisp
   (use-package magit
     :ensure magit
-    :commands  (magit-log magit-run-gitk magit-run-git-gui magit-status
+    :commands  (magit-log-other magit-run-gitk magit-run-git-gui magit-status
                           magit-git-repo-p magit-list-repos)
     :bind (("C-x g" . magit-status)
            ("C-x G" . magit-status-with-prefix)
@@ -4148,18 +3628,6 @@ CLOSED: [2017-08-26 Sat 14:44]
         (kill-buffer)
         (jump-to-register :magit-fullscreen))
 
-      (defun magit-rebase-unpushed (commit &optional args)
-        "Start an interactive rebase sequence over all unpushed commits."
-        (interactive (list (magit-get-tracked-branch)
-                           (magit-rebase-arguments)))
-        (if (setq commit (magit-rebase-interactive-assert commit))
-            (magit-run-git-sequencer "rebase" "-i" commit args)
-          (magit-log-select
-           `(lambda (commit)
-              (magit-rebase-interactive (concat commit "^") (list ,@args))))))
-
-      (magit-define-popup-action 'magit-rebase-popup ?l "Rebase unpushed" 'magit-rebase-unpushed)
-
      (use-package forge
        :ensure t
        :config
@@ -4181,12 +3649,13 @@ CLOSED: [2017-08-26 Sat 14:44]
  #+BEGIN_SRC emacs-lisp
  (use-package message
    :commands (message-mode)
+   :after (notmuch)
    :bind (:map notmuch-message-mode-map
                ("C-c M-m" . 'my-message-mark-inserted-region)
                ("C-c h" . 'harden-newlines))
    :config
    (progn
-     (validate-setq message-kill-buffer-on-exit t)
+     (setq message-kill-buffer-on-exit t)
 
      (use-package time-date
        :config
@@ -4221,13 +3690,20 @@ CLOSED: [2017-08-26 Sat 14:44]
      ;;** Zitieren ohne Sig. Ausser Idioten sind zu doof die korrekt abzutrennen.
      (setq message-cite-function 'message-cite-original-without-signature)
 
-     ;;** Automagischen Zeilenumbruch bei News/Mailangabe nach 72 Zeichen. SO wies sein soll.
+     ;;** Automagischen Zeilenumbruch bei News/Mailangabe.
      (add-hook 'message-mode-hook
                (lambda ()
                  (setq fill-column 72)
                  (turn-on-auto-fill)
                  (epa-mail-mode 1)
                  ))
+     (add-hook 'notmuch-message-mode-hook
+               (lambda ()
+                 (setq fill-column 72)
+                 (turn-on-auto-fill)
+                 (epa-mail-mode 1)
+                 ))
+     (setq fill-flowed-encode-column 78)
 
      ;;** org-mode
      (add-hook 'message-mode-hook 'orgstruct++-mode 'append)
@@ -4253,12 +3729,12 @@ CLOSED: [2017-08-26 Sat 14:44]
      (setq message-subscribed-regexps (quote (".*@lists.*" ".*@postfix.org" ".*@nongnu.org")))
      (setq message-use-followup-to (quote use))
 
-                                         ; use format=flowed mail style, see 
+                                         ; use format=flowed mail style, see
      (require 'messages-are-flowing)
      (setq mml-enable-flowed t)
      (add-hook 'message-mode-hook #'messages-are-flowing-use-and-mark-hard-newlines)
 
-                                         ; A function to mark newlines as hard newlines for format=flowed stuff
+     ; A function to mark newlines as hard newlines for format=flowed stuff
      (defun harden-newlines (beg end)
        (interactive "r")
        (save-excursion
@@ -4268,7 +3744,17 @@ CLOSED: [2017-08-26 Sat 14:44]
            (while (search-forward "\n" nil t)
              (put-text-property (1- (point)) (point) 'hard t)))))
 
-                                         ; In format=flowed our enclosing tags must end with a hard newline
+     (defun harden-message-buffer ()
+       (interactive)
+       (save-excursion
+         (message-goto-body)
+         (message "Hardening body")
+         (while (search-forward "\n" nil t)
+           (put-text-property (1- (point)) (point) 'hard t))))
+
+     (add-hook 'message-send-hook 'harden-message-buffer)
+     (add-hook 'notmuch-mua-send-hook 'harden-message-buffer)
+     ; In format=flowed our enclosing tags must end with a hard newline
      (defun my-message-mark-inserted-region (beg end &optional verbatim)
        "Mark some region in the current article with enclosing tags.
  See `message-mark-insert-begin' and `message-mark-insert-end'.
@@ -4293,48 +3779,42 @@ CLOSED: [2017-08-26 Sat 14:44]
                footnote-style 'numeric-latin
                footnote-section-tag "Footnotes:"))
        (add-hook 'message-mode-hook 'footnote-mode))
-
-     (use-package mml-sec
-       :commands (sign-or-crypt)
-       :config
-       (progn
-         (setq mm-verify-option 'always)
-         ;; Keine extra Signatur erzeugen.
-         (mml-signencrypt-style "pgpmime" 'combined)
-         (setq mml-secure-openpgp-sign-with-sender 't)
-         (setq gpg-unabbrev-trust-alist
-               '(("TRUST_UNDEFINED" . trust-undefined)
-                 ("TRUST_NEVER"     . trust-none)
-                 ("TRUST_MARGINAL"  . trust-marginal)
-                 ("TRUST_FULLY"     . trust-full)
-                 ("TRUST_ULTIMATE"  . trust-ultimate)))
-         ))
-     (add-hook 'message-setup-hook 'sign-or-crypt)
      ))
  #+END_SRC
-** CANCELLED mingus                                              :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:18]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:18]
-:END:
- [[https://github.com/pft/mingus][Mingus]] is a nice interface to mpd, the Music Player Daemon.
-
- I want to access it from anywhere using =F6=.
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package mingus-stays-home
-   :bind ( "<f6>" . mingus)
-   :defer t
-   :config
-   (progn
-     (validate-setq mingus-dired-add-keys t)
-     (validate-setq mingus-mode-always-modeline nil)
-     (validate-setq mingus-mode-line-show-elapsed-percentage nil)
-     (validate-setq mingus-mode-line-show-volume nil)
-     (validate-setq mingus-mpd-config-file "/etc/mpd.conf")
-     (validate-setq mingus-mpd-playlist-dir "/var/lib/mpd/playlists")
-     (validate-setq mingus-mpd-root "/share/music/")))
- #+END_SRC
-
+** mml
+[2018-12-31 Mon 13:28]
+#+BEGIN_SRC emacs-lisp
+(use-package mml
+  :config
+  (progn
+    ;; http://mbork.pl/2015-11-28_Fixing_mml-attach-file_using_advice
+    (defun mml-attach-file--go-to-eob (orig-fun &rest args)
+      "Go to the end of buffer before attaching files."
+      (save-excursion
+        (save-restriction
+          (widen)
+          (goto-char (point-max))
+          (apply orig-fun args))))
+
+    (advice-add 'mml-attach-file :around #'mml-attach-file--go-to-eob)
+    (setq mm-verify-option 'always)
+    ))
+(use-package mml-sec
+  :commands (sign-or-crypt)
+  :hook ((message-setup gnus-message-setup notmuch-message-setup) . sign-or-crypt)
+  :config
+  (progn
+    ;; Keine extra Signatur erzeugen.
+    (mml-signencrypt-style "pgpmime" 'combined)
+    (setq mml-secure-openpgp-sign-with-sender 't)
+    (setq gpg-unabbrev-trust-alist
+          '(("TRUST_UNDEFINED" . trust-undefined)
+            ("TRUST_NEVER"     . trust-none)
+            ("TRUST_MARGINAL"  . trust-marginal)
+            ("TRUST_FULLY"     . trust-full)
+            ("TRUST_ULTIMATE"  . trust-ultimate)))
+    ))
+#+END_SRC
 ** miniedit
  Edit minibuffer in a full (text-mode) buffer by pressing *M-C-e*.
  #+BEGIN_SRC emacs-lisp
@@ -4350,50 +3830,6 @@ CLOSED: [2017-08-26 Sat 15:18]
    ))
  #+END_SRC
 
-** CANCELLED mmm-mode                                            :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:18]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:18]
-:END:
- [2013-05-21 Tue 23:39]
- MMM Mode is a minor mode for Emacs that allows Multiple Major Modes to
- coexist in one buffer.
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package mmm-auto
-   :ensure mmm-mode
-   :init
-   (progn
-     (validate-setq mmm-global-mode 'buffers-with-submode-classes)
-     (validate-setq mmm-submode-decoration-level 2)
-     (eval-after-load 'mmm-vars
-       '(progn
-          (mmm-add-group
-           'html-css
-           '((css-cdata
-              :submode css-mode
-              :face mmm-code-submode-face
-              :front "<style[^>]*>[ \t\n]*\\(//\\)?<!\\[CDATA\\[[ \t]*\n?"
-              :back "[ \t]*\\(//\\)?]]>[ \t\n]*</style>"
-              :insert ((?j js-tag nil @ "<style type=\"text/css\">"
-                           @ "\n" _ "\n" @ "</script>" @)))
-             (css
-              :submode css-mode
-              :face mmm-code-submode-face
-              :front "<style[^>]*>[ \t]*\n?"
-              :back "[ \t]*</style>"
-              :insert ((?j js-tag nil @ "<style type=\"text/css\">"
-                           @ "\n" _ "\n" @ "</style>" @)))
-             (css-inline
-              :submode css-mode
-              :face mmm-code-submode-face
-              :front "style=\""
-              :back "\"")))
-          (dolist (mode (list 'html-mode 'nxml-mode))
-            (mmm-add-mode-ext-class mode "\\.r?html\\(\\.erb\\)?\\'" 'html-css))
-          (mmm-add-mode-ext-class 'html-mode "\\.php\\'" 'html-php)
-          ))))
- #+END_SRC
-
 ** mo-git-blame
  This is [[https://github.com/mbunkus/mo-git-blame][mo-git-blame -- An interactive, iterative 'git blame' mode for
  Emacs]].
@@ -4404,7 +3840,7 @@ CLOSED: [2017-08-26 Sat 15:18]
               mo-git-blame-file)
    :config
    (progn
-     (validate-setq mo-git-blame-blame-window-width 25)))
+     (setq mo-git-blame-blame-window-width 25)))
  #+END_SRC
 
 ** CANCELLED multiple cursors                                    :CANCELLED:
@@ -4439,7 +3875,7 @@ CLOSED: [2017-08-26 Sat 15:18]
      (bind-key "n" 'mc/mark-next-like-this region-bindings-mode-map)
      (bind-key "l" 'mc/edit-lines region-bindings-mode-map)
      (bind-key "m" 'mc/mark-more-like-this-extended region-bindings-mode-map)
-     (validate-setq mc/list-file (expand-file-name "mc-cache.el" jj-cache-dir))))
+     (setq mc/list-file (expand-file-name "mc-cache.el" jj-cache-dir))))
  #+END_SRC
 ** neotree
  [2014-08-27 Wed 17:15]
@@ -4455,7 +3891,7 @@ CLOSED: [2017-08-26 Sat 15:18]
    :config
    (progn
      (bind-key "^" 'neotree-select-up-node neotree-mode-map)
-     (validate-setq neo-smart-open t)))
+     (setq neo-smart-open t)))
 
  #+END_SRC
 ** notmuch
@@ -4471,8 +3907,6 @@ CLOSED: [2017-08-26 Sat 15:18]
           :map notmuch-common-keymap
           ("G" . nil)
           ("s" . nil)
-          :map notmuch-show-mode-map
-          ("C-c C-c" . lld-notmuch-goto-message-in-gnus)
           )
    :init
    (progn
@@ -4480,7 +3914,7 @@ CLOSED: [2017-08-26 Sat 15:18]
        (jj-init-theme)))
    :config
    (progn
-     (validate-setq notmuch-search-oldest-first nil)
+     (setq notmuch-search-oldest-first nil)
 
      (setq smtpmail-default-smtp-server "localhost")
 
@@ -4525,7 +3959,7 @@ CLOSED: [2017-08-26 Sat 15:18]
                                            "^X-User-Agent"
                                            "^User-Agent" )))
 
-     (setq notmuch-show-all-tags-list t)
+     (setq notmuch-show-all-tags-list nil)
      (setq notmuch-show-mark-read-tags (list "-unread" "-inbox"))
 
      (setq notmuch-saved-searches '(
@@ -4535,7 +3969,7 @@ CLOSED: [2017-08-26 Sat 15:18]
                                     (         :name "Mirror logs"           :query "from:archvsync@* AND tag:mirrors AND tag:logs AND tag:unread")
                                     (         :name "Cron"                  :query "from:cron@ AND tag:unread")
                                     (         :name "List Admin"            :query "subject:moderator request AND tag:unread")
-                                    (:key "i" :name "Inbox Ganneff"         :query "(tag:inbox AND tag:ganneff) AND NOT (tag:lists)")
+                                    (:key "i" :name "Inbox Ganneff"         :query "(tag:inbox AND tag:ganneff) AND NOT (tag:lists OR tag:kommerz OR from:support@hetzner.com)")
                                     (         :name "Inbox NSB"             :query "tag:inbox AND tag:nsb")
                                     (         :name "Inbox All"             :query "tag:inbox")
                                     (:key "n" :name "New Mail"              :query "tag:new" )
@@ -4545,10 +3979,11 @@ CLOSED: [2017-08-26 Sat 15:18]
                                                           ( from:gitlab@salsa.debian.org AND subject:dak ) OR \
                                                           ( ( tag:planet OR tag:kommerz OR from:cron@ OR from:archvsync@* OR \
                                                               from:ftpmaster@ftp-master.debian.org OR from:nagios@ OR from:@bugs.debian.org \
-                                                              OR tag:lists/* ) )")
+                                                              OR tag:lists/* OR from:support@hetzner.com) )")
                                     (:key "f" :name "Flagged"               :query "tag:flagged")
                                     (:key "s" :name "Sent Ganneff"          :query "tag:sent AND tag:ganneff")
                                     (         :name "Sent NSB"              :query "tag:sent AND tag:nsb")
+                                    (         :name "Sent DAM"              :query "folder:ganneff/.Sentmail.DAM")
                                     (:key "g" :name "NSB GF"                :query "tag:nsb AND tag:gf AND tag:unread")
                                     (:key "f" :name "Important"             :query "tag:important")
                                     (:key "t" :name "TODO"                  :query "tag:todo")
@@ -4556,14 +3991,22 @@ CLOSED: [2017-08-26 Sat 15:18]
                                     (:key "d" :name "DA-Manager"            :query "to:da-manager@debian.org AND (tag:todo OR tag:unread)")
                                     (         :name "Planet Debian"         :query "to:planet@debian.org AND tag:unread")
                                     (         :name "Kommerz"               :query "tag:Kommerz AND (tag:unread OR tag:inbox OR tag:flagged)" :sort-order oldest-first)
-                                    (         :name "Van Hien"              :query "from:nguyen@nsb-software.de OR from:info@nsb-software.de OR \
-                                                                                         from:van-hien.nguyen@dlh.de OR from:van-hien.nguyen.sp@dlh.de \
-                                                                                         OR (tag:sent AND ( to:nguyen@nsb-software.de OR to:info@nsb-software.de OR \
-                                                                                         to:van-hien.nguyen@dlh.de OR to:van-hien.nguyen.sp@dlh.de ) )")
+                                    (         :name "VH Unread"             :query "(tag:unread OR tag:inbox) \
+                                                                                     AND ((from:nguyen@nsb-software.de OR to:nguyen@nsb-software.de \
+                                                                                     OR from:info@nsb-software.de OR to:info@nsb-software.de  \
+                                                                                     OR from:van-hien.nguyen@dlh.de OR to:van-hien.nguyen@dlh.de \
+                                                                                     OR from:van-hien.nguyen.sp@dlh.de OR to:van-hien.nguyen.sp@dlh.de) \
+                                                                                     AND (tag:sent OR tag:sentmail OR tag:to-me))")
+                                    (         :name "VH All"                :query "(from:nguyen@nsb-software.de OR to:nguyen@nsb-software.de \
+                                                                                     OR from:info@nsb-software.de OR to:info@nsb-software.de  \
+                                                                                     OR from:van-hien.nguyen@dlh.de OR to:van-hien.nguyen@dlh.de \
+                                                                                     OR from:van-hien.nguyen.sp@dlh.de OR to:van-hien.nguyen.sp@dlh.de) \
+                                                                                     AND (tag:sent OR tag:sentmail OR tag:to-me)")
                                     (         :name "D-Devel-Announce"      :query "tag:lists/debian-devel-announce and tag:unread")
                                     (         :name "D-Devel"               :query "tag:lists/debian-devel and tag:unread")
                                     (         :name "D-Project"             :query "tag:lists/debian-project and tag:unread")
                                     (         :name "D-Private"             :query "tag:lists/debian-private and tag:unread")
+                                    (         :name "D-Vote"                :query "tag:lists/debian-vote and tag:unread")
                                     (         :name "O-Staff"               :query "tag:lists/oftc-staff and tag:unread")
                                     (         :name "O-Noc"                 :query "tag:lists/oftc-noc and tag:unread")
                                     (         :name "LugFD"                 :query "tag:lists/lugfd and tag:unread")
@@ -4612,7 +4055,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "deleted" (notmuch-search-get-tags))
              (notmuch-search-tag (list "-deleted"))
            (notmuch-search-tag (list "+deleted" "-unread" "-inbox")))
-         (next-line)))
+         (forward-line)))
      (define-key notmuch-show-mode-map "d"
        (lambda ()
          "toggle deleted tag for message"
@@ -4620,7 +4063,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "deleted" (notmuch-show-get-tags))
              (notmuch-show-tag (list "-deleted"))
            (notmuch-show-tag (list "+deleted" "-unread" "-inbox")))
-         (notmuch-show-next-open-message-or-pop)))
+         (notmuch-show-next-open-message t)))
 
                                          ; Toggle spam tag on a message in search/show
      (define-key notmuch-search-mode-map "s"
@@ -4630,7 +4073,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "spam" (notmuch-search-get-tags))
              (notmuch-search-tag (list "-spam" "+learnham"))
            (notmuch-search-tag (list "+spam" "-unread" "-inbox")))
-         (next-line)))
+         (forward-line)))
      (define-key notmuch-show-mode-map "s"
        (lambda ()
          "toggle spam tag for message"
@@ -4638,7 +4081,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "spam" (notmuch-show-get-tags))
              (notmuch-show-tag (list "-spam" "+learnham"))
            (notmuch-show-tag (list "+spam" "-unread" "-inbox")))
-         (notmuch-show-next-open-message-or-pop)))
+         (notmuch-show-next-open-message t)))
      (define-key notmuch-tree-mode-map "s"
        (lambda ()
          "toggle spam tag for message"
@@ -4646,7 +4089,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "spam" (notmuch-tree-get-tags))
              (notmuch-tree-tag (list "-spam" "+learnham"))
            (notmuch-tree-tag (list "+spam" "-unread" "-inbox")))
-         (next-line)))
+         (forward-line)))
 
                                          ; Toggle learnham tag on a message in search/show
      (define-key notmuch-search-mode-map "h"
@@ -4656,7 +4099,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "learnham" (notmuch-search-get-tags))
              (notmuch-search-tag (list "-learnham"))
            (notmuch-search-tag (list "+learnham" "-spam")))
-         (next-line)))
+         (forward-line)))
      (define-key notmuch-show-mode-map "h"
        (lambda ()
          "toggle learnham tag for message"
@@ -4664,7 +4107,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "learnham" (notmuch-show-get-tags))
              (notmuch-show-tag (list "-learnham"))
            (notmuch-show-tag (list "+learnham" "-spam")))
-         (notmuch-show-next-open-message-or-pop)))
+         (notmuch-show-next-open-message t)))
 
      (define-key notmuch-search-mode-map "u"
        (lambda ()
@@ -4673,7 +4116,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "unread" (notmuch-search-get-tags))
              (notmuch-search-tag (list "-unread" "-inbox"))
            (notmuch-search-tag (list "+unread")))
-         (next-line)))
+         (forward-line)))
      (define-key notmuch-show-mode-map "u"
        (lambda ()
          "toggle unread tag for message"
@@ -4681,7 +4124,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "unread" (notmuch-show-get-tags))
              (notmuch-show-tag (list "-unread" "-inbox"))
            (notmuch-show-tag (list "+unread")))
-         (notmuch-show-next-open-message-or-pop)))
+         (notmuch-show-next-open-message t)))
 
      (define-key notmuch-search-mode-map "k"
        (lambda ()
@@ -4690,7 +4133,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "killed" (notmuch-search-get-tags))
              (notmuch-search-tag (list "-killed"))
            (notmuch-search-tag (list "+killed" "-inbox" "-unread")))
-         (next-line)))
+         (forward-line)))
      (define-key notmuch-show-mode-map "k"
        (lambda ()
          "toggle killed tag for message"
@@ -4698,7 +4141,7 @@ CLOSED: [2017-08-26 Sat 15:18]
          (if (member "killed" (notmuch-show-get-tags))
              (notmuch-show-tag (list "-killed"))
            (notmuch-show-tag (list "+killed" "-inbox" "-unread")))
-         (notmuch-show-next-open-message-or-pop)))
+         (notmuch-show-next-open-message t)))
 
                                          ;  resend the current message in show mode.
      (define-key notmuch-show-mode-map "b"
@@ -4723,6 +4166,7 @@ CLOSED: [2017-08-26 Sat 15:18]
 
      (use-package gnus-alias
        :ensure t
+       :after (notmuch)
        :commands (gnus-alias-determine-identity)
        :hook ((message-setup . gnus-alias-determine-identity))
        :bind (:map notmuch-message-mode-map
@@ -4797,9 +4241,7 @@ CLOSED: [2017-08-26 Sat 15:18]
                                            ("DebianLists" ("to" ".*@lists.debian.org" both) "Debian")
                                            ("Debian" ("any" "joerg@debian.org" both) "Debian")
                                            )))
-       )
-
-     ))
+       )))
  #+END_SRC
 ** nxml
  [2013-05-22 Wed 22:02]
@@ -4824,7 +4266,7 @@ CLOSED: [2017-08-26 Sat 15:18]
        ;(add-hook 'nxml-mode-hook (lambda () (emmet-mode t)))
 
        (fset 'xml-mode 'nxml-mode)
-       (validate-setq nxml-slash-auto-complete-flag t)
+       (setq nxml-slash-auto-complete-flag t)
 
        ;; See: http://sinewalker.wordpress.com/2008/06/26/pretty-printing-xml-with-emacs-nxml-mode/
        (defun pp-xml-region (begin end)
@@ -4839,16 +4281,7 @@ CLOSED: [2017-08-26 Sat 15:18]
            (while (search-forward-regexp "\>[ \\t]*\<" nil t)
              (backward-char) (insert "\n"))
            (indent-region begin end)))
-
-       ;;----------------------------------------------------------------------------
-       ;; Integration with tidy for html + xml
-       ;;----------------------------------------------------------------------------
-       ;; tidy is autoloaded
-       (eval-after-load 'tidy
-         '(progn
-            (add-hook 'nxml-mode-hook (lambda () (tidy-build-menu nxml-mode-map)))
-            (add-hook 'html-mode-hook (lambda () (tidy-build-menu html-mode-map)))
-            ))))
+))
 
  #+END_SRC
 ** org                                                               :FIXME:
@@ -4858,7 +4291,8 @@ CLOSED: [2017-08-26 Sat 15:18]
  I use org-mode a lot and, having my config for this based on [[*Bernt%20Hansen][the config of Bernt Hansen]],
  it is quite extensive. Nevertheless, it starts out small, loading it.
  #+BEGIN_SRC emacs-lisp
- (require 'org)
+ (use-package org
+  :defines (my-texcmd org-export-latex-default-packages-alist org-export-latex-classes org-alphabetical-lists web-mode-enable-comment-keywords))
  #+END_SRC
 
  My browsers (Conkeror, Iceweasel) can store links in org-mode. For
@@ -4991,9 +4425,7 @@ CLOSED: [2017-08-26 Sat 15:18]
  (appt-activate t)
 
  (setq org-agenda-log-mode-items (quote (closed clock state)))
- (if (> emacs-major-version 23)
-     (setq org-agenda-span 3)
-   (setq org-agenda-ndays 3))
+ (setq org-agenda-span 3)
 
  (setq org-agenda-show-all-dates t)
  (setq org-agenda-start-on-weekday nil)
@@ -5159,7 +4591,10 @@ CLOSED: [2017-08-26 Sat 15:18]
                 "* %?\nAdded: %U\n"
                 :clock-in t :clock-resume t)
                ("w" "org-protocol" entry (file "~/org/refile.org")
-                "* TODO Review %c\nAdded: %U\n"
+                "* TODO Review %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\nAdded: %U\n\n\n%?"
+                :immediate-finish t)
+               ("W" "org-protocol link" entry (file "~/org/refile.org")
+                "* %? [[%:link][%:description]] \nAdded: %U"
                 :immediate-finish t)
                ("p" "Phone call" entry (file "~/org/refile.org")
                 "* PHONE %? :PHONE:\nAdded: %U"
@@ -5594,17 +5029,17 @@ CLOSED: [2017-08-26 Sat 15:18]
  (defun my-auto-tex-cmd ()
    "When exporting from .org with latex, automatically run latex,
       pdflatex, or xelatex as appropriate, using latexmk."
-   (let ((texcmd)))
+   (let ((my-texcmd)))
    ;; default command: oldstyle latex via dvi
-   (setq texcmd "latexmk -dvi -pdfps -quiet %f")
+   (setq my-texcmd "latexmk -dvi -pdfps -quiet %f")
    ;; pdflatex -> .pdf
    (if (string-match "LATEX_CMD: pdflatex" (buffer-string))
-       (setq texcmd "latexmk -pdf -quiet %f"))
+       (setq my-texcmd "latexmk -pdf -quiet %f"))
    ;; xelatex -> .pdf
    (if (string-match "LATEX_CMD: xelatex" (buffer-string))
-       (setq texcmd "latexmk -pdflatex='xelatex -shell-escape' -pdf -quiet %f"))
+       (setq my-texcmd "latexmk -pdflatex='xelatex -shell-escape' -pdf -quiet %f"))
    ;; LaTeX compilation command
-   (setq org-latex-to-pdf-process (list texcmd)))
+   (setq org-latex-to-pdf-process (list my-texcmd)))
 
  (add-hook 'org-export-latex-after-initial-vars-hook 'my-auto-tex-cmd)
 
@@ -5913,7 +5348,7 @@ CLOSED: [2017-08-26 Sat 15:18]
      (add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
      (add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))
      (setq cperl-invalid-face nil)
-     (validate-setq cperl-close-paren-offset -4
+     (setq cperl-close-paren-offset -4
            cperl-continued-statement-offset 0
            cperl-indent-level 4
            cperl-indent-parens-as-block t
@@ -5943,7 +5378,7 @@ CLOSED: [2017-08-26 Sat 15:18]
    )
  #+END_SRC
 ** perspective
-[2018-06-12 Di 22:51] 
+[2018-06-12 Di 22:51]
 
 provides tagged workspaces in Emacs, similar to workspaces in windows
 managers such as Awesome and XMonad (and somewhat similar to multiple
@@ -6025,6 +5460,7 @@ p, <left> -- persp-prev: Switch to previous perspective
  (use-package projectile
    :ensure projectile
    :commands (projectile-find-file projectile-switch-project)
+   :bind-keymap ("C-c p" . projectile-command-map)
    :config
    (progn
      (projectile-mode)
@@ -6038,7 +5474,7 @@ p, <left> -- persp-prev: Switch to previous perspective
          (setq ido-enable-flex-matching t)
          (setq ido-use-faces nil)
          ))
-     ; See https://github.com/ericdanan/counsel-projectile
+                                         ; See https://github.com/ericdanan/counsel-projectile
      (use-package counsel-projectile
        :ensure t
        :config
@@ -6066,164 +5502,23 @@ p, <left> -- persp-prev: Switch to previous perspective
    :config
    (progn
      (defun my-puppet-mode-hook ()
-       (validate-setq require-final-newline nil))
+       (setq require-final-newline nil))
      (add-hook 'puppet-mode-hook 'my-puppet-mode-hook)
      (use-package puppet-ext)))
  #+END_SRC
+** python
+[2018-12-30 Sun 17:25]
+Emacs handles python quite well, but we can improve things with anaconda mode.
 
-** CANCELLED python                                              :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:21]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:21]
-:END:
- Use elpy for the emacs python fun, but dont let it initialize all the
- various variables. Elpy author may like them, but I'm not him...
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package elpy
-   :defer t
-   :mode ("\.py" . python-mode)
-   :init
-   (progn
-     (safe-load (concat jj-elisp-dir "/elpy/elpy-autoloads.el"))
-     )
-   :config
-   (progn
-
-     (use-package nose
-       :ensure nose
-       :commands (nosetests-all nosetests-module nosetests-one
-                                nosetests-failed nosetests-pdb-all
-                                nosetests-pdb-module nosetests-pdb-one)
-       )
-
-     (use-package pyvenv
-       :ensure pyvenv
-       :commands (pyvenv-activate pyvenv-deactivate pyvenv-mode pyvenv-restart-python)
-       )
-
-     (use-package idomenu
-       :ensure idomenu
-       :commands (idomenu)
-       :defer t)
-
-     (use-package find-file-in-project
-       :ensure t
-       :commands (find-file-in-project ffip-project-files ffip ))
-
-     (use-package fuzzy
-       :ensure t)
-
-     ;; Local variables in `python-mode'. This is not removed when Elpy
-     ;; is disabled, which can cause some confusion.
-     (add-hook 'python-mode-hook 'elpy-initialize-local-variables)
-
-     (defun my-python-mode-hook ()
-       (validate-setq require-final-newline nil)
-       (validate-setq mode-require-final-newline t)
-       (add-to-list 'company-backends 'company-jedi))
-     (add-hook 'python-mode-hook 'my-python-mode-hook)
-
-     ;; Flymake support using flake8, including warning faces.
-     (when (and (executable-find "flake8")
-                (not (executable-find python-check-command)))
-       (validate-setq python-check-command "flake8"))
-
-     ;; `flymake-no-changes-timeout': The original value of 0.5 is too
-     ;; short for Python code, as that will result in the current line to
-     ;; be highlighted most of the time, and that's annoying. This value
-     ;; might be on the long side, but at least it does not, in general,
-     ;; interfere with normal interaction.
-     (validate-setq flymake-no-changes-timeout 60)
-
-     ;; `flymake-start-syntax-check-on-newline': This should be nil for
-     ;; Python, as;; most lines with a colon at the end will mean the next
-     ;; line is always highlighted as error, which is not helpful and
-     ;; mostly annoying.
-     (validate-setq flymake-start-syntax-check-on-newline nil)
-
-     ;; `ac-auto-show-menu': Short timeout because the menu is great.
-     (validate-setq ac-auto-show-menu 0.4)
-
-     ;; `ac-quick-help-delay': I'd like to show the menu right with the
-     ;; completions, but this value should be greater than
-     ;; `ac-auto-show-menu' to show help for the first entry as well.
-     (validate-setq ac-quick-help-delay 0.5)
-
-     ;; `yas-trigger-key': TAB, as is the default, conflicts with the
-     ;; autocompletion. We also need to tell yasnippet about the new
-     ;; binding. This is a bad interface to set the trigger key. Stop
-     ;; doing this.
-     (let ((old (when (boundp 'yas-trigger-key)
-                  yas-trigger-key)))
-       (validate-setq yas-trigger-key "C-c C-i")
-       (when (fboundp 'yas--trigger-key-reload)
-         (yas--trigger-key-reload old)))
-
-     ;; yas-snippet-dirs can be a string for a single directory. Make
-     ;; sure it's a list in that case so we can add our own entry.
-     (when (not (listp yas-snippet-dirs))
-       (validate-setq yas-snippet-dirs (list yas-snippet-dirs)))
-     (add-to-list 'yas-snippet-dirs
-                  (concat (file-name-directory (locate-library "elpy"))
-                          "snippets/")
-                  t)
-
-     ;; Now load yasnippets.
-     (yas-reload-all)
-     (elpy-enable t)
-     (elpy-use-ipython)))
-
- #+END_SRC
-
- Below is old setup
- #+BEGIN_SRC emacs-lisp :tangle no
- (autoload 'python-mode "python-mode" "Python Mode." t)
- (add-auto-mode 'python-mode "\\.py\\'")
- (add-auto-mode 'python-mode "\\.py$")
- (add-auto-mode 'python-mode "SConstruct\\'")
- (add-auto-mode 'python-mode "SConscript\\'")
- (add-to-list 'interpreter-mode-alist '("python" . python-mode))
-
- (after 'python-mode
-   (set-variable 'py-indent-offset 4)
-   (set-variable 'py-smart-indentation nil)
-   (set-variable 'indent-tabs-mode nil)
-   (define-key python-mode-map "\C-m" 'newline-and-indent)
-   (turn-on-eldoc-mode)
-   (defun python-auto-fill-comments-only ()
-     (auto-fill-mode 1)
-     (set (make-local-variable 'fill-nobreak-predicate)
-          (lambda ()
-            (not (python-in-string/comment)))))
-   (add-hook 'python-mode-hook
-             (lambda ()
-               (python-auto-fill-comments-only)))
-    ;; pymacs
-   (autoload 'pymacs-apply "pymacs")
-   (autoload 'pymacs-call "pymacs")
-   (autoload 'pymacs-eval "pymacs" nil t)
-   (autoload 'pymacs-exec "pymacs" nil t)
-   (autoload 'pymacs-load "pymacs" nil t))
- #+END_SRC
+#+BEGIN_SRC emacs-lisp
+(use-package anaconda-mode
+  :ensure t
+  :config
+  (progn
+  (add-hook 'python-mode-hook 'anaconda-mode)
+  (add-hook 'python-mode-hook 'anaconda-eldoc-mode)))
+#+END_SRC
 
- If an =ipython= executable is on the path, then assume that IPython is
- the preferred method python evaluation.
- #+BEGIN_SRC emacs-lisp :tangle no
- (when (executable-find "ipython")
-   (require 'ipython)
-   (validate-setq org-babel-python-mode 'python-mode))
-
- (validate-setq python-shell-interpreter "ipython")
- (validate-setq python-shell-interpreter-args "")
- (validate-setq python-shell-prompt-regexp "In \\[[0-9]+\\]: ")
- (validate-setq python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: ")
- (validate-setq python-shell-completion-setup-code
-    "from IPython.core.completerlib import module_completion")
- (validate-setq python-shell-completion-module-string-code
-    "';'.join(module_completion('''%s'''))\n")
- (validate-setq python-shell-completion-string-code
-    "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")
- #+END_SRC
 ** rainbow-delimiters
  [2013-04-09 Di 23:38]
  [[http://www.emacswiki.org/emacs/RainbowDelimiters][EmacsWiki: Rainbow Delimiters]] is a “rainbow parentheses”-like mode
@@ -6253,7 +5548,7 @@ Saner regex syntax
    :commands re-builder
    :defer t
    :config
-   (validate-setq reb-re-syntax 'string))
+   (setq reb-re-syntax 'string))
  #+END_SRC
 ** recentf
  [2014-05-19 Mo 22:56]
@@ -6267,8 +5562,8 @@ Saner regex syntax
    :init
    (progn
      (recentf-mode 1)
-     (validate-setq recentf-max-menu-items 25)
-     (validate-setq recentf-save-file (expand-file-name ".recentf" jj-cache-dir))
+     (setq recentf-max-menu-items 25)
+     (setq recentf-save-file (expand-file-name ".recentf" jj-cache-dir))
 
      (defun recentf-add-dired-directory ()
        (if (and dired-directory
@@ -6282,21 +5577,6 @@ Saner regex syntax
 
      (add-hook 'dired-mode-hook 'recentf-add-dired-directory)))
  #+END_SRC
-** CANCELLED Region bindings mode                                :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:21]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:21]
-:END:
- [2013-05-01 Wed 22:51]
- This mode allows to have keybindings that are only alive when the
- region is active. Helpful for things that only do any useful action
- then, like for example the [[*multiple%20cursors][multiple cursors]] mode I load later.
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package region-bindings-mode
-   :ensure region-bindings-mode
-   :config
-   (region-bindings-mode-enable))
- #+END_SRC
 ** ruby
  [2013-05-22 Wed 22:33]
  Programming in ruby...
@@ -6317,23 +5597,6 @@ CLOSED: [2017-08-26 Sat 15:21]
    :defer t
    :config
    (progn
-     (use-package yari
-       :ensure t
-       :init
-       (progn
-         (defvar yari-helm-source-ri-pages
-           '((name . "RI documentation")
-             (candidates . (lambda () (yari-ruby-obarray)))
-             (action  ("Show with Yari" . yari))
-             (candidate-number-limit . 300)
-             (requires-pattern . 2)
-             "Source for completing RI documentation."))
-
-         (defun helm-yari (&optional rehash)
-           (interactive (list current-prefix-arg))
-           (when current-prefix-arg (yari-ruby-obarray rehash))
-           (helm 'yari-helm-source-ri-pages (yari-symbol-at-point)))))
-
      (defun my-ruby-smart-return ()
        (interactive)
        (when (memq (char-after) '(?\| ?\" ?\'))
@@ -6409,18 +5672,6 @@ CLOSED: [2017-08-26 Sat 15:21]
    (progn
      (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)))
  #+END_SRC
-** CANCELLED StarDict dictionary lookup                          :CANCELLED:
-CLOSED: [2018-12-26 Wed 14:09]
-:LOGBOOK:
-- State "CANCELLED"  from              [2018-12-26 Wed 14:09] \\
-  not in use
-:END:
- [2017-01-16 Mon 18:26]
- Look up stuff in the Webster dictionary using stardict
- #+BEGIN_SRC emacs-lisp
- (use-package sdcv-mode
-   :bind ("C-x d" . sdcv-search))
- #+END_SRC
 ** sessions                                                          :FIXME:
  [2013-05-22 Wed 22:40]
  Save and restore the desktop
@@ -6483,7 +5734,7 @@ CLOSED: [2018-12-26 Wed 14:09]
                   (outline-invisible-p))
          (if (eq major-mode 'org-mode)
              (org-reveal)
-           (show-subtree))))
+           (outline-show-subtree))))
 
      (add-hook 'session-after-jump-to-last-change-hook
                'le::maybe-reveal)
@@ -6513,14 +5764,15 @@ CLOSED: [2018-12-26 Wed 14:09]
    :init
    (progn
      (setq savehist-file (expand-file-name "savehist" jj-cache-dir))
-     (setq history-length 1000))
-   :config
-   (progn
+     (setq history-length 1000)
+     (savehist-mode +1)
      (setq savehist-additional-variables
            '(search ring regexp-search-ring kill-ring compile-history))
      ;; save every minute
-     (validate-setq savehist-autosave-interval 60)
-     (savehist-mode +1)))
+     (setq savehist-autosave-interval 60)
+     (setq savehist-save-minibuffer-history t
+           savehist-autosave-interval 180)
+     ))
  #+END_SRC
 
 *** saveplace
@@ -6542,7 +5794,7 @@ CLOSED: [2018-12-26 Wed 14:09]
    :commands (httpd-start httpd-stop)
    :config
    (progn
-     (validate-setq httpd-root "/srv/www")
+     (setq httpd-root "/srv/www")
      )
  )
  #+END_SRC
@@ -6556,8 +5808,8 @@ CLOSED: [2018-12-26 Wed 14:09]
      (defvar sh-script-initialized nil)
      (defun initialize-sh-script ()
        (unless sh-script-initialized
-         (validate-setq sh-script-initialized t)
-         (validate-setq sh-indent-comment t)
+         (setq sh-script-initialized t)
+         (setq sh-indent-comment t)
          (info-lookup-add-help :mode 'shell-script-mode
                                :regexp ".*"
                                :doc-spec
@@ -6610,11 +5862,10 @@ CLOSED: [2018-12-26 Wed 14:09]
    :commands time-stamp
    :config
    (progn
-     (add-hook 'write-file-hooks 'time-stamp)
-     (validate-setq time-stamp-active t)
-     (validate-setq time-stamp-format "%02H:%02M:%02S (%z) - %02d.%02m.%:y from %u (%U) on %s")
-     (validate-setq time-stamp-old-format-warn nil)
-     (validate-setq time-stamp-time-zone nil)))
+     (add-hook 'write-file-functions 'time-stamp)
+     (setq time-stamp-active t)
+     (setq time-stamp-format "%02H:%02M:%02S (%z) - %02d.%02m.%:y from %u (%U) on %s")
+     (setq time-stamp-time-zone nil)))
  #+END_SRC
 
 ** tiny-tools
@@ -6646,14 +5897,14 @@ CLOSED: [2018-12-26 Wed 14:09]
    :defer t
    :config
    (progn
-     ;(validate-setq tramp-persistency-file-name (expand-file-name "tramp" jj-cache-dir))
-     (validate-setq shell-prompt-pattern "^[^a-zA-Z].*[#$%>] *")
+     ;(setq tramp-persistency-file-name (expand-file-name "tramp" jj-cache-dir))
+     (setq shell-prompt-pattern "^[^a-zA-Z].*[#$%>] *")
      ;(add-to-list 'tramp-default-method-alist '("\\`localhost\\'" "\\`root\\'" "su"))
-     (validate-setq tramp-default-method "sshx")
+     (setq tramp-default-method "sshx")
      ;(tramp-set-completion-function "ssh"
      ;                               '((tramp-parse-sconfig "/etc/ssh_config")
      ;                                 (tramp-parse-sconfig "~/.ssh/config")))
-     ;(validate-setq tramp-verbose 5)
+     ;(setq tramp-verbose 5)
      ))
  #+END_SRC
 
@@ -6680,8 +5931,8 @@ CLOSED: [2018-12-26 Wed 14:09]
    :init
    (progn
      (global-undo-tree-mode)
-     (validate-setq undo-tree-visualizer-timestamps t)
-     (validate-setq undo-tree-visualizer-diff t)
+     (setq undo-tree-visualizer-timestamps t)
+     (setq undo-tree-visualizer-diff t)
      ;; Keep region when undoing in region
      (defadvice undo-tree-undo (around keep-region activate)
        (if (use-region-p)
@@ -6700,9 +5951,9 @@ CLOSED: [2018-12-26 Wed 14:09]
  (use-package uniquify
    :init
    (progn
-     (validate-setq uniquify-buffer-name-style 'post-forward)
-     (validate-setq uniquify-after-kill-buffer-p t)
-     (validate-setq uniquify-ignore-buffers-re "^\\*")))
+     (setq uniquify-buffer-name-style 'post-forward)
+     (setq uniquify-after-kill-buffer-p t)
+     (setq uniquify-ignore-buffers-re "^\\*")))
  #+END_SRC
 
 ** url
@@ -6710,8 +5961,8 @@ CLOSED: [2018-12-26 Wed 14:09]
  set it to send Accept-language header and tell it to not send email,
  operating system or location info.
  #+BEGIN_SRC emacs-lisp
- (validate-setq url-mime-language-string "de,en")
- (validate-setq url-privacy-level (quote (email os lastloc)))
+ (setq url-mime-language-string "de,en")
+ (setq url-privacy-level (quote (email os lastloc)))
  #+END_SRC
 ** visual-regexp
  [2014-06-01 Sun 21:38]
@@ -6720,11 +5971,23 @@ CLOSED: [2018-12-26 Wed 14:09]
  #+BEGIN_SRC emacs-lisp
  (use-package visual-regexp
    :ensure visual-regexp
+   :commands (vr/replace vr/query-replace vr/mc-mark)
    :bind (("C-M-%" . vr/replace)
           ("M-%" . vr/query-replace)
           ("C-c m" . vr/mc-mark))
    :defer t)
  #+END_SRC
+** visual-regexp-steroids
+[2018-12-29 Sat 22:33]
+And [[https://github.com/benma/visual-regexp-steroids.el][visual-regexp-steroids]] is enabling the use of other regexp
+engines, by default it uses python.
+#+BEGIN_SRC emacs-lisp
+(use-package visual-regexp-steroids
+   :ensure t
+   :requires (visual-regexp)
+   :after (visual-regexp)
+)
+#+END_SRC
 ** volatile highlights
  [2013-04-21 So 20:31]
  VolatileHighlights highlights changes to the buffer caused by commands
@@ -6734,9 +5997,9 @@ CLOSED: [2018-12-26 Wed 14:09]
  #+BEGIN_SRC emacs-lisp
  (use-package volatile-highlights
    :ensure volatile-highlights
+   :diminish volatile-highlights-mode
    :init
-   (volatile-highlights-mode t)
-   :diminish volatile-highlights-mode)
+   (volatile-highlights-mode t))
  #+END_SRC
 ** wgrep
  [2015-09-28 Mon 14:48]
@@ -6748,27 +6011,27 @@ CLOSED: [2018-12-26 Wed 14:09]
    (add-hook 'grep-setup-hook 'wgrep-setup)
    :config
    (progn
-     (validate-setq wgrep-auto-save-buffer t)
-     (validate-setq wgrep-enable-key "r")
+     (setq wgrep-auto-save-buffer t)
+     (setq wgrep-enable-key "r")
      )
    )
  #+END_SRC
-** CANCELLED windmove                                            :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:29]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:29]
-:END:
- [2015-02-23 Mon 14:38]
- Easily move between splitted windows.
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package windmove
-   :init
-   (progn
-     (windmove-default-keybindings)
-     ; maybe also:
-     ;(validate-setq org-replace-disputed-keys t)
-     ))
- #+END_SRC
+** which key
+[2018-12-30 Sun 17:08]
+#+BEGIN_SRC emacs-lisp
+(use-package which-key
+  :ensure t
+  :diminish which-key-mode
+  :init (which-key-mode)
+  :config
+  (progn
+    (setq which-key-sort-order 'which-key-local-then-key-order)
+    (setq which-key-idle-delay 0.4)
+    (setq which-key-idle-secondary-delay 0)
+    (setq which-key-show-remaining-keys t)
+    (setq which-key-compute-remaps t)
+    ))
+#+END_SRC
 ** winner mode - undo and redo window configuration
  [2015-02-24 Tue 23:11]
  =winner-mode= lets you use =C-c <left>= and =C-c <right>= to switch between
@@ -6781,21 +6044,6 @@ CLOSED: [2017-08-26 Sat 15:29]
    :defer t
    :config (winner-mode 1))
  #+END_SRC
-** CANCELLED writegood                                           :CANCELLED:
-CLOSED: [2017-08-26 Sat 15:30]
-:LOGBOOK:
-- State "CANCELLED"  from              [2017-08-26 Sat 15:30]
-:END:
- This highlights some /weaselwords/, a mode to /aid in finding common
- writing problems/...
- [2013-04-27 Sa 23:29]
- #+BEGIN_SRC emacs-lisp :tangle no
- (use-package writegood-mode
-   :ensure writegood-mode
-   :defer t
-   :init
-   (bind-key "C-c g" 'writegood-mode))
- #+END_SRC
 ** web-mode
  [2014-06-01 Sun 22:48]
  #+BEGIN_SRC emacs-lisp
@@ -6823,8 +6071,8 @@ CLOSED: [2017-08-26 Sat 15:30]
                  (setq web-mode-enable-current-element-highlight t))))
    :config
    (progn
-     (validate-setq web-mode-enable-current-element-highlight t)
-     (validate-setq web-mode-ac-sources-alist
+     (setq web-mode-enable-current-element-highlight t)
+     (setq web-mode-ac-sources-alist
            '(("css" . (ac-source-css-property))
              ("html" . (ac-source-words-in-buffer ac-source-abbrev))))
      (use-package impatient-mode
@@ -6853,17 +6101,24 @@ CLOSED: [2017-08-26 Sat 15:30]
  readable/editable without getting a big headache.
  #+BEGIN_SRC emacs-lisp
  (use-package yaml-mode
-   :ensure yaml-mode
+   :ensure t
+   :defer t
    :mode ("\\.\\(e?ya?\\|ra\\)ml\\'" . yaml-mode)
    :config
-     (bind-key "C-m" 'newline-and-indent yaml-mode-map ))
+   (progn
+     (add-hook 'yaml-mode-hook
+             (lambda ()
+               (setq-local paragraph-separate ".*>-$\\|[   \f]*$")
+               (setq-local paragraph-start paragraph-separate)
+               (run-hooks 'prog-mode-hook)))
+     (bind-key "C-m" 'newline-and-indent yaml-mode-map )))
  #+END_SRC
 ** yasnippet
  [2013-04-27 Sa 23:16]
  Yasnippet is a template system. Type an abbreviation, expand it into
  whatever the snippet holds.
  #+BEGIN_SRC emacs-lisp
- ;(validate-setq yas-snippet-dirs (expand-file-name "yasnippet/snippets" jj-elisp-dir))
+ ;(setq yas-snippet-dirs (expand-file-name "yasnippet/snippets" jj-elisp-dir))
  (use-package yasnippet
    :ensure yasnippet
    :defer t
@@ -6877,7 +6132,15 @@ CLOSED: [2017-08-26 Sat 15:30]
      (add-to-list 'hippie-expand-try-functions-list
                   'yas-hippie-try-expand)
      (yas-global-mode 1)
-     (validate-setq yas-expand-only-for-last-commands '(self-insert-command))
-     (validate-setq yas-snippet-dirs (expand-file-name "snippets" jj-dir))
+     (setq yas-expand-only-for-last-commands '(self-insert-command))
+     (setq yas-snippet-dirs (expand-file-name "snippets" jj-dir))
      ))
  #+END_SRC
+** zop-to-char
+[2018-12-30 Sun 23:11]
+#+BEGIN_SRC emacs-lisp
+(use-package zop-to-char                ; Better zapping
+  :ensure t
+  :bind (("M-z" . zop-to-char)
+         ("M-Z" . zop-up-to-char)))
+#+END_SRC
\ No newline at end of file