diff options
author | Sacha Chua <sacha@sachachua.com> | 2022-10-05 11:25:41 -0400 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2022-10-05 11:25:41 -0400 |
commit | 01dde684aa08c375c602661f259f46d559ecc3c2 (patch) | |
tree | 4cb8170b1e4fc0826be14f3d49bff5cc00b2d15a | |
parent | 4f695107c28d2d0ef069faba3061d736a72c3be9 (diff) | |
download | emacsconf-el-01dde684aa08c375c602661f259f46d559ecc3c2.tar.xz emacsconf-el-01dde684aa08c375c602661f259f46d559ecc3c2.zip |
Use org-entry-properties, might be more efficient
-rw-r--r-- | emacsconf.el | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/emacsconf.el b/emacsconf.el index ca0074b..6d0e5ae 100644 --- a/emacsconf.el +++ b/emacsconf.el @@ -158,6 +158,7 @@ (defun emacsconf-go-to-talk (search) (interactive (list (emacsconf-complete-talk))) (pop-to-buffer (find-file-noselect emacsconf-org-file)) + (widen) (if (emacsconf-get-slug-from-string search) (goto-char (org-find-property "SLUG" (emacsconf-get-slug-from-string search))) (catch 'found @@ -170,7 +171,7 @@ (org-entry-get (point) "NAME") " - " (org-entry-get (point) "EMAIL")) (point))) - (throw 'found))) + (throw 'found (point)))) "SLUG={.}"))) (org-reveal)) @@ -264,9 +265,10 @@ (org-timestamp-from-string (org-entry-get (point) "SCHEDULED")) t)))) - (mapcar - (lambda (o) (list (car o) (org-entry-get (point) (cadr o)))) - field-props)))) + (let* ((entry-props (org-entry-properties))) + (mapcar + (lambda (o) (list (car o) (assoc-default (cadr o) entry-props))) + field-props))))) (defvar emacsconf-abstract-heading-regexp "abstract" "Regexp matching heading for talk abstract.") @@ -379,16 +381,18 @@ (defun emacsconf-get-talk-info () (with-current-buffer (find-file-noselect emacsconf-org-file) (save-excursion - (let (results) - (org-map-entries - (lambda () - (when (or (org-entry-get (point) "TIME") - (org-entry-get (point) "SLUG") - (org-entry-get (point) "INCLUDE_IN_INFO")) - (setq results - (cons (emacsconf-get-talk-info-for-subtree) - results))))) - (nreverse results))))) + (save-restriction + (widen) + (let (results) + (org-map-entries + (lambda () + (when (or (org-entry-get (point) "TIME") + (org-entry-get (point) "SLUG") + (org-entry-get (point) "INCLUDE_IN_INFO")) + (setq results + (cons (emacsconf-get-talk-info-for-subtree) + results))))) + (nreverse results)))))) (defun emacsconf-filter-talks (list) "Return only talk info in LIST." @@ -745,6 +749,9 @@ Include some other things, too, such as emacsconf-year, title, name, email, url, (format-time-string "%H:%M" (plist-get (cadr info) :start-time))))) (setq info (cdr info)))) +(defun emacsconf-active-talks (list) + "Remove CANCELLED talks from the list." + (seq-remove (lambda (o) (string= (plist-get o :status) "CANCELLED")) list)) (provide 'emacsconf) |