lisp/my-planner.el
author Fabien Ninoles <fninoles@genvidtech.com>
Mon, 23 Jan 2017 07:21:24 -0500
changeset 20 b0af77bc62ec
parent 1 a234a7579958
permissions -rw-r--r--
Add powershell profile.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     1
;;;_ Planner configuration
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     2
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     3
;; In emacs21/sarge, schedule doesn't exist.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     4
;; But in planner-el/etch, schedule is in contrib.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     5
(if (not (locate-library "schedule"))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     6
    (setcdr (last load-path)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     7
		     '("/usr/share/emacs/site-lisp/planner-el/contrib")))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     8
(if (locate-library "schedule")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     9
    (require 'planner-timeclock))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    10
;(require 'planner-wl)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    11
;(planner-wl-insinuate)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    12
(require 'planner-diary)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    13
(planner-diary-insinuate)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    14
(require 'planner-export-diary)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    15
(planner-calendar-insinuate)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    16
(require 'planner-appt)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    17
(planner-appt-use-tasks)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    18
(planner-appt-insinuate)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    19
(require 'planner-cyclic)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    20
(planner-appt-schedule-cyclic-insinuate)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    21
(planner-appt-calendar-insinuate)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    22
(require 'planner-timeclock-summary)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    23
(planner-timeclock-summary-insinuate)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    24
(require 'planner-timeclock-summary-proj)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    25
(planner-timeclock-summary-proj-insinuate)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    26
(require 'planner-schedule)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    27
(require 'planner-bbdb)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    28
(require 'planner-erc)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    29
(require 'planner-bookmark)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    30
(require 'remember-planner)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    31
(require 'planner-log-edit)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    32
(planner-install-extra-task-keybindings)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    33
(planner-install-extra-context-keybindings)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    34
(require 'planner-trunk)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    35
(require 'planner-multi)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    36
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    37
; Local functions for planner
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    38
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    39
(defvar my-planner-week-summary-buffer
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    40
  "Week-%Y-%U.muse")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    41
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    42
(defvar my-planner-week-summary-regexp
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    43
  "Week-\\([0-9]{4}\\)-\\([0-5][0-9]\\)\\.muse")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    44
  
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    45
(defun first-day-of-the-week (date)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    46
  (progn 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    47
    ;; (SEC MINUTE HOUR DAY MONTH YEAR DOW DST ZONE)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    48
    (setcar (nthcdr 3 date)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    49
	    (- (elt date 3)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    50
	       (elt date 6)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    51
    (setcar (nthcdr 6 date) 0)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    52
    (apply 'encode-time date)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    53
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    54
(defun last-day-of-the-week (date)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    55
  (progn 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    56
    ;; (SEC MINUTE HOUR DAY MONTH YEAR DOW DST ZONE)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    57
    (setcar (nthcdr 3 date)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    58
	    (+ (elt date 3)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    59
	       (- 6 (elt date 6))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    60
    (setcar (nthcdr 6 date) 6)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    61
    (apply 'encode-time date)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    62
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    63
(defun my-planner-file-to-date (filename)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    64
  (let ((calendar-date
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    65
	 (planner-filename-to-calendar-date filename)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    66
    (decode-time (encode-time 0 0 0 (elt calendar-date 1)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    67
		      (elt calendar-date 0) (elt calendar-date 2)))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    68
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    69
(defun my-planner-week-summary (week-day)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    70
  (interactive (list (planner-read-date "Select a day of the week" t)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    71
  (let ((date
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    72
	 (my-planner-file-to-date week-day)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    73
  (planner-timeclock-summary-show-range 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    74
   (planner-date-to-filename (first-day-of-the-week date))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    75
   (planner-date-to-filename (last-day-of-the-week date)))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    76
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    77
;;;_ redefinition of planner-maybe-remove-file 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    78
;;
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    79
;; The kill-buffer of this function make me crazy.  I modify it so you
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    80
;; can change it's behavior using this custom variable.  Personnaly, I
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    81
;; used ignore and let emacs ask me to save it when I kill it.  Take
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    82
;; also note that I change the regexp to remove any file that only
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    83
;; have empty section (section with just a first level heading).  This
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    84
;; is to cope with the new Events and Schedule sections.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    85
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    86
(defcustom planner-not-empty-file 'kill-this-buffer
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    87
  "Command to run when a planner file is not empty.  Can be
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    88
kill-this-buffer, save-buffer or ignore for example."
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    89
  :type 'function
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    90
  :group 'planner)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    91
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    92
(defvar local-planner-empty-line-regexp "\\(\\* .*\\|[[:space:]]*\\|No entries[[:space:]]*\\)")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    93
(defvar planner-empty-file-regexp 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    94
  (concat "\\(^" local-planner-empty-line-regexp
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    95
          "\n\\)*[[:space:]]*\\'"))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    96
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    97
; redefinition
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    98
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    99
(defun planner-maybe-remove-file ()
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   100
  "This function remove the file if it contains only first level
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   101
headings and empty lines."
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   102
  (interactive)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   103
  (goto-char (point-min))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   104
  (if (looking-at planner-empty-file-regexp)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   105
      (let ((filename buffer-file-name))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   106
	(set-buffer-modified-p nil)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   107
	(kill-buffer (current-buffer))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   108
	(delete-file filename))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   109
    (funcall planner-not-empty-file)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   110
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   111
;;;_ Planner automatic retrunl
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   112
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   113
;; Should all been rework because planner-trunk just
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   114
;; look for Projects page.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   115
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   116
;; (defun my-planner-trunk-tasks-build-rules ()
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   117
;;   (let ((rule-set nil))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   118
;;     (save-excursion
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   119
;;       (save-restriction
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   120
;; 	(when (planner-narrow-to-section 'tasks)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   121
;; 	  (goto-char (point-min))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   122
;; 	  (while (not (equal (point-max) (point)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   123
;; 	    (let ((current-task (planner-task-description 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   124
;; 				 (planner-current-task-info))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   125
;; 	      (if current-task
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   126
;; 		  (if (string-match "|\\(.*\\)|" current-task)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   127
;; 		      (let ((category
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   128
;; 			     (substring current-task 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   129
;; 					(match-beginning 1)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   130
;; 					(match-end 1))))		       
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   131
;; 			(add-to-list 'rule-set
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   132
;; 			      (list (format "|%s|" category)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   133
;; 					  category))))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   134
;; 	    (forward-line)))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   135
;;     rule-set))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   136
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   137
;; (defun my-planner-trunk-tasks (&optional force)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   138
;;   (interactive "P")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   139
;;   (let ((page-name (planner-page-name)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   140
;;     (if (not (catch 'done 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   141
;; 	       (mapc (lambda (rule)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   142
;; 		       (if (string-match (car rule) page-name)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   143
;; 			   (if force
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   144
;; 			       (progn 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   145
;; 				 (delq rule planner-trunk-rule-list)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   146
;; 				 (throw 'done nil))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   147
;; 			     (throw 'done t))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   148
;; 		     planner-trunk-rule-list)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   149
;; 	       nil))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   150
;; 	(add-to-list 'planner-trunk-rule-list
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   151
;; 		     (list (regexp-quote (planner-page-name)) 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   152
;; 			   nil (my-planner-trunk-tasks-build-rules))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   153
;;       (planner-trunk-tasks force)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   154
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   155
;;;_ Planner replan
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   156
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   157
;; Remember last day of plan so that it can go back correctly in time.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   158
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   159
(defcustom my-planner-last-replan-day (calendar-current-date)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   160
  "Last day plan."
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   161
  :type '(list
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   162
	       (integer :tag "day")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   163
	       (integer :tag "month")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   164
	       (integer :tag "year")))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   165
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   166
(defun my-planner-replan ()
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   167
  "Run plan with the last day checked."
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   168
  (interactive)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   169
  (let ((current-date (calendar-current-date))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   170
	(number-of-days 0))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   171
    (setq number-of-days
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   172
	  (- (calendar-absolute-from-gregorian current-date)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   173
	     (calendar-absolute-from-gregorian my-planner-last-replan-day)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   174
    (if (> number-of-days 0)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   175
	(plan number-of-days))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   176
    (customize-save-variable 'my-planner-last-replan-day current-date)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   177
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   178
(defun my-planner-page-template (sections)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   179
  "Function to create a planner page."
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   180
  (mapconcat (lambda (section)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   181
	       (concat "* " section))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   182
	     sections "\n\n\n"))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   183
  
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   184
(defun my-planner-day-page-template ()
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   185
  "Function template to insert a planner day page."
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   186
  (my-planner-page-template ["Évènements" "Tâches" "Rendez-vous" "Horaire" "Notes" "Activités"]))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   187
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   188
(defun my-planner-plan-page-template ()
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   189
  "Function template to insert a planner day page."
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   190
  (my-planner-page-template ["Tâches" "Notes" "Rapport d'activités"]))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   191
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   192
;;;_ Set the diary export file
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   193
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   194
;; Should have been used with a (get-planner-default-directory) too.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   195
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   196
(setq planner-export-diary-number-of-days 7
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   197
      diary-file "~/Plans/diary"
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   198
      planner-export-diary-file "~/Plans/diary.planner")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   199
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   200
;; global key mapping
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   201
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   202
(defvar my-planner-keymap
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   203
  (let ((map (make-sparse-keymap)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   204
    (mapcar
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   205
     (lambda (args) 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   206
       (apply (lambda (key symbol)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   207
		(define-key map key symbol)) args))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   208
     '(("a" planner-create-task)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   209
       ("b" planner-create-task-from-buffer)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   210
       ("c" timeclock-change)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   211
       ("f" planner-appt-forthcoming-display)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   212
       ("p" planner-goto-plan-page)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   213
       ("i" timeclock-in)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   214
       ("j" planner-goto)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   215
       ("o" timeclock-out)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   216
       ("r" timeclock-reread-log)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   217
       ("s" planner-goto-today)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   218
       ("v" timeclock-status-string)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   219
       ("w" my-planner-week-summary)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   220
       ("x" planner-index)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   221
    map)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   222
  "Global planner keymap I love to use.")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   223
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   224
(define-key ctl-x-map "t" my-planner-keymap)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   225
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   226
(provide 'my-planner)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   227