From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <emacs-orgmode-bounces+larch=yhetil.org@gnu.org>
Received: from mp0.migadu.com ([2001:41d0:303:e224::])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	by ms13.migadu.com with LMTPS
	id qNxrCni332btygAAqHPOHw:P1
	(envelope-from <emacs-orgmode-bounces+larch=yhetil.org@gnu.org>)
	for <larch@yhetil.org>; Tue, 10 Sep 2024 03:05:28 +0000
Received: from aspmx1.migadu.com ([2001:41d0:303:e224::])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	by mp0.migadu.com with LMTPS
	id qNxrCni332btygAAqHPOHw
	(envelope-from <emacs-orgmode-bounces+larch=yhetil.org@gnu.org>)
	for <larch@yhetil.org>; Tue, 10 Sep 2024 05:05:28 +0200
X-Envelope-To: larch@yhetil.org
Authentication-Results: aspmx1.migadu.com;
	dkim=pass header.d=gmail.com header.s=20230601 header.b=CRpISGHZ;
	dmarc=pass (policy=none) header.from=gmail.com;
	spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org;
	s=key1; t=1725937528;
	h=from:from:sender:sender:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:mime-version:mime-version:
	 content-type:content-type:list-id:list-help:list-unsubscribe:
	 list-subscribe:list-post:dkim-signature;
	bh=9PGYhPA+KQkB1bwwYwkBKkRS5UmxayMfmy/KDXm2WRo=;
	b=YlodgEwE2nc642JhHTfp+ksm9Jfi4HFYlPgPcq5U8qEfc2j2ItDfy74Z3ATjWo9+MbTLY/
	JBU0OwKh9/FkhdOk3p1Jtk9ovxXH4Xjvc9B4JqUOE3/88ACirkMVd0J2rFSQlnQeFRYF+K
	09EQV3UajiXUTMth9i9M2l8+syGX3z7davEFSb3WxuBSrSj57NHsMh+OPr8mPQ3Mv1KVeI
	h5Dz3fsVWFADgFI44pX1m3ICUMBImfr4jKkpOWvUA6STuUwLmppVPkNDik6Gz7+/3AXlQr
	o2dJMUtn1iVXJYVSGv8HrMSjWE5MXanp4NR+I1VEXj81Yk0ebncJQdXMjQxQIw==
ARC-Seal: i=1; s=key1; d=yhetil.org; t=1725937528; a=rsa-sha256; cv=none;
	b=tJLJwlA3eX26T4dAeqTK6U+d2yand6w5fSDtgLEXQdsLzGDxV4fH6iG1Vxp6772MbJPE7j
	KttxllNlNsba5CKKHrNGqx398AfcMV53J15/GJ3S1lbwdLlmbBE9i6N5XX6ZpoZMI3PNDT
	r1rQB+vzEu6m3kE3iVZJdkD+aE0OqFymI6wTbtISKuApX4oVVyWkRW8G9e0Qlt3qMF5Dyv
	k0nx1qDYtQlDd+h1dd1ARiszRIu/SKXYUuvXHxmvpwCpHFnYjAYW2QzavqInykEy3BNGTw
	wdjnOwi6JMfEUDnYs4QZz1rnOIcOr0FfZZu2h492gJjiveYXly18I3RlBaZOHA==
ARC-Authentication-Results: i=1;
	aspmx1.migadu.com;
	dkim=pass header.d=gmail.com header.s=20230601 header.b=CRpISGHZ;
	dmarc=pass (policy=none) header.from=gmail.com;
	spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by aspmx1.migadu.com (Postfix) with ESMTPS id 619341DC05
	for <larch@yhetil.org>; Tue, 10 Sep 2024 05:05:27 +0200 (CEST)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <emacs-orgmode-bounces@gnu.org>)
	id 1snrAs-0001Hd-Op; Mon, 09 Sep 2024 23:04:14 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ryan.leman92@gmail.com>)
 id 1snrAr-0001HN-3q
 for emacs-orgmode@gnu.org; Mon, 09 Sep 2024 23:04:13 -0400
Received: from mail-yb1-xb29.google.com ([2607:f8b0:4864:20::b29])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <ryan.leman92@gmail.com>)
 id 1snrAp-0000gD-AP
 for emacs-orgmode@gnu.org; Mon, 09 Sep 2024 23:04:12 -0400
Received: by mail-yb1-xb29.google.com with SMTP id
 3f1490d57ef6-e1651f48c31so5524176276.0
 for <emacs-orgmode@gnu.org>; Mon, 09 Sep 2024 20:04:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1725937450; x=1726542250; darn=gnu.org;
 h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
 :date:message-id:reply-to;
 bh=9PGYhPA+KQkB1bwwYwkBKkRS5UmxayMfmy/KDXm2WRo=;
 b=CRpISGHZIbmE1rh9O1eLgRyvGmQZqrI3t7yHZPf0FdDC3Yp+KlZVxNKBQvKaWH2a5r
 2nbQnzzphK3si3LvULQ+Xbb1EQzYebz9v/JRT/S2ryrMnLnY4KakR/1dm2Yhlg5rFi3L
 Fgt685cVHMRxQ23/RDs4Q2HCDxcVufzg6ZVNGULXe0kNoXaBfi3J5MVJoCYQz1/hqzHQ
 4KARg+AK5JxrHCbh4LnXCYOaelcJ5Ms6X22a8LfKq/ayOx7WjlsgBIfZExYWvK12bicv
 MUVTZsAde8swnysCI8qV4tLaEF4uHa2mrej/XMvgicyE4nFw1RboqG/4SKQXnsb4KiYm
 +wBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1725937450; x=1726542250;
 h=to:subject:message-id:date:from:mime-version:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=9PGYhPA+KQkB1bwwYwkBKkRS5UmxayMfmy/KDXm2WRo=;
 b=vICnS7mZLJGFAtrocL5nKe2+AHueU8QR7qkQywdBYqthS8nqaquzNQXgjADsErYcfX
 xO/MfdMP2uw9AXJhEEJJnjG70RZdpUSxUBngfr/fRgGSqT+BcSXN3SU1acCdP41mCcqc
 7tjjiLoVmp5FCMiMOdxo9oNzYofmyT14gjUpBMCNY/PL0XuN+bR563XeA93+KgG/MZ3x
 MQ6BIuV22sHHdxu5D44M/qPjGnrGcu5gKaew6y/PpfKr7OBSz2QmiBNhyEhTi80TrR2k
 lWmto3WR9buka5eh8Iiz/brxS18esFC6opr9eKUDr4CijQUyCp+9mW4fy3pAdFjzXGsE
 mKSg==
X-Gm-Message-State: AOJu0YyEWxeHTy8nKe4uCbHcqcBx0lrQullo3nMTtuJvYy37G7wyz6oR
 GWhu2MwygGxWEUSJnr8dw4q3mCLgRnpAVsQD9Lh2hQ7C9vgBRR3wiUJ7xlGUgvuuD1RwaZM4axf
 +8uCsA41sbqrZDodOyX8ZDqSRJyYYld4n
X-Google-Smtp-Source: AGHT+IHW89Ahf6osu+b5o+myzgARHR0fL8pmU4UB0vv1XNWW1DgpTfPgt/4kRkGTmTikIGqeji3Tv6wEFWkfwnriG58=
X-Received: by 2002:a05:6902:10c4:b0:e1c:a898:af85 with SMTP id
 3f1490d57ef6-e1d3487f2bamr14573901276.20.1725937449772; Mon, 09 Sep 2024
 20:04:09 -0700 (PDT)
MIME-Version: 1.0
From: Ryan Leman <ryan.leman92@gmail.com>
Date: Mon, 9 Sep 2024 23:03:59 -0400
Message-ID: <CA+e5oH-Y=ZBtP3ZGOnU-eGdbNf=9zkWGhs6z0uzXZOmFjwUuUA@mail.gmail.com>
Subject: Feature mostly complete
To: emacs-orgmode@gnu.org
Content-Type: multipart/alternative; boundary="00000000000099324d0621bb20f6"
Received-SPF: pass client-ip=2607:f8b0:4864:20::b29;
 envelope-from=ryan.leman92@gmail.com; helo=mail-yb1-xb29.google.com
X-Spam_score_int: -17
X-Spam_score: -1.8
X-Spam_bar: -
X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-BeenThere: emacs-orgmode@gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "General discussions about Org-mode." <emacs-orgmode.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/emacs-orgmode>,
 <mailto:emacs-orgmode-request@gnu.org?subject=unsubscribe>
List-Archive: <https://lists.gnu.org/archive/html/emacs-orgmode>
List-Post: <mailto:emacs-orgmode@gnu.org>
List-Help: <mailto:emacs-orgmode-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/emacs-orgmode>,
 <mailto:emacs-orgmode-request@gnu.org?subject=subscribe>
Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org
Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org
X-Migadu-Flow: FLOW_IN
X-Migadu-Country: US
X-Migadu-Queue-Id: 619341DC05
X-Migadu-Scanner: mx12.migadu.com
X-Migadu-Spam-Score: -9.81
X-Spam-Score: -9.81
X-TUID: EIevqFmih3P+

--00000000000099324d0621bb20f6
Content-Type: text/plain; charset="UTF-8"

So I wanted a timer that can take several times and in sequence complete
each timer. This is especially useful for things such as studying where you
might want a timer for studying then another right after for the break
without having to run the same command again.

So this simply takes in text input, requested it to be like: 90 30 90
120.... etc so space separated.

The only issue I had was some error by freeDesktop essentially saying this
had timed out but this code is about 90% done I'd assume unless that
timeout issue is harder to solve than I'm assuming. Would you all want to
'polish' it up and maybe add it? Seems very small but useful and even the
name goes well with orgs other timer commands such as start and stop.

Only thing I'd want is credit via some acknowledgement, can even be in a
code comment :)
here is my github if you wanted it https://github.com/Lemanrp.

'''
;same as org-timer-start but accepts string input of numbers then starts
each timer in order. Good for things like studying where you might schedule
study time, break time, study time, break etc. Obviously good for any task
you need timers right after timer.

(defun org-timer-sequence-start ()
  "Start a sequence of timers with pauses in between."
  (interactive)
  (let ((timer-sequence (mapcar #'string-to-number
                                (split-string (read-string "Enter series of
numbers space-separated: ")))))
    (cl-labels ((run-timer-sequence (seq)
                                    (when seq  ;; Ensure the list is not
empty
                                      (let ((next-time (pop seq)))  ;; Get
the first element and shorten seq list
                                        ;; Set the timer for the next
interval
                                        (org-timer-set-timer next-time)
                                        ;; Display a message indicating the
timer has started
                                        (message "Timer started for %d
minutes..." next-time)
                                        ;; Schedule the next step in the
sequence
                                        (run-at-time (* next-time 60) nil
#'run-timer-sequence seq)))))
      ;; Start the first timer by calling the local function
      (run-timer-sequence timer-sequence))))
'''

--00000000000099324d0621bb20f6
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">So I wanted a timer that can take several times and in seq=
uence complete each timer. This=C2=A0is especially=C2=A0useful for things s=
uch as studying=C2=A0where you might want a timer for studying then another=
 right after for the break without having to run the same command again.<br=
><br>So this simply takes in text input, requested it to be like: 90 30 90 =
120.... etc so space separated.<div><br></div><div>The only issue I had was=
 some error by freeDesktop essentially saying this had timed out but this c=
ode is about 90% done I&#39;d assume unless that timeout issue is harder to=
 solve than I&#39;m assuming. Would you all want to &#39;polish&#39; it up =
and maybe add it? Seems very small but useful and even the name goes well w=
ith orgs other timer commands such as start and stop.</div><div><br></div><=
div>Only thing I&#39;d want is credit via some acknowledgement, can even be=
 in a code comment :)</div><div>here is my github if you wanted it=C2=A0<a =
href=3D"https://github.com/Lemanrp">https://github.com/Lemanrp</a>.</div><d=
iv><br></div><div>&#39;&#39;&#39;</div><div>;same as org-timer-start but ac=
cepts string input of numbers then starts each timer in order. Good for thi=
ngs like studying where you might schedule study time, break time, study ti=
me, break etc. Obviously good for any task you need timers right after time=
r.<br></div><div><br></div><div>(defun org-timer-sequence-start ()<br>=C2=
=A0 &quot;Start a sequence of timers with pauses in between.&quot;<br>=C2=
=A0 (interactive)<br>=C2=A0 (let ((timer-sequence (mapcar #&#39;string-to-n=
umber<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (split-string (read-string &q=
uot;Enter series of numbers space-separated: &quot;)))))<br>=C2=A0 =C2=A0 (=
cl-labels ((run-timer-sequence (seq)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 (when seq =C2=A0;; Ensure the list is not empty<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (let ((next-time (pop =
seq))) =C2=A0;; Get the first element and shorten seq list<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Set the timer for t=
he next interval<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 (org-timer-set-timer next-time)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Display a message indicating the =
timer has started<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 (message &quot;Timer started for %d minutes...&quot; next-tim=
e)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; S=
chedule the next step in the sequence<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (run-at-time (* next-time 60) nil #&#39;run=
-timer-sequence seq)))))<br>=C2=A0 =C2=A0 =C2=A0 ;; Start the first timer b=
y calling the local function<br>=C2=A0 =C2=A0 =C2=A0 (run-timer-sequence ti=
mer-sequence))))<br></div><div>&#39;&#39;&#39;</div></div>

--00000000000099324d0621bb20f6--