]> git.donarmstrong.com Git - lib.git/blobdiff - emacs_el/configuration/don-configuration.org
require diminish after bind-key
[lib.git] / emacs_el / configuration / don-configuration.org
index d5ffad7278144c9992b8d03893a157080f0cddf0..51b159eb8f56c267657332e4908099d5e75b400a 100644 (file)
 Borrowed from https://github.com/nilcons/emacs-use-package-fast/ to
 load  [[https://github.com/jwiegley/use-package/][use-package]] even faster
 #+BEGIN_SRC emacs-lisp
-  (setq package-enable-at-startup nil)
-  (setq package--init-file-ensured t)
-  (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
-                           ("melpa" . "https://melpa.org/packages/")
-                           ("org" . "http://orgmode.org/elpa/") ))
   (eval-and-compile
+    ;; add /etc/ssl/ca-global/ca-certificates.crt so that we can
+    ;; download packages when we're on Debian hosts which chop down the
+    ;; list of available certificates
+    (require 'gnutls)
+    (add-to-list 'gnutls-trustfiles "/etc/ssl/ca-global/ca-certificates.crt")
+    (setq package-enable-at-startup nil)
+    (setq package--init-file-ensured t)
+    (setq package-user-dir "~/var/emacs/elpa")
+    (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
+                             ("melpa" . "https://melpa.org/packages/")
+                             ("org" . "http://orgmode.org/elpa/")))
     (setq use-package-verbose (not (bound-and-true-p byte-compile-current-file))))
   (mapc #'(lambda (add) (add-to-list 'load-path add))
     (eval-when-compile
@@ -52,9 +58,21 @@ load  [[https://github.com/jwiegley/use-package/][use-package]] even faster
                        nil))
                      load-path))))))
 
-  (require 'use-package)
-  (require 'diminish)
+  ;;; fix up info paths for packages
+  (with-eval-after-load "info"
+    (info-initialize)
+    (dolist (dir (directory-files package-user-dir))
+      (let ((fdir (concat (file-name-as-directory package-user-dir) dir)))
+        (unless (or (member dir '("." ".." "archives" "gnupg"))
+                    (not (file-directory-p fdir))
+                    (not (file-exists-p (concat (file-name-as-directory fdir) "dir"))))
+          (add-to-list 'Info-directory-list fdir)))))
+
+
+  (eval-when-compile
+    (require 'use-package))
   (require 'bind-key)
+  (require 'diminish)
 #+END_SRC
 ** Paradox
 #+BEGIN_SRC emacs-lisp
@@ -89,13 +107,14 @@ load  [[https://github.com/jwiegley/use-package/][use-package]] even faster
 * Variables
 ** Safe Local Variables
 #+BEGIN_SRC emacs-lisp
-  (setq safe-local-variable-values 
-        (quote ((auto-save-default)
-                (make-backup-files)
-                (cperl-indent-level . 4)
-                (indent-level . 4)
-                (indent-tabs-mode . f)
-                )))
+(setq safe-local-variable-values
+      (quote ((auto-save-default)
+              (make-backup-files)
+              (cperl-indent-level . 4)
+              (indent-level . 4)
+              (indent-tabs-mode . f)
+              (vcl-indent-level . 4)
+              )))
 #+END_SRC
 * Memory
 #+BEGIN_SRC emacs-lisp
@@ -113,9 +132,17 @@ load  [[https://github.com/jwiegley/use-package/][use-package]] even faster
   (add-hook 'minibuffer-exit-hook #'don/minibuffer-exit-hook)
 #+END_SRC
 * Modules
+** Spacemacs theme
+#+BEGIN_SRC emacs-lisp
+(use-package spacemacs-common
+  :ensure spacemacs-theme
+  :config
+  (load-theme 'spacemacs-dark t)
+  )
+#+END_SRC
 ** Hippie Expand
 #+BEGIN_SRC emacs-lisp
-  (use-package hippie-expand
+  (use-package hippie-exp
     :bind* (("M-<SPC>" . hippie-expand))
     )
 #+END_SRC
@@ -291,6 +318,7 @@ value, scrolling continues until there is no more output.
 *** Avy
 #+BEGIN_SRC emacs-lisp
   (use-package avy
+    :if (>= emacs-major-version 25)
     :ensure t
     :bind (("C-c C-<SPC>" . avy-goto-word-or-subword-1)
            ("C-c j j" . avy-goto-word-or-subword-1)
@@ -338,17 +366,235 @@ value, scrolling continues until there is no more output.
                                        "~/lib/emacs_el/yasnippet-snippets/snippets/"))
               (add-to-list 'hippie-expand-try-functions-list
                                'yas-hippie-try-expand)
+              (yas-reload-all)
               )
     )
 #+END_SRC
 *** Auto-YASnippet
 #+BEGIN_SRC emacs-lisp
   (use-package auto-yasnippet
+    :ensure t
     :bind (("H-w" . aya-create)
            ("H-y" . aya-expand)
            )
     )
 #+END_SRC
+** Company
+#+BEGIN_SRC emacs-lisp
+(use-package company
+  :ensure t
+  :bind (("M-/" . company-complete))
+  :config
+  (setq company-echo-delay 0     ; remove blinking
+        company-show-numbers t   ; show numbers for easy selection
+        company-selection-wrap-around t
+        company-require-match nil
+        company-dabbrev-ignore-case t
+        company-dabbrev-ignore-invisible t
+        company-dabbrev-other-buffers t
+        company-dabbrev-downcase nil
+        company-dabbrev-code-everywhere t
+        company-tooltip-align-annotations t
+        company-minimum-prefix-length 1
+        company-global-modes '(not)
+        company-lighter-base "(C)")
+  (global-company-mode 1)
+  :bind (:map company-active-map
+              ("C-n" . company-select-next)
+              ("C-p" . company-select-previous)
+              ("M-?" . company-show-doc-buffer)
+              ("M-." . company-show-location)
+              )
+  )
+#+END_SRC
+*** C/C++
+#+BEGIN_SRC emacs-lisp
+  (use-package company-c-headers
+    :ensure t
+    :config (progn
+              (defun malb/ede-object-system-include-path ()
+                "Return the system include path for the current buffer."
+                (when ede-object
+                  (ede-system-include-path ede-object)))
+
+              (setq company-c-headers-path-system
+                    #'malb/ede-object-system-include-path)
+
+              (add-to-list 'company-backends #'company-c-headers)))
+#+END_SRC
+*** Python
+#+BEGIN_SRC emacs-lisp
+(use-package company-anaconda
+  :ensure t
+  :config (add-to-list 'company-backends #'company-anaconda))
+#+END_SRC
+*** Perl
+#+BEGIN_SRC emacs-lisp
+  (use-package company-plsense
+    :ensure t
+    )
+#+END_SRC
+*** LaTeX
+#+BEGIN_SRC emacs-lisp
+  (use-package company-math
+    :ensure t)
+#+END_SRC
+#+BEGIN_SRC emacs-lisp
+  (use-package company-auctex
+    :ensure t
+    :config (progn
+              (defun company-auctex-labels (command &optional arg &rest ignored)
+                "company-auctex-labels backend"
+                (interactive (list 'interactive))
+                (case command
+                  (interactive (company-begin-backend 'company-auctex-labels))
+                  (prefix (company-auctex-prefix "\\\\.*ref{\\([^}]*\\)\\="))
+                  (candidates (company-auctex-label-candidates arg))))
+
+              (add-to-list 'company-backends
+                           '(company-auctex-macros
+                             company-auctex-environments
+                             company-math-symbols-unicode
+                             company-math-symbols-latex))
+
+              (add-to-list 'company-backends #'company-auctex-labels)
+              (add-to-list 'company-backends #'company-auctex-bibs)
+              )
+    )
+#+END_SRC
+#+BEGIN_SRC emacs-lisp
+  (use-package company-bibtex
+    :ensure t
+    )
+#+END_SRC
+*** Shell
+
+ #+BEGIN_SRC emacs-lisp
+   (use-package company-shell
+     :ensure t
+     :config (progn
+               (setq company-shell-modes '(sh-mode shell-mode))
+               (add-to-list 'company-backends 'company-shell)))
+ #+END_SRC
+
+*** YaSnippet
+
+ Add YasSippet support for all company backends. ([[https://github.com/syl20bnr/spacemacs/pull/179][source]])
+
+ *Note:* Do this at the end of =company-mode= config.
+
+ #+BEGIN_SRC emacs-lisp
+   (defvar malb/company-mode/enable-yas t
+     "Enable yasnippet for all backends.")
+
+   (defun malb/company-mode/backend-with-yas (backend)
+     (if (or (not malb/company-mode/enable-yas)
+             (and (listp backend)
+                  (member 'company-yasnippet backend)))
+         backend
+       (append (if (consp backend) backend (list backend))
+               '(:with company-yasnippet))))
+
+   (setq company-backends
+         (mapcar #'malb/company-mode/backend-with-yas company-backends))
+ #+END_SRC
+
+*** All the words
+
+ Enable/disable company completion from ispell dictionaries ([[https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-company.el][source]])
+
+ #+BEGIN_SRC emacs-lisp
+   (defun malb/toggle-company-ispell ()
+     (interactive)
+     (cond
+      ((member '(company-ispell :with company-yasnippet) company-backends)
+       (setq company-backends (delete '(company-ispell :with company-yasnippet) company-backends))
+       (add-to-list 'company-backends '(company-dabbrev :with company-yasnippet) t)
+       (message "company-ispell disabled"))
+      (t
+       (setq company-backends (delete '(company-dabbrev :with company-yasnippet) company-backends))
+       (add-to-list 'company-backends '(company-ispell :with company-yasnippet) t)
+       (message "company-ispell enabled!"))))
+
+   (defun malb/company-ispell-setup ()
+     ;; @see https://github.com/company-mode/company-mode/issues/50
+     (when (boundp 'company-backends)
+       (make-local-variable 'company-backends)
+       (setq company-backends (delete '(company-dabbrev :with company-yasnippet) company-backends))
+       (add-to-list 'company-backends '(company-ispell :with company-yasnippet) t)
+       ;; https://github.com/redguardtoo/emacs.d/issues/473
+       (if (and (boundp 'ispell-alternate-dictionary)
+                ispell-alternate-dictionary)
+           (setq company-ispell-dictionary ispell-alternate-dictionary))))
+ #+END_SRC
+
+*** Tab DWIM
+
+ 1. =yas-expand= is run first and does what it has to, then it calls =malb/indent-fold-or-complete=.
+
+ 2. This function then hopefully does what I want:
+
+    a. if a region is active, just indent
+    b. if we’re looking at a space after a non-whitespace character, we try some company-expansion
+    c. If =hs-minor-mode= or =outline-minor-mode= is active, try those next
+    d. otherwise call whatever would have been called otherwise.
+
+ ([[http://emacs.stackexchange.com/q/21182/8930][source]], [[http://emacs.stackexchange.com/q/7908/8930][source]])
+
+#+BEGIN_SRC emacs-lisp
+  (defun malb/indent-fold-or-complete (&optional arg)
+    (interactive "P")
+    (cond
+     ;; if a region is active, indent
+     ((use-region-p)
+      (indent-region (region-beginning)
+                     (region-end)))
+     ;; if the next char is space or eol, but prev char not whitespace
+     ((and (not (active-minibuffer-window))
+           (or (looking-at " ")
+               (looking-at "$"))
+           (looking-back "[^[:space:]]")
+           (not (looking-back "^")))
+
+      (cond (company-mode (company-complete-common))
+            (auto-complete-mode (auto-complete))))
+
+     ;; no whitespace anywhere
+     ((and (not (active-minibuffer-window))
+           (looking-at "[^[:space:]]")
+           (looking-back "[^[:space:]]")
+           (not (looking-back "^")))
+      (cond
+       ((bound-and-true-p hs-minor-mode)
+        (save-excursion (end-of-line) (hs-toggle-hiding)))
+       ((bound-and-true-p outline-minor-mode)
+        (save-excursion (outline-cycle)))))
+
+     ;; by default just call whatever was bound
+     (t
+      (let ((fn (or (lookup-key (current-local-map) (kbd "TAB"))
+                    'indent-for-tab-command)))
+        (if (not (called-interactively-p 'any))
+            (fn arg)
+          (setq this-command fn)
+          (call-interactively fn))))))
+
+  (defun malb/toggle-fold ()
+    (interactive)
+    (cond ((eq major-mode 'org-mode)
+           (org-force-cycle-archived))
+          ((bound-and-true-p hs-minor-mode)
+           (save-excursion
+             (end-of-line)
+             (hs-toggle-hiding)))
+
+          ((bound-and-true-p outline-minor-mode)
+           (save-excursion
+             (outline-cycle)))))
+
+  (bind-key "<tab>" #'malb/indent-fold-or-complete)
+  (bind-key "C-<tab>" #'malb/toggle-fold)
+#+END_SRC
 ** Tinyprocmail
 
 #+BEGIN_SRC emacs-lisp
@@ -444,6 +690,13 @@ value, scrolling continues until there is no more output.
     (setq ediff-window-setup-function 'ediff-setup-windows-plain)
   )
 #+END_SRC
+** Do the Right Thing Indenting
+Attempts to automatically identify the right indentation for a file
+#+BEGIN_SRC emacs-lisp
+(use-package dtrt-indent
+  :ensure t
+)  
+#+END_SRC
 ** VCL --editing varnish configuration files
 #+BEGIN_SRC emacs-lisp
   (use-package vcl-mode
@@ -969,15 +1222,26 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 
 ** Polymode
 #+BEGIN_SRC emacs-lisp
-  (use-package polymode
-    :config
-    (use-package poly-R)
-    (use-package poly-noweb)
-    (use-package poly-markdown)
-    :mode ("\\.Snw" . poly-noweb+r-mode)
-    :mode ("\\.Rnw" . poly-noweb+r-mode)
-    :mode ("\\.Rmd" . poly-markdown+r-mode)
-    )
+(use-package poly-noweb
+  :ensure t
+  :after polymode
+
+  )
+(use-package poly-markdown
+  :ensure t
+  :after polymode
+  )
+(use-package poly-R
+  :ensure t
+  :after (:all polymode poly-markdown poly-noweb)
+  ; :mode ("\\.Snw" . poly-noweb+r-mode)
+  ; :mode ("\\.Rnw" . poly-noweb+r-mode)
+  ; :mode ("\\.Rmd" . poly-markdown+r-mode)
+  )
+(use-package polymode
+  :ensure t
+  )
+
 #+END_SRC
 
 ** Outlining
@@ -1039,6 +1303,8 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 ** Web Mode
 #+BEGIN_SRC emacs-lisp
   (use-package web-mode
+    :load-path "/home/don/projects/web-mode/"
+    :mode ("\\.\\(tx|tmpl\\)\\'" . web-mode)
     :config
     (add-to-list 'auto-mode-alist '("\\.tmpl\\'" . web-mode))
     (setq web-mode-enable-engine-detection t)
@@ -1057,7 +1323,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+BEGIN_SRC emacs-lisp
   (use-package password-store
     :ensure f
-    :commands password-store-edit password-store-create
+    :commands password-store-edit password-store-generate
     )
 #+END_SRC
 ** CSS mode
@@ -1089,53 +1355,76 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
     (setq default-abbrev-mode t))
 #+END_SRC
 
+** Go language
+#+BEGIN_SRC emacs-lisp
+(use-package go-mode
+             :diminish "go"
+             :mode "\\.go"
+             )
+#+END_SRC
+
+** Expand region
+#+BEGIN_SRC emacs-lisp
+(use-package expand-region
+  :bind (("C-=" . 'er/expand-region))
+  )
+#+END_SRC
+
+** Dockerfile
+#+BEGIN_SRC emacs-lisp
+(use-package dockerfile-mode
+  :mode "Dockerfile"
+  )
+#+END_SRC
+
 * Email
 ** Mutt
 *** Message-mode
 #+BEGIN_SRC emacs-lisp
-  (use-package message
-    :ensure f
-    :diminish (message "✉")
-    :mode ("muttng-[a-z0-9]+-[0-9]+-" . message-mode)
-    :mode ("mutt-[a-z0-9]+-[0-9]+-" . message-mode)
-    :hook 'my/message-mode-settings
-    :hook 'turn-on-flyspell
-    :bind (:map message-mode-map
-        ("C-c C-a" . my/post-attach-file))
-    :delight (message-mode "✉")
-    :config
-    (defun my/message-mode-settings ()
-      (font-lock-add-keywords nil
-                  '(("^[ \t]*>[ \t]*>[ \t]*>.*$"
-                 (0 'message-multiply-quoted-text-face))
-                ("^[ \t]*>[ \t]*>.*$"
-                 (0 'message-double-quoted-text-face))))
-      )
+(use-package message
+  :ensure f
+  :diminish (message "✉")
+  :mode ("muttng-[a-z0-9]+-[0-9]+-" . message-mode)
+  :mode ("mutt-[a-z0-9]+-[0-9]+-" . message-mode)
+  :hook 'my/message-mode-settings
+  :hook 'turn-on-flyspell
+  :bind (:map message-mode-map
+      ("C-c C-a" . my/post-attach-file))
+  :delight (message-mode "✉")
+  :config
+  (defun my/message-mode-settings ()
+    (font-lock-add-keywords nil
+                '(("^[ \t]*>[ \t]*>[ \t]*>.*$"
+               (0 'message-multiply-quoted-text-face))
+              ("^[ \t]*>[ \t]*>.*$"
+               (0 'message-double-quoted-text-face))))
+    )
 
-    (defun my/post-attach-file ()
-      "Prompt for an attachment."
-      (interactive)
-      (let ((file (read-file-name "Attach file: " nil nil t nil)))
-        (my/header-attach-file file "")))
-
-    (defun my/header-attach-file (file description)
-      "Attach a FILE to the current message (works with Mutt).
-    Argument DESCRIPTION MIME description."
-      (interactive "fAttach file: \nsDescription: ")
-      (when (> (length file) 0)
-    (save-excursion
-      (save-match-data
-        (save-restriction
-          (widen)
-          (goto-char (point-min))
-          (search-forward-regexp "^$")
-          (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " "
-                  description "\n"))
-          (message (concat "Attached '" file "'."))
-          (setq post-has-attachment t))))))
-
-    (setq mail-yank-prefix "> ")
-  )
+  (defun my/post-attach-file ()
+    "Prompt for an attachment."
+    (interactive)
+    (let ((file (read-file-name "Attach file: " nil nil t nil)))
+      (my/header-attach-file file "")))
+
+  (defun my/header-attach-file (file description)
+    "Attach a FILE to the current message (works with Mutt).
+  Argument DESCRIPTION MIME description."
+    (interactive "fAttach file: \nsDescription: ")
+    (when (> (length file) 0)
+  (save-excursion
+    (save-match-data
+      (save-restriction
+        (widen)
+        (goto-char (point-min))
+        (search-forward-regexp "^$")
+        (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " "
+                description "\n"))
+        (message (concat "Attached '" file "'."))
+        (setq post-has-attachment t))))))
+
+  (setq mail-yank-prefix "> ")
+  (setq mail-header-separator "") ; fix broken header detection
+)
 #+END_SRC
 *** Muttrc mode
 #+BEGIN_SRC emacs-lisp
@@ -1173,6 +1462,24 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (setq-default org-log-done 'time)
   (setq-default org-agenda-ndays 5)
 
+  (setq org-agenda-sticky t)
+  (defun dla/show-org-agenda ()
+    (interactive)
+    (let (agendabuffer
+          '(delq nil 
+                (mapcar (lambda (x)
+                          (and (string-match-p
+                                "\*Org Agenda.*\*"
+                                (buffer-name x))
+                               x)
+                          )
+                        (buffer-list))))
+      (if agendabuffer
+          (switch-to-buffer
+           (buffer-name agendabuffer))
+        (org-agenda-list)))
+      (delete-other-windows))
+
   ;; agenda configuration
   ;; Do not dim blocked tasks
   (setq org-agenda-dim-blocked-tasks nil)
@@ -1266,6 +1573,8 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
             "~/projects/org-notes/wildman.org"
             "~/projects/org-notes/uddin.org"
             "~/projects/org-notes/reviews.org"
+            "~/projects/org-notes/laurel.org"
+            "~/projects/org-notes/from-calendar.org"
             "~/org-mode/from-mobile.org"
             "~/projects/org-notes/fh.org")))
 
@@ -1302,7 +1611,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 ** Capture Templates
 #+BEGIN_SRC emacs-lisp
   (setq org-capture-templates  ;; mail-specific note template, identified by "m"
-        '(("m" "Mail" entry (file "~/projects/org-notes/refile.org")
+        `(("m" "Mail" entry (file "~/projects/org-notes/refile.org")
            "* %?\n\n  Source: %u, [[%:link][%:description]]\n  %:initial")
           ("t" "todo" entry (file "~/projects/org-notes/refile.org")
            "* TODO %?\n  :PROPERTIES:\n  :END:\n  :LOGBOOK:\n  :END:\n%U\n%a\n" :clock-in t :clock-resume t)
@@ -1324,8 +1633,10 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
            "* TODO Get/Read %? \n%U" :clock-in t :clock-resume t)
           ("p" "Phone call" entry (file "~/projects/org-notes/refile.org")
            "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t)
-          ("J" "job" entry (file "~/projects/org-notes/refile.org")
-           "* TODO Apply for %a%? :job:\nSCHEDULED: %(format-time-string \"<%Y-%m-%d 17:00-17:30>\")\n%U\n%a\n" :clock-in t :clock-resume t)
+           ("J" "job" entry (file+olp "~/projects/org-notes/notes.org"
+                                       "Jobs"
+                                       ,(format-time-string "Positions %Y"))
+           "* TODO Apply for %? :job:\nSCHEDULED: <%<%Y-%m-%d>>\n%U\n%x\n" :clock-in t :clock-resume t)
           ("h" "Habit" entry (file "~/projects/org-notes/refile.org")
            "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"<%Y-%m-%d .+1d/3d>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n%a\n")
           )
@@ -1358,12 +1669,12 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
           ("<f9> I" . bh/punch-in)
           ("<f9> O" . bh/punch-out)
           ("<f9> SPC" . bh/clock-in-last-task)
-          ("<f12>" . org-agenda)
+          ("<f12>" . dla/show-org-agenda)
           ;; ("<f5>" . bh/org-todo)
           ("<S-f5>" . bh/widen)
           ("<f7>" . bh/set-truncate-lines)
           ("<f8>" . org-cycle-agenda-files)
-          ("<f9> <f9>" . bh/show-org-agenda)
+          ("<f9> <f9>" . dla/show-org-agenda)
           ("<f9> b" . bbdb)
           ("<f9> c" . calendar)
           ("<f9> f" . boxquote-insert-file)
@@ -1371,8 +1682,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
           ("<f9> n" . bh/toggle-next-task-display)
           ("<f9> w" . widen)
 
-          ("<f9> o" . bh/make-org-scratch)
-
           ("<f9> r" . boxquote-region)
           ("<f9> s" . bh/switch-to-scratch)
 
@@ -1412,11 +1721,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
       (set-window-start (selected-window)
                         (window-start (selected-window)))))
 
-  (defun bh/make-org-scratch ()
-    (interactive)
-    (find-file "/tmp/publish/scratch.org")
-    (gnus-make-directory "/tmp/publish"))
-
   (defun bh/switch-to-scratch ()
     (interactive)
     (switch-to-buffer "*scratch*"))
@@ -1441,6 +1745,16 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   ;           (lambda ()
   ;             (add-hook 'before-save-hook 'my/org-add-ids-to-headlines-in-file nil 'local)))
 #+END_SRC
+** Org ID locations
+#+BEGIN_SRC emacs-lisp
+(use-package find-lisp
+  :ensure t)
+(setq org-agenda-text-search-extra-files
+      (append '(agenda-archives)
+              (find-lisp-find-files "~/projects/org-notes" "\.org$")
+              (find-lisp-find-files "~/projects/org-notes" "\.org_archive$")
+              ))
+#+END_SRC
 ** Keywords (TODO)
 #+BEGIN_SRC emacs-lisp
   (setq org-todo-keywords
@@ -1541,7 +1855,9 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
     (setq my-org-protocol-flag t))
 
   (defadvice org-insert-todo-heading (after dla/create-id activate)
-    (org-id-get-create)
+    (unless (org-in-item-p)
+      (org-id-get-create)
+      )
     )
 
   ;; org modules
@@ -1649,29 +1965,33 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+END_SRC
 ** General Org Babel Configuration
 #+BEGIN_SRC emacs-lisp
-  ;; org babel support
-  (org-babel-do-load-languages
-   'org-babel-load-languages
-   '((emacs-lisp . t )
-     (R . t)
-     (latex . t)
-     (ditaa . t)
-     (dot . t)
-     ))
-  ;; use graphviz-dot for dot things
-  (add-to-list 'org-src-lang-modes '("dot" . graphviz-dot))
-  ;; org-babel-by-backend
-  (defmacro org-babel-by-backend (&rest body)
-     `(case (if (boundp 'backend) 
-                (org-export-backend-name backend)
-              nil) ,@body))
-
-  (defun my/fix-inline-images ()
-    (when org-inline-image-overlays
-      (org-redisplay-inline-images)))
-
-  (add-hook 'org-babel-after-execute-hook
-             'my/fix-inline-images)
+;; org babel support
+(org-babel-do-load-languages
+ 'org-babel-load-languages
+ '((emacs-lisp . t )
+   (R . t)
+   (latex . t)
+   (ditaa . t)
+   (dot . t)
+   ))
+;; set the right path to ditaa.jar
+(setq org-ditaa-jar-path "/usr/share/ditaa/ditaa.jar")
+;; use graphviz-dot for dot things
+(add-to-list 'org-src-lang-modes '("dot" . graphviz-dot))
+;; do not indent begin_src blocks
+(setq org-edit-src-content-indentation 0)
+;; org-babel-by-backend
+(defmacro org-babel-by-backend (&rest body)
+   `(case (if (boundp 'backend) 
+              (org-export-backend-name backend)
+            nil) ,@body))
+
+(defun my/fix-inline-images ()
+  (when org-inline-image-overlays
+    (org-redisplay-inline-images)))
+
+(add-hook 'org-babel-after-execute-hook
+           'my/fix-inline-images)
 
 #+END_SRC
 ** LaTeX configuration
@@ -2063,18 +2383,19 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+END_SRC
 ** Org-Gcal
 #+BEGIN_SRC emacs-lisp
-  (use-package calfw
-    :ensure f
-    )
-  (use-package calfw-org
-    :ensure f
-    )
-  (use-package org-gcal
-    :ensure f
-    :config '((if (file-readable-p "~/.hide/org_gcal.el")
-                  (load-file "~/.hide/org_gcal.el"))
-              )
-    )
+(use-package calfw
+  :ensure f
+  )
+(use-package calfw-org
+  :ensure f
+  )
+(use-package org-gcal
+  :if (file-readable-p "~/.hide/org_gcal.el")
+  :ensure f
+  :config '((if (file-readable-p "~/.hide/org_gcal.el")
+                (load-file "~/.hide/org_gcal.el"))
+            )
+  )
 #+END_SRC
 ** appt integration
 #+BEGIN_SRC emacs-lisp
@@ -2133,8 +2454,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 * Debian
 ** debian-changelog
 #+BEGIN_SRC emacs-lisp
-  (use-package debian-changelog
-    :ensure f
+  (use-package debian-changelog-mode
     :mode "debian/changelog"
     :config
     (setq debian-changelog-mailing-address "don@debian.org")
@@ -2147,10 +2467,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
   (setq case-fold-search t)
   (setq confirm-kill-emacs (quote y-or-n-p))
   (setq cperl-lazy-help-time nil)
-  (display-time)
-  (setq display-time-24hr-format t)
-  (setq display-time-day-and-date t)
-  (display-time-mode 1)
   (global-font-lock-mode 1)
   (icomplete-mode 1)
   (setq log-edit-keep-buffer t)
@@ -2228,7 +2544,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 If the envvar EMACS_SERVER_NAME is set, consider this a separate
 emacs, and use a different desktop file to restore history
 #+BEGIN_SRC emacs-lisp
-  (use-package emacs
+  (use-package desktop
     :demand
     :config
     (setq desktop-base-file-name