summaryrefslogtreecommitdiffstats
path: root/emacsconf.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacsconf.el')
-rw-r--r--emacsconf.el95
1 files changed, 61 insertions, 34 deletions
diff --git a/emacsconf.el b/emacsconf.el
index 81bf375..f200d9e 100644
--- a/emacsconf.el
+++ b/emacsconf.el
@@ -34,26 +34,26 @@
"Name of conference"
:group 'emacsconf
:type 'string)
-(defcustom emacsconf-year "2025"
+(defcustom emacsconf-year "2026"
"Conference year. String for easy inclusion."
:group 'emacsconf
:type 'string)
-(defcustom emacsconf-cfp-deadline "2025-09-19" "Target date for proposals."
+(defcustom emacsconf-cfp-deadline "2026-09-18" "Target date for proposals."
:group 'emacsconf
:type 'string)
-(defcustom emacsconf-date "2025-12-06" "Starting date of EmacsConf."
+(defcustom emacsconf-date "2026-12-12" "Starting date of EmacsConf."
:group 'emacsconf
:type 'string)
-(defcustom emacsconf-dates "2025-12-06 to 2025-12-07" "Conference dates."
+(defcustom emacsconf-dates "2026-12-12 to 2026-12-13" "Conference dates."
:group 'emacsconf
:type 'string)
-(defcustom emacsconf-video-target-date "2025-10-31" "Target date for receiving talk videos from the speakers."
+(defcustom emacsconf-video-target-date "2026-10-30" "Target date for receiving talk videos from the speakers."
:group 'emacsconf
:type 'string)
-(defcustom emacsconf-schedule-announcement-date "2025-10-24" "Date for publishing the schedule."
+(defcustom emacsconf-schedule-announcement-date "2026-10-23" "Date for publishing the schedule."
:group 'emacsconf
:type 'string)
-(defcustom emacsconf-directory "~/vendor/emacsconf-wiki"
+(defcustom emacsconf-directory "~/proj/emacsconf/wiki"
"Directory where the wiki files are."
:group 'emacsconf
:type 'directory)
@@ -73,7 +73,7 @@
(defcustom emacsconf-base-url "https://emacsconf.org/" "Includes trailing slash"
:group 'emacsconf
:type 'string)
-(defcustom emacsconf-publishing-phase 'harvest
+(defcustom emacsconf-publishing-phase 'cfp
"Controls what information to include.
'program - don't include times
'schedule - include times; use this leading up to the conference
@@ -1198,6 +1198,11 @@ The subheading should match `emacsconf-abstract-heading-regexp'."
(interactive (list (emacsconf-complete-talk)))
(insert (emacsconf-mail-format-talk-schedule (emacsconf-search-talk-info search))))
+(defun emacsconf-insert-talk-availability-constraints (search)
+ "Insert the schedule for SEARCH."
+ (interactive (list (emacsconf-complete-talk)))
+ (insert (plist-get (emacsconf-search-talk-info search) :availability)))
+
(defun emacsconf-insert-talk-email (search)
"Insert the talk email matching SEARCH."
(interactive (list (emacsconf-complete-talk)))
@@ -1238,6 +1243,7 @@ The subheading should match `emacsconf-abstract-heading-regexp'."
"i l" #'emacsconf-insert-talk-link
"i t" #'emacsconf-insert-talk-title
"i s" #'emacsconf-insert-talk-schedule
+ "i c" #'emacsconf-insert-talk-availability-constraints
"I" #'emacsconf-message-talk-info
"c" #'emacsconf-find-captions-from-slug
"d" #'emacsconf-find-caption-directives-from-slug
@@ -1274,22 +1280,24 @@ The subheading should match `emacsconf-abstract-heading-regexp'."
(format-time-string "%z" (date-to-time emacsconf-date) emacsconf-timezone)
"Timezone offset for `emacsconf-timezone' on `emacsconf-date'.")
-(defun emacsconf-timezone-string (o tz &optional format)
+(defun emacsconf-timezone-string (o tz &optional format short)
(when (and (listp o) (plist-get o :scheduled)) (setq o (plist-get o :scheduled)))
(let* ((start (org-timestamp-to-time (org-timestamp-split-range (org-timestamp-from-string o))))
(end (org-timestamp-to-time (org-timestamp-split-range (org-timestamp-from-string o) t))))
- (if (string= tz "UTC")
- (format "%s - %s "
- (format-time-string (or format "%A, %b %-e %Y, ~%-l:%M %p")
- start tz)
- (format-time-string "%-l:%M %p %Z"
- end tz))
- (format "%s - %s (%s)"
- (format-time-string (or format "%A, %b %-e %Y, ~%-l:%M %p")
- start tz)
- (format-time-string "%-l:%M %p %Z"
- end tz)
- tz))))
+ (if short
+ (format-time-string "%a ~%-l:%M %p %Z" start tz)
+ (if (string= tz "UTC")
+ (format "%s - %s "
+ (format-time-string (or format "%A, %b %-e %Y, ~%-l:%M %p")
+ start tz)
+ (format-time-string "%-l:%M %p %Z"
+ end tz))
+ (format "%s - %s (%s)"
+ (format-time-string (or format "%A, %b %-e %Y, ~%-l:%M %p")
+ start tz)
+ (format-time-string "%-l:%M %p %Z"
+ end tz)
+ tz)))))
(defun emacsconf-timezone-strings (o &optional timezones format)
(mapcar (lambda (tz) (emacsconf-timezone-string o tz format)) (or timezones emacsconf-timezones)))
@@ -1330,12 +1338,21 @@ If TIMEZONES is a string, split it by commas."
tzc-time-zones nil nil nil nil
(org-entry-get (point) "TIMEZONE"))
(completing-read "From zone: " tzc-time-zones nil t)))
- (read-string "Time: ")))
+ (let ((current
+ (when (eq 'timestamp (org-element-type (org-element-context)))
+ (org-element-property :raw-value (org-element-context)))))
+ (read-string "Time: " current))))
(let* ((from-offset (format-time-string "%z" (date-to-time emacsconf-date) timezone))
(time
(date-to-time
- (concat emacsconf-date "T" (string-pad time 5 ?0 t) ":00.000"
- from-offset))))
+ (if (string-match "-" time)
+ time
+ (concat emacsconf-date "T" (string-pad time 5 ?0 t) ":00.000"
+ from-offset)))))
+ (kill-new (format-time-string
+ "%b %d %H:%M %z"
+ time
+ timezone))
(message "%s = %s"
(format-time-string
"%b %d %H:%M %z"
@@ -1356,17 +1373,26 @@ If TIMEZONES is a string, split it by commas."
tzc-time-zones nil nil nil nil
(org-entry-get (point) "TIMEZONE"))
(completing-read "To zone: " tzc-time-zones nil t)))
- (read-string "Time: ")))
+ (let ((current
+ (when (eq 'timestamp (org-element-type (org-element-context)))
+ (org-element-property :raw-value (org-element-context)))))
+ (read-string "Time: " current))))
(let* ((time
(date-to-time
- (concat emacsconf-date "T" (string-pad time 5 ?0 t) ":00.000"
- emacsconf-timezone-offset))))
+ (if (string-match "-" time)
+ time
+ (concat emacsconf-date "T" (string-pad time 5 ?0 t) ":00.000"
+ from-offset)))))
+ (kill-new (format-time-string
+ "%b %d %H:%M %z"
+ time
+ timezone))
(message "%s = %s"
(format-time-string
"%b %d %H:%M %z"
time
emacsconf-timezone)
- (format-time-string
+ (format-time-string
"%b %d %H:%M %z"
time
timezone))))
@@ -1504,21 +1530,22 @@ If TIMEZONES is a string, split it by commas."
:vnc-port "5905"
:autopilot crontab
:status "online")
- (:name "Development" :color "skyblue" :id "dev" :channel "emacsconf-dev"
- :watch ,(format "https://live.emacsconf.org/%s/watch/dev/" emacsconf-year)
- :webchat-url "https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-de"
+ (:name "B" :color "skyblue" :id "b" :channel "emacsconf-b"
+ :watch ,(format "https://live.emacsconf.org/%s/watch/b/" emacsconf-year)
+ :webchat-url "https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-b"
:tramp "/ssh:emacsconf-dev@res.emacsconf.org#46668:"
:toobnix-url "https://toobnix.org/w/uXGmcRigZD82UWr5nehKeL"
:youtube-url "https://youtube.com/live/KCZthyBhHtg"
:youtube-studio-url "https://studio.youtube.com/video/KCZthyBhHtg/livestreaming"
- :stream ,(concat emacsconf-stream-base "dev.webm")
- :480p ,(concat emacsconf-stream-base "dev-480p.webm")
+ :stream ,(concat emacsconf-stream-base "b.webm")
+ :480p ,(concat emacsconf-stream-base "b-480p.webm")
:uid 2003
:start "10:00" :end "17:00"
:vnc-display ":6"
:vnc-port "5906"
:autopilot crontab
- :status "offline")))
+ :status "offline")
+ ))
(defun emacsconf-get-track (name)
"Get the track for NAME.