From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 ) for ; 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 ) for ; 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 ; 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 ) 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 ) 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 ) 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 ; 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 Date: Mon, 9 Sep 2024 23:03:59 -0400 Message-ID: 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." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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
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.
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 c= ode 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 w= ith orgs other timer commands such as start and stop.

<= div>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=C2=A0https://github.com/Lemanrp.

'''
;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.

(defun org-timer-sequence-start ()
=C2= =A0 "Start a sequence of timers with pauses in between."
=C2= =A0 (interactive)
=C2=A0 (let ((timer-sequence (mapcar #'string-to-n= umber
=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: ")))))
=C2=A0 =C2=A0 (= cl-labels ((run-timer-sequence (seq)
=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
=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
=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
=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)
=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
=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 "Timer started for %d minutes..." next-tim= e)
=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
=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 #'run= -timer-sequence seq)))))
=C2=A0 =C2=A0 =C2=A0 ;; Start the first timer b= y calling the local function
=C2=A0 =C2=A0 =C2=A0 (run-timer-sequence ti= mer-sequence))))
'''
--00000000000099324d0621bb20f6--