From fe1a509acf2d7acbef2ab18b1ab8a9f2f2966711 Mon Sep 17 00:00:00 2001 From: Daniel Borchmann Date: Wed, 24 Jan 2018 20:50:04 +0100 Subject: [PATCH] =?UTF-8?q?[Timeline]=20Don=E2=80=99t=20use=20=E2=80=98cl?= =?UTF-8?q?=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lot’s of ‘car’s and ‘cdr’s now! --- site-lisp/timeline-tools.el | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/site-lisp/timeline-tools.el b/site-lisp/timeline-tools.el index c3acaea..fe03d0a 100644 --- a/site-lisp/timeline-tools.el +++ b/site-lisp/timeline-tools.el @@ -8,8 +8,6 @@ ;;; Code: -(eval-when-compile - (require 'cl)) (require 'dash) (require 'org) (require 'org-clock) @@ -214,8 +212,8 @@ Markers to org mode tasks are combined into a list." (org-entry-get marker "CATEGORY"))) timeline))) (mapcar (lambda (cluster) - (list (first (first cluster)) ; start of first entry - (second (car (last cluster))) ; end of last entry + (list (caar cluster) ; start of first entry + (cadar (last cluster)) ; end of last entry (mapcar #'third cluster))) new-timeline))) @@ -224,31 +222,32 @@ Markers to org mode tasks are combined into a list." A slot is short if it is not longer than THRESHOLD seconds. Resulting gaps are distributed evenly among adjacent slots." - (let ((start (first (first timeline))) - (end (second (car (last timeline)))) + (let ((start (caar timeline)) + (end (cadar (last timeline))) new-timeline) ;; remove all slots that are too short (setq new-timeline (cl-remove-if (lambda (entry) - (<= (- (second entry) (first entry)) + (<= (- (cadr entry) (car entry)) timeline-tools-short-task-threshold)) timeline)) ;; reset start and end times - (setf (first (first new-timeline)) start) - (setf (second (car (last new-timeline))) end) + (setf (caar new-timeline) start) + (setf (cadar (last new-timeline)) end) ;; distribute gaps evenly among adjacent slots - (do ((sub-timeline new-timeline (cdr sub-timeline))) + (cl-do + ((sub-timeline new-timeline (cdr sub-timeline))) ((null (cdr sub-timeline))) - (let* ((entry-1 (first sub-timeline)) - (entry-2 (second sub-timeline)) - (end-1 (second entry-1)) - (start-2 (first entry-2))) + (let* ((entry-1 (car sub-timeline)) + (entry-2 (cadr sub-timeline)) + (end-1 (cadr entry-1)) + (start-2 (car entry-2))) (when (not (= end-1 start-2)) (let ((middle (/ (+ end-1 start-2) 2))) - (setf (second entry-1) middle) - (setf (first entry-2) middle))))) + (setf (cadr entry-1) middle) + (setf (car entry-2) middle))))) new-timeline)) ;;;###autoload @@ -275,7 +274,7 @@ When called interactively, START and END are queried with (dolist (cluster timeline) (cl-destructuring-bind (start end markers) cluster (insert (format "| %s | %s | %s | %s min | " - (org-entry-get (first markers) "CATEGORY") + (org-entry-get (car markers) "CATEGORY") (format-time-string "%Y-%m-%d %H:%M" start) (format-time-string "%Y-%m-%d %H:%M" end) (floor (/ (- end start) 60))))