emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Mikhail Skorzhinskii <mskorzhinskiy@eml.cc>
To: emacs-orgmode@gnu.org
Subject: [PATCHES 1, 2/2 v2] ox-icalendar: add customisations for summary cookies and allow zero alarm
Date: Mon, 21 Sep 2020 13:40:28 +0200	[thread overview]
Message-ID: <2104640.gBco5zGie4@trex230> (raw)

[-- Attachment #1: Type: text/plain, Size: 525 bytes --]

Hello forum,

I've already submitted these features to the mailing list:

  https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00628.html

But even if these changes are really tiny and minor, they are touching very 
different functionality of org-mode. It wasn't good mixing my suggestions for 
agenda and for ox-icalendar. So I'm starting a separate mail thread for my 
suggestions.

Changes since v1:
  - Add missing group and type to org-icalendar-*-summary-prepend defcustoms;

Kind regards,
Mikhail Skorzhinskii

[-- Attachment #2: 0002-ox-icalendar.el-introduce-setting-to-force-alarms.patch --]
[-- Type: text/x-patch, Size: 3160 bytes --]

From ecc65f713ff3efdfc40e90141dc070fc291d599f Mon Sep 17 00:00:00 2001
From: Mikhail Skorzhinskii <mskorzhinskiy@eml.cc>
Date: Sat, 12 Sep 2020 18:52:39 +0200
Subject: [PATCH 2/2] ox-icalendar.el: introduce setting to force alarms

This is a new setting for icalendar exports to allow users set alarms
exactly at the event start. With this setting set to non-nil and alarm
set to zero (by global setting or APPT_WARNTIME property) it will create
an alarm at the event start.

Note, that zero alarm set as APPT_WARNTIME property will override
default warning time.
---
 etc/ORG-NEWS         | 10 ++++++++++
 lisp/ox-icalendar.el | 24 +++++++++++++++++++++---
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index cc471e20b..0fd3d8792 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -22,6 +22,16 @@ area instead of file name.
 Through these new options for icalendar export, one can customise the
 looks of summary lines in exported events.
 
+*** New option ~org-icalendar-force-alarm~
+
+This is a new setting for icalendar exports to allow users set alarms
+exactly at the event start. With this setting set to non-nil and alarm
+set to zero (by global setting or APPT_WARNTIME property) it will
+create an alarm at the event start.
+
+Note, that zero alarm set as =APPT_WARNTIME= property will override
+default warning time.
+
 * Version 9.4
 ** Incompatible changes
 *** Possibly broken internal file links: please check and fix
diff --git a/lisp/ox-icalendar.el b/lisp/ox-icalendar.el
index 39807c7c2..9ac6435a6 100644
--- a/lisp/ox-icalendar.el
+++ b/lisp/ox-icalendar.el
@@ -64,6 +64,15 @@ for timed events.  If non-zero, alarms are created.
   :version "24.1"
   :type 'integer)
 
+(defcustom org-icalendar-force-alarm nil
+  "Non-nil means alarm will be created even if is set to zero.
+
+This overrides default behaviour where zero means no alarm. With
+this set to non-nil and alarm set to zero, alarm will be created
+and will fire at the event start."
+  :group 'org-export-icalendar
+  :type 'bool)
+
 (defcustom org-icalendar-combined-name "OrgMode"
   "Calendar name for the combined iCalendar representing all agenda files."
   :group 'org-export-icalendar
@@ -802,8 +811,11 @@ Return VALARM component as a string, or nil if it isn't allowed."
   (let ((alarm-time
 	 (let ((warntime
 		(org-element-property :APPT_WARNTIME entry)))
-	   (if warntime (string-to-number warntime) 0))))
-    (and (or (> alarm-time 0) (> org-icalendar-alarm-time 0))
+	   (if warntime (string-to-number warntime) nil))))
+    (and (or (and alarm-time
+		  (> alarm-time 0))
+	     (> org-icalendar-alarm-time 0)
+	     org-icalendar-force-alarm)
 	 (org-element-property :hour-start timestamp)
 	 (format "BEGIN:VALARM
 ACTION:DISPLAY
@@ -811,7 +823,13 @@ DESCRIPTION:%s
 TRIGGER:-P0DT0H%dM0S
 END:VALARM\n"
 		 summary
-		 (if (zerop alarm-time) org-icalendar-alarm-time alarm-time)))))
+		 (if org-icalendar-force-alarm
+		     (if alarm-time
+			 alarm-time
+		       org-icalendar-alarm-time)
+		   (if (zerop alarm-time)
+		       org-icalendar-alarm-time
+		     alarm-time))))))
 
 
 ;;;; Template
-- 
2.28.0


[-- Attachment #3: 0001-ox-icalendar.el-allow-to-customise-deadline-and-sche.patch --]
[-- Type: text/x-patch, Size: 2817 bytes --]

From 90bce01b8e97943ba90c7a9c720350bc04951a27 Mon Sep 17 00:00:00 2001
From: Mikhail Skorzhinskii <mskorzhinskiy@eml.cc>
Date: Sat, 12 Sep 2020 18:27:23 +0200
Subject: [PATCH 1/2] ox-icalendar.el: allow to customise deadline and
 scheduled items summary

In some of export schemes these cookies at the start of each event can
be a distraction rather then storage of useful information.
---
 etc/ORG-NEWS         |  5 +++++
 lisp/ox-icalendar.el | 15 +++++++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index e30336f45..cc471e20b 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -17,6 +17,11 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
 When set to 'title, will show document title in outline path in echo
 area instead of file name.
 
+*** New options ~org-icalendar-scheduled-summary-prepend~ and ~org-icalendar-deadline-summary-prepend~
+
+Through these new options for icalendar export, one can customise the
+looks of summary lines in exported events.
+
 * Version 9.4
 ** Incompatible changes
 *** Possibly broken internal file links: please check and fix
diff --git a/lisp/ox-icalendar.el b/lisp/ox-icalendar.el
index 0f890534a..39807c7c2 100644
--- a/lisp/ox-icalendar.el
+++ b/lisp/ox-icalendar.el
@@ -82,6 +82,17 @@ keyword."
   :group 'org-export-icalendar
   :type '(repeat (string :tag "Tag")))
 
+(defcustom org-icalendar-scheduled-summary-prepend "S: "
+  "String used for prepending summary in exported scheduled headlines."
+  :group 'org-export-icalendar
+  :type 'string)
+
+
+(defcustom org-icalendar-deadline-summary-prepend "DL: "
+  "String used for prepending summary in exported deadlines."
+  :group 'org-export-icalendar
+  :type 'string)
+
 (defcustom org-icalendar-use-deadline '(event-if-not-todo todo-due)
   "Contexts where iCalendar export should use a deadline time stamp.
 
@@ -606,7 +617,7 @@ inlinetask within the section."
 		   (_ (memq 'event-if-not-todo use-deadline)))
 		 (org-icalendar--vevent
 		  entry deadline (concat "DL-" uid)
-		  (concat "DL: " summary) loc desc cat tz class)))
+		  (concat org-icalendar-deadline-summary-prepend summary) loc desc cat tz class)))
 	  (let ((scheduled (org-element-property :scheduled entry))
 		(use-scheduled (plist-get info :icalendar-use-scheduled)))
 	    (and scheduled
@@ -617,7 +628,7 @@ inlinetask within the section."
 		   (_ (memq 'event-if-not-todo use-scheduled)))
 		 (org-icalendar--vevent
 		  entry scheduled (concat "SC-" uid)
-		  (concat "S: " summary) loc desc cat tz class)))
+		  (concat org-icalendar-scheduled-summary-prepend summary) loc desc cat tz class)))
 	  ;; When collecting plain timestamps from a headline and its
 	  ;; title, skip inlinetasks since collection will happen once
 	  ;; ENTRY is one of them.
-- 
2.28.0


                 reply	other threads:[~2020-09-21 11:54 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2104640.gBco5zGie4@trex230 \
    --to=mskorzhinskiy@eml.cc \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).