summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-12-09 22:46:25 -0500
committerSacha Chua <sacha@sachachua.com>2022-12-09 22:46:25 -0500
commitc1a32ad031d6a5fc7dc644fcfc442c3c9a6e107c (patch)
treeda21e24a057dfde16817ab01fa89fd1924d0e84b
parent923de3f273dd82f52072cffcb9a84737fc287f7f (diff)
downloademacsconf-el-c1a32ad031d6a5fc7dc644fcfc442c3c9a6e107c.tar.xz
emacsconf-el-c1a32ad031d6a5fc7dc644fcfc442c3c9a6e107c.zip
code for adding questions to the Q&A transcript
-rw-r--r--emacsconf-extract.el35
-rw-r--r--emacsconf-publish.el30
-rw-r--r--emacsconf-subed.el8
-rw-r--r--emacsconf.el13
4 files changed, 73 insertions, 13 deletions
diff --git a/emacsconf-extract.el b/emacsconf-extract.el
index 77c8d0b..e158764 100644
--- a/emacsconf-extract.el
+++ b/emacsconf-extract.el
@@ -270,5 +270,40 @@
(unless (string= (or questions "") "")
(insert "## Questions and answers\n\n" questions "\n\n"))
)))
+
+(defun emacsconf-extract-question-headings (slug)
+ (with-temp-buffer
+ (insert-file-contents
+ (expand-file-name
+ (concat slug ".md")
+ (expand-file-name "talks"
+ (expand-file-name emacsconf-year emacsconf-directory))))
+ (goto-char (point-min))
+ (let (results)
+ (while (re-search-forward "^-[ \t]+Q:[  ]*" nil t)
+ (setq results
+ (cons
+ (string-trim
+ (replace-regexp-in-string
+ "[\n \t ]+" " "
+ (replace-regexp-in-string
+ "\\\\"
+ ""
+ (buffer-substring
+ (point)
+ (and (re-search-forward "^[ \t]+-\\|^[ \t]+*$" nil t)
+ (match-beginning 0))))))
+ results)))
+ (nreverse results))))
+;; (emacsconf-extract-question-headings "asmblox")
+
+(defun emacsconf-extract-insert-note-with-question-heading (question)
+ (interactive
+ (list
+ (completing-read
+ "Question: "
+ (emacsconf-extract-question-headings
+ (emacsconf-get-slug-from-string (file-name-base (buffer-file-name)))))))
+ (insert "NOTE " question "\n\n"))
(provide 'emacsconf-extract)
;;; emacsconf-extract.el ends here
diff --git a/emacsconf-publish.el b/emacsconf-publish.el
index 29467d9..6449bf4 100644
--- a/emacsconf-publish.el
+++ b/emacsconf-publish.el
@@ -30,7 +30,7 @@
:type 'string
:group 'emacsconf)
-(defcustom emacsconf-main-extensions '(".webm" "--main.webm" "--main.org" ".org" ".odp" ".pdf" ".el" "--compressed56.webm" "--main.vtt" "--main_fr.vtt" "--main_ja.vtt" "--main_es.vtt" "--chapters.vtt" "--main--chapters.vtt" "--script.fountain")
+(defcustom emacsconf-main-extensions '(".webm" "--main.webm" "--main.org" ".org" ".odp" ".pdf" ".el" "--compressed56.webm" "--main.vtt" "--main_fr.vtt" "--main_ja.vtt" "--main_es.vtt" "--chapters.vtt" "--main--chapters.vtt" "--script.fountain" "--main.pdf" "--slides.pdf")
"Extensions to list on public pages."
:type '(repeat string)
:group 'emacsconf)
@@ -468,6 +468,7 @@ resources."
:public 1
:video-id (concat (plist-get o :slug) "-qanda")
:toobnix-url nil
+ :captions-edited (plist-get o :qa-captions-edited)
:video-file (expand-file-name
(concat (file-name-sans-extension (plist-get o :video-slug)) "--answers.webm")
emacsconf-cache-dir))
@@ -1170,7 +1171,26 @@ Entries are sorted chronologically, with different tracks interleaved."
(assoc-default "TO_STREAM" by-status) "\n"))
(let ((status "TO_ARCHIVE"))
(format
- "<h1>%d talk(s) to archive (%d minutes)</h1><ol class=\"videos\">%s</ol>"
+ "<h1>%d talk(s) to archive (%d minutes)</h1>Last year, we copied the questions, answers, and notes into the wiki
+pages, removing people's nicks and combining duplicate
+things (ex: question was asked on IRC and was copied over to the
+pad). That way, it's easier for people to see the questions and
+answers without needing to listen to everything again, and the
+speakers can see any questions they've missed and all the
+wonderful feedback people have shared. You can see the talk pages
+at <a
+href=\"https://emacsconf.org/2021/talks/\">https://emacsconf.org/2021/talks/</a>
+for examples of a Discussion section with sections for Q&A and
+feedback (ex: <a
+href=\"https://emacsconf.org/2021/talks/frownies/\">frownies</a>,
+<a
+href=\"https://emacsconf.org/2021/talks/freedom/\">freedom</a>).
+If you feel like collecting things from the Q&A (or any other
+one), that would be great. You can either edit the wiki page
+directly (which involves git and ssh), or you can e-mail things
+to <a
+href=\"mailto:emacsconf-submit@gnu.org\">emacsconf-submit@gnu.org</a>
+and I'll merge them in. - Sacha <ol class=\"videos\">%s</ol>"
(length (assoc-default status by-status))
(emacsconf-sum :video-time (assoc-default status by-status))
(mapconcat (lambda (f)
@@ -1735,7 +1755,7 @@ This video is available under the terms of the Creative Commons Attribution-Shar
))
-(defvar emacsconf-publish-autocommit-wiki t)
+(defvar emacsconf-publish-autocommit-wiki nil)
(defun emacsconf-publish-commit-and-push-wiki-maybe (&optional do-it message)
(interactive (list t))
(let ((default-directory emacsconf-directory))
@@ -1748,7 +1768,9 @@ This video is available under the terms of the Creative Commons Attribution-Shar
(declare (indent 0) (debug t))
`(progn
,@body
- (emacsconf-publish-commit-and-push-wiki-maybe t (and (stringp ,(car body)) ,(car body)))))
+ (emacsconf-publish-commit-and-push-wiki-maybe
+ ,emacsconf-publish-autocommit-wiki
+ (and (stringp ,(car body)) ,(car body)))))
(defun emacsconf-publish-schedule-svg-snippets ()
(interactive)
diff --git a/emacsconf-subed.el b/emacsconf-subed.el
index b219a6a..ec02a9d 100644
--- a/emacsconf-subed.el
+++ b/emacsconf-subed.el
@@ -29,8 +29,8 @@
(require 'subed)
-(defcustom emacsconf-subed-subtitle-max-length 60
- "Target number of characters."
+(defcustom emacsconf-subed-subtitle-max-length nil
+ "Target number of characters. Default to `fill-column'."
:group 'emacsconf
:type 'integer)
@@ -123,7 +123,7 @@ TYPE can be 'end if you want the match end instead of the beginning."
(defun emacsconf-reflow-automatically ()
(interactive)
- (let* ((subtitle-text-limit emacsconf-subed-subtitle-max-length)
+ (let* ((subtitle-text-limit (or emacsconf-subed-subtitle-max-length fill-column))
(auto-space-msecs 700)
(subtitles
(mapconcat
@@ -287,7 +287,7 @@ Create it if necessary."
"Do some simple validation of subtitles."
(interactive)
(while (not (eobp))
- (if (> (length (subed-subtitle-text)) emacsconf-subed-subtitle-max-length)
+ (if (> (length (subed-subtitle-text)) (or emacsconf-subed-subtitle-max-length fill-column))
(error "Length %d exceeds maximum length" (length (subed-subtitle-text))))
(if (< (- (subed-subtitle-msecs-stop) (subed-subtitle-msecs-start)) emacsconf-subed-subtitle-minimum-duration-ms)
(error "Duration %d is less than minimum" (- (subed-subtitle-msecs-stop) (subed-subtitle-msecs-start))))
diff --git a/emacsconf.el b/emacsconf.el
index 395db45..7157efd 100644
--- a/emacsconf.el
+++ b/emacsconf.el
@@ -311,10 +311,13 @@
(emacsconf-search-talk-info (emacsconf-complete-talk info) info))
(defun emacsconf-get-slug-from-string (search)
- (if (listp search) (setq search (car search)))
- (if (and search (string-match "\\(.*?\\) - " search))
- (match-string 1 search)
- search))
+ (when (listp search) (setq search (car search)))
+ (cond
+ ((and search (stringp search) (string-match "\\(.*?\\) - " search))
+ (match-string 1 search))
+ ((and (stringp search) (string-match (concat "^" emacsconf-id "-" emacsconf-year "-\\(.+?\\)--") search))
+ (match-string 1 search))
+ (t search)))
(defun emacsconf-go-to-talk (search)
(interactive (list (emacsconf-complete-talk)))
@@ -1232,7 +1235,7 @@ Filter by TRACK if given. Use INFO as the list of talks."
(or info (emacsconf-get-volunteer-info))))
(defun emacsconf-complete-volunteer (&optional info)
- (setq info (or info (emacsconf-get-volunteer-info info)))
+ (setq info (or info (emacsconf-get-volunteer-info)))
(let* ((choices
(emacsconf-volunteer-emails-for-completion))
(choice (completing-read