--- /dev/null
+;;; ganneff-org.el --- Some functions and stuff I use
+
+;; Copyright (C) 2012.2013 Joerg Jaspert
+
+;;; Commentary:
+
+;; This file contains all extra functions that deal with my
+;; org-mode setup (which in large parts is copied from Bernt Hansen,
+;; see below).
+;;
+;; The functions in the bh/ namespace are taken from
+;; http://doc.norang.ca/org-mode.org.html which has:
+;; #+AUTHOR: Bernt Hansen (IRC:Thumper_ on freenode)
+;; #+EMAIL: bernt@norang.ca
+;; and the following license statement:
+;;
+;; This document http://doc.norang.ca/org-mode.html and (either in its
+;; HTML format or in its Org format) is licensed under the GNU Free
+;; Documentation License version 1.3 or later
+;; (http://www.gnu.org/copyleft/fdl.html).
+
+;; The code examples and css stylesheets are licensed under the GNU
+;; General Public License v3 or later
+;; (http://www.gnu.org/licenses/gpl.html).
+
+;;; Code:
+
+;;;###autoload
+(defun bh/show-org-agenda ()
+ "Show org-modes agenda."
+ (interactive)
+ (switch-to-buffer "*Org Agenda( )*")
+ (delete-other-windows))
+
+; Exclude DONE state tasks from refile targets
+;;;###autoload
+(defun bh/verify-refile-target ()
+ "Exclude todo keywords with a done state from refile targets."
+ (not (member (nth 2 (org-heading-components)) org-done-keywords)))
+
+;;;###autoload
+(defmacro bh/agenda-sort-test (fn a b)
+ "Test for agenda sort."
+ `(cond
+ ; if both match leave them unsorted
+ ((and (apply ,fn (list ,a))
+ (apply ,fn (list ,b)))
+ (setq result nil))
+ ; if a matches put a first
+ ((apply ,fn (list ,a))
+ (setq result -1))
+ ; otherwise if b matches put b first
+ ((apply ,fn (list ,b))
+ (setq result 1))
+ ; if none match leave them unsorted
+ (t nil)))
+
+;;;###autoload
+(defmacro bh/agenda-sort-test-num (fn compfn a b)
+ `(cond
+ ((apply ,fn (list ,a))
+ (setq num-a (string-to-number (match-string 1 ,a)))
+ (if (apply ,fn (list ,b))
+ (progn
+ (setq num-b (string-to-number (match-string 1 ,b)))
+ (setq result (if (apply ,compfn (list num-a num-b))
+ -1
+ 1)))
+ (setq result -1)))
+ ((apply ,fn (list ,b))
+ (setq result 1))
+ (t nil)))
+
+;;;###autoload
+(defun bh/agenda-sort (a b)
+ "Sorting strategy for agenda items.
+Late deadlines first, then scheduled, then non-late deadlines"
+ (let (result num-a num-b)
+ (cond
+ ; time specific items are already sorted first by org-agenda-sorting-strategy
+
+ ; non-deadline and non-scheduled items next
+ ((bh/agenda-sort-test 'bh/is-not-scheduled-or-deadline a b))
+
+ ; deadlines for today next
+ ((bh/agenda-sort-test 'bh/is-due-deadline a b))
+
+ ; late deadlines next
+ ((bh/agenda-sort-test-num 'bh/is-late-deadline '< a b))
+
+ ; scheduled items for today next
+ ((bh/agenda-sort-test 'bh/is-scheduled-today a b))
+
+ ; late scheduled items next
+ ((bh/agenda-sort-test-num 'bh/is-scheduled-late '> a b))
+
+ ; pending deadlines last
+ ((bh/agenda-sort-test-num 'bh/is-pending-deadline '< a b))
+
+ ; finally default to unsorted
+ (t (setq result nil)))
+ result))
+
+;;;###autoload
+(defun bh/is-not-scheduled-or-deadline (date-str)
+ (and (not (bh/is-deadline date-str))
+ (not (bh/is-scheduled date-str))))
+
+;;;###autoload
+(defun bh/is-due-deadline (date-str)
+ (string-match "Deadline:" date-str))
+
+;;;###autoload
+(defun bh/is-late-deadline (date-str)
+ (string-match "In *\\(-.*\\)d\.:" date-str))
+
+;;;###autoload
+(defun bh/is-pending-deadline (date-str)
+ (string-match "In \\([^-]*\\)d\.:" date-str))
+
+;;;###autoload
+(defun bh/is-deadline (date-str)
+ (or (bh/is-due-deadline date-str)
+ (bh/is-late-deadline date-str)
+ (bh/is-pending-deadline date-str)))
+
+;;;###autoload
+(defun bh/is-scheduled (date-str)
+ (or (bh/is-scheduled-today date-str)
+ (bh/is-scheduled-late date-str)))
+
+;;;###autoload
+(defun bh/is-scheduled-today (date-str)
+ (string-match "Scheduled:" date-str))
+
+;;;###autoload
+(defun bh/is-scheduled-late (date-str)
+ (string-match "Sched\.\\(.*\\)x:" date-str))
+
+;;;###autoload
+(defun bh/hide-other ()
+ (interactive)
+ (save-excursion
+ (org-back-to-heading 'invisible-ok)
+ (hide-other)
+ (org-cycle)
+ (org-cycle)
+ (org-cycle)))
+
+;;;###autoload
+(defun bh/set-truncate-lines ()
+ "Toggle value of truncate-lines and refresh window display."
+ (interactive)
+ (setq truncate-lines (not truncate-lines))
+ ;; now refresh window display (an idiom from simple.el):
+ (save-excursion
+ (set-window-start (selected-window)
+ (window-start (selected-window)))))
+
+;;;###autoload
+(defun bh/skip-non-archivable-tasks ()
+ "Skip trees that are not available for archiving"
+ (save-restriction
+ (widen)
+ (let ((next-headline (save-excursion (or (outline-next-heading) (point-max)))))
+ ;; Consider only tasks with done todo headings as archivable candidates
+ (if (member (org-get-todo-state) org-done-keywords)
+ (let* ((subtree-end (save-excursion (org-end-of-subtree t)))
+ (daynr (string-to-int (format-time-string "%d" (current-time))))
+ (a-month-ago (* 60 60 24 (+ daynr 1)))
+ (last-month (format-time-string "%Y-%m-" (time-subtract (current-time) (seconds-to-time a-month-ago))))
+ (this-month (format-time-string "%Y-%m-" (current-time)))
+ (subtree-is-current (save-excursion
+ (forward-line 1)
+ (and (< (point) subtree-end)
+ (re-search-forward (concat last-month "\\|" this-month) subtree-end t)))))
+ (if subtree-is-current
+ next-headline ; Has a date in this month or last month, skip it
+ nil)) ; available to archive
+ (or next-headline (point-max))))))
+
+;;;###autoload
+(defun bh/make-org-scratch ()
+ (interactive)
+ (find-file "/tmp/publish/scratch.org")
+ (gnus-make-directory "/tmp/publish"))
+
+;;;###autoload
+(defun bh/switch-to-scratch ()
+ (interactive)
+ (switch-to-buffer "*scratch*"))
+
+;;;###autoload
+(defun bh/org-todo (arg)
+ (interactive "p")
+ (if (equal arg 4)
+ (save-restriction
+ (widen)
+ (org-narrow-to-subtree)
+ (org-show-todo-tree nil))
+ (widen)
+ (org-narrow-to-subtree)
+ (org-show-todo-tree nil)))
+
+;;;###autoload
+(defun bh/widen ()
+ (interactive)
+ (if (equal major-mode 'org-agenda-mode)
+ (org-agenda-remove-restriction-lock)
+ (widen)
+ (org-agenda-remove-restriction-lock)))
+
+;;;###autoload
+(defun bh/insert-inactive-timestamp ()
+ (interactive)
+ (org-insert-time-stamp nil t t nil nil nil))
+
+;;;###autoload
+(defun bh/insert-heading-inactive-timestamp ()
+ (save-excursion
+ (org-return)
+ (org-cycle)
+ (bh/insert-inactive-timestamp)))
+
+;; Remove empty LOGBOOK drawers on clock out
+;;;###autoload
+(defun bh/remove-empty-drawer-on-clock-out ()
+ (interactive)
+ (save-excursion
+ (beginning-of-line 0)
+ (org-remove-empty-drawer-at "LOGBOOK" (point))))
+
+;;;###autoload
+(defun bh/prepare-meeting-notes ()
+ "Prepare meeting notes for email
+ Take selected region and convert tabs to spaces, mark TODOs with leading >>>, and copy to kill ring for pasting"
+ (interactive)
+ (let (prefix)
+ (save-excursion
+ (save-restriction
+ (narrow-to-region (region-beginning) (region-end))
+ (untabify (point-min) (point-max))
+ (goto-char (point-min))
+ (while (re-search-forward "^\\( *-\\\) \\(TODO\\|DONE\\): " (point-max) t)
+ (replace-match (concat (make-string (length (match-string 1)) ?>) " " (match-string 2) ": ")))
+ (goto-char (point-min))
+ (kill-ring-save (point-min) (point-max))))))
+
+;; Phone capture template handling with BBDB lookup
+;; Adapted from code by Gregory J. Grubbs
+;;;###autoload
+(defun bh/phone-call ()
+ "Return name and company info for caller from bbdb lookup"
+ (interactive)
+ (let* (name rec caller)
+ (setq name (completing-read "Who is calling? "
+ (bbdb-hashtable)
+ 'bbdb-completion-predicate
+ 'confirm))
+ (when (> (length name) 0)
+; Something was supplied - look it up in bbdb
+ (setq rec
+ (or (first
+ (or (bbdb-search (bbdb-records) name nil nil)
+ (bbdb-search (bbdb-records) nil name nil)))
+ name)))
+
+; Build the bbdb link if we have a bbdb record, otherwise just return the name
+ (setq caller (cond ((and rec (vectorp rec))
+ (let ((name (bbdb-record-name rec))
+ (company (bbdb-record-company rec)))
+ (concat "[[bbdb:"
+ name "]["
+ name "]]"
+ (when company
+ (concat " - " company)))))
+ (rec)
+ (t "NameOfCaller")))
+ (insert caller)))
+
+;;;###autoload
+(defun org-my-archive-done-tasks ()
+ (interactive)
+ (save-excursion
+ (goto-char (point-min))
+ (let ((done-regexp
+ (concat "\\* \\(" (regexp-opt org-done-keywords) "\\) "))
+ (state-regexp
+ (concat "- State \"\\(" (regexp-opt org-done-keywords)
+ "\\)\"\\s-*\\[\\([^]\n]+\\)\\]")))
+ (while (re-search-forward done-regexp nil t)
+ (let ((end (save-excursion
+ (outline-next-heading)
+ (point)))
+ begin)
+ (goto-char (line-beginning-position))
+ (setq begin (point))
+ (if (re-search-forward state-regexp end t)
+ (let* ((time-string (match-string 2))
+ (when-closed (org-parse-time-string time-string)))
+ (if (>= (time-to-number-of-days
+ (time-subtract (current-time)
+ (apply #'encode-time when-closed)))
+ org-my-archive-expiry-days)
+ (org-archive-subtree)))
+ (goto-char end)))))
+ (save-buffer)))
+(setq safe-local-variable-values (quote ((after-save-hook archive-done-tasks))))
+;;;###autoload
+(defalias 'archive-done-tasks 'org-my-archive-done-tasks)
+
+;;;###autoload
+(defun bh/is-project-p ()
+ "Any task with a todo keyword subtask"
+ (save-restriction
+ (widen)
+ (let ((has-subtask)
+ (subtree-end (save-excursion (org-end-of-subtree t)))
+ (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
+ (save-excursion
+ (forward-line 1)
+ (while (and (not has-subtask)
+ (< (point) subtree-end)
+ (re-search-forward "^\*+ " subtree-end t))
+ (when (member (org-get-todo-state) org-todo-keywords-1)
+ (setq has-subtask t))))
+ (and is-a-task has-subtask))))
+
+;;;###autoload
+(defun bh/is-project-subtree-p ()
+ "Any task with a todo keyword that is in a project subtree.
+Callers of this function already widen the buffer view."
+ (let ((task (save-excursion (org-back-to-heading 'invisible-ok)
+ (point))))
+ (save-excursion
+ (bh/find-project-task)
+ (if (equal (point) task)
+ nil
+ t))))
+
+;;;###autoload
+(defun bh/is-task-p ()
+ "Any task with a todo keyword and no subtask"
+ (save-restriction
+ (widen)
+ (let ((has-subtask)
+ (subtree-end (save-excursion (org-end-of-subtree t)))
+ (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
+ (save-excursion
+ (forward-line 1)
+ (while (and (not has-subtask)
+ (< (point) subtree-end)
+ (re-search-forward "^\*+ " subtree-end t))
+ (when (member (org-get-todo-state) org-todo-keywords-1)
+ (setq has-subtask t))))
+ (and is-a-task (not has-subtask)))))
+
+;;;###autoload
+(defun bh/is-subproject-p ()
+ "Any task which is a subtask of another project"
+ (let ((is-subproject)
+ (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
+ (save-excursion
+ (while (and (not is-subproject) (org-up-heading-safe))
+ (when (member (nth 2 (org-heading-components)) org-todo-keywords-1)
+ (setq is-subproject t))))
+ (and is-a-task is-subproject)))
+
+;;;###autoload
+(defun bh/list-sublevels-for-projects-indented ()
+ "Set org-tags-match-list-sublevels so when restricted to a subtree we list all subtasks.
+ This is normally used by skipping functions where this variable is already local to the agenda."
+ (if (marker-buffer org-agenda-restrict-begin)
+ (setq org-tags-match-list-sublevels 'indented)
+ (setq org-tags-match-list-sublevels nil))
+ nil)
+
+;;;###autoload
+(defun bh/list-sublevels-for-projects ()
+ "Set org-tags-match-list-sublevels so when restricted to a subtree we list all subtasks.
+ This is normally used by skipping functions where this variable is already local to the agenda."
+ (if (marker-buffer org-agenda-restrict-begin)
+ (setq org-tags-match-list-sublevels t)
+ (setq org-tags-match-list-sublevels nil))
+ nil)
+
+;;;###autoload
+(defun bh/skip-non-stuck-projects ()
+ "Skip trees that are not stuck projects"
+ (bh/list-sublevels-for-projects-indented)
+ (save-restriction
+ (widen)
+ (let ((next-headline (save-excursion (or (outline-next-heading) (point-max)))))
+ (if (bh/is-project-p)
+ (let* ((subtree-end (save-excursion (org-end-of-subtree t)))
+ (has-next ))
+ (save-excursion
+ (forward-line 1)
+ (while (and (not has-next) (< (point) subtree-end) (re-search-forward "^\\*+ NEXT " subtree-end t))
+ (unless (member "WAITING" (org-get-tags-at))
+ (setq has-next t))))
+ (if has-next
+ next-headline
+ nil)) ; a stuck project, has subtasks but no next task
+ next-headline))))
+
+;;;###autoload
+(defun bh/skip-non-projects ()
+ "Skip trees that are not projects"
+ (bh/list-sublevels-for-projects-indented)
+ (if (save-excursion (bh/skip-non-stuck-projects))
+ (save-restriction
+ (widen)
+ (let ((subtree-end (save-excursion (org-end-of-subtree t))))
+ (if (bh/is-project-p)
+ nil
+ subtree-end)))
+ (org-end-of-subtree t)))
+
+;;;###autoload
+(defun bh/skip-project-trees-and-habits ()
+ "Skip trees that are projects"
+ (save-restriction
+ (widen)
+ (let ((subtree-end (save-excursion (org-end-of-subtree t))))
+ (cond
+ ((bh/is-project-p)
+ subtree-end)
+ ((org-is-habit-p)
+ subtree-end)
+ (t
+ nil)))))
+
+;;;###autoload
+(defun bh/skip-projects-and-habits-and-single-tasks ()
+ "Skip trees that are projects, tasks that are habits, single non-project tasks"
+ (save-restriction
+ (widen)
+ (let ((next-headline (save-excursion (or (outline-next-heading) (point-max)))))
+ (cond
+ ((org-is-habit-p)
+ next-headline)
+ ((bh/is-project-p)
+ next-headline)
+ ((and (bh/is-task-p) (not (bh/is-project-subtree-p)))
+ next-headline)
+ (t
+ nil)))))
+
+;;;###autoload
+(defun bh/skip-project-tasks-maybe ()
+ "Show tasks related to the current restriction.
+When restricted to a project, skip project and sub project tasks, habits, NEXT tasks, and loose tasks.
+When not restricted, skip project and sub-project tasks, habits, and project related tasks."
+ (save-restriction
+ (widen)
+ (let* ((subtree-end (save-excursion (org-end-of-subtree t)))
+ (next-headline (save-excursion (or (outline-next-heading) (point-max))))
+ (limit-to-project (marker-buffer org-agenda-restrict-begin)))
+ (cond
+ ((bh/is-project-p)
+ next-headline)
+ ((org-is-habit-p)
+ subtree-end)
+ ((and (not limit-to-project)
+ (bh/is-project-subtree-p))
+ subtree-end)
+ ((and limit-to-project
+ (bh/is-project-subtree-p)
+ (member (org-get-todo-state) (list "NEXT")))
+ subtree-end)
+ (t
+ nil)))))
+
+;;;###autoload
+(defun bh/skip-projects-and-habits ()
+ "Skip trees that are projects and tasks that are habits"
+ (save-restriction
+ (widen)
+ (let ((subtree-end (save-excursion (org-end-of-subtree t))))
+ (cond
+ ((bh/is-project-p)
+ subtree-end)
+ ((org-is-habit-p)
+ subtree-end)
+ (t
+ nil)))))
+
+;;;###autoload
+(defun bh/skip-non-subprojects ()
+ "Skip trees that are not projects"
+ (let ((next-headline (save-excursion (outline-next-heading))))
+ (if (bh/is-subproject-p)
+ nil
+ next-headline)))
+
+; Erase all reminders and rebuilt reminders for today from the agenda
+;;;###autoload
+(defun bh/org-agenda-to-appt ()
+ (interactive)
+ (setq appt-time-msg-list nil)
+ (org-agenda-to-appt))
+
+
+;;;###autoload
+(defun bh/restrict-to-file-or-follow (arg)
+ "Set agenda restriction to 'file or with argument invoke follow mode.
+I don't use follow mode very often but I restrict to file all the time
+so change the default 'F' binding in the agenda to allow both"
+ (interactive "p")
+ (if (equal arg 4)
+ (org-agenda-follow-mode)
+ (if (equal major-mode 'org-agenda-mode)
+ (bh/set-agenda-restriction-lock 4)
+ (widen))))
+
+;;;###autoload
+(defun bh/narrow-to-org-subtree ()
+ (widen)
+ (org-narrow-to-subtree)
+ (save-restriction
+ (org-agenda-set-restriction-lock)))
+
+;;;###autoload
+(defun bh/narrow-to-subtree ()
+ (interactive)
+ (if (equal major-mode 'org-agenda-mode)
+ (org-with-point-at (org-get-at-bol 'org-hd-marker)
+ (bh/narrow-to-org-subtree))
+ (bh/narrow-to-org-subtree)))
+
+;;;###autoload
+(defun bh/narrow-up-one-org-level ()
+ (widen)
+ (save-excursion
+ (outline-up-heading 1 'invisible-ok)
+ (bh/narrow-to-org-subtree)))
+
+;;;###autoload
+(defun bh/narrow-up-one-level ()
+ (interactive)
+ (if (equal major-mode 'org-agenda-mode)
+ (org-with-point-at (org-get-at-bol 'org-hd-marker)
+ (bh/narrow-up-one-org-level))
+ (bh/narrow-up-one-org-level)))
+
+;;;###autoload
+(defun bh/narrow-to-org-project ()
+ (widen)
+ (save-excursion
+ (bh/find-project-task)
+ (bh/narrow-to-org-subtree)))
+
+;;;###autoload
+(defun bh/narrow-to-project ()
+ (interactive)
+ (if (equal major-mode 'org-agenda-mode)
+ (org-with-point-at (org-get-at-bol 'org-hd-marker)
+ (bh/narrow-to-org-project))
+ (bh/narrow-to-org-project)))
+
+;;;###autoload
+(defun bh/clock-in-to-next (kw)
+ "Switch a task from TODO to NEXT when clocking in.
+ Skips capture tasks, projects, and subprojects.
+ Switch projects and subprojects from NEXT back to TODO"
+ (when (not (and (boundp 'org-capture-mode) org-capture-mode))
+ (cond
+ ((and (member (org-get-todo-state) (list "TODO"))
+ (bh/is-task-p))
+ "NEXT")
+ ((and (member (org-get-todo-state) (list "NEXT"))
+ (bh/is-project-p))
+ "TODO"))))
+
+;;;###autoload
+(defun bh/find-project-task ()
+ "Move point to the parent (project) task if any"
+ (save-restriction
+ (widen)
+ (let ((parent-task (save-excursion (org-back-to-heading 'invisible-ok) (point))))
+ (while (org-up-heading-safe)
+ (when (member (nth 2 (org-heading-components)) org-todo-keywords-1)
+ (setq parent-task (point))))
+ (goto-char parent-task)
+ parent-task)))
+
+;;;###autoload
+(defun bh/punch-in (arg)
+ "Start continuous clocking and set the default task to the
+ selected task. If no task is selected set the Organization task
+ as the default task."
+ (interactive "p")
+ (setq bh/keep-clock-running t)
+ (if (equal major-mode 'org-agenda-mode)
+ ;;
+ ;; We're in the agenda
+ ;;
+ (let* ((marker (org-get-at-bol 'org-hd-marker))
+ (tags (org-with-point-at marker (org-get-tags-at))))
+ (if (and (eq arg 4) tags)
+ (org-agenda-clock-in '(16))
+ (bh/clock-in-organization-task-as-default)))
+ ;;
+ ;; We are not in the agenda
+ ;;
+ (save-restriction
+ (widen)
+; Find the tags on the current task
+ (if (and (equal major-mode 'org-mode) (not (org-before-first-heading-p)) (eq arg 4))
+ (org-clock-in '(16))
+ (bh/clock-in-organization-task-as-default)))))
+
+;;;###autoload
+(defun bh/punch-out ()
+ (interactive)
+ (setq bh/keep-clock-running nil)
+ (when (org-clock-is-active)
+ (org-clock-out))
+ (org-agenda-remove-restriction-lock))
+
+;;;###autoload
+(defun bh/clock-in-default-task ()
+ (save-excursion
+ (org-with-point-at org-clock-default-task
+ (org-clock-in))))
+
+;;;###autoload
+(defun bh/clock-in-parent-task ()
+ "Move point to the parent (project) task if any and clock in"
+ (let ((parent-task))
+ (save-excursion
+ (save-restriction
+ (widen)
+ (while (and (not parent-task) (org-up-heading-safe))
+ (when (member (nth 2 (org-heading-components)) org-todo-keywords-1)
+ (setq parent-task (point))))
+ (if parent-task
+ (org-with-point-at parent-task
+ (org-clock-in))
+ (when bh/keep-clock-running
+ (bh/clock-in-default-task)))))))
+
+;;;###autoload
+(defun bh/clock-in-organization-task-as-default ()
+ (interactive)
+ (org-with-point-at (org-id-find bh/organization-task-id 'marker)
+ (org-clock-in '(16))))
+
+;;;###autoload
+(defun bh/clock-out-maybe ()
+ (when (and bh/keep-clock-running
+ (not org-clock-clocking-in)
+ (marker-buffer org-clock-default-task)
+ (not org-clock-resolving-clocks-due-to-idleness))
+ (bh/clock-in-parent-task)))
+
+;;;###autoload
+(defun bh/clock-in-last-task (arg)
+ "Clock in the interrupted task if there is one
+ Skip the default task and get the next one.
+ A prefix arg forces clock in of the default task."
+ (interactive "p")
+ (let ((clock-in-to-task
+ (cond
+ ((eq arg 4) org-clock-default-task)
+ ((and (org-clock-is-active)
+ (equal org-clock-default-task (cadr org-clock-history)))
+ (caddr org-clock-history))
+ ((org-clock-is-active) (cadr org-clock-history))
+ ((equal org-clock-default-task (car org-clock-history)) (cadr org-clock-history))
+ (t (car org-clock-history)))))
+ (org-with-point-at clock-in-to-task
+ (org-clock-in nil))))
+
+;;;###autoload
+(defun bh/set-agenda-restriction-lock (arg)
+ "Set restriction lock to current task subtree or file if prefix is specified"
+ (interactive "p")
+ (let* ((pom (bh/get-pom-from-agenda-restriction-or-point))
+ (tags (org-with-point-at pom (org-get-tags-at))))
+ (let ((restriction-type (if (equal arg 4) 'file 'subtree)))
+ (save-restriction
+ (cond
+ ((and (equal major-mode 'org-agenda-mode) pom)
+ (org-with-point-at pom
+ (org-agenda-set-restriction-lock restriction-type)))
+ ((and (equal major-mode 'org-mode) (org-before-first-heading-p))
+ (org-agenda-set-restriction-lock 'file))
+ (pom
+ (org-with-point-at pom
+ (org-agenda-set-restriction-lock restriction-type))))))))
+
+;;;###autoload
+(defun bh/get-pom-from-agenda-restriction-or-point ()
+ (or (org-get-at-bol 'org-hd-marker)
+ (and (marker-position org-agenda-restrict-begin) org-agenda-restrict-begin)
+ (and (equal major-mode 'org-mode) (point))
+ org-clock-marker))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+(provide 'ganneff-org)
+
+;;; ganneff-org.el ends here
+
-;;; ganneff.el --- Lotsa functiuons and their variables for stuff
-;;; ganneffs .emacs wants
+;;; ganneff1.el --- Some functions and stuff I use
-;; Copyright (C) 2012 Joerg Jaspert
+;;; Copyright (C) 2012.2013 Joerg Jaspert
;; Filename: ganneff.de
;; Author: Joerg Jaspert <joerg@debian.org>
-;; The functions in the bh/ namespace are taken from
-;; http://doc.norang.ca/org-mode.org.html which has:
-;; #+AUTHOR: Bernt Hansen (IRC:Thumper_ on freenode)
-;; #+EMAIL: bernt@norang.ca
-;; and the following license statement:
-;;
-;; This document http://doc.norang.ca/org-mode.html and (either in its
-;; HTML format or in its Org format) is licensed under the GNU Free
-;; Documentation License version 1.3 or later
-;; (http://www.gnu.org/copyleft/fdl.html).
-
-;; The code examples and css stylesheets are licensed under the GNU
-;; General Public License v3 or later
-;; (http://www.gnu.org/licenses/gpl.html).
-
-
-(defgroup ganneff nil
- "Modify ganneffs settings"
- :group 'environment)
-
-(defcustom bh/organization-task-id "d0db0d3c-f22e-42ff-a654-69524ff7cc91"
- "ID of the organization task"
- :tag "Organization Task ID"
- :type 'string
- :group 'ganneff)
-
-(defcustom org-my-archive-expiry-days 2
- "The number of days after which a completed task should be auto-archived.
-This can be 0 for immediate, or a floating point value."
- :tag "Archive expiry days"
- :type 'float
- :group 'ganneff)
+;;; Commentary:
+;; This is just stuff I use in my emacs configuration.
+;;; Code:
;;;###autoload
(defun my-dired-init ()
;;;###autoload
(defun ido-disable-line-trucation () (set (make-local-variable 'truncate-lines) nil))
-;;;###autoload
-(defun bh/show-org-agenda ()
- (interactive)
- (switch-to-buffer "*Org Agenda*")
- (delete-other-windows))
-
-; Exclude DONE state tasks from refile targets
-;;;###autoload
-(defun bh/verify-refile-target ()
- "Exclude todo keywords with a done state from refile targets"
- (not (member (nth 2 (org-heading-components)) org-done-keywords)))
-
-;;;###autoload
-(defmacro bh/agenda-sort-test (fn a b)
- "Test for agenda sort"
- `(cond
- ; if both match leave them unsorted
- ((and (apply ,fn (list ,a))
- (apply ,fn (list ,b)))
- (setq result nil))
- ; if a matches put a first
- ((apply ,fn (list ,a))
- (setq result -1))
- ; otherwise if b matches put b first
- ((apply ,fn (list ,b))
- (setq result 1))
- ; if none match leave them unsorted
- (t nil)))
-
-;;;###autoload
-(defmacro bh/agenda-sort-test-num (fn compfn a b)
- `(cond
- ((apply ,fn (list ,a))
- (setq num-a (string-to-number (match-string 1 ,a)))
- (if (apply ,fn (list ,b))
- (progn
- (setq num-b (string-to-number (match-string 1 ,b)))
- (setq result (if (apply ,compfn (list num-a num-b))
- -1
- 1)))
- (setq result -1)))
- ((apply ,fn (list ,b))
- (setq result 1))
- (t nil)))
-
-;;;###autoload
-(defun bh/agenda-sort (a b)
- "Sorting strategy for agenda items.
-Late deadlines first, then scheduled, then non-late deadlines"
- (let (result num-a num-b)
- (cond
- ; time specific items are already sorted first by org-agenda-sorting-strategy
-
- ; non-deadline and non-scheduled items next
- ((bh/agenda-sort-test 'bh/is-not-scheduled-or-deadline a b))
-
- ; deadlines for today next
- ((bh/agenda-sort-test 'bh/is-due-deadline a b))
-
- ; late deadlines next
- ((bh/agenda-sort-test-num 'bh/is-late-deadline '< a b))
-
- ; scheduled items for today next
- ((bh/agenda-sort-test 'bh/is-scheduled-today a b))
-
- ; late scheduled items next
- ((bh/agenda-sort-test-num 'bh/is-scheduled-late '> a b))
-
- ; pending deadlines last
- ((bh/agenda-sort-test-num 'bh/is-pending-deadline '< a b))
-
- ; finally default to unsorted
- (t (setq result nil)))
- result))
-
-;;;###autoload
-(defun bh/is-not-scheduled-or-deadline (date-str)
- (and (not (bh/is-deadline date-str))
- (not (bh/is-scheduled date-str))))
-
-;;;###autoload
-(defun bh/is-due-deadline (date-str)
- (string-match "Deadline:" date-str))
-
-;;;###autoload
-(defun bh/is-late-deadline (date-str)
- (string-match "In *\\(-.*\\)d\.:" date-str))
-
-;;;###autoload
-(defun bh/is-pending-deadline (date-str)
- (string-match "In \\([^-]*\\)d\.:" date-str))
-
-;;;###autoload
-(defun bh/is-deadline (date-str)
- (or (bh/is-due-deadline date-str)
- (bh/is-late-deadline date-str)
- (bh/is-pending-deadline date-str)))
-
-;;;###autoload
-(defun bh/is-scheduled (date-str)
- (or (bh/is-scheduled-today date-str)
- (bh/is-scheduled-late date-str)))
-
-;;;###autoload
-(defun bh/is-scheduled-today (date-str)
- (string-match "Scheduled:" date-str))
-
-;;;###autoload
-(defun bh/is-scheduled-late (date-str)
- (string-match "Sched\.\\(.*\\)x:" date-str))
-
-;;;###autoload
-(defun bh/hide-other ()
- (interactive)
- (save-excursion
- (org-back-to-heading 'invisible-ok)
- (hide-other)
- (org-cycle)
- (org-cycle)
- (org-cycle)))
-
-;;;###autoload
-(defun bh/set-truncate-lines ()
- "Toggle value of truncate-lines and refresh window display."
- (interactive)
- (setq truncate-lines (not truncate-lines))
- ;; now refresh window display (an idiom from simple.el):
- (save-excursion
- (set-window-start (selected-window)
- (window-start (selected-window)))))
-
-;;;###autoload
-(defun bh/skip-non-archivable-tasks ()
- "Skip trees that are not available for archiving"
- (save-restriction
- (widen)
- (let ((next-headline (save-excursion (or (outline-next-heading) (point-max)))))
- ;; Consider only tasks with done todo headings as archivable candidates
- (if (member (org-get-todo-state) org-done-keywords)
- (let* ((subtree-end (save-excursion (org-end-of-subtree t)))
- (daynr (string-to-int (format-time-string "%d" (current-time))))
- (a-month-ago (* 60 60 24 (+ daynr 1)))
- (last-month (format-time-string "%Y-%m-" (time-subtract (current-time) (seconds-to-time a-month-ago))))
- (this-month (format-time-string "%Y-%m-" (current-time)))
- (subtree-is-current (save-excursion
- (forward-line 1)
- (and (< (point) subtree-end)
- (re-search-forward (concat last-month "\\|" this-month) subtree-end t)))))
- (if subtree-is-current
- next-headline ; Has a date in this month or last month, skip it
- nil)) ; available to archive
- (or next-headline (point-max))))))
-
-;;;###autoload
-(defun bh/make-org-scratch ()
- (interactive)
- (find-file "/tmp/publish/scratch.org")
- (gnus-make-directory "/tmp/publish"))
-
-;;;###autoload
-(defun bh/switch-to-scratch ()
- (interactive)
- (switch-to-buffer "*scratch*"))
-
-;;;###autoload
-(defun bh/org-todo (arg)
- (interactive "p")
- (if (equal arg 4)
- (save-restriction
- (widen)
- (org-narrow-to-subtree)
- (org-show-todo-tree nil))
- (widen)
- (org-narrow-to-subtree)
- (org-show-todo-tree nil)))
-
-;;;###autoload
-(defun bh/widen ()
- (interactive)
- (if (equal major-mode 'org-agenda-mode)
- (org-agenda-remove-restriction-lock)
- (widen)
- (org-agenda-remove-restriction-lock)))
-
-;;;###autoload
-(defun bh/insert-inactive-timestamp ()
- (interactive)
- (org-insert-time-stamp nil t t nil nil nil))
-
-;;;###autoload
-(defun bh/insert-heading-inactive-timestamp ()
- (save-excursion
- (org-return)
- (org-cycle)
- (bh/insert-inactive-timestamp)))
-
-;; Remove empty LOGBOOK drawers on clock out
-;;;###autoload
-(defun bh/remove-empty-drawer-on-clock-out ()
- (interactive)
- (save-excursion
- (beginning-of-line 0)
- (org-remove-empty-drawer-at "LOGBOOK" (point))))
-
-;;;###autoload
-(defun bh/prepare-meeting-notes ()
- "Prepare meeting notes for email
- Take selected region and convert tabs to spaces, mark TODOs with leading >>>, and copy to kill ring for pasting"
- (interactive)
- (let (prefix)
- (save-excursion
- (save-restriction
- (narrow-to-region (region-beginning) (region-end))
- (untabify (point-min) (point-max))
- (goto-char (point-min))
- (while (re-search-forward "^\\( *-\\\) \\(TODO\\|DONE\\): " (point-max) t)
- (replace-match (concat (make-string (length (match-string 1)) ?>) " " (match-string 2) ": ")))
- (goto-char (point-min))
- (kill-ring-save (point-min) (point-max))))))
-
-;; Phone capture template handling with BBDB lookup
-;; Adapted from code by Gregory J. Grubbs
-;;;###autoload
-(defun bh/phone-call ()
- "Return name and company info for caller from bbdb lookup"
- (interactive)
- (let* (name rec caller)
- (setq name (completing-read "Who is calling? "
- (bbdb-hashtable)
- 'bbdb-completion-predicate
- 'confirm))
- (when (> (length name) 0)
-; Something was supplied - look it up in bbdb
- (setq rec
- (or (first
- (or (bbdb-search (bbdb-records) name nil nil)
- (bbdb-search (bbdb-records) nil name nil)))
- name)))
-
-; Build the bbdb link if we have a bbdb record, otherwise just return the name
- (setq caller (cond ((and rec (vectorp rec))
- (let ((name (bbdb-record-name rec))
- (company (bbdb-record-company rec)))
- (concat "[[bbdb:"
- name "]["
- name "]]"
- (when company
- (concat " - " company)))))
- (rec)
- (t "NameOfCaller")))
- (insert caller)))
-
-;;;###autoload
-(defun org-my-archive-done-tasks ()
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (let ((done-regexp
- (concat "\\* \\(" (regexp-opt org-done-keywords) "\\) "))
- (state-regexp
- (concat "- State \"\\(" (regexp-opt org-done-keywords)
- "\\)\"\\s-*\\[\\([^]\n]+\\)\\]")))
- (while (re-search-forward done-regexp nil t)
- (let ((end (save-excursion
- (outline-next-heading)
- (point)))
- begin)
- (goto-char (line-beginning-position))
- (setq begin (point))
- (if (re-search-forward state-regexp end t)
- (let* ((time-string (match-string 2))
- (when-closed (org-parse-time-string time-string)))
- (if (>= (time-to-number-of-days
- (time-subtract (current-time)
- (apply #'encode-time when-closed)))
- org-my-archive-expiry-days)
- (org-archive-subtree)))
- (goto-char end)))))
- (save-buffer)))
-(setq safe-local-variable-values (quote ((after-save-hook archive-done-tasks))))
-;;;###autoload
-(defalias 'archive-done-tasks 'org-my-archive-done-tasks)
-
-;;;###autoload
-(defun bh/is-project-p ()
- "Any task with a todo keyword subtask"
- (save-restriction
- (widen)
- (let ((has-subtask)
- (subtree-end (save-excursion (org-end-of-subtree t)))
- (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
- (save-excursion
- (forward-line 1)
- (while (and (not has-subtask)
- (< (point) subtree-end)
- (re-search-forward "^\*+ " subtree-end t))
- (when (member (org-get-todo-state) org-todo-keywords-1)
- (setq has-subtask t))))
- (and is-a-task has-subtask))))
-
-;;;###autoload
-(defun bh/is-project-subtree-p ()
- "Any task with a todo keyword that is in a project subtree.
-Callers of this function already widen the buffer view."
- (let ((task (save-excursion (org-back-to-heading 'invisible-ok)
- (point))))
- (save-excursion
- (bh/find-project-task)
- (if (equal (point) task)
- nil
- t))))
-
-;;;###autoload
-(defun bh/is-task-p ()
- "Any task with a todo keyword and no subtask"
- (save-restriction
- (widen)
- (let ((has-subtask)
- (subtree-end (save-excursion (org-end-of-subtree t)))
- (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
- (save-excursion
- (forward-line 1)
- (while (and (not has-subtask)
- (< (point) subtree-end)
- (re-search-forward "^\*+ " subtree-end t))
- (when (member (org-get-todo-state) org-todo-keywords-1)
- (setq has-subtask t))))
- (and is-a-task (not has-subtask)))))
-
-;;;###autoload
-(defun bh/is-subproject-p ()
- "Any task which is a subtask of another project"
- (let ((is-subproject)
- (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
- (save-excursion
- (while (and (not is-subproject) (org-up-heading-safe))
- (when (member (nth 2 (org-heading-components)) org-todo-keywords-1)
- (setq is-subproject t))))
- (and is-a-task is-subproject)))
-
-;;;###autoload
-(defun bh/list-sublevels-for-projects-indented ()
- "Set org-tags-match-list-sublevels so when restricted to a subtree we list all subtasks.
- This is normally used by skipping functions where this variable is already local to the agenda."
- (if (marker-buffer org-agenda-restrict-begin)
- (setq org-tags-match-list-sublevels 'indented)
- (setq org-tags-match-list-sublevels nil))
- nil)
-
-;;;###autoload
-(defun bh/list-sublevels-for-projects ()
- "Set org-tags-match-list-sublevels so when restricted to a subtree we list all subtasks.
- This is normally used by skipping functions where this variable is already local to the agenda."
- (if (marker-buffer org-agenda-restrict-begin)
- (setq org-tags-match-list-sublevels t)
- (setq org-tags-match-list-sublevels nil))
- nil)
-
-;;;###autoload
-(defun bh/skip-non-stuck-projects ()
- "Skip trees that are not stuck projects"
- (bh/list-sublevels-for-projects-indented)
- (save-restriction
- (widen)
- (let ((next-headline (save-excursion (or (outline-next-heading) (point-max)))))
- (if (bh/is-project-p)
- (let* ((subtree-end (save-excursion (org-end-of-subtree t)))
- (has-next ))
- (save-excursion
- (forward-line 1)
- (while (and (not has-next) (< (point) subtree-end) (re-search-forward "^\\*+ NEXT " subtree-end t))
- (unless (member "WAITING" (org-get-tags-at))
- (setq has-next t))))
- (if has-next
- next-headline
- nil)) ; a stuck project, has subtasks but no next task
- next-headline))))
-
-;;;###autoload
-(defun bh/skip-non-projects ()
- "Skip trees that are not projects"
- (bh/list-sublevels-for-projects-indented)
- (if (save-excursion (bh/skip-non-stuck-projects))
- (save-restriction
- (widen)
- (let ((subtree-end (save-excursion (org-end-of-subtree t))))
- (if (bh/is-project-p)
- nil
- subtree-end)))
- (org-end-of-subtree t)))
-
-;;;###autoload
-(defun bh/skip-project-trees-and-habits ()
- "Skip trees that are projects"
- (save-restriction
- (widen)
- (let ((subtree-end (save-excursion (org-end-of-subtree t))))
- (cond
- ((bh/is-project-p)
- subtree-end)
- ((org-is-habit-p)
- subtree-end)
- (t
- nil)))))
-
-;;;###autoload
-(defun bh/skip-projects-and-habits-and-single-tasks ()
- "Skip trees that are projects, tasks that are habits, single non-project tasks"
- (save-restriction
- (widen)
- (let ((next-headline (save-excursion (or (outline-next-heading) (point-max)))))
- (cond
- ((org-is-habit-p)
- next-headline)
- ((bh/is-project-p)
- next-headline)
- ((and (bh/is-task-p) (not (bh/is-project-subtree-p)))
- next-headline)
- (t
- nil)))))
-
-;;;###autoload
-(defun bh/skip-project-tasks-maybe ()
- "Show tasks related to the current restriction.
-When restricted to a project, skip project and sub project tasks, habits, NEXT tasks, and loose tasks.
-When not restricted, skip project and sub-project tasks, habits, and project related tasks."
- (save-restriction
- (widen)
- (let* ((subtree-end (save-excursion (org-end-of-subtree t)))
- (next-headline (save-excursion (or (outline-next-heading) (point-max))))
- (limit-to-project (marker-buffer org-agenda-restrict-begin)))
- (cond
- ((bh/is-project-p)
- next-headline)
- ((org-is-habit-p)
- subtree-end)
- ((and (not limit-to-project)
- (bh/is-project-subtree-p))
- subtree-end)
- ((and limit-to-project
- (bh/is-project-subtree-p)
- (member (org-get-todo-state) (list "NEXT")))
- subtree-end)
- (t
- nil)))))
-
-;;;###autoload
-(defun bh/skip-projects-and-habits ()
- "Skip trees that are projects and tasks that are habits"
- (save-restriction
- (widen)
- (let ((subtree-end (save-excursion (org-end-of-subtree t))))
- (cond
- ((bh/is-project-p)
- subtree-end)
- ((org-is-habit-p)
- subtree-end)
- (t
- nil)))))
-
-;;;###autoload
-(defun bh/skip-non-subprojects ()
- "Skip trees that are not projects"
- (let ((next-headline (save-excursion (outline-next-heading))))
- (if (bh/is-subproject-p)
- nil
- next-headline)))
-
-; Erase all reminders and rebuilt reminders for today from the agenda
-;;;###autoload
-(defun bh/org-agenda-to-appt ()
- (interactive)
- (setq appt-time-msg-list nil)
- (org-agenda-to-appt))
-
-
-;;;###autoload
-(defun bh/restrict-to-file-or-follow (arg)
- "Set agenda restriction to 'file or with argument invoke follow mode.
-I don't use follow mode very often but I restrict to file all the time
-so change the default 'F' binding in the agenda to allow both"
- (interactive "p")
- (if (equal arg 4)
- (org-agenda-follow-mode)
- (if (equal major-mode 'org-agenda-mode)
- (bh/set-agenda-restriction-lock 4)
- (widen))))
-
-;;;###autoload
-(defun bh/narrow-to-org-subtree ()
- (widen)
- (org-narrow-to-subtree)
- (save-restriction
- (org-agenda-set-restriction-lock)))
-
-;;;###autoload
-(defun bh/narrow-to-subtree ()
- (interactive)
- (if (equal major-mode 'org-agenda-mode)
- (org-with-point-at (org-get-at-bol 'org-hd-marker)
- (bh/narrow-to-org-subtree))
- (bh/narrow-to-org-subtree)))
-
-;;;###autoload
-(defun bh/narrow-up-one-org-level ()
- (widen)
- (save-excursion
- (outline-up-heading 1 'invisible-ok)
- (bh/narrow-to-org-subtree)))
-
-;;;###autoload
-(defun bh/narrow-up-one-level ()
- (interactive)
- (if (equal major-mode 'org-agenda-mode)
- (org-with-point-at (org-get-at-bol 'org-hd-marker)
- (bh/narrow-up-one-org-level))
- (bh/narrow-up-one-org-level)))
-
-;;;###autoload
-(defun bh/narrow-to-org-project ()
- (widen)
- (save-excursion
- (bh/find-project-task)
- (bh/narrow-to-org-subtree)))
-
-;;;###autoload
-(defun bh/narrow-to-project ()
- (interactive)
- (if (equal major-mode 'org-agenda-mode)
- (org-with-point-at (org-get-at-bol 'org-hd-marker)
- (bh/narrow-to-org-project))
- (bh/narrow-to-org-project)))
-
-;;;###autoload
-(defun bh/clock-in-to-next (kw)
- "Switch a task from TODO to NEXT when clocking in.
- Skips capture tasks, projects, and subprojects.
- Switch projects and subprojects from NEXT back to TODO"
- (when (not (and (boundp 'org-capture-mode) org-capture-mode))
- (cond
- ((and (member (org-get-todo-state) (list "TODO"))
- (bh/is-task-p))
- "NEXT")
- ((and (member (org-get-todo-state) (list "NEXT"))
- (bh/is-project-p))
- "TODO"))))
-
-;;;###autoload
-(defun bh/find-project-task ()
- "Move point to the parent (project) task if any"
- (save-restriction
- (widen)
- (let ((parent-task (save-excursion (org-back-to-heading 'invisible-ok) (point))))
- (while (org-up-heading-safe)
- (when (member (nth 2 (org-heading-components)) org-todo-keywords-1)
- (setq parent-task (point))))
- (goto-char parent-task)
- parent-task)))
-
-;;;###autoload
-(defun bh/punch-in (arg)
- "Start continuous clocking and set the default task to the
- selected task. If no task is selected set the Organization task
- as the default task."
- (interactive "p")
- (setq bh/keep-clock-running t)
- (if (equal major-mode 'org-agenda-mode)
- ;;
- ;; We're in the agenda
- ;;
- (let* ((marker (org-get-at-bol 'org-hd-marker))
- (tags (org-with-point-at marker (org-get-tags-at))))
- (if (and (eq arg 4) tags)
- (org-agenda-clock-in '(16))
- (bh/clock-in-organization-task-as-default)))
- ;;
- ;; We are not in the agenda
- ;;
- (save-restriction
- (widen)
-; Find the tags on the current task
- (if (and (equal major-mode 'org-mode) (not (org-before-first-heading-p)) (eq arg 4))
- (org-clock-in '(16))
- (bh/clock-in-organization-task-as-default)))))
-
-;;;###autoload
-(defun bh/punch-out ()
- (interactive)
- (setq bh/keep-clock-running nil)
- (when (org-clock-is-active)
- (org-clock-out))
- (org-agenda-remove-restriction-lock))
-
-;;;###autoload
-(defun bh/clock-in-default-task ()
- (save-excursion
- (org-with-point-at org-clock-default-task
- (org-clock-in))))
-
-;;;###autoload
-(defun bh/clock-in-parent-task ()
- "Move point to the parent (project) task if any and clock in"
- (let ((parent-task))
- (save-excursion
- (save-restriction
- (widen)
- (while (and (not parent-task) (org-up-heading-safe))
- (when (member (nth 2 (org-heading-components)) org-todo-keywords-1)
- (setq parent-task (point))))
- (if parent-task
- (org-with-point-at parent-task
- (org-clock-in))
- (when bh/keep-clock-running
- (bh/clock-in-default-task)))))))
-
-;;;###autoload
-(defun bh/clock-in-organization-task-as-default ()
- (interactive)
- (org-with-point-at (org-id-find bh/organization-task-id 'marker)
- (org-clock-in '(16))))
-
-;;;###autoload
-(defun bh/clock-out-maybe ()
- (when (and bh/keep-clock-running
- (not org-clock-clocking-in)
- (marker-buffer org-clock-default-task)
- (not org-clock-resolving-clocks-due-to-idleness))
- (bh/clock-in-parent-task)))
-
-;;;###autoload
-(defun bh/clock-in-last-task (arg)
- "Clock in the interrupted task if there is one
- Skip the default task and get the next one.
- A prefix arg forces clock in of the default task."
- (interactive "p")
- (let ((clock-in-to-task
- (cond
- ((eq arg 4) org-clock-default-task)
- ((and (org-clock-is-active)
- (equal org-clock-default-task (cadr org-clock-history)))
- (caddr org-clock-history))
- ((org-clock-is-active) (cadr org-clock-history))
- ((equal org-clock-default-task (car org-clock-history)) (cadr org-clock-history))
- (t (car org-clock-history)))))
- (org-with-point-at clock-in-to-task
- (org-clock-in nil))))
-
-;;;###autoload
-(defun bh/set-agenda-restriction-lock (arg)
- "Set restriction lock to current task subtree or file if prefix is specified"
- (interactive "p")
- (let* ((pom (bh/get-pom-from-agenda-restriction-or-point))
- (tags (org-with-point-at pom (org-get-tags-at))))
- (let ((restriction-type (if (equal arg 4) 'file 'subtree)))
- (save-restriction
- (cond
- ((and (equal major-mode 'org-agenda-mode) pom)
- (org-with-point-at pom
- (org-agenda-set-restriction-lock restriction-type)))
- ((and (equal major-mode 'org-mode) (org-before-first-heading-p))
- (org-agenda-set-restriction-lock 'file))
- (pom
- (org-with-point-at pom
- (org-agenda-set-restriction-lock restriction-type))))))))
-
-;;;###autoload
-(defun bh/get-pom-from-agenda-restriction-or-point ()
- (or (org-get-at-bol 'org-hd-marker)
- (and (marker-position org-agenda-restrict-begin) org-agenda-restrict-begin)
- (and (equal major-mode 'org-mode) (point))
- org-clock-marker))
;;;###autoload
(defun sacha/isearch-yank-current-word ()
(interactive)
(just-one-space -1))
-(provide 'ganneff)
-
;(setq org-icalendar-verify-function 'org-mycal-export-limit)
;(org-export-icalendar-combine-agenda-files)
+
+(provide 'ganneff)
+
+;;; ganneff.el ends here
;;
\f
+;;;### (autoloads (ace-jump-mode ace-jump-line-mode ace-jump-word-mode
+;;;;;; ace-jump-char-mode ace-jump-mode-pop-mark) "ace-jump-mode"
+;;;;;; "ace-jump-mode.el" (20860 60137 783821 671000))
+;;; Generated autoloads from ace-jump-mode.el
+
+(autoload 'ace-jump-mode-pop-mark "ace-jump-mode" "\
+Pop up a postion from `ace-jump-mode-mark-ring', and jump back to that position
+
+\(fn)" t nil)
+
+(autoload 'ace-jump-char-mode "ace-jump-mode" "\
+AceJump char mode
+
+\(fn QUERY-CHAR)" t nil)
+
+(autoload 'ace-jump-word-mode "ace-jump-mode" "\
+AceJump word mode.
+You can set `ace-jump-word-mode-use-query-char' to nil to prevent
+asking for a head char, that will mark all the word in current
+buffer.
+
+\(fn HEAD-CHAR)" t nil)
+
+(autoload 'ace-jump-line-mode "ace-jump-mode" "\
+AceJump line mode.
+Marked each no empty line and move there
+
+\(fn)" t nil)
+
+(autoload 'ace-jump-mode "ace-jump-mode" "\
+AceJump mode is a minor mode for you to quick jump to a
+position in the curret view.
+ There is three submode now:
+ `ace-jump-char-mode'
+ `ace-jump-word-mode'
+ `ace-jump-line-mode'
+
+You can specify the sequence about which mode should enter
+by customize `ace-jump-mode-submode-list'.
+
+If you do not want to query char for word mode, you can change
+`ace-jump-word-mode-use-query-char' to nil.
+
+If you don't like the default move keys, you can change it by
+setting `ace-jump-mode-move-keys'.
+
+You can constrol whether use the case sensitive via
+`ace-jump-mode-case-fold'.
+
+\(fn &optional PREFIX)" t nil)
+
+;;;***
+\f
+;;;### (autoloads (color-theme-initialize color-theme-submit color-theme-install
+;;;;;; color-theme-compare color-theme-make-snapshot color-theme-analyze-defun
+;;;;;; color-theme-print color-theme-install-at-point-for-current-frame
+;;;;;; color-theme-install-at-mouse color-theme-describe color-theme-select)
+;;;;;; "color-theme" "color-theme.el" (20865 12472 116424 798000))
+;;; Generated autoloads from color-theme.el
+
+(autoload 'color-theme-select "color-theme" "\
+Displays a special buffer for selecting and installing a color theme.
+With optional prefix ARG, this buffer will include color theme libraries
+as well. A color theme library is in itself not complete, it must be
+used as part of another color theme to be useful. Thus, color theme
+libraries are mainly useful for color theme authors.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'color-theme-describe "color-theme" "\
+Describe color theme listed at point.
+This shows the documentation of the value of text-property color-theme
+at point. The text-property color-theme should be a color theme
+function. See `color-themes'.
+
+\(fn)" t nil)
+
+(autoload 'color-theme-install-at-mouse "color-theme" "\
+Install color theme clicked upon using the mouse.
+First argument EVENT is used to set point. Then
+`color-theme-install-at-point' is called.
+
+\(fn EVENT)" t nil)
+
+(autoload 'color-theme-install-at-point-for-current-frame "color-theme" "\
+Install color theme at point for current frame only.
+Binds `color-theme-is-global' to nil and calls
+`color-theme-install-at-point'.
+
+\(fn)" t nil)
+
+(autoload 'color-theme-print "color-theme" "\
+Print the current color theme function.
+
+You can contribute this function to <URL:news:gnu.emacs.sources> or
+paste it into your .emacs file and call it. That should recreate all
+the settings necessary for your color theme.
+
+Example:
+
+ (require 'color-theme)
+ (defun my-color-theme ()
+ \"Color theme by Alex Schroeder, created 2000-05-17.\"
+ (interactive)
+ (color-theme-install
+ '(...
+ ...
+ ...)))
+ (my-color-theme)
+
+If you want to use a specific color theme function, you can call the
+color theme function in your .emacs directly.
+
+Example:
+
+ (require 'color-theme)
+ (color-theme-gnome2)
+
+\(fn &optional BUF)" t nil)
+
+(autoload 'color-theme-analyze-defun "color-theme" "\
+Once you have a color-theme printed, check for missing faces.
+This is used by maintainers who receive a color-theme submission
+and want to make sure it follows the guidelines by the color-theme
+author.
+
+\(fn)" t nil)
+
+(autoload 'color-theme-make-snapshot "color-theme" "\
+Return the definition of the current color-theme.
+The function returned will recreate the color-theme in use at the moment.
+
+\(fn)" nil nil)
+
+(autoload 'color-theme-compare "color-theme" "\
+Compare two color themes.
+This will print the differences between installing THEME-A and
+installing THEME-B. Note that the order is important: If a face is
+defined in THEME-A and not in THEME-B, then this will not show up as a
+difference, because there is no reset before installing THEME-B. If a
+face is defined in THEME-B and not in THEME-A, then this will show up as
+a difference.
+
+\(fn THEME-A THEME-B)" t nil)
+
+(autoload 'color-theme-install "color-theme" "\
+Install a color theme defined by frame parameters, variables and faces.
+
+The theme is installed for all present and future frames; any missing
+faces are created. See `color-theme-install-faces'.
+
+THEME is a color theme definition. See below for more information.
+
+If you want to install a color theme from your .emacs, use the output
+generated by `color-theme-print'. This produces color theme function
+which you can copy to your .emacs.
+
+A color theme definition is a list:
+\([FUNCTION] FRAME-PARAMETERS VARIABLE-SETTINGS FACE-DEFINITIONS)
+
+FUNCTION is the color theme function which called `color-theme-install'.
+This is no longer used. There was a time when this package supported
+automatic factoring of color themes. This has been abandoned.
+
+FRAME-PARAMETERS is an alist of frame parameters. These are installed
+with `color-theme-install-frame-params'. These are installed last such
+that any changes to the default face can be changed by the frame
+parameters.
+
+VARIABLE-DEFINITIONS is an alist of variable settings. These are
+installed with `color-theme-install-variables'.
+
+FACE-DEFINITIONS is an alist of face definitions. These are installed
+with `color-theme-install-faces'.
+
+If `color-theme-is-cumulative' is nil, a color theme will undo face and
+frame-parameter settings of previous color themes.
+
+\(fn THEME)" nil nil)
+
+(autoload 'color-theme-submit "color-theme" "\
+Submit your color-theme to the maintainer.
+
+\(fn)" t nil)
+
+(autoload 'color-theme-initialize "color-theme" "\
+Initialize the color theme package by loading color-theme-libraries.
+
+\(fn)" t nil)
+
+;;;***
+\f
+;;;### (autoloads (diminished-modes diminish-undo diminish) "diminish"
+;;;;;; "diminish.el" (20865 30363 579223 949000))
+;;; Generated autoloads from diminish.el
+
+(autoload 'diminish "diminish" "\
+Diminish mode-line display of minor mode MODE to TO-WHAT (default \"\").
+
+Interactively, enter (with completion) the name of any minor mode, followed
+on the next line by what you want it diminished to (default empty string).
+The response to neither prompt should be quoted. However, in Lisp code,
+both args must be quoted, the first as a symbol, the second as a string,
+as in (diminish 'jiggle-mode \" Jgl\").
+
+The mode-line displays of minor modes usually begin with a space, so
+the modes' names appear as separate words on the mode line. However, if
+you're having problems with a cramped mode line, you may choose to use single
+letters for some modes, without leading spaces. Capitalizing them works
+best; if you then diminish some mode to \"X\" but have abbrev-mode enabled as
+well, you'll get a display like \"AbbrevX\". This function prepends a space
+to TO-WHAT if it's > 1 char long & doesn't already begin with a space.
+
+\(fn MODE &optional TO-WHAT)" t nil)
+
+(autoload 'diminish-undo "diminish" "\
+Restore mode-line display of diminished mode MODE to its minor-mode value.
+Do nothing if the arg is a minor mode that hasn't been diminished.
+
+Interactively, enter (with completion) the name of any diminished mode (a
+mode that was formerly a minor mode on which you invoked M-x diminish).
+To restore all diminished modes to minor status, answer `diminished-modes'.
+The response to the prompt shouldn't be quoted. However, in Lisp code,
+the arg must be quoted as a symbol, as in (diminish-undo 'diminished-modes).
+
+\(fn MODE)" t nil)
+
+(autoload 'diminished-modes "diminish" "\
+Echo all active diminished or minor modes as if they were minor.
+The display goes in the echo area; if it's too long even for that,
+you can see the whole thing in the *Messages* buffer.
+This doesn't change the status of any modes; it just lets you see
+what diminished modes would be on the mode-line if they were still minor.
+
+\(fn)" t nil)
+
+;;;***
+\f
;;;### (autoloads (diredp-send-bug-report diredp-dired-plus-help
;;;;;; diredp-describe-mode diredp-mouse-do-chmod diredp-mouse-do-load
;;;;;; diredp-mouse-do-byte-compile diredp-mouse-do-compress diredp-mouse-do-grep
;;;;;; diredp-dired-for-files-other-window diredp-dired-for-files
;;;;;; diredp-dired-files-other-window diredp-dired-files diredp-w32-local-drives
;;;;;; diredp-prompt-for-bookmark-prefix-flag diff-switches) "dired+"
-;;;;;; "dired+.el" (20835 57211 0 0))
+;;;;;; "dired+.el" (20858 49922 429890 970000))
;;; Generated autoloads from dired+.el
(defvar diff-switches "-c" "\
\f
;;;### (autoloads (dired-single-toggle-buffer-name dired-single-magic-buffer
;;;;;; dired-single-buffer-mouse dired-single-buffer) "dired-single"
-;;;;;; "dired-single.el" (20788 26750 0 0))
+;;;;;; "dired-single.el" (20858 49922 429890 970000))
;;; Generated autoloads from dired-single.el
(autoload 'dired-single-buffer "dired-single" "\
;;;***
\f
-;;;### (autoloads (toggle-follow-mouse turn-off-follow-mouse turn-on-follow-mouse)
-;;;;;; "follow-mouse" "follow-mouse.el" (20788 26750 0 0))
-;;; Generated autoloads from follow-mouse.el
-
-(autoload 'turn-on-follow-mouse "follow-mouse" "\
-Moving the mouse will automatically select the window under it.
-
-\(fn)" t nil)
-
-(autoload 'turn-off-follow-mouse "follow-mouse" "\
-Moving the mouse will not automatically select the window under it.
+;;;### (autoloads (flycheck-info flycheck-def-option-var flycheck-def-config-file-var
+;;;;;; flycheck-declare-checker global-flycheck-mode flycheck-mode)
+;;;;;; "flycheck" "flycheck.el" (20861 33952 0 0))
+;;; Generated autoloads from flycheck.el
-\(fn)" t nil)
+(defconst flycheck-mode-line-lighter " FlyC" "\
+The standard lighter for flycheck mode.")
-(autoload 'toggle-follow-mouse "follow-mouse" "\
-Toggle whether moving the mouse automatically selects the window under it.
-If the optional prefix ARG is specified, follow-mouse is enabled if it is
-positive, and disabled otherwise. If called interactively, or the optional
-VERBOSE argument is non-nil, display a confirmation message.
+(autoload 'flycheck-mode "flycheck" "\
+Minor mode for on-the-fly syntax checking.
-\(fn &optional ARG VERBOSE)" t nil)
+When called interactively, toggle `flycheck-mode'. With prefix
+ARG, enable `flycheck-mode' if ARG is positive, otherwise disable
+it.
-;;;***
-\f
-;;;### (autoloads (prelude-kill-other-buffers force-backup-of-buffer
-;;;;;; clean-mode-line prelude-emacs-lisp-mode-defaults prelude-remove-elc-on-save
-;;;;;; interactive-lisp-coding-defaults lisp-coding-defaults prelude-sudo-edit
-;;;;;; jj-untabify-buffer move-line-down move-line-up revert-all-buffers
-;;;;;; org-mycal-export mycal-export-limit org-mycal-export-limit
-;;;;;; my-c-return epa-dired-mode-hook sacha/decrease-font-size
-;;;;;; sacha/increase-font-size sacha/search-word-forward sacha/search-word-backward
-;;;;;; sacha/isearch-yank-current-word bh/get-pom-from-agenda-restriction-or-point
-;;;;;; bh/set-agenda-restriction-lock bh/clock-in-last-task bh/clock-out-maybe
-;;;;;; bh/clock-in-organization-task-as-default bh/clock-in-parent-task
-;;;;;; bh/clock-in-default-task bh/punch-out bh/punch-in bh/find-project-task
-;;;;;; bh/clock-in-to-next bh/narrow-to-project bh/narrow-to-org-project
-;;;;;; bh/narrow-up-one-level bh/narrow-up-one-org-level bh/narrow-to-subtree
-;;;;;; bh/narrow-to-org-subtree bh/restrict-to-file-or-follow bh/org-agenda-to-appt
-;;;;;; bh/skip-non-subprojects bh/skip-projects-and-habits bh/skip-project-tasks-maybe
-;;;;;; bh/skip-projects-and-habits-and-single-tasks bh/skip-project-trees-and-habits
-;;;;;; bh/skip-non-projects bh/skip-non-stuck-projects bh/list-sublevels-for-projects
-;;;;;; bh/list-sublevels-for-projects-indented bh/is-subproject-p
-;;;;;; bh/is-task-p bh/is-project-subtree-p bh/is-project-p org-my-archive-done-tasks
-;;;;;; bh/phone-call bh/prepare-meeting-notes bh/remove-empty-drawer-on-clock-out
-;;;;;; bh/insert-heading-inactive-timestamp bh/insert-inactive-timestamp
-;;;;;; bh/widen bh/org-todo bh/switch-to-scratch bh/make-org-scratch
-;;;;;; bh/skip-non-archivable-tasks bh/set-truncate-lines bh/hide-other
-;;;;;; bh/is-scheduled-late bh/is-scheduled-today bh/is-scheduled
-;;;;;; bh/is-deadline bh/is-pending-deadline bh/is-late-deadline
-;;;;;; bh/is-due-deadline bh/is-not-scheduled-or-deadline bh/agenda-sort
-;;;;;; bh/agenda-sort-test-num bh/agenda-sort-test bh/verify-refile-target
-;;;;;; bh/show-org-agenda ido-disable-line-trucation my-dired-init)
-;;;;;; "ganneff" "ganneff.el" (20855 53694 0 0))
-;;; Generated autoloads from ganneff.el
+When called from Lisp, enable `flycheck-mode' if ARG is omitted,
+nil or positive. If ARG is `toggle', toggle `flycheck-mode'.
+Otherwise behave as if called interactively.
-(autoload 'my-dired-init "ganneff" "\
-Bunch of stuff to run for dired, either immediately or when it's
- loaded.
+In `flycheck-mode' the buffer is automatically syntax-checked
+using the first suitable syntax checker from `flycheck-checkers'.
+Use `flycheck-select-checker' to select a checker for the current
+buffer manually.
-\(fn)" nil nil)
+\\{flycheck-mode-map}
-(autoload 'ido-disable-line-trucation "ganneff" "\
+\(fn &optional ARG)" t nil)
+(defvar global-flycheck-mode nil "\
+Non-nil if Global-Flycheck mode is enabled.
+See the command `global-flycheck-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `global-flycheck-mode'.")
-\(fn)" nil nil)
+(custom-autoload 'global-flycheck-mode "flycheck" nil)
-(autoload 'bh/show-org-agenda "ganneff" "\
+(autoload 'global-flycheck-mode "flycheck" "\
+Toggle Flycheck mode in all buffers.
+With prefix ARG, enable Global-Flycheck mode if ARG is positive;
+otherwise, disable it. If called from Lisp, enable the mode if
+ARG is omitted or nil.
+Flycheck mode is enabled in all buffers where
+`flycheck-mode-on-safe' would do it.
+See `flycheck-mode' for more information on Flycheck mode.
-\(fn)" t nil)
+\(fn &optional ARG)" t nil)
-(autoload 'bh/verify-refile-target "ganneff" "\
-Exclude todo keywords with a done state from refile targets
+(autoload 'flycheck-declare-checker "flycheck" "\
+Declare SYMBOL as syntax checker with DOCSTRING and PROPERTIES.
-\(fn)" nil nil)
+DOCSTRING provides documentation for the new checker. Use
+`flycheck-checker-documentation' to access the documentation
+string of a checker, and `flycheck-describe-checker' to get help
+about a checker.
-(autoload 'bh/agenda-sort-test "ganneff" "\
-Test for agenda sort
+The following PROPERTIES are understood:
-\(fn FN A B)" nil t)
+`:command' A list with the executable (in `car') and the
+arguments (in `cdr') of the syntax checker. The executable is
+checked for existence with `executable-find' before executing the
+checker. The arguments are substituted with
+`flycheck-substitute-argument' before execution, see the
+documentation of this function for a list of special tags allowed
+in arguments.
-(autoload 'bh/agenda-sort-test-num "ganneff" "\
+`:error-patterns' A list of error patterns to parse the output of
+the checker. Each pattern is a list (REGEXP LEVEL). REGEXP is a
+regular expression that matches an error. This regular
+expression may contain match groups extracting specific
+information about the error. The 1st group is the file name, the
+2nd group the line number, the 3rd group the column number and
+the 4th group the error message. A group is ignored if it did
+not match or the match returned an empty string. LEVEL is either
+warning or error and determines the severity of the error message
+parsed with the pattern.
+`:error-parser' A function symbol to parse errors with. The
+function must accept three arguments OUTPUT CHECKER BUFFER, where
+OUTPUT is the output as string and CHECKER the checker symbol
+that was used to check BUFFER. The function must return a list
+of `flycheck-error' objects parsed from OUTPUT.
-\(fn FN COMPFN A B)" nil t)
+`:modes' A major mode symbol or a list thereof. If present the
+checker is only used in these modes.
-(autoload 'bh/agenda-sort "ganneff" "\
-Sorting strategy for agenda items.
-Late deadlines first, then scheduled, then non-late deadlines
+`:predicate' An Emacs Lisp form. If present the checker is only
+used if the form evaluates to a non-nil result in the buffer to
+check.
-\(fn A B)" nil nil)
+`:next-checkers' A list where each element is either a checker
+symbol to run after this checker or a cons cell (PREDICATE
+. CHECKER). In the latter case, CHECKER is the checker symbol to
+run, and the PREDICATE symbol specifies when to run the checker:
+If PREDICATE is `no-errors' run the next checker only if this
+checker returned no errors at all. If PREDICATE is
+`warnings-only', run the next checker only if this checker
+returned only warnings. Only the first usable and
+registered (see `flycheck-registered-checker-p') is run.
-(autoload 'bh/is-not-scheduled-or-deadline "ganneff" "\
+A checker must have a `:command' property, either
+`:error-patterns' or `:error-parser' (but not both), and at least
+one of `:predicate' and `:modes'. If `:predicate' and `:modes'
+are present, both must match for the checker to be used.
+\(fn SYMBOL DOCSTRING &rest PROPERTIES)" nil t)
-\(fn DATE-STR)" nil nil)
+(put 'flycheck-declare-checker 'lisp-indent-function '1)
-(autoload 'bh/is-due-deadline "ganneff" "\
+(put 'flycheck-declare-checker 'doc-string-elt '2)
+(autoload 'flycheck-def-config-file-var "flycheck" "\
+Define SYMBOL as config file variable for CHECKER, with default FILE-NAME.
-\(fn DATE-STR)" nil nil)
+SYMBOL is declared as customizable variable (see `defcustom`)
+providing a configuration file for CHECKER. The CHECKER argument
+is used for documentation purposes only. If given use FILE-NAME
+as initial value.
-(autoload 'bh/is-late-deadline "ganneff" "\
+Use this together with the `config-file' cell in syntax checker
+commands.
+\(fn SYMBOL CHECKER &optional FILE-NAME)" nil t)
-\(fn DATE-STR)" nil nil)
+(put 'flycheck-def-config-file-var 'lisp-indent-function '3)
-(autoload 'bh/is-pending-deadline "ganneff" "\
+(autoload 'flycheck-def-option-var "flycheck" "\
+Define SYMBOL as option variable with INIT-VALUE for CHECKER.
+INIT-VALUE is the initial value for the new variable. DOCSTRING
+is its docstring.
-\(fn DATE-STR)" nil nil)
+The variable is declared with `defcustom', and declared
+buffer-local. CUSTOM-ARGS are forwarded to `defcustom'.
-(autoload 'bh/is-deadline "ganneff" "\
+Use this together with the `option' cell in syntax checker
+commands.
+\(fn SYMBOL INIT-VALUE CHECKER DOCSTRING &rest CUSTOM-ARGS)" nil t)
-\(fn DATE-STR)" nil nil)
+(put 'flycheck-def-option-var 'lisp-indent-function '3)
-(autoload 'bh/is-scheduled "ganneff" "\
+(put 'flycheck-def-option-var 'doc-string-elt '4)
+(autoload 'flycheck-info "flycheck" "\
+Open the Flycheck manual.
-\(fn DATE-STR)" nil nil)
+\(fn)" t nil)
-(autoload 'bh/is-scheduled-today "ganneff" "\
+;;;***
+\f
+;;;### (autoloads (toggle-follow-mouse turn-off-follow-mouse turn-on-follow-mouse)
+;;;;;; "follow-mouse" "follow-mouse.el" (20858 49922 453891 89000))
+;;; Generated autoloads from follow-mouse.el
+(autoload 'turn-on-follow-mouse "follow-mouse" "\
+Moving the mouse will automatically select the window under it.
-\(fn DATE-STR)" nil nil)
+\(fn)" t nil)
-(autoload 'bh/is-scheduled-late "ganneff" "\
+(autoload 'turn-off-follow-mouse "follow-mouse" "\
+Moving the mouse will not automatically select the window under it.
+\(fn)" t nil)
-\(fn DATE-STR)" nil nil)
+(autoload 'toggle-follow-mouse "follow-mouse" "\
+Toggle whether moving the mouse automatically selects the window under it.
+If the optional prefix ARG is specified, follow-mouse is enabled if it is
+positive, and disabled otherwise. If called interactively, or the optional
+VERBOSE argument is non-nil, display a confirmation message.
-(autoload 'bh/hide-other "ganneff" "\
+\(fn &optional ARG VERBOSE)" t nil)
+;;;***
+\f
+;;;### (autoloads (just-one-space-with-newline prelude-kill-other-buffers
+;;;;;; force-backup-of-buffer clean-mode-line prelude-emacs-lisp-mode-defaults
+;;;;;; prelude-remove-elc-on-save interactive-lisp-coding-defaults
+;;;;;; lisp-coding-defaults prelude-sudo-edit jj-untabify-buffer
+;;;;;; move-line-down move-line-up revert-all-buffers org-mycal-export
+;;;;;; mycal-export-limit org-mycal-export-limit my-c-return epa-dired-mode-hook
+;;;;;; sacha/decrease-font-size sacha/increase-font-size sacha/search-word-forward
+;;;;;; sacha/search-word-backward sacha/isearch-yank-current-word
+;;;;;; ido-disable-line-trucation my-dired-init) "ganneff" "ganneff.el"
+;;;;;; (20866 32703 266707 225000))
+;;; Generated autoloads from ganneff.el
-\(fn)" t nil)
+(autoload 'my-dired-init "ganneff" "\
+Bunch of stuff to run for dired when it's loaded.
-(autoload 'bh/set-truncate-lines "ganneff" "\
-Toggle value of truncate-lines and refresh window display.
+\(fn)" nil nil)
-\(fn)" t nil)
+(autoload 'ido-disable-line-trucation "ganneff" "\
-(autoload 'bh/skip-non-archivable-tasks "ganneff" "\
-Skip trees that are not available for archiving
\(fn)" nil nil)
-(autoload 'bh/make-org-scratch "ganneff" "\
-
+(autoload 'sacha/isearch-yank-current-word "ganneff" "\
+Pull current word from buffer into search string.
\(fn)" t nil)
-(autoload 'bh/switch-to-scratch "ganneff" "\
-
+(autoload 'sacha/search-word-backward "ganneff" "\
+Find the previous occurrence of the current word.
\(fn)" t nil)
-(autoload 'bh/org-todo "ganneff" "\
-
+(autoload 'sacha/search-word-forward "ganneff" "\
+Find the next occurrance of the current word.
-\(fn ARG)" t nil)
+\(fn)" t nil)
-(autoload 'bh/widen "ganneff" "\
+(autoload 'sacha/increase-font-size "ganneff" "\
\(fn)" t nil)
-(autoload 'bh/insert-inactive-timestamp "ganneff" "\
+(autoload 'sacha/decrease-font-size "ganneff" "\
\(fn)" t nil)
-(autoload 'bh/insert-heading-inactive-timestamp "ganneff" "\
+(autoload 'epa-dired-mode-hook "ganneff" "\
\(fn)" nil nil)
-(autoload 'bh/remove-empty-drawer-on-clock-out "ganneff" "\
-
+(autoload 'my-c-return "ganneff" "\
+When in minibuffer use `icicle-candidate-action', otherwise use `cua-set-rectangle-mark'.
\(fn)" t nil)
-(autoload 'bh/prepare-meeting-notes "ganneff" "\
-Prepare meeting notes for email
- Take selected region and convert tabs to spaces, mark TODOs with leading >>>, and copy to kill ring for pasting
+(autoload 'org-mycal-export-limit "ganneff" "\
+Limit the export to items that have a date, time and a range. Also exclude certain categories.
-\(fn)" t nil)
+\(fn)" nil nil)
-(autoload 'bh/phone-call "ganneff" "\
-Return name and company info for caller from bbdb lookup
+(autoload 'mycal-export-limit "ganneff" "\
+Limit the export to items that don't match an unwanted category
-\(fn)" t nil)
+\(fn)" nil nil)
-(autoload 'org-my-archive-done-tasks "ganneff" "\
+(autoload 'org-mycal-export "ganneff" "\
\(fn)" t nil)
-(defalias 'archive-done-tasks 'org-my-archive-done-tasks)
-
-(autoload 'bh/is-project-p "ganneff" "\
-Any task with a todo keyword subtask
-
-\(fn)" nil nil)
-
-(autoload 'bh/is-project-subtree-p "ganneff" "\
-Any task with a todo keyword that is in a project subtree.
-Callers of this function already widen the buffer view.
+(autoload 'revert-all-buffers "ganneff" "\
+Refreshes all open buffers from their respective files.
-\(fn)" nil nil)
+\(fn)" t nil)
-(autoload 'bh/is-task-p "ganneff" "\
-Any task with a todo keyword and no subtask
+(autoload 'move-line-up "ganneff" "\
+Move up the current line.
-\(fn)" nil nil)
+\(fn)" t nil)
-(autoload 'bh/is-subproject-p "ganneff" "\
-Any task which is a subtask of another project
+(autoload 'move-line-down "ganneff" "\
+Move down the current line.
-\(fn)" nil nil)
+\(fn)" t nil)
-(autoload 'bh/list-sublevels-for-projects-indented "ganneff" "\
-Set org-tags-match-list-sublevels so when restricted to a subtree we list all subtasks.
- This is normally used by skipping functions where this variable is already local to the agenda.
+(autoload 'jj-untabify-buffer "ganneff" "\
+Get rid of all tabs
-\(fn)" nil nil)
+\(fn)" t nil)
-(autoload 'bh/list-sublevels-for-projects "ganneff" "\
-Set org-tags-match-list-sublevels so when restricted to a subtree we list all subtasks.
- This is normally used by skipping functions where this variable is already local to the agenda.
+(autoload 'prelude-sudo-edit "ganneff" "\
+Edit currently visited file as root.
-\(fn)" nil nil)
+With a prefix ARG prompt for a file to visit.
+Will also prompt for a file to visit if current
+buffer is not visiting a file.
-(autoload 'bh/skip-non-stuck-projects "ganneff" "\
-Skip trees that are not stuck projects
+\(fn &optional ARG)" t nil)
-\(fn)" nil nil)
+(autoload 'lisp-coding-defaults "ganneff" "\
-(autoload 'bh/skip-non-projects "ganneff" "\
-Skip trees that are not projects
\(fn)" nil nil)
-(autoload 'bh/skip-project-trees-and-habits "ganneff" "\
-Skip trees that are projects
-
-\(fn)" nil nil)
+(autoload 'interactive-lisp-coding-defaults "ganneff" "\
-(autoload 'bh/skip-projects-and-habits-and-single-tasks "ganneff" "\
-Skip trees that are projects, tasks that are habits, single non-project tasks
\(fn)" nil nil)
-(autoload 'bh/skip-project-tasks-maybe "ganneff" "\
-Show tasks related to the current restriction.
-When restricted to a project, skip project and sub project tasks, habits, NEXT tasks, and loose tasks.
-When not restricted, skip project and sub-project tasks, habits, and project related tasks.
+(autoload 'prelude-remove-elc-on-save "ganneff" "\
+If you're saving an elisp file, likely the .elc is no longer valid.
\(fn)" nil nil)
-(autoload 'bh/skip-projects-and-habits "ganneff" "\
-Skip trees that are projects and tasks that are habits
-
-\(fn)" nil nil)
+(autoload 'prelude-emacs-lisp-mode-defaults "ganneff" "\
-(autoload 'bh/skip-non-subprojects "ganneff" "\
-Skip trees that are not projects
\(fn)" nil nil)
-(autoload 'bh/org-agenda-to-appt "ganneff" "\
+(autoload 'clean-mode-line "ganneff" "\
\(fn)" t nil)
-(autoload 'bh/restrict-to-file-or-follow "ganneff" "\
-Set agenda restriction to 'file or with argument invoke follow mode.
-I don't use follow mode very often but I restrict to file all the time
-so change the default 'F' binding in the agenda to allow both
-
-\(fn ARG)" t nil)
-
-(autoload 'bh/narrow-to-org-subtree "ganneff" "\
+(autoload 'force-backup-of-buffer "ganneff" "\
\(fn)" nil nil)
-(autoload 'bh/narrow-to-subtree "ganneff" "\
-
+(autoload 'prelude-kill-other-buffers "ganneff" "\
+Kill all buffers but the current one.
+Doesn't mess with special buffers.
\(fn)" t nil)
-(autoload 'bh/narrow-up-one-org-level "ganneff" "\
-
+(autoload 'just-one-space-with-newline "ganneff" "\
+Call just-one-space with a negative argument
-\(fn)" nil nil)
+\(fn)" t nil)
-(autoload 'bh/narrow-up-one-level "ganneff" "\
+;;;***
+\f
+;;;### (autoloads (sign-or-crypt gnus-user-format-function-topic-line
+;;;;;; lld-notmuch-goto-message-in-gnus lld-notmuch-file-to-group
+;;;;;; lld-notmuch-shortcut gnus-scum-expunge message-utils-setup
+;;;;;; gnus-decay-score september-citation-line us-get-only-mail
+;;;;;; my-message-header-setup-hook my-message-add-content gnus-user-format-function-y
+;;;;;; jj-copy-mail-hambox jj-move-mail-spambox jj-forward-issue
+;;;;;; jj-forward-spam-lists-spi jj-forward-ham-lists-spi jj-forward-spam-lists-oftc
+;;;;;; jj-forward-ham-lists-oftc jj-forward-spam-lists-debconf jj-forward-ham-lists-debconf
+;;;;;; jj-forward-spam nnimap-fetch-message-counts nnimap-request-message-counts
+;;;;;; nnimap-message-count-cache-set nnimap-message-count-cache-get
+;;;;;; nnimap-message-count-cache-clear gnus-user-format-function-x
+;;;;;; gnus-user-format-function-t gnus-nnimap-count-format) "ganneff-gnus"
+;;;;;; "ganneff-gnus.el" (20860 23316 93423 840000))
+;;; Generated autoloads from ganneff-gnus.el
+(autoload 'gnus-nnimap-count-format "ganneff-gnus" "\
-\(fn)" t nil)
-(autoload 'bh/narrow-to-org-project "ganneff" "\
+\(fn N)" nil nil)
+(autoload 'gnus-user-format-function-t "ganneff-gnus" "\
-\(fn)" nil nil)
-(autoload 'bh/narrow-to-project "ganneff" "\
+\(fn DUMMY)" nil nil)
+(autoload 'gnus-user-format-function-x "ganneff-gnus" "\
-\(fn)" t nil)
-(autoload 'bh/clock-in-to-next "ganneff" "\
-Switch a task from TODO to NEXT when clocking in.
- Skips capture tasks, projects, and subprojects.
- Switch projects and subprojects from NEXT back to TODO
+\(fn DUMMY)" nil nil)
-\(fn KW)" nil nil)
+(autoload 'nnimap-message-count-cache-clear "ganneff-gnus" "\
-(autoload 'bh/find-project-task "ganneff" "\
-Move point to the parent (project) task if any
\(fn)" nil nil)
-(autoload 'bh/punch-in "ganneff" "\
-Start continuous clocking and set the default task to the
- selected task. If no task is selected set the Organization task
- as the default task.
+(autoload 'nnimap-message-count-cache-get "ganneff-gnus" "\
-\(fn ARG)" t nil)
-(autoload 'bh/punch-out "ganneff" "\
+\(fn GROUP)" nil nil)
+
+(autoload 'nnimap-message-count-cache-set "ganneff-gnus" "\
-\(fn)" t nil)
+\(fn GROUP COUNT)" nil nil)
-(autoload 'bh/clock-in-default-task "ganneff" "\
+(autoload 'nnimap-request-message-counts "ganneff-gnus" "\
-\(fn)" nil nil)
+\(fn GROUP METHOD)" nil nil)
-(autoload 'bh/clock-in-parent-task "ganneff" "\
-Move point to the parent (project) task if any and clock in
+(autoload 'nnimap-fetch-message-counts "ganneff-gnus" "\
-\(fn)" nil nil)
-(autoload 'bh/clock-in-organization-task-as-default "ganneff" "\
+\(fn GROUP METHOD)" nil nil)
+
+(autoload 'jj-forward-spam "ganneff-gnus" "\
\(fn)" t nil)
-(autoload 'bh/clock-out-maybe "ganneff" "\
+(autoload 'jj-forward-ham-lists-debconf "ganneff-gnus" "\
-\(fn)" nil nil)
+\(fn)" t nil)
-(autoload 'bh/clock-in-last-task "ganneff" "\
-Clock in the interrupted task if there is one
- Skip the default task and get the next one.
- A prefix arg forces clock in of the default task.
+(autoload 'jj-forward-spam-lists-debconf "ganneff-gnus" "\
-\(fn ARG)" t nil)
-(autoload 'bh/set-agenda-restriction-lock "ganneff" "\
-Set restriction lock to current task subtree or file if prefix is specified
+\(fn)" t nil)
-\(fn ARG)" t nil)
+(autoload 'jj-forward-ham-lists-oftc "ganneff-gnus" "\
-(autoload 'bh/get-pom-from-agenda-restriction-or-point "ganneff" "\
+\(fn)" t nil)
-\(fn)" nil nil)
+(autoload 'jj-forward-spam-lists-oftc "ganneff-gnus" "\
-(autoload 'sacha/isearch-yank-current-word "ganneff" "\
-Pull current word from buffer into search string.
\(fn)" t nil)
-(autoload 'sacha/search-word-backward "ganneff" "\
-Find the previous occurrence of the current word.
+(autoload 'jj-forward-ham-lists-spi "ganneff-gnus" "\
+
\(fn)" t nil)
-(autoload 'sacha/search-word-forward "ganneff" "\
-Find the next occurrance of the current word.
+(autoload 'jj-forward-spam-lists-spi "ganneff-gnus" "\
+
\(fn)" t nil)
-(autoload 'sacha/increase-font-size "ganneff" "\
+(autoload 'jj-forward-issue "ganneff-gnus" "\
\(fn)" t nil)
-(autoload 'sacha/decrease-font-size "ganneff" "\
+(autoload 'jj-move-mail-spambox "ganneff-gnus" "\
\(fn)" t nil)
-(autoload 'epa-dired-mode-hook "ganneff" "\
+(autoload 'jj-copy-mail-hambox "ganneff-gnus" "\
-\(fn)" nil nil)
+\(fn)" t nil)
-(autoload 'my-c-return "ganneff" "\
-When in minibuffer use `icicle-candidate-action', otherwise use `cua-set-rectangle-mark'.
+(autoload 'gnus-user-format-function-y "ganneff-gnus" "\
+Convert the DATE to DD.MM.YYYY, HH:MM.
-\(fn)" t nil)
+\(fn HEADER)" nil nil)
+
+(autoload 'my-message-add-content "ganneff-gnus" "\
-(autoload 'org-mycal-export-limit "ganneff" "\
-Limit the export to items that have a date, time and a range. Also exclude certain categories.
\(fn)" nil nil)
-(autoload 'mycal-export-limit "ganneff" "\
-Limit the export to items that don't match an unwanted category
+(autoload 'my-message-header-setup-hook "ganneff-gnus" "\
+
\(fn)" nil nil)
-(autoload 'org-mycal-export "ganneff" "\
+(autoload 'us-get-only-mail "ganneff-gnus" "\
+Fetch new mails
+\(fn)" nil nil)
-\(fn)" t nil)
+(autoload 'september-citation-line "ganneff-gnus" "\
-(autoload 'revert-all-buffers "ganneff" "\
-Refreshes all open buffers from their respective files.
\(fn)" t nil)
-(autoload 'move-line-up "ganneff" "\
-Move up the current line.
+(autoload 'gnus-decay-score "ganneff-gnus" "\
+Decay SCORE.
+ This is done according to `gnus-score-decay-constant'
+ and `gnus-score-decay-scale'.
-\(fn)" t nil)
+\(fn SCORE)" nil nil)
-(autoload 'move-line-down "ganneff" "\
-Move down the current line.
+(autoload 'message-utils-setup "ganneff-gnus" "\
+Add menu-entries for message-utils.
-\(fn)" t nil)
+\(fn)" nil nil)
-(autoload 'jj-untabify-buffer "ganneff" "\
-Get rid of all tabs
+(autoload 'gnus-scum-expunge "ganneff-gnus" "\
+Remove this spammer from existance as much as possible.
\(fn)" t nil)
-(autoload 'prelude-sudo-edit "ganneff" "\
-Edit currently visited file as root.
+(autoload 'lld-notmuch-shortcut "ganneff-gnus" "\
-With a prefix ARG prompt for a file to visit.
-Will also prompt for a file to visit if current
-buffer is not visiting a file.
-\(fn &optional ARG)" t nil)
+\(fn)" nil nil)
-(autoload 'lisp-coding-defaults "ganneff" "\
+(autoload 'lld-notmuch-file-to-group "ganneff-gnus" "\
+Calculate the Gnus group name from the given file name.
+\(fn FILE)" nil nil)
-\(fn)" nil nil)
+(autoload 'lld-notmuch-goto-message-in-gnus "ganneff-gnus" "\
+Open a summary buffer containing the current notmuch article.
-(autoload 'interactive-lisp-coding-defaults "ganneff" "\
+\(fn)" t nil)
+(autoload 'gnus-user-format-function-topic-line "ganneff-gnus" "\
-\(fn)" nil nil)
-(autoload 'prelude-remove-elc-on-save "ganneff" "\
-If you're saving an elisp file, likely the .elc is no longer valid.
+\(fn DUMMY)" nil nil)
-\(fn)" nil nil)
+(autoload 'sign-or-crypt "ganneff-gnus" "\
-(autoload 'prelude-emacs-lisp-mode-defaults "ganneff" "\
+\(fn)" t nil)
+
+;;;***
+\f
+;;;### (autoloads (bh/get-pom-from-agenda-restriction-or-point bh/set-agenda-restriction-lock
+;;;;;; bh/clock-in-last-task bh/clock-out-maybe bh/clock-in-organization-task-as-default
+;;;;;; bh/clock-in-parent-task bh/clock-in-default-task bh/punch-out
+;;;;;; bh/punch-in bh/find-project-task bh/clock-in-to-next bh/narrow-to-project
+;;;;;; bh/narrow-to-org-project bh/narrow-up-one-level bh/narrow-up-one-org-level
+;;;;;; bh/narrow-to-subtree bh/narrow-to-org-subtree bh/restrict-to-file-or-follow
+;;;;;; bh/org-agenda-to-appt bh/skip-non-subprojects bh/skip-projects-and-habits
+;;;;;; bh/skip-project-tasks-maybe bh/skip-projects-and-habits-and-single-tasks
+;;;;;; bh/skip-project-trees-and-habits bh/skip-non-projects bh/skip-non-stuck-projects
+;;;;;; bh/list-sublevels-for-projects bh/list-sublevels-for-projects-indented
+;;;;;; bh/is-subproject-p bh/is-task-p bh/is-project-subtree-p bh/is-project-p
+;;;;;; org-my-archive-done-tasks bh/phone-call bh/prepare-meeting-notes
+;;;;;; bh/remove-empty-drawer-on-clock-out bh/insert-heading-inactive-timestamp
+;;;;;; bh/insert-inactive-timestamp bh/widen bh/org-todo bh/switch-to-scratch
+;;;;;; bh/make-org-scratch bh/skip-non-archivable-tasks bh/set-truncate-lines
+;;;;;; bh/hide-other bh/is-scheduled-late bh/is-scheduled-today
+;;;;;; bh/is-scheduled bh/is-deadline bh/is-pending-deadline bh/is-late-deadline
+;;;;;; bh/is-due-deadline bh/is-not-scheduled-or-deadline bh/agenda-sort
+;;;;;; bh/agenda-sort-test-num bh/agenda-sort-test bh/verify-refile-target
+;;;;;; bh/show-org-agenda) "ganneff-org" "ganneff-org.el" (20866
+;;;;;; 32672 234553 345000))
+;;; Generated autoloads from ganneff-org.el
+
+(autoload 'bh/show-org-agenda "ganneff-org" "\
+Show org-modes agenda.
+
+\(fn)" t nil)
+
+(autoload 'bh/verify-refile-target "ganneff-org" "\
+Exclude todo keywords with a done state from refile targets.
\(fn)" nil nil)
-(autoload 'clean-mode-line "ganneff" "\
+(autoload 'bh/agenda-sort-test "ganneff-org" "\
+Test for agenda sort.
+\(fn FN A B)" nil t)
-\(fn)" t nil)
+(autoload 'bh/agenda-sort-test-num "ganneff-org" "\
-(autoload 'force-backup-of-buffer "ganneff" "\
+\(fn FN COMPFN A B)" nil t)
-\(fn)" nil nil)
+(autoload 'bh/agenda-sort "ganneff-org" "\
+Sorting strategy for agenda items.
+Late deadlines first, then scheduled, then non-late deadlines
-(autoload 'prelude-kill-other-buffers "ganneff" "\
-Kill all buffers but the current one.
-Doesn't mess with special buffers.
+\(fn A B)" nil nil)
-\(fn)" t nil)
+(autoload 'bh/is-not-scheduled-or-deadline "ganneff-org" "\
-;;;***
-\f
-;;;### (autoloads (sign-or-crypt gnus-user-format-function-topic-line
-;;;;;; lld-notmuch-goto-message-in-gnus lld-notmuch-file-to-group
-;;;;;; lld-notmuch-shortcut gnus-scum-expunge message-utils-setup
-;;;;;; gnus-decay-score september-citation-line us-get-only-mail
-;;;;;; my-message-header-setup-hook my-message-add-content gnus-user-format-function-y
-;;;;;; jj-copy-mail-hambox jj-move-mail-spambox jj-forward-issue
-;;;;;; jj-forward-spam-lists-spi jj-forward-ham-lists-spi jj-forward-spam-lists-oftc
-;;;;;; jj-forward-ham-lists-oftc jj-forward-spam-lists-debconf jj-forward-ham-lists-debconf
-;;;;;; jj-forward-spam nnimap-fetch-message-counts nnimap-request-message-counts
-;;;;;; nnimap-message-count-cache-set nnimap-message-count-cache-get
-;;;;;; nnimap-message-count-cache-clear gnus-user-format-function-x
-;;;;;; gnus-user-format-function-t gnus-nnimap-count-format) "ganneff-gnus"
-;;;;;; "ganneff-gnus.el" (20852 61403 0 0))
-;;; Generated autoloads from ganneff-gnus.el
-(autoload 'gnus-nnimap-count-format "ganneff-gnus" "\
+\(fn DATE-STR)" nil nil)
+(autoload 'bh/is-due-deadline "ganneff-org" "\
-\(fn N)" nil nil)
-(autoload 'gnus-user-format-function-t "ganneff-gnus" "\
+\(fn DATE-STR)" nil nil)
+(autoload 'bh/is-late-deadline "ganneff-org" "\
-\(fn DUMMY)" nil nil)
-(autoload 'gnus-user-format-function-x "ganneff-gnus" "\
+\(fn DATE-STR)" nil nil)
+(autoload 'bh/is-pending-deadline "ganneff-org" "\
-\(fn DUMMY)" nil nil)
-(autoload 'nnimap-message-count-cache-clear "ganneff-gnus" "\
+\(fn DATE-STR)" nil nil)
+(autoload 'bh/is-deadline "ganneff-org" "\
-\(fn)" nil nil)
-(autoload 'nnimap-message-count-cache-get "ganneff-gnus" "\
+\(fn DATE-STR)" nil nil)
+(autoload 'bh/is-scheduled "ganneff-org" "\
-\(fn GROUP)" nil nil)
-(autoload 'nnimap-message-count-cache-set "ganneff-gnus" "\
+\(fn DATE-STR)" nil nil)
+(autoload 'bh/is-scheduled-today "ganneff-org" "\
-\(fn GROUP COUNT)" nil nil)
-(autoload 'nnimap-request-message-counts "ganneff-gnus" "\
+\(fn DATE-STR)" nil nil)
+(autoload 'bh/is-scheduled-late "ganneff-org" "\
-\(fn GROUP METHOD)" nil nil)
-(autoload 'nnimap-fetch-message-counts "ganneff-gnus" "\
+\(fn DATE-STR)" nil nil)
+(autoload 'bh/hide-other "ganneff-org" "\
-\(fn GROUP METHOD)" nil nil)
-(autoload 'jj-forward-spam "ganneff-gnus" "\
+\(fn)" t nil)
+(autoload 'bh/set-truncate-lines "ganneff-org" "\
+Toggle value of truncate-lines and refresh window display.
\(fn)" t nil)
-(autoload 'jj-forward-ham-lists-debconf "ganneff-gnus" "\
+(autoload 'bh/skip-non-archivable-tasks "ganneff-org" "\
+Skip trees that are not available for archiving
+
+\(fn)" nil nil)
+
+(autoload 'bh/make-org-scratch "ganneff-org" "\
\(fn)" t nil)
-(autoload 'jj-forward-spam-lists-debconf "ganneff-gnus" "\
+(autoload 'bh/switch-to-scratch "ganneff-org" "\
\(fn)" t nil)
-(autoload 'jj-forward-ham-lists-oftc "ganneff-gnus" "\
+(autoload 'bh/org-todo "ganneff-org" "\
-\(fn)" t nil)
+\(fn ARG)" t nil)
-(autoload 'jj-forward-spam-lists-oftc "ganneff-gnus" "\
+(autoload 'bh/widen "ganneff-org" "\
\(fn)" t nil)
-(autoload 'jj-forward-ham-lists-spi "ganneff-gnus" "\
+(autoload 'bh/insert-inactive-timestamp "ganneff-org" "\
\(fn)" t nil)
-(autoload 'jj-forward-spam-lists-spi "ganneff-gnus" "\
+(autoload 'bh/insert-heading-inactive-timestamp "ganneff-org" "\
-\(fn)" t nil)
+\(fn)" nil nil)
-(autoload 'jj-forward-issue "ganneff-gnus" "\
+(autoload 'bh/remove-empty-drawer-on-clock-out "ganneff-org" "\
\(fn)" t nil)
-(autoload 'jj-move-mail-spambox "ganneff-gnus" "\
+(autoload 'bh/prepare-meeting-notes "ganneff-org" "\
+Prepare meeting notes for email
+ Take selected region and convert tabs to spaces, mark TODOs with leading >>>, and copy to kill ring for pasting
+\(fn)" t nil)
+
+(autoload 'bh/phone-call "ganneff-org" "\
+Return name and company info for caller from bbdb lookup
\(fn)" t nil)
-(autoload 'jj-copy-mail-hambox "ganneff-gnus" "\
+(autoload 'org-my-archive-done-tasks "ganneff-org" "\
\(fn)" t nil)
-(autoload 'gnus-user-format-function-y "ganneff-gnus" "\
-Convert the DATE to DD.MM.YYYY, HH:MM.
+(defalias 'archive-done-tasks 'org-my-archive-done-tasks)
-\(fn HEADER)" nil nil)
+(autoload 'bh/is-project-p "ganneff-org" "\
+Any task with a todo keyword subtask
-(autoload 'my-message-add-content "ganneff-gnus" "\
+\(fn)" nil nil)
+(autoload 'bh/is-project-subtree-p "ganneff-org" "\
+Any task with a todo keyword that is in a project subtree.
+Callers of this function already widen the buffer view.
\(fn)" nil nil)
-(autoload 'my-message-header-setup-hook "ganneff-gnus" "\
+(autoload 'bh/is-task-p "ganneff-org" "\
+Any task with a todo keyword and no subtask
+
+\(fn)" nil nil)
+(autoload 'bh/is-subproject-p "ganneff-org" "\
+Any task which is a subtask of another project
\(fn)" nil nil)
-(autoload 'us-get-only-mail "ganneff-gnus" "\
-Fetch new mails
+(autoload 'bh/list-sublevels-for-projects-indented "ganneff-org" "\
+Set org-tags-match-list-sublevels so when restricted to a subtree we list all subtasks.
+ This is normally used by skipping functions where this variable is already local to the agenda.
\(fn)" nil nil)
-(autoload 'september-citation-line "ganneff-gnus" "\
+(autoload 'bh/list-sublevels-for-projects "ganneff-org" "\
+Set org-tags-match-list-sublevels so when restricted to a subtree we list all subtasks.
+ This is normally used by skipping functions where this variable is already local to the agenda.
+
+\(fn)" nil nil)
+
+(autoload 'bh/skip-non-stuck-projects "ganneff-org" "\
+Skip trees that are not stuck projects
+
+\(fn)" nil nil)
+
+(autoload 'bh/skip-non-projects "ganneff-org" "\
+Skip trees that are not projects
+
+\(fn)" nil nil)
+
+(autoload 'bh/skip-project-trees-and-habits "ganneff-org" "\
+Skip trees that are projects
+
+\(fn)" nil nil)
+
+(autoload 'bh/skip-projects-and-habits-and-single-tasks "ganneff-org" "\
+Skip trees that are projects, tasks that are habits, single non-project tasks
+
+\(fn)" nil nil)
+
+(autoload 'bh/skip-project-tasks-maybe "ganneff-org" "\
+Show tasks related to the current restriction.
+When restricted to a project, skip project and sub project tasks, habits, NEXT tasks, and loose tasks.
+When not restricted, skip project and sub-project tasks, habits, and project related tasks.
+
+\(fn)" nil nil)
+
+(autoload 'bh/skip-projects-and-habits "ganneff-org" "\
+Skip trees that are projects and tasks that are habits
+
+\(fn)" nil nil)
+
+(autoload 'bh/skip-non-subprojects "ganneff-org" "\
+Skip trees that are not projects
+
+\(fn)" nil nil)
+
+(autoload 'bh/org-agenda-to-appt "ganneff-org" "\
\(fn)" t nil)
-(autoload 'gnus-decay-score "ganneff-gnus" "\
-Decay SCORE.
- This is done according to `gnus-score-decay-constant'
- and `gnus-score-decay-scale'.
+(autoload 'bh/restrict-to-file-or-follow "ganneff-org" "\
+Set agenda restriction to 'file or with argument invoke follow mode.
+I don't use follow mode very often but I restrict to file all the time
+so change the default 'F' binding in the agenda to allow both
-\(fn SCORE)" nil nil)
+\(fn ARG)" t nil)
+
+(autoload 'bh/narrow-to-org-subtree "ganneff-org" "\
-(autoload 'message-utils-setup "ganneff-gnus" "\
-Add menu-entries for message-utils.
\(fn)" nil nil)
-(autoload 'gnus-scum-expunge "ganneff-gnus" "\
-Remove this spammer from existance as much as possible.
+(autoload 'bh/narrow-to-subtree "ganneff-org" "\
+
\(fn)" t nil)
-(autoload 'lld-notmuch-shortcut "ganneff-gnus" "\
+(autoload 'bh/narrow-up-one-org-level "ganneff-org" "\
\(fn)" nil nil)
-(autoload 'lld-notmuch-file-to-group "ganneff-gnus" "\
-Calculate the Gnus group name from the given file name.
+(autoload 'bh/narrow-up-one-level "ganneff-org" "\
-\(fn FILE)" nil nil)
-(autoload 'lld-notmuch-goto-message-in-gnus "ganneff-gnus" "\
-Open a summary buffer containing the current notmuch article.
+\(fn)" t nil)
+
+(autoload 'bh/narrow-to-org-project "ganneff-org" "\
+
+
+\(fn)" nil nil)
+
+(autoload 'bh/narrow-to-project "ganneff-org" "\
+
\(fn)" t nil)
-(autoload 'gnus-user-format-function-topic-line "ganneff-gnus" "\
+(autoload 'bh/clock-in-to-next "ganneff-org" "\
+Switch a task from TODO to NEXT when clocking in.
+ Skips capture tasks, projects, and subprojects.
+ Switch projects and subprojects from NEXT back to TODO
+\(fn KW)" nil nil)
-\(fn DUMMY)" nil nil)
+(autoload 'bh/find-project-task "ganneff-org" "\
+Move point to the parent (project) task if any
-(autoload 'sign-or-crypt "ganneff-gnus" "\
+\(fn)" nil nil)
+
+(autoload 'bh/punch-in "ganneff-org" "\
+Start continuous clocking and set the default task to the
+ selected task. If no task is selected set the Organization task
+ as the default task.
+
+\(fn ARG)" t nil)
+
+(autoload 'bh/punch-out "ganneff-org" "\
\(fn)" t nil)
+(autoload 'bh/clock-in-default-task "ganneff-org" "\
+
+
+\(fn)" nil nil)
+
+(autoload 'bh/clock-in-parent-task "ganneff-org" "\
+Move point to the parent (project) task if any and clock in
+
+\(fn)" nil nil)
+
+(autoload 'bh/clock-in-organization-task-as-default "ganneff-org" "\
+
+
+\(fn)" t nil)
+
+(autoload 'bh/clock-out-maybe "ganneff-org" "\
+
+
+\(fn)" nil nil)
+
+(autoload 'bh/clock-in-last-task "ganneff-org" "\
+Clock in the interrupted task if there is one
+ Skip the default task and get the next one.
+ A prefix arg forces clock in of the default task.
+
+\(fn ARG)" t nil)
+
+(autoload 'bh/set-agenda-restriction-lock "ganneff-org" "\
+Set restriction lock to current task subtree or file if prefix is specified
+
+\(fn ARG)" t nil)
+
+(autoload 'bh/get-pom-from-agenda-restriction-or-point "ganneff-org" "\
+
+
+\(fn)" nil nil)
+
;;;***
\f
;;;### (autoloads (gnus-alias-determine-identity gnus-alias-use-identity
;;;;;; gnus-alias-select-identity gnus-alias-init) "gnus-alias"
-;;;;;; "gnus-alias.el" (20788 26750 0 0))
+;;;;;; "gnus-alias.el" (20858 49922 453891 89000))
;;; Generated autoloads from gnus-alias.el
(autoload 'gnus-alias-init "gnus-alias" "\
\f
;;;### (autoloads (describe-keymap describe-file describe-option-of-type
;;;;;; describe-option describe-command describe-function) "help-fns+"
-;;;;;; "help-fns+.el" (20788 26750 0 0))
+;;;;;; "help-fns+.el" (20858 49922 453891 89000))
;;; Generated autoloads from help-fns+.el
(autoload 'describe-function "help-fns+" "\
;;;***
\f
+;;;### (autoloads (highlight-indentation-current-column-mode highlight-indentation-set-offset
+;;;;;; highlight-indentation-mode) "highlight-indentation" "highlight-indentation.el"
+;;;;;; (20859 59673 185323 424000))
+;;; Generated autoloads from highlight-indentation.el
+
+(autoload 'highlight-indentation-mode "highlight-indentation" "\
+Highlight indentation minor mode highlights indentation based
+on spaces
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'highlight-indentation-set-offset "highlight-indentation" "\
+Set indentation offset localy in buffer, will prevent
+highlight-indentation from trying to guess indentation offset
+from major mode
+
+\(fn OFFSET)" t nil)
+
+(autoload 'highlight-indentation-current-column-mode "highlight-indentation" "\
+Hilight Indentation minor mode displays
+a vertical bar corresponding to the indentation of the current line
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+\f
;;;### (autoloads (highline-split-window-horizontally highline-split-window-vertically
;;;;;; highline-view-mode highline-mode global-highline-mode highline-customize)
-;;;;;; "highline" "highline.el" (20788 26750 0 0))
+;;;;;; "highline" "highline.el" (20858 49922 457891 109000))
;;; Generated autoloads from highline.el
(autoload 'highline-customize "highline" "\
\f
;;;### (autoloads (ido-better-flex/match ido-better-flex/score ido-better-flex/disable
;;;;;; ido-better-flex/enable) "ido-better-flex" "ido-better-flex.el"
-;;;;;; (20788 26750 0 0))
+;;;;;; (20858 49922 457891 109000))
;;; Generated autoloads from ido-better-flex.el
(autoload 'ido-better-flex/enable "ido-better-flex" "\
;;;***
\f
-;;;### (autoloads (json-mode) "json-mode" "json-mode.el" (20835 57211
-;;;;;; 0 0))
+;;;### (autoloads (json-mode) "json-mode" "json-mode.el" (20858 49922
+;;;;;; 477891 208000))
;;; Generated autoloads from json-mode.el
(autoload 'json-mode "json-mode" "\
;;;***
\f
;;;### (autoloads (keep-buffers-query) "keep-buffers" "keep-buffers.el"
-;;;;;; (20855 52930 0 0))
+;;;;;; (20858 49922 477891 208000))
;;; Generated autoloads from keep-buffers.el
(autoload 'keep-buffers-query "keep-buffers" "\
;;;;;; mpd-get-artists mpd-search mpd-list-directory-recursive mpd-get-directory-info
;;;;;; mpd-get-directory-songs mpd-get-current-song mpd-get-playlist-entry
;;;;;; mpd-get-playlist mpd-set-connection-timeout) "libmpdee" "libmpdee.el"
-;;;;;; (20788 26750 0 0))
+;;;;;; (20858 49922 477891 208000))
;;; Generated autoloads from libmpdee.el
(autoload 'mpd-set-connection-timeout "libmpdee" "\
;;;***
\f
;;;### (autoloads (global-linum-mode linum-mode linum-format) "linum"
-;;;;;; "linum.el" (20788 26750 0 0))
+;;;;;; "linum.el" (20858 49922 481891 228000))
;;; Generated autoloads from linum.el
(defvar linum-format 'dynamic "\
;;;***
\f
;;;### (autoloads (linum-version linum-mode linum-format) "linum-old"
-;;;;;; "linum-old.el" (20788 26750 0 0))
+;;;;;; "linum-old.el" (20858 49922 477891 208000))
;;; Generated autoloads from linum-old.el
(defvar linum-format "%6d " "\
;;;***
\f
-;;;### (autoloads (lua-mode) "lua-mode" "lua-mode.el" (20835 57211
-;;;;;; 0 0))
+;;;### (autoloads (lua-mode) "lua-mode" "lua-mode.el" (20858 49922
+;;;;;; 485891 248000))
;;; Generated autoloads from lua-mode.el
(autoload 'lua-mode "lua-mode" "\
;;;***
\f
;;;### (autoloads (gfm-mode markdown-mode) "markdown-mode" "markdown-mode.el"
-;;;;;; (20835 57211 0 0))
+;;;;;; (20858 49922 485891 248000))
;;; Generated autoloads from markdown-mode.el
(autoload 'markdown-mode "markdown-mode" "\
\f
;;;### (autoloads (markdown-copy-paste-html markdown-copy-rtf markdown-code-copy
;;;;;; markdown-export-pandoc-pdf markdown-export-pdf markdown-export-latex)
-;;;;;; "markdown-mode+" "markdown-mode+.el" (20835 57211 0 0))
+;;;;;; "markdown-mode+" "markdown-mode+.el" (20858 49922 485891
+;;;;;; 248000))
;;; Generated autoloads from markdown-mode+.el
(autoload 'markdown-export-latex "markdown-mode+" "\
\f
;;;### (autoloads (message-xpost-fup2 message-change-subject message-strip-subject-was
;;;;;; message-mark-insert-file message-mark-inserted-region) "message-utils"
-;;;;;; "message-utils.el" (20788 26750 0 0))
+;;;;;; "message-utils.el" (20858 49922 485891 248000))
;;; Generated autoloads from message-utils.el
(autoload 'message-mark-inserted-region "message-utils" "\
;;;***
\f
-;;;### (autoloads (mgp-mode) "mgp-mode-cd" "mgp-mode-cd.el" (20788
-;;;;;; 26750 0 0))
+;;;### (autoloads (mgp-mode) "mgp-mode-cd" "mgp-mode-cd.el" (20858
+;;;;;; 49922 485891 248000))
;;; Generated autoloads from mgp-mode-cd.el
(autoload 'mgp-mode "mgp-mode-cd" "\
\f
;;;### (autoloads (miniedit-install-for-xemacs miniedit-install miniedit
;;;;;; miniedit-new-features miniedit-commentary miniedit-introduction
-;;;;;; miniedit-quick-start) "miniedit" "miniedit.el" (20788 26750
-;;;;;; 0 0))
+;;;;;; miniedit-quick-start) "miniedit" "miniedit.el" (20858 49922
+;;;;;; 489891 267000))
;;; Generated autoloads from miniedit.el
(autoload 'miniedit-quick-start "miniedit" "\
;;;***
\f
;;;### (autoloads (size-indication-mode modelinepos-column-limit)
-;;;;;; "modeline-posn" "modeline-posn.el" (20788 26750 0 0))
+;;;;;; "modeline-posn" "modeline-posn.el" (20858 49922 489891 267000))
;;; Generated autoloads from modeline-posn.el
(defface modelinepos-column-warning '((t (:foreground "Red"))) "\
;;;***
\f
+;;;### (autoloads nil "naquadah-theme" "naquadah-theme.el" (20865
+;;;;;; 30268 310751 538000))
+;;; Generated autoloads from naquadah-theme.el
+
+(when load-file-name (add-to-list 'custom-theme-load-path (file-name-as-directory (file-name-directory load-file-name))))
+
+;;;***
+\f
;;;### (autoloads (org-google-weather) "org-google-weather" "org-google-weather.el"
-;;;;;; (20788 26750 0 0))
+;;;;;; (20858 49922 493891 287000))
;;; Generated autoloads from org-google-weather.el
(autoload 'org-google-weather "org-google-weather" "\
;;;***
\f
-;;;### (autoloads (paredit-mode) "paredit" "paredit.el" (20852 61403
-;;;;;; 0 0))
+;;;### (autoloads (paredit-mode) "paredit" "paredit.el" (20858 49922
+;;;;;; 493891 287000))
;;; Generated autoloads from paredit.el
(autoload 'paredit-mode "paredit" "\
;;;***
\f
-;;;### (autoloads (python-mode run-python) "python" "python.el" (20834
-;;;;;; 52017 0 0))
-;;; Generated autoloads from python.el
-
-(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode))
-
-(add-to-list 'interpreter-mode-alist (cons (purecopy "python") 'python-mode))
-
-(autoload 'run-python "python" "\
-Run an inferior Python process.
-Input and output via buffer named after
-`python-shell-buffer-name'. If there is a process already
-running in that buffer, just switch to it.
-
-With argument, allows you to define CMD so you can edit the
-command used to call the interpreter and define DEDICATED, so a
-dedicated process for the current buffer is open. When numeric
-prefix arg is other than 0 or 4 do not SHOW.
-
-Runs the hook `inferior-python-mode-hook' (after the
-`comint-mode-hook' is run). (Type \\[describe-mode] in the
-process buffer for a list of commands.)
-
-\(fn CMD &optional DEDICATED SHOW)" t nil)
-
-(autoload 'python-mode "python" "\
-Major mode for editing Python files.
-
-\\{python-mode-map}
-Entry to this mode calls the value of `python-mode-hook'
-if that value is non-nil.
-
-\(fn)" t nil)
-
-;;;***
-\f
;;;### (autoloads (global-rainbow-delimiters-mode rainbow-delimiters-mode-disable
;;;;;; rainbow-delimiters-mode-enable rainbow-delimiters-mode) "rainbow-delimiters"
-;;;;;; "rainbow-delimiters.el" (20837 7309 0 0))
+;;;;;; "rainbow-delimiters.el" (20858 49922 497891 307000))
;;; Generated autoloads from rainbow-delimiters.el
(autoload 'rainbow-delimiters-mode "rainbow-delimiters" "\
;;;***
\f
;;;### (autoloads (rainbow-mode) "rainbow-mode" "rainbow-mode.el"
-;;;;;; (20852 61403 0 0))
+;;;;;; (20858 49922 497891 307000))
;;; Generated autoloads from rainbow-mode.el
(autoload 'rainbow-mode "rainbow-mode" "\
;;;***
\f
;;;### (autoloads (register-list) "register-list" "register-list.el"
-;;;;;; (20835 57211 0 0))
+;;;;;; (20858 49922 501891 327000))
;;; Generated autoloads from register-list.el
(autoload 'register-list "register-list" "\
;;;***
\f
;;;### (autoloads (turn-off-screen-lines-mode turn-on-screen-lines-mode
-;;;;;; screen-lines-mode) "screen-lines" "screen-lines.el" (20835
-;;;;;; 57211 0 0))
+;;;;;; screen-lines-mode) "screen-lines" "screen-lines.el" (20858
+;;;;;; 49922 501891 327000))
;;; Generated autoloads from screen-lines.el
(autoload 'screen-lines-mode "screen-lines" "\
;;;***
\f
+;;;### (autoloads nil "solarized" "solarized.el" (20861 32727 719267
+;;;;;; 670000))
+;;; Generated autoloads from solarized.el
+
+(when (and (boundp 'custom-theme-load-path) load-file-name) (add-to-list 'custom-theme-load-path (file-name-as-directory (file-name-directory load-file-name))))
+
+;;;***
+\f
;;;### (autoloads (global-undo-tree-mode undo-tree-mode) "undo-tree"
-;;;;;; "undo-tree.el" (20852 61403 0 0))
+;;;;;; "undo-tree.el" (20858 49922 501891 327000))
;;; Generated autoloads from undo-tree.el
(autoload 'undo-tree-mode "undo-tree" "\
;;;***
\f
;;;### (autoloads (update-autoloads-for-file-in-package-area update-autoloads-in-package-area)
-;;;;;; "update-autoloads" "update-autoloads.el" (20788 26750 0 0))
+;;;;;; "update-autoloads" "update-autoloads.el" (20858 49922 545891
+;;;;;; 545000))
;;; Generated autoloads from update-autoloads.el
(setq load-path (cons (file-name-directory load-file-name) load-path))
;;;***
\f
-;;;### (autoloads (uptimes-this uptimes) "uptimes" "uptimes.el" (20788
-;;;;;; 26750 0 0))
+;;;### (autoloads (uptimes-this uptimes) "uptimes" "uptimes.el" (20858
+;;;;;; 49922 545891 545000))
;;; Generated autoloads from uptimes.el
(autoload 'uptimes "uptimes" "\
;;;***
\f
;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el"
-;;;;;; (20788 26750 0 0))
+;;;;;; (20858 49922 561891 624000))
;;; Generated autoloads from wdired.el
(autoload 'wdired-change-to-wdired-mode "wdired" "\
\f
;;;### (autoloads (worklog-summarize-tasks worklog-task-done worklog-task-stop
;;;;;; worklog-task-begin worklog-do-task) "worklog" "worklog.el"
-;;;;;; (20788 26750 0 0))
+;;;;;; (20858 49922 561891 624000))
;;; Generated autoloads from worklog.el
(autoload 'worklog-do-task "worklog" "\
;;;***
\f
+;;;### (autoloads (writegood-mode) "writegood-mode" "writegood-mode.el"
+;;;;;; (20860 17206 775129 367000))
+;;; Generated autoloads from writegood-mode.el
+
+(autoload 'writegood-mode "writegood-mode" "\
+Colorize issues with the writing in the buffer.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+\f
+;;;### (autoloads (yaml-mode yaml) "yaml-mode" "yaml-mode.el" (20859
+;;;;;; 57200 0 0))
+;;; Generated autoloads from yaml-mode.el
+
+(let ((loads (get 'yaml 'custom-loads))) (if (member '"yaml-mode" loads) nil (put 'yaml 'custom-loads (cons '"yaml-mode" loads))))
+
+(autoload 'yaml-mode "yaml-mode" "\
+Simple mode to edit YAML.
+
+\\{yaml-mode-map}
+
+\(fn)" t nil)
+
+(add-to-list 'auto-mode-alist '("\\.ya?ml$" . yaml-mode))
+
+;;;***
+\f
;;;### (autoloads nil nil ("beamer.el" "bind-key.el" "buildd-gnus.el"
-;;;;;; "crypt++.el" "dash.el" "ldap-mode.el" "mingus-stays-home.el"
-;;;;;; "mingus.el" "moinmoin-mode.el" "naquadah-theme.el" "nnir.el"
-;;;;;; "nntodo.el" "randomsig.el" "typing.el" "use-package.el" "volatile-highlights.el")
-;;;;;; (20855 53701 778659 505000))
+;;;;;; "crypt++.el" "dash.el" "filladapt.el" "ganneff2.el" "ldap-mode.el"
+;;;;;; "mingus-stays-home.el" "mingus.el" "moinmoin-mode.el" "nnir.el"
+;;;;;; "nntodo.el" "randomsig.el" "region-bindings-mode.el" "s.el"
+;;;;;; "typing.el" "use-package.el" "volatile-highlights.el") (20866
+;;;;;; 32858 445377 86000))
;;;***
\f
-;;;### (autoloads (bbdb-utilities-pgp) "bbdb-pgp" "bbdb-pgp.el" (20788
-;;;;;; 26750 0 0))
+;;;### (autoloads (bbdb-utilities-pgp) "bbdb-pgp" "bbdb-pgp.el" (20858
+;;;;;; 49922 393890 791000))
;;; Generated autoloads from bbdb-pgp.el
(let ((loads (get 'bbdb-utilities-pgp 'custom-loads))) (if (member '"bbdb-pgp" loads) nil (put 'bbdb-utilities-pgp 'custom-loads (cons '"bbdb-pgp" loads))))