summaryrefslogtreecommitdiffstats
path: root/emacsconf.el
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-10-30 19:25:05 -0400
committerSacha Chua <sacha@sachachua.com>2022-10-30 19:25:05 -0400
commit309b9937f416a349c3fb05fbed607c93f37ef3a9 (patch)
tree6a134289d8c0dc100d2a055f91d0fe6fae293a13 /emacsconf.el
parent8afaefdeb54b8ca3805e2c2beb749c408654cabd (diff)
downloademacsconf-el-309b9937f416a349c3fb05fbed607c93f37ef3a9.tar.xz
emacsconf-el-309b9937f416a349c3fb05fbed607c93f37ef3a9.zip
Add emacsconf-reflow
Diffstat (limited to 'emacsconf.el')
-rw-r--r--emacsconf.el76
1 files changed, 67 insertions, 9 deletions
diff --git a/emacsconf.el b/emacsconf.el
index 7ab44f4..007d653 100644
--- a/emacsconf.el
+++ b/emacsconf.el
@@ -90,6 +90,9 @@
(defun emacsconf-res-dired ()
(interactive)
(dired emacsconf-res-dir "-tl"))
+(defun emacsconf-cache-dired ()
+ (interactive)
+ (dired emacsconf-cache-dir "-tl"))
(defun emacsconf-slugify (s)
(replace-regexp-in-string " +" "-" (replace-regexp-in-string "[^a-z0-9 ]" "" (downcase s))))
@@ -165,14 +168,20 @@
(file-name-base .metadata.name))
nil nil
(file-name-base .metadata.name)))))
- (copy-file key
- (expand-file-name (concat (plist-get talk :video-slug)
- "--"
- filename
- "."
- (let-alist (json-parse-string (buffer-string) :object-type 'alist)
- (file-name-extension .metadata.name)))
- emacsconf-backstage-dir)))
+ (let ((new-filename (concat (plist-get talk :video-slug)
+ (if (string= filename "")
+ filename
+ (concat "--" filename))
+ "."
+ (let-alist (json-parse-string (buffer-string) :object-type 'alist)
+ (file-name-extension .metadata.name)))))
+ (copy-file key
+ (expand-file-name new-filename
+ emacsconf-backstage-dir) t)
+ (copy-file key (expand-file-name new-filename emacsconf-cache-dir))
+ (unless (file-directory-p (expand-file-name (plist-get talk :slug) emacsconf-res-dir))
+ (make-directory (expand-file-name (plist-get talk :slug) emacsconf-res-dir)))
+ (copy-file (expand-file-name new-filename emacsconf-cache-dir) (expand-file-name new-filename (expand-file-name (plist-get talk :slug) emacsconf-res-dir)))))
(defcustom emacsconf-download-directory "~/Downloads"
"Directory to check for downloaded files."
@@ -1018,7 +1027,56 @@ Filter by TRACK if given. Use INFO as the list of talks."
(if (and text (not (string= text "")))
(concat (or before "") text (or after ""))
alternative))
-;;
+
+;;; Volunteer management
+(defun emacsconf-get-volunteer-info ()
+ (with-current-buffer (find-file-noselect emacsconf-org-file)
+ (org-map-entries (lambda () (org-entry-properties))
+ "volunteer+EMAIL={.}")))
+
+(defun emacsconf-complete-volunteer (&optional info)
+ (setq info (or info (emacsconf-get-volunteer-info)))
+ (let* ((choices
+ (mapcar (lambda (o)
+ (string-join
+ (delq nil
+ (mapcar (lambda (f) (assoc-default f o 'string=)) '("ITEM" "EMAIL")))
+ " - "))
+ info))
+ (choice (completing-read
+ "Volunteer: "
+ (lambda (string predicate action)
+ (if (eq action 'metadata)
+ '(metadata (category . volunteer))
+ (complete-with-action action choices string predicate))))))
+ (elt info (seq-position choices choice))))
+
+(defun emacsconf-reflow ()
+ "Help reflow text files."
+ (interactive)
+ (let (input)
+ (while (not (string= "" (setq input (read-string "Word: "))))
+ (if (string= input "'")
+
+ (progn
+ (end-of-line)
+ (unless (looking-back " ")
+ (insert " "))
+ (delete-char 1))
+ (forward-word)
+ (cond
+ ((string= input ",")
+ (re-search-forward ", " nil t)
+ (goto-char (match-end 0)))
+ ((string= input ".")
+ (re-search-forward "\\. " nil t)
+ (goto-char (match-end 0)))
+ (t
+ (re-search-forward (concat "\\<" (regexp-quote input)) nil t)
+ (goto-char (match-beginning 0))))
+ (insert "\n"))
+ (recenter)
+ (undo-boundary))))
(provide 'emacsconf)
;;; emacsconf.el ends here