[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org-translate 8fe738a 05/19: [org-translate] Segment bo
From: |
Stefan Monnier |
Subject: |
[elpa] externals/org-translate 8fe738a 05/19: [org-translate] Segment both source and translation trees |
Date: |
Tue, 1 Dec 2020 16:34:21 -0500 (EST) |
branch: externals/org-translate
commit 8fe738a440afb540736148b7c0582639c7123ed5
Author: Eric Abrahamsen <eric@ericabrahamsen.net>
Commit: Eric Abrahamsen <eric@ericabrahamsen.net>
[org-translate] Segment both source and translation trees
* packages/org-translate/org-translate.el (ogt-segment-project): The
user might have already started with the translation.
---
org-translate.el | 95 +++++++++++++++++++++++++++++---------------------------
1 file changed, 49 insertions(+), 46 deletions(-)
diff --git a/org-translate.el b/org-translate.el
index 286710e..8bf61c4 100644
--- a/org-translate.el
+++ b/org-translate.el
@@ -485,52 +485,55 @@ segmentation in the translation is all manual.
Segmentation is done by inserting `ogt-segmentation-character' at
the beginning of each segment."
- (save-excursion
- (ogt-goto-heading 'source)
- (save-restriction
- (org-narrow-to-subtree)
- (org-end-of-meta-data t)
- (let ((mover
- ;; These "movers" should all leave point at the beginning
- ;; of the _next_ thing.
- (pcase ogt-segmentation-strategy
- ('sentence
- (lambda (_end)
- (forward-sentence)
- (skip-chars-forward "[:blank:]")))
- ('paragraph (lambda (_end)
- (org-forward-paragraph)))
- ((pred stringp)
- (lambda (end)
- (re-search-forward
- ogt-segmentation-strategy end t)))
- (_ (user-error
- "Invalid value of `ogt-segmentation-strategy'"))))
- (end (make-marker))
- current)
- (while (< (point) (point-max))
- (insert ogt-segmentation-character)
- (setq current (org-element-at-point))
- (move-marker end (org-element-property :contents-end current))
- ;; TODO: Do segmentation in plain lists and tables.
- (while (and (< (point) end)
- ;; END can be after `point-max' in narrowed
- ;; buffer.
- (< (point) (point-max)))
- (cond
- ((eql (org-element-type current) 'headline)
- (skip-chars-forward "[:blank:]\\*")
- (insert ogt-segmentation-character)
- (org-end-of-meta-data t))
- ((null (eql (org-element-type current)
- 'paragraph))
- (goto-char end))
- (t (ignore-errors (funcall mover end))))
- (if (eolp) ;; No good if sentence happens to end at `eol'!
- (goto-char end)
- (insert ogt-segmentation-character)))
- (unless (ignore-errors (org-forward-element))
- (goto-char (point-max))))))))
+ (dolist (loc '(source translation))
+ ;; Also attempt to segment the translation subtree -- the user
+ ;; might have already started.
+ (save-excursion
+ (ogt-goto-heading loc)
+ (save-restriction
+ (org-narrow-to-subtree)
+ (org-end-of-meta-data t)
+ (let ((mover
+ ;; These "movers" should all leave point at the beginning
+ ;; of the _next_ thing.
+ (pcase ogt-segmentation-strategy
+ ('sentence
+ (lambda (_end)
+ (forward-sentence)
+ (skip-chars-forward "[:blank:]")))
+ ('paragraph (lambda (_end)
+ (org-forward-paragraph)))
+ ((pred stringp)
+ (lambda (end)
+ (re-search-forward
+ ogt-segmentation-strategy end t)))
+ (_ (user-error
+ "Invalid value of `ogt-segmentation-strategy'"))))
+ (end (make-marker))
+ current)
+ (while (< (point) (point-max))
+ (insert ogt-segmentation-character)
+ (setq current (org-element-at-point))
+ (move-marker end (org-element-property :contents-end current))
+ ;; TODO: Do segmentation in plain lists and tables.
+ (while (and (< (point) end)
+ ;; END can be after `point-max' in narrowed
+ ;; buffer.
+ (< (point) (point-max)))
+ (cond
+ ((eql (org-element-type current) 'headline)
+ (skip-chars-forward "[:blank:]\\*")
+ (insert ogt-segmentation-character)
+ (org-end-of-meta-data t))
+ ((null (eql (org-element-type current)
+ 'paragraph))
+ (goto-char end))
+ (t (ignore-errors (funcall mover end))))
+ (if (eolp) ;; No good if sentence happens to end at `eol'!
+ (goto-char end)
+ (insert ogt-segmentation-character)))
+ (unless (ignore-errors (org-forward-element))
+ (goto-char (point-max)))))))))
;; Could also set this as `forward-sexp-function', then don't need the
;; backward version.
- [elpa] branch externals/org-translate created (now 1630bad), Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate d78ed3e 02/19: * org-translate.el: Add missing author info, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate 8fe738a 05/19: [org-translate] Segment both source and translation trees,
Stefan Monnier <=
- [elpa] externals/org-translate e60252b 07/19: [org-translate] Be stricter at startup, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate 3024d22 03/19: [org-translate] Remove extraneous Author header, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate 380ab9e 10/19: [org-translate] Fix bug in ogt-hightlight-source-segment, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate c3600f4 14/19: [org-translate] Remove ogt-follow-link, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate 9539f01 11/19: [org-translate] Add keymap for translation links, plus occur command, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate 94f9307 15/19: [org-translate] New command ogt-term-display-translations, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate 7b31f0a 04/19: [org-translate] Require 'ox library, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate fbd9d57 01/19: [org-translate] Add version 0 of org-translate, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate fecfa31 06/19: [org-translate] Improve documentation, Stefan Monnier, 2020/12/01
- [elpa] externals/org-translate d672d8c 08/19: [org-translate] Rename ogt-add-glossary-item: ogt-new-glossary-term, Stefan Monnier, 2020/12/01