branch: externals/greader commit a24dc35e593b1a54547eb16cc204479a5f9e4fc5 Author: Michelangelo Rodriguez <michelangelo.rodrig...@gmail.com> Commit: Michelangelo Rodriguez <michelangelo.rodrig...@gmail.com>
greader-mac.el: support for `get-text' and `next-text' added. --- greader-mac.el | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/greader-mac.el b/greader-mac.el index 9275d9fedc..292cb2c10f 100644 --- a/greader-mac.el +++ b/greader-mac.el @@ -21,6 +21,9 @@ nil means to use the system voice." :tag "mac tts command" :type 'string) +(defvar greader-mac-end-of-sentence-regexp "[.?!,][«»\"]?[\n ]" + "A regexp that matches the end of the string to send to the tts.") + (defun greader-mac-set-rate (&optional rate) "Return a string suitable for setting mac RATE." (if (not rate) @@ -58,6 +61,10 @@ When called interactively, this function reads a string from the minibuffer prov "Back-end main function of greader-mac. COMMAND must be a string suitable for `make-process'." (pcase command + ('get-text + (greader-mac-get-sentence)) + ('next-text + (greader-mac-forward-sentence)) ('executable greader-mac-executable-name) ('lang @@ -76,6 +83,21 @@ COMMAND must be a string suitable for `make-process'." 'not-implemented))) (put 'greader-mac 'greader-backend-name "greader-mac") +(defun greader-mac-get-sentence () + (let ((sentence-start (make-marker))) + (setq sentence-start (point)) + (save-excursion + (when (not (eobp)) + (if (not (re-search-forward greader-mac-end-of-sentence-regexp nil t)) + (end-of-buffer)) + (if (> (point) sentence-start) + (string-trim (buffer-substring-no-properties sentence-start (point)) "[ \t\n\r]+") + nil))))) + +(defun greader-mac-forward-sentence () + (if (not (re-search-forward greader-mac-end-of-sentence-regexp nil t)) + (end-of-buffer))) + (defun greader--mac-get-voices () "Return a list which contains all voices suitable for this backend." (with-temp-buffer