[elpa] externals/eev cf99d5ef23: Indicate that I added subtitles to four other videos.

2022-12-29 Thread ELPA Syncer
branch: externals/eev
commit cf99d5ef23104a5d010662451528f6a5c6dc2d25
Author: Eduardo Ochs 
Commit: Eduardo Ochs 

Indicate that I added subtitles to four other videos.
---
 ChangeLog | 11 +++
 VERSION   |  4 ++--
 eev-intro.el  | 12 +++-
 eev-tlinks.el | 11 +++
 eev-videolinks.el | 14 +-
 5 files changed, 44 insertions(+), 8 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 181725a0f6..c9d099f47f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2022-12-29  Eduardo Ochs  
+
+   * eev-videolinks.el (ee-1stclassvideos-info): added an indication
+   that the video "eev2021b" (now) has subtitles.
+   (ee-1stclassvideos-info): added an indication that the video
+   "2021workshop1" (now) has subtitles.
+   (ee-1stclassvideos-info): added an indication that the video
+   "2021workshop2" (now) has subtitles.
+   (ee-1stclassvideos-info): added an indication that the video
+   "2021workshop4" (now) has subtitles.
+
 2022-12-28  Eduardo Ochs  
 
* eepitch.el (find-slyprocess-reuse, find-slyprocess-create): new
diff --git a/VERSION b/VERSION
index b77a64e0ef..09270fa9e4 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1,2 @@
-Thu Dec 29 00:29:47 GMT 2022
-Wed Dec 28 21:29:47 -03 2022
+Thu Dec 29 08:27:15 GMT 2022
+Thu Dec 29 05:27:15 -03 2022
diff --git a/eev-intro.el b/eev-intro.el
index 3fca3ead4b..162101 100644
--- a/eev-intro.el
+++ b/eev-intro.el
@@ -2186,6 +2186,14 @@ Use the version with \"(eev-mode 1)\" if you want to turn
 eev-mode on on startup, and the version with \";; (eev-mode 1)\"
 if you prefer to start with eev-mode off.
 
+_Activating_ eev means \"turning eev-mode on\". Activating eev
+does very little - see:
+
+  (find-eev-intro \"1. `eev-mode'\" \"Turning on eev-mode\")
+
+Note that \"installing\", \"loading\", and \"activating\" eev are
+different things, and each one does less than the next one.
+
 TODO: rewrite the other sections of this intro!
 They are old and obsolete! =(
 
@@ -2603,7 +2611,7 @@ See:
 
   (find-eevgrep \"grep --color -nH -e no-byte-compile: *.el\")
   (find-elnode \"Byte Compilation\" \"no-byte-compile: t\")
-  (find-eev \"eev-intro.el\" \"11.1. Why eev avoids byte-compilation\")
+  (find-elisp-intro \"11.1. Why eev avoids byte-compilation\")
 
 Here is why. Each call to a `code-*' function defines some
 functions dynamically - for example, `(code-c-d \"e\" ...)'
@@ -16723,6 +16731,8 @@ will give you information about the current definition.
 12. Some advanced topics
 
 See: (find-lexical-intro)
+ (find-kla-intro \"8. `cl-loop'\")
+ (find-kla-intro \"9. `cl-defun'\")
 
 
 
diff --git a/eev-tlinks.el b/eev-tlinks.el
index 9738d2a1d9..2f8aa7524c 100644
--- a/eev-tlinks.el
+++ b/eev-tlinks.el
@@ -65,6 +65,17 @@
 ;; to be rewritten. Also, some functions here are very old, and I
 ;; haven't used or tested them in ages; they deserve to be deleted.
 
+;; Note that all the `find-*-links' functions in this file have very
+;; small docstrings. This is intentional: when a function doesn't have
+;; a docstring, or has a docstring that is insufficient, this always
+;; means "look at the source", and the `find-*-links' functions do
+;; very little besides generating a temporary buffer from a
+;; template...
+;;
+;; So: the best way to understand what the `find-*-links' functions do
+;; is by looking at their source code, and by executing the sexps in
+;; comments - both the "See:"s and the "Test:"s.
+
 
 
 
diff --git a/eev-videolinks.el b/eev-videolinks.el
index 78f39dd078..f3b2c6f204 100644
--- a/eev-videolinks.el
+++ b/eev-videolinks.el
@@ -19,7 +19,7 @@
 ;;
 ;; Author: Eduardo Ochs 
 ;; Maintainer: Eduardo Ochs 
-;; Version:20221227
+;; Version:20221229
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eev-videolinks.el>
@@ -739,9 +739,10 @@ For more info on this particular video, run:
  :title "Test blocks in Dednat6"
  :mp4   "http://angg.twu.net/eev-videos/emacsconf2021-dednat6.mp4";
  :yt"http://www.youtube.com/watch?v=QUMo7vgkHJI";
- :page  "http://angg.twu.net/emacsconf2021.html";
+ :page  "http://angg.twu.net/emacsconf2021.html#real-world-example";
  :date"2021nov28"
  :length  "8:11"
+ :subs".vtt"
  :comment "How I use test blocks (see above) in real life.")
 ;;
 ;; «eevnav»  (to ".eevnav")
@@ -868,7 +869,8 @@ For more info on this particular video, run:
  :page  "http://angg.twu.net/2021-workshop.html";
  :date"20

[elpa] externals-release/org e5c45358ae: test-ob-octave.el: Avoid race condition on slow machines

2022-12-29 Thread ELPA Syncer
branch: externals-release/org
commit e5c45358ae7af3aea91ec6325fb03cc458e1d158
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

test-ob-octave.el: Avoid race condition on slow machines

* testing/lisp/test-ob-octave.el (ob-octave/graphics-file):
(ob-octave/graphics-file-session):
(ob-octave/graphics-file-space): Delay `should' condition waiting for
file contents to be written by octave.  This may be necessary when
octave has not yet written the file contents (on slow machines).
Re-enable tests.

Link: https://orgmode.org/list/87r0wk29dz.fsf@localhost
---
 testing/lisp/test-ob-octave.el | 24 ++--
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/testing/lisp/test-ob-octave.el b/testing/lisp/test-ob-octave.el
index 6eb731295e..8b68150fb0 100644
--- a/testing/lisp/test-ob-octave.el
+++ b/testing/lisp/test-ob-octave.el
@@ -67,7 +67,6 @@
 (ert-deftest ob-octave/graphics-file ()
   "Graphics file.  Test that link is correctly inserted and graphics file is 
created (and not empty).  Clean-up side-effects."
   ;; In case a prior test left the Error Output buffer hanging around.
-  (skip-unless nil) ; FIXME: Failing on CI only
   (when (get-buffer "*Org-Babel Error Output*")
 (kill-buffer "*Org-Babel Error Output*"))
   (let ((file (make-temp-file "test-ob-octave-" nil ".png")))
@@ -80,7 +79,12 @@ sombrero;
   (org-babel-execute-src-block)
   (should (search-forward (format "[[file:%s]]" file) nil nil))
   (should (file-readable-p file))
-  (should (> (file-attribute-size (file-attributes file)) 0))
+  (should (or (> (file-attribute-size (file-attributes file)) 0)
+  ;; Avoid race condition on slow machines.
+  ;; https://orgmode.org/list/87r0wk29dz.fsf@localhost
+  (progn
+(sleep-for 1)
+(> (file-attribute-size (file-attributes file)) 0
   (should-not (get-buffer "*Org-Babel Error Output*")))
   ;; clean-up
   (delete-file file)
@@ -89,7 +93,6 @@ sombrero;
 
 (ert-deftest ob-octave/graphics-file-session ()
   "Graphics file in a session.  Test that session is started in *Inferior 
Octave* buffer, link is correctly inserted and graphics file is created (and 
not empty).  Clean-up side-effects."
-  (skip-unless nil) ; FIXME: Failing on CI only
   (let ((file (make-temp-file "test-ob-octave-" nil ".png")))
 (unwind-protect
 (org-test-with-temp-text
@@ -102,7 +105,12 @@ sombrero;
   (should (get-buffer "*Inferior Octave*"))
   (should (search-forward (format "[[file:%s]]" file) nil nil))
   (should (file-readable-p file))
-  (should (> (file-attribute-size (file-attributes file)) 0))
+  (or (> (file-attribute-size (file-attributes file)) 0)
+  ;; Avoid race condition on slow machines.
+  ;; https://orgmode.org/list/87r0wk29dz.fsf@localhost
+  (progn
+(sleep-for 1)
+(> (file-attribute-size (file-attributes file)) 0)))
   (should-not (get-buffer "*Org-Babel Error Output*")))
   ;; clean-up
   (delete-file file)
@@ -113,7 +121,6 @@ sombrero;
 
 (ert-deftest ob-octave/graphics-file-space ()
   "Graphics file with a space in filename.  Test that session is started in 
*Inferior Octave* buffer, link is correctly inserted and graphics file is 
created (and not empty).  Clean-up side-effects."
-  (skip-unless nil) ; FIXME: Failing on CI only
   (let ((file (make-temp-file "test ob octave-" nil ".png")))
 (unwind-protect
 (org-test-with-temp-text
@@ -124,7 +131,12 @@ sombrero;
   (org-babel-execute-src-block)
   (should (search-forward (format "[[file:%s]]" file) nil nil))
   (should (file-readable-p file))
-  (should (> (file-attribute-size (file-attributes file)) 0))
+  (or (> (file-attribute-size (file-attributes file)) 0)
+  ;; Avoid race condition on slow machines.
+  ;; https://orgmode.org/list/87r0wk29dz.fsf@localhost
+  (progn
+(sleep-for 1)
+(> (file-attribute-size (file-attributes file)) 0)))
   (should-not (get-buffer "*Org-Babel Error Output*")))
   ;; clean-up
   (delete-file file)



[elpa] externals/org f8428d0f3e 2/9: org-fold-core--isearch-show: Small refactoring

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit f8428d0f3e4605c49b10a6d92fab95617594c4cf
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-fold-core--isearch-show: Small refactoring

* lisp/org-fold-core.el (org-fold-core--isearch-show): Do not move
point unnecessarily.
---
 lisp/org-fold-core.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lisp/org-fold-core.el b/lisp/org-fold-core.el
index c4d78496e5..8e4d276f42 100644
--- a/lisp/org-fold-core.el
+++ b/lisp/org-fold-core.el
@@ -1137,10 +1137,10 @@ REGION can also be an overlay in current buffer."
   (when (overlayp region)
 (setq region (cons (overlay-start region)
(overlay-end region
-  (org-with-point-at (car region)
-(while (< (point) (cdr region))
+  (let ((pos (car region)))
+(while (< pos (cdr region))
   (funcall org-fold-core-isearch-open-function (car region))
-  (goto-char (org-fold-core-next-visibility-change (point) (cdr region) 
'ignore-hidden)
+  (setq pos (org-fold-core-next-visibility-change pos (cdr region) 
'ignore-hidden)
 
 (defun org-fold-core--isearch-show-temporary (region hide-p)
   "Temporarily reveal text in REGION.



[elpa] externals/org a9c0d4cde2 9/9: org-occur-in-agenda-files: Respect agenda restriction

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit a9c0d4cde2ce039d00c0168a31868b9bb74b2814
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-occur-in-agenda-files: Respect agenda restriction

* lisp/org.el (org-occur-in-agenda-files): Respect agenda restriction
when searching.

Reported-by: alain.coch...@unistra.fr
Link: https://orgmode.org/list/25514.61148.396137.347...@gargle.gargle.howl
---
 lisp/org.el | 32 
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 6906881608..db32ec562c 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -18551,24 +18551,40 @@ block from point."
   (interactive "sOrg-files matching: ")
   (let* ((files (org-agenda-files))
 (tnames (mapcar #'file-truename files))
-(extra org-agenda-text-search-extra-files))
-(when (eq (car extra) 'agenda-archives)
+(extra org-agenda-text-search-extra-files)
+ (narrows nil))
+(when (and (eq (car extra) 'agenda-archives)
+   (not org-agenda-restrict))
   (setq extra (cdr extra))
   (setq files (org-add-archive-files files)))
-(dolist (f extra)
-  (unless (member (file-truename f) tnames)
-   (unless (member f files) (setq files (append files (list f
-   (setq tnames (append tnames (list (file-truename f))
+(unless org-agenda-restrict
+  (dolist (f extra)
+(unless (member (file-truename f) tnames)
+ (unless (member f files) (setq files (append files (list f
+ (setq tnames (append tnames (list (file-truename f)))
 (multi-occur
  (mapcar (lambda (x)
   (with-current-buffer
   ;; FIXME: Why not just (find-file-noselect x)?
   ;; Is it to avoid the "revert buffer" prompt?
   (or (get-file-buffer x) (find-file-noselect x))
-(widen)
+ (if (eq (current-buffer) org-agenda-restrict)
+(progn
+   ;; Save the narrowing state.
+   (push (list (current-buffer) (point-min) (point-max))
+ narrows)
+   (widen)
+   (narrow-to-region org-agenda-restrict-begin
+org-agenda-restrict-end))
+  (widen))
 (current-buffer)))
 files)
- regexp)))
+ regexp)
+;; Restore the narrowing.
+(dolist (narrow narrows)
+  (with-current-buffer (car narrow)
+(widen)
+(narrow-to-region (nth 1 narrow) (nth 2 narrow))
 
 (add-hook 'occur-mode-find-occurrence-hook
  (lambda () (when (derived-mode-p 'org-mode) (org-fold-reveal



[elpa] externals/org 13e78df46a 6/9: * lisp/org-persist.el: Update commentary

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit 13e78df46a0829dd7e984665a13a0556a24590f7
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

* lisp/org-persist.el: Update commentary

Add more examples and document recent additions.
---
 lisp/org-persist.el | 97 +
 1 file changed, 91 insertions(+), 6 deletions(-)

diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index b2a92667a8..9d973606fd 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -27,24 +27,44 @@
 ;; implementation is not meant to be used to store important data -
 ;; all the caches should be safe to remove at any time.
 ;;
+;; Entry points are `org-persist-register', `org-persist-write',
+;; `org-persist-read', and `org-persist-load'.
+;;
+;; `org-persist-register' will mark the data to be stored.  By
+;; default, the data is written on disk before exiting Emacs session.
+;; Optionally, the data can be written immediately.
+;;
+;; `org-persist-write' will immediately write the data onto disk.
+;;
+;; `org-persist-read' will read the data and return its value or list
+;; of values for each requested container.
+;;
+;; `org-persist-load' will read the data with side effects.  For
+;; example, loading `elisp' container will assign the values to
+;; variables.
+;; 
 ;; Example usage:
 ;;
 ;; 1. Temporarily cache Elisp symbol value to disk.  Remove upon
 ;;closing Emacs:
 ;;(org-persist-write 'variable-symbol)
 ;;(org-persist-read 'variable-symbol) ;; read the data later
+;;
 ;; 2. Temporarily cache a remote URL file to disk.  Remove upon
 ;;closing Emacs:
 ;;(org-persist-write 'url "https://static.fsf.org/common/img/logo-new.png";)
 ;;(org-persist-read 'url "https://static.fsf.org/common/img/logo-new.png";)
 ;;`org-persist-read' will return the cached file location or nil if cached 
file
 ;;has been removed.
+;;
 ;; 3. Temporarily cache a file, including TRAMP path to disk:
 ;;(org-persist-write 'file "/path/to/file")
+;;
 ;; 4. Cache file or URL while some other file exists.
 ;;(org-persist-register '(url 
"https://static.fsf.org/common/img/logo-new.png";) '(:file "/path to the other 
file") :expiry 'never :write-immediately t)
 ;;or, if the other file is current buffer file
 ;;(org-persist-register '(url 
"https://static.fsf.org/common/img/logo-new.png";) (current-buffer) :expiry 
'never :write-immediately t)
+;;
 ;; 5. Cache value of a Elisp variable to disk.  The value will be
 ;;saved and restored automatically (except buffer-local
 ;;variables).
@@ -58,11 +78,25 @@
 ;;;; Save buffer-local variable preserving circular links:
 ;;(org-persist-register 'org-element--headline-cache (current-buffer)
 ;;   :inherit 'org-element--cache)
+;;
 ;; 6. Load variable by side effects assigning variable symbol:
 ;;(org-persist-load 'variable-symbol (current-buffer))
+;;
 ;; 7. Version variable value:
 ;;(org-persist-register '((elisp variable-symbol) (version "2.0")))
-;; 8. Cancel variable persistence:
+;;
+;; 8. Define a named container group:
+;;
+;;(let ((info1 "test")
+;;  (info2 "test 2"))
+;;  (org-persist-register
+;; `((version "Named data") (elisp info1 local) (elisp info2 local))
+;; nil :write-immediately t))
+;;(org-persist-read
+;;   '(version "Named data")
+;;   nil nil nil :read-related t) ; => ("Named data" "test" "test2")
+;;
+;; 9. Cancel variable persistence:
 ;;(org-persist-unregister 'variable-symbol 'all) ; in all buffers
 ;;(org-persist-unregister 'variable-symbol) ;; global variable
 ;;(org-persist-unregister 'variable-symbol (current-buffer)) ;; 
buffer-local
@@ -82,7 +116,8 @@
 ;;
 ;; The data collections can be versioned and removed upon expiry.
 ;;
-;; In the code below I will use the following naming conventions:
+;; In the code below, I will use the following naming conventions:
+;;
 ;; 1. Container :: a type of data to be stored
 ;;Containers can store elisp variables, files, and version
 ;;numbers.  Each container can be customized with container
@@ -90,14 +125,47 @@
 ;;variable symbol.  (elisp variable) is a container storing
 ;;Lisp variable value.  Similarly, (version "2.0") container
 ;;will store version number.
+;;
+;;Container can also refer to a list of simple containers:
+;;
+;;;; Three containers stored together.
+;;'((elisp variable) (file "/path") (version "x.x"))
+;;
+;;Providing a single container from the list to `org-persist-read'
+;;is sufficient to retrieve all the containers.
+;;
+;;Example:
+;;
+;;(org-persist-register '((version "My data") (file "/path/to/file")) 
'(:key "key") :write-immediately t)
+;;(org-persist-read '(version "My data") '(:key "key")) ;; => '("My data" 
"/path/to/file/copy")
+;;
 ;; 2. Associated :: an object the container is associated with.  The
 ;;object can be a buffer, file, inode number, file contents hash,
 ;;a generic key, 

[elpa] externals/org a97b378ee5 4/9: org-persist-read: Do not return related containers by default

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit a97b378ee50fa2b38069f05da2a27f0439aae76b
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-persist-read: Do not return related containers by default

* lisp/org-persist.el (org-persist-read): Only return the requested
containers.  Add new optional keyword argument :read-related to read
the containers stored together with requested.  Update the docstring
accordingly.
(org-persist-load): Update definition according to `org-persist-read'.
* lisp/org.el (org-mode): Explicitly load all the associated
cache variables.
---
 lisp/org-persist.el | 38 +++---
 lisp/org.el |  4 ++--
 2 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index 60088af9ee..aee2070319 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -822,14 +822,27 @@ When ASSOCIATED is `all', unregister CONTAINER 
everywhere."
   "Hash table storing as-written data objects.
 
 This data is used to avoid reading the data multiple times.")
-(defun org-persist-read (container &optional associated hash-must-match load?)
+(cl-defun org-persist-read (container &optional associated hash-must-match 
load &key read-related)
   "Restore CONTAINER data for ASSOCIATED.
 When HASH-MUST-MATCH is non-nil, do not restore data if hash for
 ASSOCIATED file or buffer does not match.
+
 ASSOCIATED can be a plist, a buffer, or a string.
 A buffer is treated as (:buffer ASSOCIATED).
 A string is treated as (:file ASSOCIATED).
-When LOAD? is non-nil, load the data instead of reading."
+
+When LOAD is non-nil, load the data instead of reading.
+
+When READ-RELATED is non-nil, return the data stored alongside with
+CONTAINER as well.  For example:
+
+(let ((info \"test\"))
+  (org-persist-register
+\\='((version \"My data\") (elisp info local))
+nil :write-immediately t))
+(org-persist-read \\='(version \"My data\")) ; => \"My data\"
+(org-persist-read \\='(version \"My data\")
+  :read-related t) ; => (\"My data\" \"test\")"
   (unless org-persist--index (org-persist--load-index))
   (setq associated (org-persist--normalize-associated associated))
   (setq container (org-persist--normalize-container container))
@@ -859,19 +872,22 @@ When LOAD? is non-nil, load the data instead of reading."
 (setq data (or (gethash persist-file org-persist--write-cache)
(org-persist--read-elisp-file persist-file)))
 (when data
-  (cl-loop for container in (plist-get collection :container)
+  (cl-loop for c in (plist-get collection :container)
with result = nil
do
-   (if load?
-   (push (org-persist-load:generic container (alist-get 
container data nil nil #'equal) collection) result)
- (push (org-persist-read:generic container (alist-get 
container data nil nil #'equal) collection) result))
-   (run-hook-with-args 'org-persist-after-read-hook container 
associated)
-   finally return (if (= 1 (length result)) (car result) 
result)))
-
-(defun org-persist-load (container &optional associated hash-must-match)
+   (when (or read-related
+ (equal c container)
+ (member c container))
+ (if load
+ (push (org-persist-load:generic c (alist-get c data 
nil nil #'equal) collection) result)
+   (push (org-persist-read:generic c (alist-get c data nil 
nil #'equal) collection) result)))
+   (run-hook-with-args 'org-persist-after-read-hook c 
associated)
+   finally return (if (= 1 (length result)) (car result) 
(nreverse result
+
+(cl-defun org-persist-load (container &optional associated hash-must-match 
&key read-related)
   "Load CONTAINER data for ASSOCIATED.
 The arguments have the same meaning as in `org-persist-read'."
-  (org-persist-read container associated hash-must-match t))
+  (org-persist-read container associated hash-must-match t :read-related 
read-related))
 
 (defun org-persist-load-all (&optional associated)
   "Restore all the persistent data associated with ASSOCIATED."
diff --git a/lisp/org.el b/lisp/org.el
index 26a4c8b1c6..6906881608 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -206,7 +206,7 @@ Stars are put in group 1 and the trimmed body in group 2.")
 (declare-function org-latex-make-preamble "ox-latex" (info &optional template 
snippet?))
 (declare-function org-num-mode "org-num" (&optional arg))
 (declare-function org-plot/gnuplot "org-plot" (&optional params))
-(declare-function org-persist-load "org-persist" (container &optional 
associated hash-must-match))
+(declare-function org-persist-load "org-persist")
 (declare-function org-tags-view "org-agenda" (&optional todo-only match))
 (declare-fun

[elpa] externals/org e8cb52bd3e 1/9: org-persist-read: Attempt to write newly register data before reading

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit e8cb52bd3e6ca6258f27cf81586c2c4f4a4de09b
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-persist-read: Attempt to write newly register data before reading

* lisp/org-persist.el (org-persist-read): If data is not yet written,
try to write it before reading.
---
 lisp/org-persist.el | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index 3ef4eb24af..961a2b1ca2 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -828,14 +828,18 @@ When LOAD? is non-nil, load the data instead of reading."
  (plist-get collection :persist-file
  (data nil))
 (when (and collection
-   (file-exists-p persist-file)
(or (not (plist-get collection :expiry)) ; current session
(not (org-persist--gc-expired-p
(plist-get collection :expiry) collection)))
(or (not hash-must-match)
(and (plist-get associated :hash)
 (equal (plist-get associated :hash)
-   (plist-get (plist-get collection :associated) 
:hash)
+   (plist-get (plist-get collection :associated) 
:hash
+   (or (file-exists-p persist-file)
+   ;; Attempt to write data if it is not yet written.
+   (progn
+ (org-persist-write container associated 'no-read)
+ (file-exists-p persist-file
   (unless (seq-find (lambda (v)
   (run-hook-with-args-until-success 
'org-persist-before-read-hook v associated))
 (plist-get collection :container))



[elpa] externals/org dedf1cc21f 7/9: org-persist: Add more normalizations and new `elisp-data' container

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit dedf1cc21fb7da4c2b0da49c1069351f3de23fbc
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-persist: Add more normalizations and new `elisp-data' container

* lisp/org-persist.el (org-persist--normalize-container): Recognize
new `elisp-data' container.  Treat raw strings, keywords, and quoted
expressions as `elisp-data' container options.
(org-persist-read:elisp-data):
(org-persist-load:elisp-data):
(org-persist-write:elisp-data):
(org-persist-gc:elisp-data):
(org-persist-associated-files:elisp-data): New functions.
(org-persist-read): Simplify docstring example using `elisp-data'
container.

Also, update examples in top comment.
---
 lisp/org-persist.el | 58 +++--
 1 file changed, 39 insertions(+), 19 deletions(-)

diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index 9d973606fd..3f436c884d 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -90,10 +90,10 @@
 ;;(let ((info1 "test")
 ;;  (info2 "test 2"))
 ;;  (org-persist-register
-;; `((version "Named data") (elisp info1 local) (elisp info2 local))
+;; `("Named data" (elisp info1 local) (elisp info2 local))
 ;; nil :write-immediately t))
 ;;(org-persist-read
-;;   '(version "Named data")
+;;   "Named data"
 ;;   nil nil nil :read-related t) ; => ("Named data" "test" "test2")
 ;;
 ;; 9. Cancel variable persistence:
@@ -139,6 +139,16 @@
 ;;(org-persist-register '((version "My data") (file "/path/to/file")) 
'(:key "key") :write-immediately t)
 ;;(org-persist-read '(version "My data") '(:key "key")) ;; => '("My data" 
"/path/to/file/copy")
 ;;
+;;Containers can also take a short form:
+;;
+;;'("String" file '(quoted elisp "value") :keyword)
+;;is the same as
+;;'((elisp-data "String") (file nil)
+;;  (elisp-data '(quoted elisp "value")) (elisp-data :keyword))
+;;
+;;Note that '(file "String" (elisp value)) would be interpreted as
+;;`file' container with "String" path and extra options.
+;;
 ;; 2. Associated :: an object the container is associated with.  The
 ;;object can be a buffer, file, inode number, file contents hash,
 ;;a generic key, or multiple of them.  Associated can also be nil.
@@ -544,18 +554,22 @@ MISC, if non-nil will be appended to the collection."
 
  Reading container data.
 
-(defun org-persist--normalize-container (container)
-  "Normalize CONTAINER representation into (type . settings)."
-  (if (and (listp container) (listp (car container)))
-  (mapcar #'org-persist--normalize-container container)
-(pcase container
-  ((or `elisp `version `file `index `url)
-   (list container nil))
-  ((pred symbolp)
-   (list `elisp container))
-  (`(,(or `elisp `version `file `index `url) . ,_)
-   container)
-  (_ (error "org-persist: Unknown container type: %S" container)
+(defun org-persist--normalize-container (container &optional inner)
+  "Normalize CONTAINER representation into (type . settings).
+
+When INNER is non-nil, do not try to match as list of containers."
+  (pcase container
+((or `elisp `elisp-data `version `file `index `url)
+ `(,container nil))
+((or (pred keywordp) (pred stringp) `(quote . ,_))
+ `(elisp-data ,container))
+((pred symbolp)
+ `(elisp ,container))
+(`(,(or `elisp `elisp-data `version `file `index `url) . ,_)
+ container)
+((and (pred listp) (guard (not inner)))
+ (mapcar (lambda (c) (org-persist--normalize-container c 'inner)) 
container))
+(_ (error "org-persist: Unknown container type: %S" container
 
 (defvar org-persist--associated-buffer-cache (make-hash-table :weakness 'key)
   "Buffer hash cache.")
@@ -620,10 +634,12 @@ COLLECTION is the plist holding data collection."
   "Read elisp container and return LISP-VALUE."
   lisp-value)
 
-(defun org-persist-read:version (container _ __)
-  "Read version CONTAINER."
+(defun org-persist-read:elisp-data (container _ __)
+  "Read elisp-data CONTAINER."
   (cadr container))
 
+(defalias 'org-persist-read:version #'org-persist-read:elisp-data)
+
 (defun org-persist-read:file (_ path __)
   "Read file container from PATH."
   (when (and path (file-exists-p (concat org-persist-directory path)))
@@ -675,6 +691,7 @@ COLLECTION is the plist holding data collection."
   (set lisp-symbol lisp-value))
   (set lisp-symbol lisp-value
 
+(defalias 'org-persist-load:elisp-data #'org-persist-read:elisp-data)
 (defalias 'org-persist-load:version #'org-persist-read:version)
 (defalias 'org-persist-load:file #'org-persist-read:file)
 
@@ -742,6 +759,7 @@ COLLECTION is the plist holding data collection."
  (when (boundp (cadr container))
(symbol-value (cadr container
 
+(defalias 'org-persist-write:elisp-data #'ignore)
 (defalias 'org-persist-write:version #'ignore)
 
 (defun org-persist-write:file (c c

[elpa] externals/org 14bfe2841c 5/9: org-persist: Use `list-data-mode' for stored data

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit 14bfe2841c164874d90a9485f459228366098682
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-persist: Use `list-data-mode' for stored data

* lisp/org-persist.el (org-persist-version): Bump version.
(org-persist-index-file): Use .eld extension by default.
(org-persist--index): Set mode in buffer-local variable line.
---
 lisp/org-persist.el | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index aee2070319..b2a92667a8 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -161,7 +161,7 @@
 (declare-function org-at-heading-p "org" (&optional invisible-not-ok))
 
 
-(defconst org-persist--storage-version "2.7"
+(defconst org-persist--storage-version "3.0"
   "Persistent storage layout version.")
 
 (defgroup org-persist nil
@@ -219,7 +219,7 @@ function will be called with a single argument - 
collection."
  (number :tag "Keep N days")
  (function :tag "Function")))
 
-(defconst org-persist-index-file "index"
+(defconst org-persist-index-file "index.eld"
   "File name used to store the data index.")
 
 (defvar org-persist--disable-when-emacs-Q t
@@ -337,6 +337,7 @@ FORMAT and ARGS are passed to `message'."
 (unless (file-exists-p (file-name-directory file))
   (make-directory (file-name-directory file) t))
 (with-temp-file file
+  (insert ";;   -*- mode: lisp-data; -*-\n")
   (if pp
   (pp data (current-buffer))
 (prin1 data (current-buffer



[elpa] externals/org b86989c8df 8/9: Merge branch 'bugfix'

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit b86989c8df8c7a3afe23bf9d349f53d39ec3a053
Merge: dedf1cc21f e5c45358ae
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

Merge branch 'bugfix'
---
 testing/lisp/test-ob-octave.el | 24 ++--
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/testing/lisp/test-ob-octave.el b/testing/lisp/test-ob-octave.el
index 6eb731295e..8b68150fb0 100644
--- a/testing/lisp/test-ob-octave.el
+++ b/testing/lisp/test-ob-octave.el
@@ -67,7 +67,6 @@
 (ert-deftest ob-octave/graphics-file ()
   "Graphics file.  Test that link is correctly inserted and graphics file is 
created (and not empty).  Clean-up side-effects."
   ;; In case a prior test left the Error Output buffer hanging around.
-  (skip-unless nil) ; FIXME: Failing on CI only
   (when (get-buffer "*Org-Babel Error Output*")
 (kill-buffer "*Org-Babel Error Output*"))
   (let ((file (make-temp-file "test-ob-octave-" nil ".png")))
@@ -80,7 +79,12 @@ sombrero;
   (org-babel-execute-src-block)
   (should (search-forward (format "[[file:%s]]" file) nil nil))
   (should (file-readable-p file))
-  (should (> (file-attribute-size (file-attributes file)) 0))
+  (should (or (> (file-attribute-size (file-attributes file)) 0)
+  ;; Avoid race condition on slow machines.
+  ;; https://orgmode.org/list/87r0wk29dz.fsf@localhost
+  (progn
+(sleep-for 1)
+(> (file-attribute-size (file-attributes file)) 0
   (should-not (get-buffer "*Org-Babel Error Output*")))
   ;; clean-up
   (delete-file file)
@@ -89,7 +93,6 @@ sombrero;
 
 (ert-deftest ob-octave/graphics-file-session ()
   "Graphics file in a session.  Test that session is started in *Inferior 
Octave* buffer, link is correctly inserted and graphics file is created (and 
not empty).  Clean-up side-effects."
-  (skip-unless nil) ; FIXME: Failing on CI only
   (let ((file (make-temp-file "test-ob-octave-" nil ".png")))
 (unwind-protect
 (org-test-with-temp-text
@@ -102,7 +105,12 @@ sombrero;
   (should (get-buffer "*Inferior Octave*"))
   (should (search-forward (format "[[file:%s]]" file) nil nil))
   (should (file-readable-p file))
-  (should (> (file-attribute-size (file-attributes file)) 0))
+  (or (> (file-attribute-size (file-attributes file)) 0)
+  ;; Avoid race condition on slow machines.
+  ;; https://orgmode.org/list/87r0wk29dz.fsf@localhost
+  (progn
+(sleep-for 1)
+(> (file-attribute-size (file-attributes file)) 0)))
   (should-not (get-buffer "*Org-Babel Error Output*")))
   ;; clean-up
   (delete-file file)
@@ -113,7 +121,6 @@ sombrero;
 
 (ert-deftest ob-octave/graphics-file-space ()
   "Graphics file with a space in filename.  Test that session is started in 
*Inferior Octave* buffer, link is correctly inserted and graphics file is 
created (and not empty).  Clean-up side-effects."
-  (skip-unless nil) ; FIXME: Failing on CI only
   (let ((file (make-temp-file "test ob octave-" nil ".png")))
 (unwind-protect
 (org-test-with-temp-text
@@ -124,7 +131,12 @@ sombrero;
   (org-babel-execute-src-block)
   (should (search-forward (format "[[file:%s]]" file) nil nil))
   (should (file-readable-p file))
-  (should (> (file-attribute-size (file-attributes file)) 0))
+  (or (> (file-attribute-size (file-attributes file)) 0)
+  ;; Avoid race condition on slow machines.
+  ;; https://orgmode.org/list/87r0wk29dz.fsf@localhost
+  (progn
+(sleep-for 1)
+(> (file-attribute-size (file-attributes file)) 0)))
   (should-not (get-buffer "*Org-Babel Error Output*")))
   ;; clean-up
   (delete-file file)



[elpa] externals/org updated (5549357bf2 -> a9c0d4cde2)

2022-12-29 Thread ELPA Syncer
elpasync pushed a change to branch externals/org.

  from  5549357bf2 Merge branch 'bugfix'
   new  e8cb52bd3e org-persist-read: Attempt to write newly register data 
before reading
   new  f8428d0f3e org-fold-core--isearch-show: Small refactoring
   new  ffec2db731 org-persist-write:elisp: Allow buffer-local/global elisp 
container scope
   new  a97b378ee5 org-persist-read: Do not return related containers by 
default
   new  14bfe2841c org-persist: Use `list-data-mode' for stored data
   new  13e78df46a * lisp/org-persist.el: Update commentary
   new  dedf1cc21f org-persist: Add more normalizations and new 
`elisp-data' container
   new  e5c45358ae test-ob-octave.el: Avoid race condition on slow machines
   new  b86989c8df Merge branch 'bugfix'
   new  a9c0d4cde2 org-occur-in-agenda-files: Respect agenda restriction


Summary of changes:
 lisp/org-fold-core.el  |   6 +-
 lisp/org-persist.el| 231 +
 lisp/org.el|  36 +--
 testing/lisp/test-ob-octave.el |  24 +++--
 4 files changed, 232 insertions(+), 65 deletions(-)



[elpa] externals/org ffec2db731 3/9: org-persist-write:elisp: Allow buffer-local/global elisp container scope

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit ffec2db731ff71a9a2b84ad3eaa06b62c66d70e3
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-persist-write:elisp: Allow buffer-local/global elisp container scope

* lisp/org-persist.el (org-persist-read:index): Allow setting where
the elisp container value is taken from: locally, from buffer, or from
a global variable.
---
 lisp/org-persist.el | 33 +++--
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index 961a2b1ca2..60088af9ee 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -632,16 +632,29 @@ COLLECTION is the plist holding data collection."
 
 (defun org-persist-write:elisp (container collection)
   "Write elisp CONTAINER according to COLLECTION."
-  (if (and (plist-get (plist-get collection :associated) :file)
-   (get-file-buffer (plist-get (plist-get collection :associated) 
:file)))
-  (let ((buf (get-file-buffer (plist-get (plist-get collection 
:associated) :file
-;; FIXME: There is `buffer-local-boundp' introduced in Emacs 28.
-;; Not using it yet to keep backward compatibility.
-(condition-case nil
-(buffer-local-value (cadr container) buf)
-  (void-variable nil)))
-(when (boundp (cadr container))
-  (symbol-value (cadr container)
+  (let ((scope (nth 2 container)))
+(pcase scope
+  ((pred stringp)
+   (when-let ((buf (or (get-buffer scope)
+   (get-file-buffer scope
+ ;; FIXME: There is `buffer-local-boundp' introduced in Emacs 28.
+ ;; Not using it yet to keep backward compatibility.
+ (condition-case nil
+ (buffer-local-value (cadr container) buf)
+   (void-variable nil
+  (`local
+   (when (boundp (cadr container))
+ (symbol-value (cadr container
+  (`nil
+   (if-let ((buf (and (plist-get (plist-get collection :associated) :file)
+  (get-file-buffer (plist-get (plist-get collection 
:associated) :file)
+   ;; FIXME: There is `buffer-local-boundp' introduced in Emacs 28.
+   ;; Not using it yet to keep backward compatibility.
+   (condition-case nil
+   (buffer-local-value (cadr container) buf)
+ (void-variable nil))
+ (when (boundp (cadr container))
+   (symbol-value (cadr container
 
 (defalias 'org-persist-write:version #'ignore)
 



[elpa] externals/org 21741a4696: * lisp/ob-python.el: Mark python-mode support for removal

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit 21741a4696a44fefc747cd86155ad3f622b23701
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

* lisp/ob-python.el: Mark python-mode support for removal

Add FIXME record to remove python-mode.el support in the next release.
See the annoucement in https://orgmode.org/Changes.html (Org 9.6)

Link: https://orgmode.org/list/87r0xq8dk9@gnu.org
---
 lisp/ob-python.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lisp/ob-python.el b/lisp/ob-python.el
index 1829ab149a..897462a2a6 100644
--- a/lisp/ob-python.el
+++ b/lisp/ob-python.el
@@ -52,6 +52,7 @@
   :group 'org-babel
   :type 'string)
 
+;; FIXME: Remove third-party `python-mode' package support in the next release.
 (defcustom org-babel-python-mode
   (if (featurep 'python-mode) 'python-mode 'python)
   "Preferred python mode for use in running python interactively.



[nongnu] elpa/helm-core updated (796b84970d -> 57332b4bda)

2022-12-29 Thread ELPA Syncer
elpasync pushed a change to branch elpa/helm-core.

  from  796b84970d Update help string
  adds  57332b4bda Notify `helm-resume' we are completing filenames

No new revisions were added by this update.

Summary of changes:
 helm-core.el  | 1 +
 helm-files.el | 3 +++
 2 files changed, 4 insertions(+)



[nongnu] elpa/helm 57332b4bda: Notify `helm-resume' we are completing filenames

2022-12-29 Thread ELPA Syncer
branch: elpa/helm
commit 57332b4bdad1d771f7d103157c45d77f6007e02b
Author: Thierry Volpiatto 
Commit: Thierry Volpiatto 

Notify `helm-resume' we are completing filenames

As `minibuffer-completing-file-name` is let-bounded, there is no way
to pass it later to helm-resume, so use a new slot
:completing-file-name in HFF class.
---
 helm-core.el  | 1 +
 helm-files.el | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/helm-core.el b/helm-core.el
index 7e355d8140..f50ad3b0f2 100644
--- a/helm-core.el
+++ b/helm-core.el
@@ -4668,6 +4668,7 @@ See `helm-fuzzy-default-highlight-match'."
   (cl-loop with diac = (helm-get-attr 'diacritics source)
with file-comp-p = (and (not (helm-action-window))
(or minibuffer-completing-file-name
+   (helm-get-attr 'completing-file-name 
source)
(helm-guess-filename-at-point)))
;; helm-pattern may have been modified (fuzzy) so ensure to
;; use helm-input which is the raw pattern.
diff --git a/helm-files.el b/helm-files.el
index cf7c8d5ab0..9a40135d43 100644
--- a/helm-files.el
+++ b/helm-files.el
@@ -1016,6 +1016,9 @@ Should not be used among other sources.")
(nohighlight :initform (progn helm-ff-nohighlight-matches))
(keymap :initform 'helm-find-files-map)
(candidate-number-limit :initform 'helm-ff-candidate-number-limit)
+   (completing-file-name
+:initarg :completing-file-name :initform t
+:documentation "Flag to notify `helm-resume' we are completing filenames.")
(action-transformer
 :initform 'helm-find-files-action-transformer)
(action :initform 'helm-find-files-actions)



[elpa] externals/org fbd08a0d9b 2/3: oc-basic: Display ?? in place of missing citations on export

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit fbd08a0d9bcd606867cfb5e5beaea9a524565312
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

oc-basic: Display ?? in place of missing citations on export

* lisp/oc-basic.el (org-cite-basic--format-author-year):
(org-cite-basic-export-citation): Display "" for missing year and
"??"  for missing other fields.

Reported-by: Ihor Radchenko 
Link: https://orgmode.org/list/871qr6kiuv.fsf@localhost
---
 lisp/oc-basic.el | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/lisp/oc-basic.el b/lisp/oc-basic.el
index 01e314bfdb..1c56f6f805 100644
--- a/lisp/oc-basic.el
+++ b/lisp/oc-basic.el
@@ -580,8 +580,8 @@ INFO is the export state, as a property list."
  (suffix (org-element-property :suffix ref)))
  (funcall format-ref
   prefix
-  (org-cite-basic--get-author k info)
-  (org-cite-basic--get-year k info)
+  (or (org-cite-basic--get-author k info) "??")
+  (or (org-cite-basic--get-year k info) "")
   suffix)))
  (org-cite-get-references citation)
  org-cite-basic-author-year-separator)
@@ -652,15 +652,17 @@ export communication channel, as a property list."
  (org-export-data
   (mapconcat
(lambda (key)
- (let ((author (org-cite-basic--get-author key info)))
-   (if caps (capitalize author) author)))
+ (or
+  (let ((author (org-cite-basic--get-author key info)))
+(if caps (capitalize author) author))
+  "??"))
(org-cite-get-references citation t)
org-cite-basic-author-year-separator)
   info)))
   ;; "noauthor" style.
   (`(,(or "noauthor" "na") . ,variant)
(format (if (funcall has-variant-p variant 'bare) "%s" "(%s)")
-   (mapconcat (lambda (key) (org-cite-basic--get-year key info))
+   (mapconcat (lambda (key) (or (org-cite-basic--get-year key 
info) ""))
   (org-cite-get-references citation t)
   org-cite-basic-author-year-separator)))
   ;; "nocite" style.



[elpa] externals/org 5bc5add326 3/3: lisp/org-keys.el: Provide terminal binding for `org-insert-structure-template'

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit 5bc5add3262c1d0aea8f42f6cb57aab2010694cd
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

lisp/org-keys.el: Provide terminal binding for 
`org-insert-structure-template'

* lisp/org-keys.el (or): Add alternative terminal binding for
`org-insert-structure-template'.  The default binding may not be
available in some terminals.

* doc/org-manual.org (Using Org on a TTY): List the new binding in the
manual.

Reported-by: Anthony Carrico 
Link: 
https://orgmode.org/list/d9222967-5747-bf54-8041-4a8453fe8...@memebeam.org
---
 doc/org-manual.org | 1 +
 lisp/org-keys.el   | 1 +
 2 files changed, 2 insertions(+)

diff --git a/doc/org-manual.org b/doc/org-manual.org
index 640ba8c9d0..04dcec15da 100644
--- a/doc/org-manual.org
+++ b/doc/org-manual.org
@@ -20496,6 +20496,7 @@ further based on their usage needs.  For example, the 
normal
 | {{{kbd(S-DOWN)}}}| {{{kbd(C-c DOWN)}}}  |  | 
 |
 | {{{kbd(C-S-LEFT)}}}  | {{{kbd(C-c C-x LEFT)}}}  |  | 
 |
 | {{{kbd(C-S-RIGHT)}}} | {{{kbd(C-c C-x RIGHT)}}} |  | 
 |
+| {{{kbd(C-c C-\,)}}}  | {{{kbd(C-c C-x s)}}} |  | 
 |
 
 ** Protocols for External Access
 :PROPERTIES:
diff --git a/lisp/org-keys.el b/lisp/org-keys.el
index 95f64a3f9e..7c6e38e645 100644
--- a/lisp/org-keys.el
+++ b/lisp/org-keys.el
@@ -503,6 +503,7 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command 
names."
   (org-defkey org-mode-map (kbd "C-c C-x c") #'org-table-copy-down)
   (org-defkey org-mode-map (kbd "C-c C-x m") #'org-meta-return)
   (org-defkey org-mode-map (kbd "C-c C-x M") #'org-insert-todo-heading)
+  (org-defkey org-mode-map (kbd "C-c C-x s") #'org-insert-structure-template)
   (org-defkey org-mode-map (kbd "C-c C-x RET") #'org-meta-return)
   (org-defkey org-mode-map (kbd "ESC RET") #'org-meta-return)
   (org-defkey org-mode-map (kbd "ESC ") #'org-metaleft)



[elpa] externals/org b2adb68afa 1/3: * doc/org-manual.org: Clarify :results file link with no :file

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit b2adb68afa63d0564a8fb5e7383eeb1a382a7c2f
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

* doc/org-manual.org: Clarify :results file link with no :file

(Type):
(Format): Document that :results file link is using the source block
result as file path when :file header argument is not present.

Reported-by: dalanicolai 
Link: 
https://orgmode.org/list/CACJP=3=HrzaB+b2bTk2=-hrcv0STx41eFjedgtp=qxvgjvj...@mail.gmail.com
---
 doc/org-manual.org | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/doc/org-manual.org b/doc/org-manual.org
index cf77615805..640ba8c9d0 100644
--- a/doc/org-manual.org
+++ b/doc/org-manual.org
@@ -18351,6 +18351,9 @@ described in the documentation for individual 
languages.  See
   from the =file-ext= header argument.  In that case, both the name
   and the extension are mandatory.
 
+  Result can also be interpreted as path to file.  See =:results
+  link=.
+
   #+begin_example
   ,#+name: circle
   ,#+BEGIN_SRC asymptote :results value file :file-ext pdf
@@ -18431,6 +18434,9 @@ follows from the type specified above.
   [[file:org-mode-unicorn.svg]]
   #+end_example
 
+  If =:file= header argument is omitted, interpret source block result
+  as the file path.
+
 - =org= ::
 
   Results enclosed in a =BEGIN_SRC org= block.  For comma-escape,



[elpa] externals/org updated (21741a4696 -> 5bc5add326)

2022-12-29 Thread ELPA Syncer
elpasync pushed a change to branch externals/org.

  from  21741a4696 * lisp/ob-python.el: Mark python-mode support for removal
   new  b2adb68afa * doc/org-manual.org: Clarify :results file link with no 
:file
   new  fbd08a0d9b oc-basic: Display ?? in place of missing citations on 
export
   new  5bc5add326 lisp/org-keys.el: Provide terminal binding for 
`org-insert-structure-template'


Summary of changes:
 doc/org-manual.org |  7 +++
 lisp/oc-basic.el   | 12 +++-
 lisp/org-keys.el   |  1 +
 3 files changed, 15 insertions(+), 5 deletions(-)



[elpa] elpa-admin 378d1ccb74: * elpa-admin.el (elpaa--report-failure): Fallback on email-bcc

2022-12-29 Thread Stefan Monnier via
branch: elpa-admin
commit 378d1ccb7462344890ed007f431f86f07ae5aa17
Author: Stefan Monnier 
Commit: Stefan Monnier 

* elpa-admin.el (elpaa--report-failure): Fallback on email-bcc
---
 elpa-admin.el | 22 --
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/elpa-admin.el b/elpa-admin.el
index 18151d69ab..c3771ca2f4 100644
--- a/elpa-admin.el
+++ b/elpa-admin.el
@@ -650,16 +650,18 @@ returns.  Return the selected revision."
   (or metadata
   (elpaa--metadata (elpaa--pkg-root pkg)
pkg-spec)
-(unless (equal maintainers "")
-  (elpaa--send-email
-   `((From   . ,elpaa--email-from)
- (To . ,maintainers)
- (Bcc. ,elpaa--notification-email-bcc)
- (Subject . ,(concat (format "[%s ELPA] "  elpaa--name)
- (format title-format pkg
-   (concat msg
-   "\n\n## The current error output was the following:\n\n"
-   txt)
+(elpaa--send-email
+ `((From . ,elpaa--email-from)
+   (To   . ,(if (equal maintainers "")
+ elpaa--notification-email-bcc
+   maintainers))
+   (Bcc  . ,(unless (equal maintainers "")
+   elpaa--notification-email-bcc))
+   (Subject . ,(concat (format "[%s ELPA] "  elpaa--name)
+   (format title-format pkg
+ (concat msg
+ "\n\n## The current error output was the following:\n\n"
+ txt
 
 (defun elpaa--check-sync-failures (pkg-spec metadata)
   (let* ((pkg (car pkg-spec))



[elpa] externals/org e5a3a07cac: lisp/ob-scheme.el: Add Rudolf Adamkovič as the maintainer

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit e5a3a07cac037a44ae914fdf41698ddc709b4cf7
Author: Bastien 
Commit: Bastien 

lisp/ob-scheme.el: Add Rudolf Adamkovič as the maintainer
---
 lisp/ob-scheme.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el
index cfeb1a0adc..5be13bd89c 100644
--- a/lisp/ob-scheme.el
+++ b/lisp/ob-scheme.el
@@ -4,6 +4,7 @@
 
 ;; Authors: Eric Schulte
 ;; Michael Gauland
+;; Maintainer: Rudolf Adamkovič 
 ;; Keywords: literate programming, reproducible research, scheme
 ;; URL: https://orgmode.org
 



[nongnu] elpa/evil 1226944a5d 4/6: Remove some unnecessary evil-normalize-position:s

2022-12-29 Thread ELPA Syncer
branch: elpa/evil
commit 1226944a5d7a409400394e34b673e57544bb8abb
Author: Axel Forsman 
Commit: Tom Dalziel <33435574+tomd...@users.noreply.github.com>

Remove some unnecessary evil-normalize-position:s

All Emacs functions that take positions as arguments such as goto-char
already do the normalization performed by evil-normalize-position. The
only case where it would be necessary is when a marker that may be
mutated is stored. Therefore it would probably be a good idea to replace
evil-normalize-position with conditional marker-position altogether.
---
 evil-commands.el | 15 ++-
 evil-common.el   |  6 +-
 evil-macros.el   |  8 ++--
 evil-states.el   | 14 ++
 4 files changed, 15 insertions(+), 28 deletions(-)

diff --git a/evil-commands.el b/evil-commands.el
index 3b73dfdd54..d624717cde 100644
--- a/evil-commands.el
+++ b/evil-commands.el
@@ -492,12 +492,11 @@ and jump to the corresponding one."
(count
 (evil-ensure-column
   (goto-char
-   (evil-normalize-position
-(let ((size (- (point-max) (point-min
-  (+ (point-min)
- (if (> size 8)
- (* count (/ size 100))
-   (/ (* count size) 100)))
+   (let ((size (- (point-max) (point-min
+ (+ (point-min)
+(if (> size 8)
+(* count (/ size 100))
+  (/ (* count size) 100))
 (setq evil-this-type 'line))
((and (evil-looking-at-start-comment t)
  (let ((pnt (point)))
@@ -4252,9 +4251,7 @@ range. The given argument is passed straight to
 Default position is the beginning of the buffer."
   :jump t
   (interactive "")
-  (let ((position (evil-normalize-position
-   (or position (point-min)
-(goto-char position)))
+  (goto-char (or position (point-min
 
 (evil-define-operator evil-ex-line-number (beg end)
   "Print the last line number."
diff --git a/evil-common.el b/evil-common.el
index 1ea0f8732c..ae03ae8b90 100644
--- a/evil-common.el
+++ b/evil-common.el
@@ -1014,9 +1014,7 @@ so it is more compatible with Evil's notions of eol & 
tracking."
   "Restrict the buffer to BEG and END.
 BEG or END may be nil, specifying a one-sided restriction including
 `point-min' or `point-max'. See also `evil-with-restriction.'"
-  (setq beg (or (evil-normalize-position beg) (point-min)))
-  (setq end (or (evil-normalize-position end) (point-max)))
-  (narrow-to-region beg end))
+  (narrow-to-region (or beg (point-min)) (or end (point-max
 
 (defmacro evil-with-restriction (beg end &rest body)
   "Execute BODY with the buffer narrowed to BEG and END.
@@ -2315,8 +2313,6 @@ variable `evil-kbd-macro-suppress-motion-error'."
 (defun evil-move-mark (pos)
   "Set buffer's mark to POS.
 If POS is nil, delete the mark."
-  (when pos
-(setq pos (evil-normalize-position pos)))
   (set-marker (mark-marker) pos))
 
 (defun evil-save-transient-mark-mode ()
diff --git a/evil-macros.el b/evil-macros.el
index 4ee9ec693f..10ccddd630 100644
--- a/evil-macros.el
+++ b/evil-macros.el
@@ -707,9 +707,7 @@ be transformations on buffer positions, like `:expand' and 
`:contract'.
`(defun ,name (beg end &rest properties)
   ,(format "Return size of %s from BEG to END \
 with PROPERTIES.\n\n%s%s" type string doc)
-  (let ((beg (evil-normalize-position beg))
-(end (evil-normalize-position end))
-(type ',type)
+  (let ((type ',type)
 plist range)
 (when (and beg end)
   (save-excursion
@@ -731,9 +729,7 @@ with PROPERTIES.\n\n%s%s" type string doc)
`(defun ,name (beg end &rest properties)
   ,(format "Perform %s transformation on %s from BEG to END \
 with PROPERTIES.\n\n%s%s" sym type string doc)
-  (let ((beg (evil-normalize-position beg))
-(end (evil-normalize-position end))
-(type ',type)
+  (let ((type ',type)
 plist range)
 (when (and beg end)
   (save-excursion
diff --git a/evil-states.el b/evil-states.el
index 2bdf015927..05f46a571f 100644
--- a/evil-states.el
+++ b/evil-states.el
@@ -500,14 +500,12 @@ mark and point, use `evil-visual-select' instead."
 If TYPE is given, also set the Visual type.
 If MESSAGE is given, display it in the echo area."
   (interactive)
-  (let* ((point (evil-normalize-position
- (or point (point
- (mark (evil-normalize-position
-(or mark
-(when (or (evil-visual-state-p)
-  (region-active-p))
-  (mark t))
-point
+  (let* ((point (or point (point)))
+ (mark (or mark
+   (when (or (evil-visual-state-p)
+ (region-active-p))
+ (mark t))
+ 

[nongnu] elpa/evil 13f01f6245 6/6: Make evil-mode-line-format recognise nil value

2022-12-29 Thread ELPA Syncer
branch: elpa/evil
commit 13f01f6245629a8a5c402ca51a4738c96e4b2315
Author: Protesilaos Stavrou 
Commit: Tom Dalziel <33435574+tomd...@users.noreply.github.com>

Make evil-mode-line-format recognise nil value
---
 evil-vars.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/evil-vars.el b/evil-vars.el
index c8ec51a866..aec747f846 100644
--- a/evil-vars.el
+++ b/evil-vars.el
@@ -308,6 +308,7 @@ WHERE is either `before' or `after', and WHICH is a symbol 
in
 `mode-line-format'.  The tag is then placed before or after that
 symbol, respectively."
   :type '(radio :value 'before
+(const :tag "No tag" nil)
 (const before)
 (const after)
 (cons :tag "Next to symbol"



[nongnu] elpa/evil updated (2e8576188b -> 13f01f6245)

2022-12-29 Thread ELPA Syncer
elpasync pushed a change to branch elpa/evil.

  from  2e8576188b Only restrict objects when current line is not empty 
(#1721)
   new  0c535d6dab Simplify temporary-goal-column logic
   new  be6b09bcec Make visual block selection after j/k match Vim
   new  e2ec733b05 Remove str-conversions in evil-visual-block-corner
   new  1226944a5d Remove some unnecessary evil-normalize-position:s
   new  a87d5fd1ad evil-core: don't change match data in the advice of  
set-window-buffer
   new  13f01f6245 Make evil-mode-line-format recognise nil value


Summary of changes:
 evil-commands.el | 21 ++
 evil-common.el   | 87 +---
 evil-core.el |  2 +-
 evil-macros.el   |  8 ++
 evil-states.el   | 79 ++
 evil-tests.el| 16 +--
 evil-types.el|  6 ++--
 evil-vars.el |  1 +
 8 files changed, 88 insertions(+), 132 deletions(-)



[nongnu] elpa/evil e2ec733b05 3/6: Remove str-conversions in evil-visual-block-corner

2022-12-29 Thread ELPA Syncer
branch: elpa/evil
commit e2ec733b056c27f0d6c819e6bf6adbbdc0ef8316
Author: Axel Forsman 
Commit: Tom Dalziel <33435574+tomd...@users.noreply.github.com>

Remove str-conversions in evil-visual-block-corner
---
 evil-states.el | 44 ++--
 evil-types.el  |  6 ++
 2 files changed, 16 insertions(+), 34 deletions(-)

diff --git a/evil-states.el b/evil-states.el
index a7242c226a..2bdf015927 100644
--- a/evil-states.el
+++ b/evil-states.el
@@ -281,7 +281,7 @@ the selection is enabled.
   ;; refresh the :corner property
   (setq evil-visual-properties
 (plist-put evil-visual-properties :corner
-   (evil-visual-block-corner 'upper-left
+   (evil-visual-block-corner
 
 (evil-define-state visual
   "Visual state."
@@ -812,37 +812,21 @@ the horizontal or vertical component of CORNER is used.
 CORNER defaults to `upper-left'."
   (let* ((point (or point (point)))
  (mark (or mark (mark t)))
- (corner (symbol-name
-  (or corner
-  (and (overlayp evil-visual-overlay)
-   (overlay-get evil-visual-overlay
-:corner))
-  'upper-left)))
+ (corner (or corner
+ (when (overlayp evil-visual-overlay)
+   (overlay-get evil-visual-overlay :corner))
+ 'upper-left))
  (point-col (evil-column point))
  (mark-col (evil-column mark))
- horizontal vertical)
-(cond
- ((= point-col mark-col)
-  (setq horizontal
-(or (and (string-match "left\\|right" corner)
- (match-string 0 corner))
-"left")))
- ((< point-col mark-col)
-  (setq horizontal "left"))
- ((> point-col mark-col)
-  (setq horizontal "right")))
-(cond
- ((= (line-number-at-pos point)
- (line-number-at-pos mark))
-  (setq vertical
-(or (and (string-match "upper\\|lower" corner)
- (match-string 0 corner))
-"upper")))
- ((< point mark)
-  (setq vertical "upper"))
- ((> point mark)
-  (setq vertical "lower")))
-(intern (format "%s-%s" vertical horizontal
+ (upperp (if (= (line-number-at-pos point) (line-number-at-pos mark))
+ (memq corner '(upper-left upper-right))
+   (< point mark)))
+ (leftp (if (= point-col mark-col)
+(memq corner '(upper-left lower-left))
+  (< point-col mark-col
+(if upperp
+(if leftp 'upper-left 'upper-right)
+  (if leftp 'lower-left 'lower-right
 
 ;;; Operator-Pending state
 
diff --git a/evil-types.el b/evil-types.el
index d457158208..645d2cfd03 100644
--- a/evil-types.el
+++ b/evil-types.el
@@ -104,10 +104,8 @@ and will be removed in a future version."
   :contract (lambda (beg end)
   (evil-range beg (max beg (1- end
   :normalize (lambda (beg end)
-   (goto-char end)
-   (when (eq (char-after) ?\n)
- (setq end (max beg (1- end
-   (evil-range beg end))
+   (evil-range beg (if (eq (char-after end) ?\n)
+   (max beg (1- end)) end)))
   :string (lambda (beg end)
 (let ((width (- end beg)))
   (format "%s character%s" width



[nongnu] elpa/evil a87d5fd1ad 5/6: evil-core: don't change match data in the advice of set-window-buffer

2022-12-29 Thread ELPA Syncer
branch: elpa/evil
commit a87d5fd1ad5125269e43727627a3e26a53fc2fc8
Author: Lin Sun 
Commit: Tom Dalziel <33435574+tomd...@users.noreply.github.com>

evil-core: don't change match data in the advice of  set-window-buffer
---
 evil-core.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/evil-core.el b/evil-core.el
index 15ca2f3e84..62ec6ab6b0 100644
--- a/evil-core.el
+++ b/evil-core.el
@@ -372,7 +372,7 @@ then this function does nothing."
 (when (get-buffer (ad-get-arg 1))
   (with-current-buffer (ad-get-arg 1)
 (unless evil-local-mode
-  (evil-local-mode 1))
+  (save-match-data (evil-local-mode 1)))
 
 ;; Refresh cursor color.
 ;; Cursor color can only be set for each frame but not for each buffer.



[nongnu] elpa/evil 0c535d6dab 1/6: Simplify temporary-goal-column logic

2022-12-29 Thread ELPA Syncer
branch: elpa/evil
commit 0c535d6dabb9f30ab16ab428c9a123dba9d6ef75
Author: Axel Forsman 
Commit: Tom Dalziel <33435574+tomd...@users.noreply.github.com>

Simplify temporary-goal-column logic

In `evil-ensure-column` there is no point in normalizing
`temporary-goal-column` a second time after BODY, since that variable is
used to store the saved column that need not be overwritten. Also
tracking EOL after `evil-end-of-line` is already handled as it fakes
being a `next-line` command.

Adds a test for commit 7aa71576d258b9546238f6dbd4cf5ca0a1b70088.
---
 evil-commands.el |  6 ++
 evil-common.el   | 56 
 evil-tests.el|  7 ++-
 3 files changed, 32 insertions(+), 37 deletions(-)

diff --git a/evil-commands.el b/evil-commands.el
index adaf6c3523..3b73dfdd54 100644
--- a/evil-commands.el
+++ b/evil-commands.el
@@ -2061,8 +2061,7 @@ See also `evil-shift-left'."
   (move-to-column (max 0 (+ col-for-insert first-shift
  (evil-start-of-line (evil-first-non-blank))
  ((evil--stick-to-eol-p) (move-end-of-line 1))
- (t (move-to-column (or goal-column evil-operator-start-col 
col-for-insert
-(setq temporary-goal-column 0)))
+ (t (move-to-column (or goal-column evil-operator-start-col 
col-for-insert))
 
 (defun evil-delete-indentation ()
   "Delete all indentation on current line."
@@ -2689,8 +2688,7 @@ the lines."
((or (eq (evil-visual-type) 'line)
 (and (eq (evil-visual-type) 'block)
  (memq last-command '(next-line previous-line))
- (numberp temporary-goal-column)
- (= temporary-goal-column most-positive-fixnum)))
+ (eq temporary-goal-column most-positive-fixnum)))
 (evil-visual-rotate 'upper-left)
 (evil-append-line count vcount))
((eq (evil-visual-type) 'block)
diff --git a/evil-common.el b/evil-common.el
index 15095d9ff4..1ac543b231 100644
--- a/evil-common.el
+++ b/evil-common.el
@@ -971,13 +971,9 @@ See also `evil-save-goal-column'."
 
 (defun evil--stick-to-eol-p ()
   "Called by vertical movement commands to help determine cursor position."
-  (let ((goal-col (or goal-column
-  (if (consp temporary-goal-column)
-  (car temporary-goal-column)
-temporary-goal-column
-(and evil-track-eol
- (= most-positive-fixnum goal-col)
- (eq last-command 'next-line
+  (and evil-track-eol
+   (eq (or goal-column temporary-goal-column) most-positive-fixnum)
+   (memq last-command '(next-line previous-line
 
 (defun evil-eolp ()
   "Like `eolp' but accounts for `evil-move-beyond-eol' being nil."
@@ -991,32 +987,28 @@ See also `evil-save-goal-column'."
   "Execute BODY so that column after execution is correct.
 If `evil-start-of-line' is nil, treat BODY as if it were a `next-line' command.
 This mostly copies the approach of Emacs' `line-move-1', but is modified
-so it is more compatible with evil's notions of eol & tracking."
+so it is more compatible with Evil's notions of eol & tracking."
   (declare (indent defun)
(debug t))
-  (let ((normalize-temporary-goal-column
- `(if (consp temporary-goal-column)
-  ;; Ensure a negative value is never set for 
`temporary-goal-column'
-  ;; as it may have a negative component when both 
`whitespace-mode'
-  ;; and `display-line-numbers-mode' are enabled.
-  ;; See #1297
-  (setq temporary-goal-column (max 0 (+ (car temporary-goal-column)
-(cdr 
temporary-goal-column)))
-`(progn
-   (unless evil-start-of-line (setq this-command 'next-line))
-   ,normalize-temporary-goal-column
-   (if (not (memq last-command '(next-line previous-line)))
-   (setq temporary-goal-column
- (if (and evil-track-eol
-  (evil-eolp)
-  (memq real-last-command '(move-end-of-line 
evil-end-of-line)))
- most-positive-fixnum
-   (current-column
-   ,@body
-   (if evil-start-of-line
-   (evil-first-non-blank)
- ,normalize-temporary-goal-column
- (line-move-to-column (truncate (or goal-column 
temporary-goal-column)))
+  `(progn
+ (unless evil-start-of-line
+   (setq this-command 'next-line
+ temporary-goal-column
+ (cond
+  ((memq last-command '(next-line previous-line))
+   (if (consp temporary-goal-column)
+   ;; Guard against a negative value as `temporary-goal-column'
+   ;; may have a negative component when both `whitespace-mode'
+   ;; and `display-line-numbers-mode' are enabled (#1297).
+   (max 0 (+ (truncate (car temporary-goal-column))
+

[nongnu] elpa/evil be6b09bcec 2/6: Make visual block selection after j/k match Vim

2022-12-29 Thread ELPA Syncer
branch: elpa/evil
commit be6b09bcecf3bfdbaadecb21f31c57ce18abac05
Author: Axel Forsman 
Commit: Tom Dalziel <33435574+tomd...@users.noreply.github.com>

Make visual block selection after j/k match Vim

Vim only extends the visual block selection to the temporary goal column
if tracking EOL. Consider

[a]bc
a

When entering Visual block mode with "C-v", going to the "c" in "abc"
and then to the next line with "fcj", the selection should only include
the two "a":s, and not "bc". Contrast this with when "$" is executed.
---
 evil-common.el | 25 -
 evil-states.el | 21 +++--
 evil-tests.el  |  9 -
 3 files changed, 23 insertions(+), 32 deletions(-)

diff --git a/evil-common.el b/evil-common.el
index 1ac543b231..1ea0f8732c 100644
--- a/evil-common.el
+++ b/evil-common.el
@@ -2464,33 +2464,24 @@ take at least two arguments, the beginning and end of 
each
 line.  If PASS-COLUMNS is non-nil, these values are the columns,
 otherwise they are buffer positions.  Extra arguments to FUNC may
 be passed via ARGS."
-  (let ((eol-col (and (memq last-command '(next-line previous-line))
-  (numberp temporary-goal-column)
-  temporary-goal-column))
-startcol startpt endcol endpt)
+  (let (startcol startpt endcol endpt)
 (save-excursion
   (goto-char beg)
-  (setq startcol (current-column))
-  (beginning-of-line)
-  (setq startpt (point))
+  (setq startcol (current-column)
+startpt (line-beginning-position))
   (goto-char end)
   (setq endcol (current-column))
   (forward-line 1)
   (setq endpt (point-marker))
   ;; ensure the start column is the left one.
   (evil-sort startcol endcol)
-  ;; maybe find maximal column
-  (when eol-col
-(setq eol-col 0)
+  ;; maybe extend up to EOL
+  (when (and (memq last-command '(next-line previous-line))
+ (eq temporary-goal-column most-positive-fixnum))
 (goto-char startpt)
 (while (< (point) endpt)
-  (setq eol-col (max eol-col
- (evil-column (line-end-position
-  (forward-line 1))
-(setq endcol (max endcol
-  (min eol-col
-   (1+ (min (1- most-positive-fixnum)
-(truncate temporary-goal-column)))
+  (setq endcol (max endcol (evil-column (line-end-position
+  (forward-line 1)))
   ;; start looping over lines
   (goto-char startpt)
   (while (< (point) endpt)
diff --git a/evil-states.el b/evil-states.el
index 4d87323bff..a7242c226a 100644
--- a/evil-states.el
+++ b/evil-states.el
@@ -646,10 +646,6 @@ Reuse overlays where possible to prevent flicker."
   (let* ((point (point))
  (overlays (or overlays 'evil-visual-block-overlays))
  (old (symbol-value overlays))
- (eol-col (and (memq this-command '(next-line previous-line))
-   (numberp temporary-goal-column)
-   (1+ (min (round temporary-goal-column)
-(1- most-positive-fixnum)
  beg-col end-col new nlines overlay window-beg window-end)
 (save-excursion
   ;; calculate the rectangular region represented by BEG and END,
@@ -660,16 +656,13 @@ Reuse overlays where possible to prevent flicker."
   (when (>= beg-col end-col)
 (if (= beg-col end-col)
 (setq end-col (1+ end-col))
-  (evil-sort beg-col end-col))
-(setq beg (save-excursion
-(goto-char beg)
-(evil-move-to-column beg-col))
-  end (save-excursion
-(goto-char end)
-(evil-move-to-column end-col 1
-  ;; update end column with eol-col (extension to eol).
-  (when (and eol-col (> eol-col end-col))
-(setq end-col eol-col))
+  (evil-swap beg-col end-col))
+(setq beg (progn (goto-char beg) (evil-move-to-column beg-col))
+  end (progn (goto-char end) (evil-move-to-column end-col 1
+  ;; maybe extend end column to EOL
+  (and (memq this-command '(next-line previous-line))
+   (eq temporary-goal-column most-positive-fixnum)
+   (setq end-col most-positive-fixnum))
   ;; force a redisplay so we can do reliable window
   ;; BEG/END calculations
   (sit-for 0)
diff --git a/evil-tests.el b/evil-tests.el
index 6358087e3f..f84d0db4a6 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -7274,7 +7274,14 @@ Tiny ln"
  "Short 
 A much
 A me[d]
-Tiny ")))
+Tiny "))
+  (ert-info ("Visual block does not extend up to curswant unless tracking EOL")
+(evil-test-buffer
+ "[a]bc
+"
+ ("\C-vfcjd")
+ "[b]c
+")))
 
 (ert-deftest evil-test-visual-restore ()
   "Test restoring a previous selection"



[nongnu] elpa/kotlin-mode updated (55eed95033 -> ff4637c4ea)

2022-12-29 Thread ELPA Syncer
elpasync pushed a change to branch elpa/kotlin-mode.

  from  55eed95033 Merge pull request #73 from bricka/improve-indentation
   new  337332287b More emacs-like indentation.
   new  0b4291625e Merge remote-tracking branch 'upstream/master'
   new  ff4637c4ea Merge pull request #38 from jcpetkovich/master


Summary of changes:
 kotlin-mode.el | 84 +-
 1 file changed, 77 insertions(+), 7 deletions(-)



[nongnu] elpa/kotlin-mode 337332287b 1/3: More emacs-like indentation.

2022-12-29 Thread ELPA Syncer
branch: elpa/kotlin-mode
commit 337332287b65d1b5f1173502864cfce4504f79e4
Author: Jean-Christophe Petkovich 
Commit: Jean-Christophe Petkovich 

More emacs-like indentation.
---
 kotlin-mode.el | 137 ++---
 1 file changed, 73 insertions(+), 64 deletions(-)

diff --git a/kotlin-mode.el b/kotlin-mode.el
index 143cc880e4..e5a4b1c41b 100644
--- a/kotlin-mode.el
+++ b/kotlin-mode.el
@@ -327,70 +327,79 @@
 (defun kotlin-mode--indent-line ()
   "Indent current line as kotlin code"
   (interactive)
-  (beginning-of-line)
-  (if (bobp) ; 1.)
-  (progn
-(kotlin-mode--beginning-of-buffer-indent))
-(let ((not-indented t) cur-indent)
-  (cond ((looking-at "^[ \t]*\\.") ; line starts with .
- (save-excursion
-   (kotlin-mode--prev-line)
-   (cond ((looking-at "^[ \t]*\\.")
-  (setq cur-indent (current-indentation)))
-
- (t
-  (setq cur-indent (+ (current-indentation) (* 2 
kotlin-tab-width)
-   (if (< cur-indent 0)
-   (setq cur-indent 0
-
-((looking-at "^[ \t]*}") ; line starts with }
- (save-excursion
-   (kotlin-mode--prev-line)
-   (while (and (or (looking-at "^[ \t]*$") (looking-at "^[ 
\t]*\\.")) (not (bobp)))
- (kotlin-mode--prev-line))
-   (cond ((or (looking-at ".*{[ \t]*$") (looking-at ".*{.*->[ 
\t]*$"))
-  (setq cur-indent (current-indentation)))
- (t
-  (setq cur-indent (- (current-indentation) 
kotlin-tab-width)
- (if (< cur-indent 0)
- (setq cur-indent 0)))
-
-((looking-at "^[ \t]*)") ; line starts with )
- (save-excursion
-   (kotlin-mode--prev-line)
-   (setq cur-indent (- (current-indentation) kotlin-tab-width)))
- (if (< cur-indent 0)
- (setq cur-indent 0)))
-
-(t
- (save-excursion
-   (while not-indented
- (kotlin-mode--prev-line)
- (cond ((looking-at ".*{[ \t]*$") ; line ends with {
-(setq cur-indent (+ (current-indentation) 
kotlin-tab-width))
-(setq not-indented nil))
-
-   ((looking-at "^[ \t]*}") ; line starts with }
-(setq cur-indent (current-indentation))
-(setq not-indented nil))
-
-   ((looking-at ".*{.*->[ \t]*$") ; line ends with ->
-(setq cur-indent (+ (current-indentation) 
kotlin-tab-width))
-(setq not-indented nil))
-
-   ((looking-at ".*([ \t]*$") ; line ends with (
-(setq cur-indent (+ (current-indentation) 
kotlin-tab-width))
-(setq not-indented nil))
-
-   ((looking-at "^[ \t]*).*$") ; line starts with )
-(setq cur-indent (current-indentation))
-(setq not-indented nil))
-
-   ((bobp) ; 5.)
-(setq not-indented nil)))
-  (if cur-indent
-  (indent-line-to cur-indent)
-(indent-line-to 0)
+  (let ((follow-indentation-p
+ (and (<= (line-beginning-position) (point))
+  (>= (+ (line-beginning-position)
+ (current-indentation))
+  (point)
+(save-excursion
+  (beginning-of-line)
+  (if (bobp) ; 1.)
+  (progn
+(kotlin-mode--beginning-of-buffer-indent))
+(let ((not-indented t) cur-indent)
+  (cond ((looking-at "^[ \t]*\\.") ; line starts with .
+ (save-excursion
+   (kotlin-mode--prev-line)
+   (cond ((looking-at "^[ \t]*\\.")
+  (setq cur-indent (current-indentation)))
+
+ (t
+  (setq cur-indent (+ (current-indentation) (* 2 
kotlin-tab-width)
+   (if (< cur-indent 0)
+   (setq cur-indent 0
+
+((looking-at "^[ \t]*}") ; line starts with }
+ (save-excursion
+   (kotlin-mode--prev-line)
+   (while (and (or (looking-at "^[ \t]*$") (looking-at "^[ 
\t]*\\.")) (not (bobp)))
+ (kotlin-mode--prev-line))
+   (cond ((or (looking-at ".*{[ \t]*$") (looking-at ".*{.*->[ 
\t]*$"))
+  (setq cur-indent (current-indentation)))
+ (t
+  (setq cur-indent (- (current-indentation) 
kotlin-tab-width)
+ (if (< cur-indent 0)
+ (setq cur-indent 0)))
+
+((looking-at "^[ \t]*)") ; line starts with )
+ (save-excursion
+ 

[nongnu] elpa/kotlin-mode ff4637c4ea 3/3: Merge pull request #38 from jcpetkovich/master

2022-12-29 Thread ELPA Syncer
branch: elpa/kotlin-mode
commit ff4637c4eaaa6874cebb7de3e2cf5d674fa9c33c
Merge: 55eed95033 0b4291625e
Author: Gregg Hernandez 
Commit: GitHub 

Merge pull request #38 from jcpetkovich/master

More emacs-like indentation.
---
 kotlin-mode.el | 84 +-
 1 file changed, 77 insertions(+), 7 deletions(-)

diff --git a/kotlin-mode.el b/kotlin-mode.el
index 201b00691e..6b715a5b4d 100644
--- a/kotlin-mode.el
+++ b/kotlin-mode.el
@@ -461,13 +461,83 @@ If it does not exist, will return nil."
 (defun kotlin-mode--indent-line ()
   "Indent the current line of Kotlin code."
   (interactive)
-  (indent-line-to (cond
-   ((kotlin-mode--first-line-p) 0)
-   ((kotlin-mode--in-comment-block) 
(kotlin-mode--indent-for-comment))
-   (t (kotlin-mode--indent-for-code))
-   ))
-  (syntax-ppss-flush-cache (point-at-bol))
-  )
+  (let ((follow-indentation-p
+ (and (<= (line-beginning-position) (point))
+  (>= (+ (line-beginning-position)
+ (current-indentation))
+  (point)
+(save-excursion
+  (beginning-of-line)
+  (if (bobp) ; 1.)
+  (progn
+(kotlin-mode--beginning-of-buffer-indent))
+(let ((not-indented t) cur-indent)
+  (cond ((looking-at "^[ \t]*\\.") ; line starts with .
+ (save-excursion
+   (kotlin-mode--prev-line)
+   (cond ((looking-at "^[ \t]*\\.")
+  (setq cur-indent (current-indentation)))
+
+ (t
+  (setq cur-indent (+ (current-indentation) (* 2 
kotlin-tab-width)
+   (if (< cur-indent 0)
+   (setq cur-indent 0
+
+((looking-at "^[ \t]*}") ; line starts with }
+ (save-excursion
+   (kotlin-mode--prev-line)
+   (while (and (or (looking-at "^[ \t]*$") (looking-at "^[ 
\t]*\\.")) (not (bobp)))
+ (kotlin-mode--prev-line))
+   (cond ((or (looking-at ".*{[ \t]*$") (looking-at ".*{.*->[ 
\t]*$"))
+  (setq cur-indent (current-indentation)))
+ (t
+  (setq cur-indent (- (current-indentation) 
kotlin-tab-width)
+ (if (< cur-indent 0)
+ (setq cur-indent 0)))
+
+((looking-at "^[ \t]*)") ; line starts with )
+ (save-excursion
+   (kotlin-mode--prev-line)
+   (setq cur-indent (- (current-indentation) 
kotlin-tab-width)))
+ (if (< cur-indent 0)
+ (setq cur-indent 0)))
+
+(t
+ (save-excursion
+   (while not-indented
+ (kotlin-mode--prev-line)
+ (cond ((looking-at ".*{[ \t]*$") ; line ends with {
+(setq cur-indent (+ (current-indentation) 
kotlin-tab-width))
+(setq not-indented nil))
+
+   ((looking-at "^[ \t]*}") ; line starts with }
+(setq cur-indent (current-indentation))
+(setq not-indented nil))
+
+   ((looking-at ".*{.*->[ \t]*$") ; line ends with ->
+(setq cur-indent (+ (current-indentation) 
kotlin-tab-width))
+(setq not-indented nil))
+
+   ((looking-at ".*([ \t]*$") ; line ends with (
+(setq cur-indent (+ (current-indentation) 
kotlin-tab-width))
+(setq not-indented nil))
+
+   ((looking-at "^[ \t]*).*$") ; line starts with )
+(setq cur-indent (current-indentation))
+(setq not-indented nil))
+
+   ((bobp) ; 5.)
+(setq not-indented nil)))
+  (if cur-indent
+  (indent-line-to cur-indent)
+(indent-line-to 0)
+
+(when follow-indentation-p
+  (back-to-indentation
+
+
+(defun kotlin-mode--beginning-of-buffer-indent ()
+  (indent-line-to 0))
 
 ;;;###autoload
 (define-derived-mode kotlin-mode prog-mode "Kotlin"



[nongnu] elpa/kotlin-mode 0b4291625e 2/3: Merge remote-tracking branch 'upstream/master'

2022-12-29 Thread ELPA Syncer
branch: elpa/kotlin-mode
commit 0b4291625e707527ee1b0c865326edbf9332d16b
Merge: 337332287b 55eed95033
Author: Jean-Christophe Petkovich 
Commit: Jean-Christophe Petkovich 

Merge remote-tracking branch 'upstream/master'
---
 .gitignore|   2 +
 .travis.yml   |  11 +-
 LICENSE   | 674 ++
 Makefile  |  56 
 doc/string.png| Bin 0 -> 28427 bytes
 doc/string.svg| 237 
 doc/string_properties.png | Bin 0 -> 60042 bytes
 doc/string_properties.svg | 362 +
 kotlin-mode-lexer.el  | 362 +
 kotlin-mode.el| 262 +-
 test/kotlin-mode-test.el  | 193 ++---
 test/sample.kt| 163 ++-
 12 files changed, 2162 insertions(+), 160 deletions(-)

diff --git a/.gitignore b/.gitignore
index 93d1f2be2a..b08939ede8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 .cask/
 dist/
+*~
+*.elc
diff --git a/.travis.yml b/.travis.yml
index 2f333ef8c1..d96fd63142 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,11 +5,20 @@ before_install:
   - evm install $EVM_EMACS --use --skip
   - cask
 env:
+  - EVM_EMACS=emacs-24.3-travis
+  - EVM_EMACS=emacs-24.4-travis
+  - EVM_EMACS=emacs-24.5-travis
   - EVM_EMACS=emacs-25.1-travis
+  - EVM_EMACS=emacs-25.2-travis
+  - EVM_EMACS=emacs-25.3-travis
+  # https://github.com/cask/cask/issues/471
+  #- EVM_EMACS=emacs-26.1-travis
+  #- EVM_EMACS=emacs-26.2-travis
+  #- EVM_EMACS=emacs-26.3-travis
   - EVM_EMACS=emacs-git-snapshot-travis
 script:
   - emacs --version
-  - cask exec ert-runner
+  - cask exec ert-runner -L . -L test
 
 notifications:
   email: false
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00..94a9ed024d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+GNU GENERAL PUBLIC LICENSE
+   Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. 
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in fut

[elpa] externals/org 29103fc602: oc-csl: Improve LaTeX bibliography formatting

2022-12-29 Thread ELPA Syncer
branch: externals/org
commit 29103fc6028e99c251ec8ea05981c553bd74eac0
Author: András Simonyi 
Commit: András Simonyi 

oc-csl: Improve LaTeX bibliography formatting

* lisp/oc-csl.el (org-cite-csl--output-format): Use the dedicated
'org-latex' citeproc formatter to export references in LaTeX.
(org-cite-csl-latex-preamble, org-cite-csl--generate-latex-preamble,
org-cite-csl-finalizer): Insert a preamble fragment compatible with
the 'org-latex' citeproc formatter.
(org-cite-csl-latex-label-separator,
org-cite-csl-latex-label-width-per-char): Introduce additional
variables to control bibliography formatting.

* etc/ORG-NEWS: Describe the introduced new options.
---
 etc/ORG-NEWS   |  27 +++
 lisp/oc-csl.el | 145 ++---
 2 files changed, 155 insertions(+), 17 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index d4e9b43687..1185a51b26 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -13,6 +13,33 @@ Please send Org bug reports to mailto:emacs-orgm...@gnu.org.
 
 * Version 9.7 (not released yet)
 ** New options
+*** New custom settings for the "csl" citation export processor's LaTeX output
+
+The settings ~org-cite-csl-latex-label-separator~ and
+~org-cite-csl-latex-label-width-per-char~ allow the user to control
+the indentation of entries for labeled bibliography styles when the
+"csl" citation processor is used for LaTeX export.  The indentation
+length is computed as the sum of ~org-cite-csl-latex-label-separator~
+and the maximal label width, for example:
+
+#+begin_example
+indentation length
+<->
+max. label width  separator
+<---><>
+[Doe22]John Doe. A title...
+[DoeSmithJones19]  John Doe, Jane Smith and...
+[SmithDoe02]   Jane Smith and John Doe...
+#+end_example
+
+The maximal label width, in turn, is calculated as the product of
+~org-cite-csl-latex-label-width-per-char~ and the maximal label length
+measured in characters.
+
+The setting ~org-cite-csl-latex-preamble~ makes it possible to
+customize the entire LaTeX fragment that the "csl" citation processor injects
+into the preamble.
+
 *** New ~org-latex-listings-src-omit-language~ customization for LaTeX export
 
 The ~org-latex-listings-src-omit-language~ customization variable
diff --git a/lisp/oc-csl.el b/lisp/oc-csl.el
index 1ccb74e925..11194b9b42 100644
--- a/lisp/oc-csl.el
+++ b/lisp/oc-csl.el
@@ -214,6 +214,111 @@ Used only when `second-field-align' is activated by the 
used CSL style."
   :type 'string
   :safe #'stringp)
 
+(defcustom org-cite-csl-latex-label-separator "0.6em"
+  "Distance between citation label and bibliography item for LaTeX
+output in valid LaTeX units.  Used only when `second-field-align'
+is activated by the used CSL style.
+
+The indentation length in these cases is computed as the sum of
+`org-cite-csl-latex-label-separator' and the maximal label width,
+for example,
+
+indentation length
+<->
+max. label width  separator
+<---><>
+[Doe22]John Doe. A title...
+[DoeSmithJones19]  John Doe, Jane Smith and...
+[SmithDoe02]   Jane Smith and John Doe...
+
+The maximal label width, in turn, is calculated as the product of
+`org-cite-csl-latex-label-width-per-char' and the maximal label
+length measured in characters."
+  :group 'org-cite
+  :package-version '(Org . "9.7")
+  :type 'string
+  :safe #'stringp)
+
+(defcustom org-cite-csl-latex-label-width-per-char "0.45em"
+  "Character width in LaTeX units for calculating entry label widths.
+Used only when `second-field-align' is activated by the used CSL
+style.
+
+See the documentation of `org-cite-csl-latex-label-separator' for
+details."
+  :group 'org-cite
+  :package-version '(Org . "9.7")
+  :type 'string
+  :safe #'stringp)
+
+;; The following was inspired by and in many details follows how
+;; Pandoc's () default LaTeX template
+;; handles CSL output.  Many thanks to the author, John MacFarlane!
+(defcustom org-cite-csl-latex-preamble
+  "\\usepackage{calc}
+\\newlength{\\cslhangindent}
+\\setlength{\\cslhangindent}{[CSL-HANGINDENT]}
+\\newlength{\\csllabelsep}
+\\setlength{\\csllabelsep}{[CSL-LABELSEP]}
+\\newlength{\\csllabelwidth}
+\\setlength{\\csllabelwidth}{[CSL-LABELWIDTH-PER-CHAR] * [CSL-MAXLABEL-CHARS]}
+\\newenvironment{cslbibliography}[2] % 1st arg. is hanging-indent, 2nd entry 
spacing.
+ {% By default, paragraphs are not indented.
+  \\setlength{\\parindent}{0pt}
+  % Hanging indent is turned on when first argument is 1.
+  \\ifodd #1
+  \\let\\oldpar\\par
+  \\def\\par{\\hangindent=\\cslhangindent\\oldpar}
+  \\fi
+  % Set entry spacing based on the second argument.
+  \\setlength{\\parskip}{\\parskip +  #2\\baselineskip}
+ }%
+ {}
+\\newcommand{\\cslblock}[1]{#1\\hfill\\break}
+\\newcommand{\\cslleftmargin}[1]{\\parbox[t]{\\csllabels

[elpa] externals/corfu 391a4870fe: Extract corfu--gtk-resize-child-frames (Fix #282)

2022-12-29 Thread ELPA Syncer
branch: externals/corfu
commit 391a4870fee9cdcd0fdecfa468e2726fd670e5e1
Author: Daniel Mendler 
Commit: Daniel Mendler 

Extract corfu--gtk-resize-child-frames (Fix #282)
---
 corfu.el | 30 --
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/corfu.el b/corfu.el
index bfba9c9d0c..ddde4256fd 100644
--- a/corfu.el
+++ b/corfu.el
@@ -366,8 +366,22 @@ The completion backend can override this with
   (cl-pushnew 'corfu-default (alist-get 'default face-remapping-alist))
   buffer)))
 
-;; Function adapted from posframe.el by tumashu
 (defvar x-gtk-resize-child-frames) ;; Not present on non-gtk builds
+(defvar corfu--gtk-resize-child-frames
+  (let ((case-fold-search t))
+(and
+ ;; XXX HACK to fix resizing on gtk3/gnome taken from posframe.el
+ ;; More information:
+ ;; * https://github.com/minad/corfu/issues/17
+ ;; * https://gitlab.gnome.org/GNOME/mutter/-/issues/840
+ ;; * https://lists.gnu.org/archive/html/emacs-devel/2020-02/msg1.html
+ (string-match-p "gtk3" system-configuration-features)
+ (string-match-p "gnome\\|cinnamon"
+ (or (getenv "XDG_CURRENT_DESKTOP")
+ (getenv "DESKTOP_SESSION") ""))
+ 'resize-mode)))
+
+;; Function adapted from posframe.el by tumashu
 (defun corfu--make-frame (frame x y width height buffer)
   "Show BUFFER in child frame at X/Y with WIDTH/HEIGHT.
 FRAME is the existing frame."
@@ -378,19 +392,7 @@ FRAME is the existing frame."
   (let* ((window-min-height 1)
  (window-min-width 1)
  (inhibit-redisplay t)
- (x-gtk-resize-child-frames
-  (let ((case-fold-search t))
-(and
- ;; XXX HACK to fix resizing on gtk3/gnome taken from posframe.el
- ;; More information:
- ;; * https://github.com/minad/corfu/issues/17
- ;; * https://gitlab.gnome.org/GNOME/mutter/-/issues/840
- ;; * 
https://lists.gnu.org/archive/html/emacs-devel/2020-02/msg1.html
- (string-match-p "gtk3" system-configuration-features)
- (string-match-p "gnome\\|cinnamon"
- (or (getenv "XDG_CURRENT_DESKTOP")
- (getenv "DESKTOP_SESSION") ""))
- 'resize-mode)))
+ (x-gtk-resize-child-frames corfu--gtk-resize-child-frames)
  (after-make-frame-functions)
  (parent (window-frame)))
 (unless (and (frame-live-p frame)



[nongnu] elpa/subed 28a75a6f68: Don't immediately toggle syncing point when looping; loop +/- 0s

2022-12-29 Thread ELPA Syncer
branch: elpa/subed
commit 28a75a6f6803e5c5d121c4d36ef403e8832fbf1f
Author: Sacha Chua 
Commit: Sacha Chua 

Don't immediately toggle syncing point when looping; loop +/- 0s

* subed/subed-common.el (subed-enable-sync-point-to-player): If
looping over a subtitle, don't immediately enable syncing point to the
player.
(subed--enable-point-to-player-sync-after-disabling-loop): Move
declaration earlier in the file.
(subed-disable-sync-point-to-player): If looping over a subtitle,
don't immediately disable syncing point to the player.
* subed/subed-config.el (subed-loop-seconds-before): Change default to
0 seconds to reduce user confusion.
(subed-loop-seconds-after): Change default to 0 seconds to reduce user
confusion.
---
 NEWS.org  |  6 ++
 subed/subed-common.el | 31 +--
 subed/subed-config.el |  4 ++--
 subed/subed.el|  2 +-
 4 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/NEWS.org b/NEWS.org
index c3c22de221..7b17926d13 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -1,6 +1,12 @@
 #+OPTIONS: toc:nil
 
 * subed news
+** Version 1.0.29 - 2022-12-29 - Sacha Chua
+
+subed-toggle-sync-point-to-player should not confuse subed when it is
+already looping over a subtitle. Also, subed-loop-seconds-before and
+subed-loop-seconds-after now default to 0 for less confusion.
+
 ** Version 1.0.28 - 2022-12-22 - Sacha Chua
 
 subed-parse-file should handle nil filenames now. Also, it should not
diff --git a/subed/subed-common.el b/subed/subed-common.el
index 189799bfe4..83d296c131 100644
--- a/subed/subed-common.el
+++ b/subed/subed-common.el
@@ -34,10 +34,11 @@
 
 (declare-function subed-tsv-mode "subed-tsv" ())
 
-;;; Generic functions
+;;; Generic functions and variables
 
 (defvar-local subed--regexp-separator nil "Regexp separating subtitles.")
 (defvar-local subed--regexp-timestamp nil "Regexp matching timestamps.")
+(defvar-local subed--enable-point-to-player-sync-after-disabling-loop nil)
 
 ;;; Macros
 
@@ -1408,7 +1409,6 @@ If QUIET is non-nil, do not display a message in the 
minibuffer."
   (subed-debug "Replaying subtitle at: %s" (subed-msecs-to-timestamp 
msecs-start))
   (subed-mpv-jump msecs-start))
 
-
 ;;; Sync point-to-player
 
 (defun subed-sync-point-to-player-p ()
@@ -1420,22 +1420,27 @@ If QUIET is non-nil, do not display a message in the 
minibuffer."
 
 If QUIET is non-nil, do not display a message in the minibuffer."
   (interactive)
-  (unless (subed-sync-point-to-player-p)
-(add-hook 'subed-mpv-playback-position-hook #'subed--sync-point-to-player 
:append :local)
-(subed-debug "Enabled syncing point to playback position: %s" 
subed-mpv-playback-position-hook)
-(unless quiet
-  (message "Enabled syncing point to playback position"
+   ;; If looping over a subtitle, don't immediately enable it. Set it to 
be enabled after the loop ends.
+   (if (subed-loop-over-current-subtitle-p)
+   (setq 
subed--enable-point-to-player-sync-after-disabling-loop t)
+   (unless (subed-sync-point-to-player-p)
+   (add-hook 'subed-mpv-playback-position-hook 
#'subed--sync-point-to-player :append :local)
+   (subed-debug "Enabled syncing point to playback 
position: %s" subed-mpv-playback-position-hook)
+   (unless quiet
+   (message "Enabled syncing point to playback 
position")
 
 (defun subed-disable-sync-point-to-player (&optional quiet)
   "Do not move point automatically to the currently playing subtitle.
 
 If QUIET is non-nil, do not display a message in the minibuffer."
   (interactive)
-  (when (subed-sync-point-to-player-p)
-(remove-hook 'subed-mpv-playback-position-hook 
#'subed--sync-point-to-player :local)
-(subed-debug "Disabled syncing point to playback position: %s" 
subed-mpv-playback-position-hook)
-(unless quiet
-  (message "Disabled syncing point to playback position"
+   (when (subed-loop-over-current-subtitle-p)
+   (setq subed--enable-point-to-player-sync-after-disabling-loop 
nil))
+   (when (subed-sync-point-to-player-p)
+   (remove-hook 'subed-mpv-playback-position-hook 
#'subed--sync-point-to-player :local)
+   (subed-debug "Disabled syncing point to playback position: %s" 
subed-mpv-playback-position-hook)
+   (unless quiet
+   (message "Disabled syncing point to playback 
position"
 
 (defun subed-toggle-sync-point-to-player ()
   "Enable/disable moving point to the currently playing subtitle."
@@ -1533,8 +1538,6 @@ If QUIET is non-nil, do not display a message in the 
minibuffer."
   "Whether the player is looping over the current subtitle."
   (or subed--subtitle-loop-start subed--subtitle-loop-stop))
 
-(defvar-local subed--enable-point-to-player-sync-after-disabling-loop nil)
-
 (defun subed-enable-loop-over-current-subtitle

[nongnu] main 20dc70a038: * elpa-packages (meow): New package

2022-12-29 Thread Stefan Monnier via
branch: main
commit 20dc70a0380f3c716bc4fd551a54778a3e5fb196
Author: Stefan Monnier 
Commit: Stefan Monnier 

* elpa-packages (meow): New package
---
 elpa-packages | 17 ++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/elpa-packages b/elpa-packages
index bbeefa71a3..e69e6b5688 100644
--- a/elpa-packages
+++ b/elpa-packages
@@ -136,6 +136,8 @@
   :news "CHANGELOG.md"
   :ignored-files ("LICENSE" "bin" "ert-tests"))
 
+ ;; (el-mock   :url "https://github.com/rejeep/el-mock.el";)
+
  (elixir-mode  :url "https://github.com/elixir-editors/emacs-elixir";
   :ignored-files ("tests" "Eldev")
   :news "CHANGELOG.md")
@@ -492,6 +494,9 @@
   ;; :dont-release "-dev\\'"
   :news "CHANGES.md")
 
+ ;; (mastodon  :url "https://codeberg.org/martianh/mastodon.el";
+ ;;  :lisp-dir "lisp")
+
  (material-theme   :url "https://github.com/cpaulik/emacs-material-theme";
   :ignored-files ("*.png")
   :readme "Readme.org"
@@ -499,6 +504,10 @@
 
  (mentor   :url "https://github.com/skangas/mentor.git";)
 
+ (meow :url "https://github.com/meow-edit/meow";
+  :readme "README.org"
+  :news "CHANGELOG.md")
+
  (minibar   :url "https://codeberg.org/akib/emacs-minibar";)
 
  (moe-theme:url "https://github.com/kuanyui/moe-theme.el.git";
@@ -618,6 +627,8 @@
  (popup:url "https://github.com/auto-complete/popup-el";
   :ignored-files ("LICENSE"))
 
+ ;; (prescient :url "https://github.com/radian-software/prescient.el";)
+
  (projectile   :url "https://github.com/bbatsov/projectile";
   :ignored-files ("LICENSE" "doc" "test")
   :news "CHANGELOG.md")
@@ -808,12 +819,12 @@
 
  (with-simulated-input :url 
"https://github.com/DarwinAwardWinner/with-simulated-input";)
 
- (writegood-mode   :url "https://github.com/bnbeckwith/writegood-mode";
-  :readme "README.org")
-
  (workroom  :url "https://codeberg.org/akib/emacs-workroom";
   :doc "workroom.texi")
 
+ (writegood-mode   :url "https://github.com/bnbeckwith/writegood-mode";
+  :readme "README.org")
+
  (ws-butler:url "https://github.com/lewang/ws-butler";
   :readme "README.md"
   :ignored-files ("COPYING" "tests" "Makefile" ".travis.yml"))



[elpa] externals/tempel 4ef1d29e9f: Avoid the trigger word "modern"

2022-12-29 Thread ELPA Syncer
branch: externals/tempel
commit 4ef1d29e9f962fcc59a3569d7d6593dc075c86e6
Author: Daniel Mendler 
Commit: Daniel Mendler 

Avoid the trigger word "modern"

My only modern package is org-modern ;)
---
 README.org | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/README.org b/README.org
index e80859c832..060f189c54 100644
--- a/README.org
+++ b/README.org
@@ -17,9 +17,10 @@ Tempel is a tiny template package for Emacs, which uses the 
syntax of the Emacs
 Tempo library. Tempo is an ancient temple of the church of Emacs. It is 27 
years
 old, but still in good shape since it successfully resisted change over the
 decades. However it may look a bit dusty here and there. Therefore we present
-Tempel, a modernized implementation of Tempo. Tempel integrates well with the
-standard =completion-at-point-functions= mechanism which is used by Emacs for
-in-buffer completion.
+Tempel, a new implementation of Tempo with inline expansion and integration 
with
+recent Emacs facilities. Tempel takes advantage of the standard
+=completion-at-point-functions= mechanism which is used by Emacs for in-buffer
+completion.
 
 #+toc: headlines 8
 



[nongnu] branch elpa/meow created (now 2a736d9b98)

2022-12-29 Thread ELPA Syncer
elpasync pushed a change to branch elpa/meow.

at  2a736d9b98 Grammar corrections for EXPLANATION.org

This branch includes the following new commits:

   new  f7ec4cd996 Initial commit
   new  e0e678162b Initial commit
   new  114676c071 meow-flip, meow-reverse
   new  8007bbc1f4 meow-block
   new  3899caae74 specify modes for indent block parser
   new  2d445004a4 update doc & many fix
   new  6b037ccdc9 update doc
   new  1e4335e795 Fix SPC SPC in motion state
   new  4b602df758 fix doc
   new  d25147aa1d update a tut
   new  6899ffd997 bug fix
   new  6b293a4c5c Fix typo
   new  d6d0a01c24 add logo & bug fix
   new  839cd0551b update doc
   new  378e1bb957 update log
   new  a92d570fb6 update tutorial command
   new  baeed21f8f update tutorial
   new  5bebdb7297 update doc
   new  f880a61762 Fix compile
   new  f7aa99ed22 add autoload
   new  b8a16b0d07 add autoload
   new  720db1cb20 update doc
   new  1996566d9b update doc
   new  52b95dc99a update doc
   new  fb42b9a603 fix meow-line don't use prefix arg
   new  b3c152e4e5 replace flip with forwarding
   new  4bf359ed97 replace flip with forwarding
   new  19d759d0e7 update negative behavior on line and exp
   new  03f282f363 Merge branch 'master' of github.com:DogLooksGood/meow
   new  4d6aa0296d bug fix on kill
   new  cd950fb58b bug fix
   new  333154288b exp extends block selection
   new  10f812417b bug fix
   new  7e4ef46267 Make checkdoc happy
   new  8e51f4b329 update select/visit, remove mc
   new  f3cf93705d prompt for visit
   new  1881b353b3 bugfix
   new  5ed2f124cd enhancement: forwarding
   new  2f4eaf7cdc bugfix
   new  2f7185381a Fix byte-compile warnings
   new  b539ed2d50 Add selection command fallback
   new  138c555fbf add doc for meow-selection-command-fallback
   new  586a3be2e9 fix byte compile warning
   new  02ddb63cc3 fix byte-compile warnings
   new  d80eec0446 fix byte-compile warnings
   new  ae86a32dac fix typo and byte-compile warnings
   new  1b81625862 fix typo
   new  12150465a8 qwerty & company
   new  e2a8b3cbc4 fix byte-compile warnings
   new  b3e802d776 update doc
   new  f45774dd20 rename some commands, update meow-search
   new  baf92177cd update qwerty layout
   new  13a94560b6 :alembic: Improve search
   new  65d4e32c87 :sparkles: Add meow-last-pos
   new  077a073010 :pencil2: Update doc for cheatsheet.
   new  f9e4296ed9 :bug: meow-last-pos doesn't cancel selection
   new  2e11e9ab13 :pencil2: Add melpa badge
   new  56e7ba100e :bug: Fix for fundamental mode
   new  d5b4475995 :bug: should disable normal/motion state when keypad is 
enabled
   new  8c6bc71f91 :bug: should cancel selection before find-ref/pop-marker
   new  034bf3ec1d :boom: :pencil: zap won't kill region.
   new  38790e674d add restclient-mode to meow-normal-state-mode-list
   new  04314e0481 :boom: Remove default TAB keybinding
   new  ae8e55ea56 :lipstick: support cursor color for different mode
   new  e7b33aab91 :bug: :doc: more reliable forwarding
   new  b8b7feebd7 :lipstick: update normal state cursor face
   new  56a15c46df :bug: prefix arg not work in keypad state
   new  8737fe4100 :boom: meow-visit only search complete symbol
   new  0d31fe0553 :bug: meow-search should regexp-quote search text
   new  48d2a73a21 :bug: quit keypad before execute command
   new  a8d2414957 :sparkles: add meow-switch-state-hook
   new  9da5d91b0c :bug: update indicator when select
   new  108a619202 :bug: update mode line when reverse
   new  eb679f787c better meow-forwarding & meow-block
   new  3c2beb616d Load seq.el for using its function
   new  c9296491e9 :sparkles: make cursor-type customizable
   new  e9a27ed386 Refactoring commands and documents (#12)
   new  f9d9acfc5b update logo
   new  e19bba6c60 fix typo
   new  f3daa74379 Update README.md
   new  0737225aa6 Add meow--selection-fallback
   new  16ad2c22fd update doc for indicator
   new  b3cfbc1246 fix invalid meow-selection-command-fallback init value
   new  f35fc5643d experimental option, meow-select-on-exit
   new  28a2ee159b replace timer with sit-for for better reliability
   new  fa034338a3 make meow-select-on-exit only available in text, conf 
and prog mode
   new  e1bdeb9a76 fix typo
   new  20816129eb add qwerty example
   new  3b665751c4 add dvorak example
   new  be5131317f add doc for meow-normal-state-mode-list
   new  1c1b3c0ad6 add meow-replace-state-name-list
   new  0752b4637e let keypad support more keys
   new  d3c81ce332 ignore select-on-exit when region is empty
   new  5f40dc46b6 fix return in keymap
   new  1bff12375f update doc for use-package-always-defer
   new  d20347da8c