diff options
| -rw-r--r-- | emacsconf-mail.el | 13 | ||||
| -rw-r--r-- | emacsconf-subed.el | 66 | ||||
| -rw-r--r-- | emacsconf.el | 3 |
3 files changed, 57 insertions, 25 deletions
diff --git a/emacsconf-mail.el b/emacsconf-mail.el index b6f887b..40536de 100644 --- a/emacsconf-mail.el +++ b/emacsconf-mail.el @@ -20,7 +20,18 @@ ;;; Commentary: -;; +;; The typical communication flow for speakers is: + +;; - emacsconf-mail-review +;; - emacsconf-mail-accept-talk +;; - emacsconf-mail-upload-and-backstage-info +;; - emacsconf-mail-acknowledge-upload +;; - emacsconf-mail-captions-for-review +;; - emacsconf-mail-draft-schedule +;; - emacsconf-mail-intro-to-all +;; - emacsconf-mail-checkin-instructions-to-all +;; - emacsconf-mail-template-speakers-thanks-after-conference + ;;; Code: diff --git a/emacsconf-subed.el b/emacsconf-subed.el index e600dd2..01c08c2 100644 --- a/emacsconf-subed.el +++ b/emacsconf-subed.el @@ -26,6 +26,13 @@ ;; from https://github.com/sachac/compile-media . ;;; Code: +(ert-deftest emacsconf-split-text-based-on-heuristics () + "Tests `emacsconf-split-text-based-on-heuristics'." + (should (equal (emacsconf-split-text-based-on-heuristics + "This is a long sentence that can be split up at several logical points, such as that one." 40) + '("This is a long sentence" "that can be split up at several" + "logical points, such as that one.")))) + (require 'subed) @@ -118,27 +125,38 @@ TYPE can be 'end if you want the match end instead of the beginning." result)) (setq position new-position) (setq next-limit (+ new-position limit))) - (setq result (cons (string-trim current) result)) + (unless (string= current "") + (setq result (cons (string-trim current) result))) (nreverse result))) -(defun emacsconf-reflow-automatically () - (interactive) - (let* ((subtitle-text-limit (or emacsconf-subed-subtitle-max-length fill-column)) - (auto-space-msecs 700) - (subtitles - (mapconcat - (lambda (sub) - (string-join - (emacsconf-split-text-based-on-heuristics (elt sub 3) subtitle-text-limit) - "\n")) - (emacsconf-combine-close-subtitles (subed-subtitle-list)) - "\n"))) - (find-file (concat (file-name-sans-extension (buffer-file-name)) ".txt")) - (erase-buffer) - (insert subtitles) - (goto-char (point-min)) - (set-fill-column subtitle-text-limit) - (display-fill-column-indicator-mode 1))) + + +(defun emacsconf-reflow-automatically (&optional beg end) + "Try to split subtitle text at reasonable points." + (interactive (if (region-active-p) (list (region-beginning) (region-end)) + (list (point-min) (point-max)))) + (if (derived-mode-p 'subed-mode) + (let* ((subtitle-text-limit (or emacsconf-subed-subtitle-max-length fill-column)) + (auto-space-msecs 700) + (subtitles + (mapconcat + (lambda (sub) + (string-join + (emacsconf-split-text-based-on-heuristics (elt sub 3) subtitle-text-limit) + "\n")) + (emacsconf-combine-close-subtitles (subed-subtitle-list beg end)) + "\n"))) + (find-file (concat (file-name-sans-extension (buffer-file-name)) ".txt")) + (delete-region beg end) + (insert subtitles) + (goto-char (point-min)) + (set-fill-column subtitle-text-limit) + (display-fill-column-indicator-mode 1)) + (let ((split (emacsconf-split-text-based-on-heuristics + (buffer-substring beg end) + (or emacsconf-subed-subtitle-max-length fill-column)))) + (delete-region beg end) + (insert (string-join split "\n"))))) ;;;###autoload (defun emacsconf-subed-make-chapter-file-based-on-comments () @@ -325,8 +343,12 @@ Create it if necessary." (goto-char (posn-point (event-start event))) (skip-syntax-backward "w") (if (derived-mode-p 'subed-mode) - (subed-split-subtitle) - (insert "\n")) + (if (bolp) + (subed-merge-with-previous) + (subed-split-subtitle)) + (if (looking-back "^\\|^\\[.+?\\]: " (line-beginning-position)) + (join-line) + (insert "\n"))) (recenter)) (defun emacsconf-subed-merge-and-unfill () @@ -354,8 +376,6 @@ Create it if necessary." (define-key map [up-1] #'ignore) (define-key map [drag-mouse-1] #'ignore) (define-key map [mouse-movement] #'ignore) - (define-key map (kbd "<up>") #'scroll-down) - (define-key map (kbd "<down>") #'scroll-up) (define-key map (kbd "M-q") #'emacsconf-subed-unfill-paragraph) (define-key map (kbd "M-.") #'emacsconf-subed-merge-and-unfill) (define-key map "q" #'emacsconf-subed-unfill-paragraph) diff --git a/emacsconf.el b/emacsconf.el index cd82d54..81bf375 100644 --- a/emacsconf.el +++ b/emacsconf.el @@ -837,7 +837,8 @@ The subheading should match `emacsconf-abstract-heading-regexp'." (let* ((elt (org-element-property-drawer-parser nil)) (beg (org-element-property :contents-begin elt)) (end (org-element-property :contents-end elt))) - (buffer-substring-no-properties beg end))))) + (when (and beg end) + (buffer-substring-no-properties beg end)))))) (defun emacsconf-get-talk-logbook (o) (plist-put o :logbook (emacsconf-get-logbook-notes))) |
