[nongnu] elpa/rust-mode b2e8282a36 2/2: Merge pull request #486 from rust-lang/docs-readme

2023-01-07 Thread ELPA Syncer
branch: elpa/rust-mode
commit b2e8282a3656e49a8a7900ca3f1ce92cf0dbadcf
Merge: 53b1b5c0bf 8767fef992
Author: brotzeit 
Commit: GitHub 

Merge pull request #486 from rust-lang/docs-readme

docs: Mention rust-toggle-mutability instead of rustic one
---
 README.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index 88c4e7ab45..01dc5e8505 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,7 @@ This mode provides:
 - Indentation
 - Integration with Cargo, clippy and rustfmt
 
-This mode does _not_ provide autocompletion, or jumping to function /
+This mode does _not_ provide auto completion, or jumping to function /
 trait definitions. See [Auto-completion](#auto-completion) below for tips on 
how
 to enable this.
 
@@ -189,7 +189,7 @@ This is bound to C-c C-d by default.
 
 ### More commands
 
-- `rustic-toggle-mutability` toggle mut for var defined at current line
+- `rust-toggle-mutability` toggle mut for var defined at current line
 
 ## highlighting with tree-sitter
 
@@ -228,7 +228,7 @@ by using additional packages. You can find more information 
in the
 You can either use a lsp client or [racer](https://github.com/racer-rust/racer)
 with [emacs-racer](https://github.com/racer-rust/emacs-racer#installation).
 
-Note that racer and rls are considered deprecated. You should try rust-analyzer
+Note that racer and rls are considered deprecated. You should use rust-analyzer
 instead.
 
 ## Other recommended packages



[nongnu] elpa/rust-mode 8767fef992 1/2: docs: Mention rust-toggle-mutability instead of rustic one

2023-01-07 Thread ELPA Syncer
branch: elpa/rust-mode
commit 8767fef9922b6823ff99c8f9ad96003cb87d1f4b
Author: Sibi Prabakaran 
Commit: Sibi Prabakaran 

docs: Mention rust-toggle-mutability instead of rustic one

Also some other minor improvments.
---
 README.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index 5d20f2d59a..333960c81b 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,7 @@ This mode provides:
 - Indentation
 - Integration with Cargo, clippy and rustfmt
 
-This mode does _not_ provide autocompletion, or jumping to function /
+This mode does _not_ provide auto completion, or jumping to function /
 trait definitions. See [Auto-completion](#auto-completion) below for tips on 
how
 to enable this.
 
@@ -188,7 +188,7 @@ This is bound to C-c C-d by default.
 
 ### More commands
 
-- `rustic-toggle-mutability` toggle mut for var defined at current line
+- `rust-toggle-mutability` toggle mut for var defined at current line
 
 ## highlighting with tree-sitter
 
@@ -227,7 +227,7 @@ by using additional packages. You can find more information 
in the
 You can either use a lsp client or [racer](https://github.com/racer-rust/racer)
 with [emacs-racer](https://github.com/racer-rust/emacs-racer#installation).
 
-Note that racer and rls are considered deprecated. You should try rust-analyzer
+Note that racer and rls are considered deprecated. You should use rust-analyzer
 instead.
 
 ## Other recommended packages



[nongnu] elpa/evil cc59e446ea: evil-show-paren-range: fix incorrect docstring

2023-01-07 Thread ELPA Syncer
branch: elpa/evil
commit cc59e446ea52dec04f9006aa22edb21a2ca27474
Author: Brian Leung 
Commit: Axel Forsman 

evil-show-paren-range: fix incorrect docstring
---
 evil-vars.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/evil-vars.el b/evil-vars.el
index aec747f846..b076bf1015 100644
--- a/evil-vars.el
+++ b/evil-vars.el
@@ -421,7 +421,7 @@ also happen in graphical Emacs sessions.  Set this variable 
to
   :group 'evil)
 
 (defcustom evil-show-paren-range 0
-  "The minimal distance between point and a parenthesis
+  "The maximum distance between point and a parenthesis
 which causes the parenthesis to be highlighted."
   :type 'integer
   :group 'evil)



[nongnu] main 0e54bf5f6d: * README.org: Fix NonGNU ELPA link.

2023-01-07 Thread Michael Albinus
branch: main
commit 0e54bf5f6d048bdb87ae648237dbadc2b2217b4b
Author: Michael Albinus 
Commit: Michael Albinus 

* README.org: Fix NonGNU ELPA link.
---
 README.org | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.org b/README.org
index 292d032a4e..077206f554 100644
--- a/README.org
+++ b/README.org
@@ -1,5 +1,5 @@
 #+TITLE: NonGNU ELPA README
-#+DATE: 2022-06-05
+#+DATE: 2023-01-07
 
 Copyright (C) 2020-2022 Free Software Foundation, Inc. \\
 See the end of the file for license conditions.
@@ -12,7 +12,7 @@ it in both locations.  This duplication will be removed 
eventually.
 #+END_COMMENT
 
 This repository contains the sources, deployment scripts, and auxiliary files
-for [[https://nongnu.elpa.org][NonGNU ELPA]] (=elpa.nongnu.org=).  NonGNU ELPA 
is a [[https://www.gnu.org/philosophy/free-sw.html][free software]] Emacs Lisp
+for [[https://elpa.nongnu.org][NonGNU ELPA]] (=elpa.nongnu.org=).  NonGNU ELPA 
is a [[https://www.gnu.org/philosophy/free-sw.html][free software]] Emacs Lisp
 Package Archive (ELPA) with extensions to 
[[https://www.gnu.org/software/emacs/][GNU Emacs]].
 
 This file explains the repository layout, how to add and edit



[nongnu] elpa/spell-fu be719051a6 13/21: readme: note when reset may be needed

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit be719051a64020dda0deca15751141579e956e7e
Author: Campbell Barton 
Commit: Campbell Barton 

readme: note when reset may be needed
---
 readme.rst | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/readme.rst b/readme.rst
index b8bd24128c..8f5a4856c7 100644
--- a/readme.rst
+++ b/readme.rst
@@ -229,6 +229,8 @@ there are some commands provided which may come in handy.
Toggle ``spell-fu`` mode for all buffers and resets cache,
use this if you suspect errors relating to invalid cache.
 
+   This can be useful if you use the ``default`` dictionary, then change the 
systems locale.
+
 
 Multiple dictionaries
 -



[nongnu] elpa/spell-fu 219bc124a6 14/21: Cleanup: use private convention for mode management functions

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 219bc124a6e8f4ac08380d76ebb5b51828dac3db
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: use private convention for mode management functions
---
 spell-fu.el | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index c8bfb00857..0dbae02598 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -1133,14 +1133,14 @@ Return t when the word has been removed."
 
 (with-demoted-errors "spell-fu-reset: %S"
   (dolist (buf buffers-in-mode)
-(with-current-buffer buf (spell-fu-mode-disable
+(with-current-buffer buf (spell-fu--mode-disable
 
 (when (file-directory-p spell-fu-directory)
   (delete-directory spell-fu-directory t nil))
 
 (with-demoted-errors "spell-fu-reset: %S"
   (dolist (buf buffers-in-mode)
-(with-current-buffer buf (spell-fu-mode-enable
+(with-current-buffer buf (spell-fu--mode-enable
 
 (message
   "spell-fu: reset complete%s"
@@ -1700,7 +1700,7 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
 ;; Developer note, use global hooks since these run before buffers are loaded.
 ;; Each function checks if the local mode is active before operating.
 
-(defun spell-fu-mode-enable ()
+(defun spell-fu--mode-enable ()
   "Turn on option `spell-fu-mode' for the current buffer."
 
   (spell-fu--debug-message "enabling for buffer: %S, major-mode: [%S]" 
(current-buffer) major-mode)
@@ -1735,7 +1735,7 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
 (t
   (spell-fu--idle-enable
 
-(defun spell-fu-mode-disable ()
+(defun spell-fu--mode-disable ()
   "Turn off option `spell-fu-mode' for the current buffer."
 
   (spell-fu--debug-message "disabling mode for buffer %S" (current-buffer))
@@ -1755,9 +1755,9 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
 
   (cond
 (spell-fu-mode
-  (spell-fu-mode-enable))
+  (spell-fu--mode-enable))
 (t
-  (spell-fu-mode-disable
+  (spell-fu--mode-disable
 
 (defun spell-fu--mode-turn-on ()
   "Enable the option `spell-fu-mode' where possible."



[nongnu] elpa/spell-fu df9abe16e2 02/21: Cleanup: sharp-quote function

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit df9abe16e2b8bb7538689af3a1412aef4334be84
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: sharp-quote function
---
 spell-fu.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index 1d39ac5df2..7dddfb7d8e 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -265,7 +265,7 @@ Argument PREFIX is the text to add at the start of the 
message.
 Optional argument BODY runs with the message prefix."
   (declare (indent 1))
   `
-  (spell-fu--with-advice 'message
+  (spell-fu--with-advice #'message
 :around
 (lambda (fn-orig arg &rest args)
   (apply fn-orig (append (list (concat "%s" arg)) (list ,prefix) args)))
@@ -277,7 +277,7 @@ Argument DEPTH-OVERRIDE the depth value to call `add-hook' 
with.
 Optional argument BODY runs with the depth override."
   (declare (indent 1))
   `
-  (spell-fu--with-advice 'add-hook
+  (spell-fu--with-advice #'add-hook
 :around
 (lambda (fn-orig hook function &optional _depth local)
   (funcall fn-orig hook function ,depth-override local))



[nongnu] elpa/spell-fu ed504863f5 05/21: Fix #13: Every word marked as incorrect on MS-Windows

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit ed504863f54b639a2bed82e4a82424f2b1308889
Author: Campbell Barton 
Commit: Campbell Barton 

Fix #13: Every word marked as incorrect on MS-Windows

Line endings were included in the words,
now utf8-unix encoding is forced.
---
 changelog.rst |  1 +
 spell-fu.el   | 19 ---
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/changelog.rst b/changelog.rst
index 1d20171cea..7cdcd7e609 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -4,6 +4,7 @@ Change Log
 ##
 
 - In development.
+  - Fix #13, failure to properly generate word-list cache on MS-Windows.
   - Support buffer local word-lists via ``spell-fu-buffer-session-localwords``.
   - Fix faces of overlays (such as ``hl-line-mode``) no longer mask other 
faces when selecting words to check.
   - Support for multiple dictionaries at once.
diff --git a/spell-fu.el b/spell-fu.el
index 4bfdb0d630..ac3a076cf1 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -155,7 +155,7 @@ Notes:
 
 ;; Use to ensure the cache is not from a previous release.
 ;; Only ever increase.
-(defconst spell-fu--cache-version "0.1")
+(defconst spell-fu--cache-version "0.2")
 
 ;; Keep track of the last overlay, this allows expanding the existing overlay 
where possible.
 ;; Useful since font-locking often uses multiple smaller ranges which can be 
merged into one range.
@@ -420,7 +420,10 @@ save some time by not spending time reading it back."
   (let
 ( ;; The header, an associative list of items.
   (cache-header (list (cons "version" spell-fu--cache-version)))
-  (word-table nil))
+  (word-table nil)
+  ;; Needed for Windows to prevent CRLF including new-lines in strings.
+  (coding-system-for-read 'utf-8-unix)
+  (coding-system-for-write 'utf-8-unix))
 
 (with-temp-buffer
   (insert-file-contents-literally words-file)
@@ -1156,11 +1159,13 @@ Return t if the file was updated."
   (setq word-list-ncase
 (sort word-list-ncase (lambda (a b) (string-lessp (car a) (car 
b)
 
-  ;; Write to 'words-file'.
-  (with-temp-buffer
-(dolist (line-cons word-list-ncase)
-  (insert (cdr line-cons) "\n"))
-(write-region nil nil words-file nil 0))
+  ;; Needed for Windows to prevent CRLF including new-lines in 
strings.
+  (let ((coding-system-for-write 'utf-8-unix))
+;; Write to 'words-file'.
+(with-temp-buffer
+  (dolist (line-cons word-list-ncase)
+(insert (cdr line-cons) "\n"))
+  (write-region nil nil words-file nil 0)))
 
   updated)))
 



[nongnu] elpa/spell-fu 57a678a3c4 07/21: Cleanup: sharp-quote function

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 57a678a3c429754713baddf574532735890f5f4c
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: sharp-quote function
---
 spell-fu.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/spell-fu.el b/spell-fu.el
index b937046ae5..ff4cf18882 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -850,7 +850,7 @@ when checking the entire buffer for example."
 (state
   (unless spell-fu--global-timer
 (setq spell-fu--global-timer
-  (run-with-idle-timer spell-fu-idle-delay :repeat 
'spell-fu--time-callback-or-disable
+  (run-with-idle-timer spell-fu-idle-delay :repeat 
#'spell-fu--time-callback-or-disable
 (t
   (when spell-fu--global-timer
 (cancel-timer spell-fu--global-timer)



[nongnu] elpa/spell-fu f0d49dcc5a 16/21: Cleanup: emacs native format

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit f0d49dcc5a244a2fbc42954b1e9f753a8f996c6e
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: emacs native format
---
 spell-fu.el | 1060 ---
 1 file changed, 504 insertions(+), 556 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index 2f26332c5a..db3e4a1b70 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -105,16 +105,15 @@ suitable for populating this list.  To add a dictionary, 
please
 use `spell-fu-dictionary-add'.")
 
 (defface spell-fu-incorrect-face
-  '
-  supports :underline (:style wave))) :underline (:style wave :color 
"red"))
+  'supports :underline (:style wave))) :underline (:style wave :color 
"red"))
 (t :underline t :inherit error))
   "Face for incorrect spelling.")
 
 ;; See '-' as a word boundary \b, so 'full-screen' is detected as two words.
 (defvar-local spell-fu-syntax-table
-  (let ((table (copy-syntax-table (standard-syntax-table
-(modify-syntax-entry ?- "-" table)
-table)
+(let ((table (copy-syntax-table (standard-syntax-table
+  (modify-syntax-entry ?- "-" table)
+  table)
   "The syntax table to use when scanning words.")
 
 ;; This regex handles:
@@ -209,23 +208,23 @@ Notes:
 ;; Push in reverse order (so first used dictionary is last).
 
 (cond
-  (spell-fu-buffer-session-localwords
-(push (spell-fu-get-buffer-session-localwords-dictionary) result)
-(spell-fu--debug-message
-  "default-dictionary: `spell-fu-buffer-session-localwords' found, 
using!"))
-  (t
-(spell-fu--debug-message
-  "default-dictionary: `spell-fu-buffer-session-localwords' not found, 
skipping!")))
+ (spell-fu-buffer-session-localwords
+  (push (spell-fu-get-buffer-session-localwords-dictionary) result)
+  (spell-fu--debug-message
+   "default-dictionary: `spell-fu-buffer-session-localwords' found, 
using!"))
+ (t
+  (spell-fu--debug-message
+   "default-dictionary: `spell-fu-buffer-session-localwords' not found, 
skipping!")))
 
 (cond
-  ((and ispell-personal-dictionary (file-exists-p 
ispell-personal-dictionary))
-(push (spell-fu-get-personal-dictionary "default" 
ispell-personal-dictionary) result)
-(spell-fu--debug-message
-  "default-dictionary: `ispell-personal-dictionary' found at \"%s\" 
using!"
-  ispell-personal-dictionary))
-  (t
-(spell-fu--debug-message
-  "default-dictionary: `ispell-personal-dictionary' not found, 
skipping!")))
+ ((and ispell-personal-dictionary (file-exists-p 
ispell-personal-dictionary))
+  (push (spell-fu-get-personal-dictionary "default" 
ispell-personal-dictionary) result)
+  (spell-fu--debug-message
+   "default-dictionary: `ispell-personal-dictionary' found at \"%s\" 
using!"
+   ispell-personal-dictionary))
+ (t
+  (spell-fu--debug-message
+   "default-dictionary: `ispell-personal-dictionary' not found, 
skipping!")))
 
 (let ((dict (or ispell-local-dictionary ispell-dictionary "default")))
   (push (spell-fu-get-ispell-dictionary dict) result)
@@ -239,8 +238,8 @@ Notes:
 (when update-fun
   (funcall update-fun)
   (spell-fu--debug-message "updating [%s], found [%d] word(s)"
-(get dict 'description)
-(hash-table-size (symbol-value dict))
+   (get dict 'description)
+   (hash-table-size (symbol-value dict))
 
 (defun spell-fu--dictionaries-test-any (test-fn)
   "Remove any dictionaries that match TEST-FN."
@@ -256,16 +255,16 @@ Notes:
 (defun spell-fu--dictionaries-remove-any (test-fn)
   "Return non-nil if any dictionaries match TEST-FN."
   (setq spell-fu-dictionaries
-(remq
-  nil
-  (mapcar
-(lambda (dict)
-  (cond
-((funcall test-fn dict)
+(remq
+ nil
+ (mapcar
+  (lambda (dict)
+(cond
+ ((funcall test-fn dict)
   dict)
-(t
+ (t
   nil)))
-spell-fu-dictionaries
+  spell-fu-dictionaries
 
 (defun spell-fu--cache-file (dict)
   "Return the location of the cache file with dictionary DICT."
@@ -278,7 +277,7 @@ Notes:
 (defun spell-fu--refresh-cache-table-list ()
   "Refresh internal list `spell-fu--cache-table-list'."
   (setq spell-fu--cache-table-list
-(mapcar (lambda (dict) (symbol-value dict)) spell-fu-dictionaries)))
+(mapcar (lambda (dict) (symbol-value dict)) spell-fu-dictionaries)))
 
 (defun spell-fu--refresh ()
   "Reset spell-checked overlays in the current buffer."
@@ -292,11 +291,9 @@ Notes:
   "Reset spell-checked overlays for buffers using the dictionary DICT."
   (dolist (buf (buffer-list))
 (with-current-buffer buf
-  (when
-(and
-  (bound-and-true-p spell-fu-mode)
-  (bound-and-true-p spell-fu-dictionaries)
-  (member dict s

[nongnu] elpa/spell-fu 635c5c2eed 19/21: Cleanup: sharp-quote function

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 635c5c2eedd677ece78dcc9606c55a8dfcae4c38
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: sharp-quote function
---
 spell-fu.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/spell-fu.el b/spell-fu.el
index 4033d49206..b2fcaa6965 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -197,7 +197,7 @@ Notes:
   ;; When emacs 28.2 support is dropped,
   ;; this can simply check `spell-fu-debug', see: #36.
   (when (bound-and-true-p spell-fu-debug)
-`(apply 'message (list (concat "spell-fu-debug: " ,fmt) ,@args
+`(apply #'message (list (concat "spell-fu-debug: " ,fmt) ,@args
 
 ;; ---
 ;; Dictionary Utility Functions



[nongnu] elpa/spell-fu f62b6d3770 12/21: Cleanup: doc-string length

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit f62b6d37706a13b2fe00d150f8903256d8fabac2
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: doc-string length
---
 spell-fu.el | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index 1ef040744f..c8bfb00857 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -131,13 +131,16 @@ use `spell-fu-dictionary-add'.")
 ;; - word' <= don't count the final apostrophe.
 ;;   
 (defvar-local spell-fu-word-regexp 
"\\b\\([[:alpha:]]+\\(['\u2019][[:alpha:]]+\\)?\\)\\b"
-  "Regex used to scan for words to check (used by `spell-fu-check-range').")
+  "Regex used to scan for words to check.
+Used by `spell-fu-check-range'.")
 
 (defvar-local spell-fu-faces-include nil
-  "List of faces to check or nil to include all (used by 
`spell-fu-check-range').")
+  "List of faces to check or nil to include all.
+Used by `spell-fu-check-range'.")
 
 (defvar-local spell-fu-faces-exclude nil
-  "List of faces not to check or nil to exclude none (used by 
`spell-fu-check-range').")
+  "List of faces not to check or nil to exclude none.
+Used by `spell-fu-check-range'.")
 
 (defvar-local spell-fu-check-range 'spell-fu-check-range-default
   "Function that takes a beginning & end points to check for the current 
buffer.



[nongnu] elpa/spell-fu 95e005969d 09/21: Cleanup: replace 'if' with 'cond'

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 95e005969dc3b04137eb88ed415b3c9fe01cec17
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: replace 'if' with 'cond'
---
 spell-fu.el | 57 +
 1 file changed, 33 insertions(+), 24 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index 8e87df25a5..1abe16519a 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -268,9 +268,11 @@ already contain WORD."
 ;; Operation supported?
 (get
   dict
-  (if adding
-'add-word
-'remove-word))
+  (cond
+(adding
+  'add-word)
+(t
+  'remove-word)))
 ;; Word is / is not in dictionary?
 (eq adding (null (gethash encoded-word (symbol-value dict
 ;; Result.
@@ -280,13 +282,16 @@ already contain WORD."
 (defun spell-fu--read-dictionary (candidate-dicts prompt)
   "Ask the user to select one dictionary from CANDIDATE-DICTS.
 PROMPT is shown to the users completing read."
-  (if (<= (length candidate-dicts) 1)
-(car candidate-dicts) ; Return the single choice
-(let
-  (
-(completion-extra-properties
-  '(:annotation-function (lambda (candidate) (get (intern candidate) 
'description)
-  (intern (completing-read prompt (mapcar #'symbol-name 
candidate-dicts))
+  (cond
+((<= (length candidate-dicts) 1)
+  ;; Return the single choice
+  (car candidate-dicts))
+(t
+  (let
+(
+  (completion-extra-properties
+'(:annotation-function (lambda (candidate) (get (intern candidate) 
'description)
+(intern (completing-read prompt (mapcar #'symbol-name 
candidate-dicts)))
 
 
 ;; ---
@@ -1024,13 +1029,15 @@ Return t when the word has been added."
 (spell-fu--get-edit-candidate-dictionaries (spell-fu--word-at-point) 
'add)
 "Add to dictionary: ")))
   (let ((word (spell-fu--word-at-point)))
-(if dict
-  (let ((encoded-word (spell-fu--canonicalize-word word)))
-(funcall (get dict 'add-word) encoded-word)
-(puthash encoded-word t (symbol-value dict))
-t)
-  (message "Cannot add %S to any active dictionary." word)
-  nil)))
+(cond
+  (dict
+(let ((encoded-word (spell-fu--canonicalize-word word)))
+  (funcall (get dict 'add-word) encoded-word)
+  (puthash encoded-word t (symbol-value dict))
+  t))
+  (t
+(message "Cannot add %S to any active dictionary." word)
+nil
 
 (defun spell-fu-word-remove (dict)
   "Remove the current word from the dictionary DICT.
@@ -1042,13 +1049,15 @@ Return t when the word has been removed."
 (spell-fu--get-edit-candidate-dictionaries (spell-fu--word-at-point) 
'remove)
 "Remove from dictionary: ")))
   (let ((word (spell-fu--word-at-point)))
-(if dict
-  (let ((encoded-word (spell-fu--canonicalize-word word)))
-(funcall (get dict 'remove-word) encoded-word)
-(remhash encoded-word (symbol-value dict))
-t)
-  (message "Cannot remove %S from any active dictionary." word)
-  nil)))
+(cond
+  (dict
+(let ((encoded-word (spell-fu--canonicalize-word word)))
+  (funcall (get dict 'remove-word) encoded-word)
+  (remhash encoded-word (symbol-value dict))
+  t))
+  (t
+(message "Cannot remove %S from any active dictionary." word)
+nil
 
 (defun spell-fu-dictionary-add (dict)
   "Add DICT to the list of active dictionaries."



[nongnu] elpa/spell-fu b89bfe035d 20/21: Cleanup: correct typo in description

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit b89bfe035de0628b38c59ed67d129194b7a953fe
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: correct typo in description
---
 spell-fu.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index b2fcaa6965..94e17390f0 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -21,15 +21,15 @@
 ;; Write the following code to your .emacs file:
 ;;
 ;;   (require 'spell-fu)
-;;   (global-spell-fu-mode-mode)
+;;   (global-spell-fu-mode)
 ;;
 ;; Or with `use-package':
 ;;
 ;;   (use-package spell-fu)
-;;   (global-spell-fu-mode-mode)
+;;   (global-spell-fu-mode)
 ;;
 ;; If you prefer to enable this per-mode, you may do so using
-;; mode hooks instead of calling `global-spell-fu-mode-mode'.
+;; mode hooks instead of calling `global-spell-fu-mode'.
 ;; The following example enables this for org-mode:
 ;;
 ;;   (add-hook 'org-mode-hook



[nongnu] elpa/spell-fu 38f4a4a275 08/21: Fix #31: Failure to detect updated symlinked dictionaries

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 38f4a4a275389690f492d91a23c03af0bd9470ce
Author: Campbell Barton 
Commit: Campbell Barton 

Fix #31: Failure to detect updated symlinked dictionaries

Comparing dates wasn't working on symlinks.
Follow symlinks on dictionaries before comparing dates.
---
 changelog.rst |  1 +
 spell-fu.el   | 12 
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/changelog.rst b/changelog.rst
index 0fe619a7c5..bec671bb24 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -4,6 +4,7 @@ Change Log
 ##
 
 - In development.
+  - Fix #31, failure to detect updated personal dictionary when it's a symlink.
   - Stealthy font locking now checks words even when outside the view,
 so stealthy font locking ensures words are checked.
   - Fix #13, failure to properly generate word-list cache on MS-Windows.
diff --git a/spell-fu.el b/spell-fu.el
index ff4cf18882..8e87df25a5 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -1085,7 +1085,11 @@ Return t if the file was updated."
   (dict-aspell-name (cadr (nth 5 (assoc dict-name 
ispell-aspell-dictionary-alist
   (dict-file (and dict-aspell-name (spell-fu--aspell-find-data-file 
dict-name)))
   (is-dict-outdated
-(and has-words-file dict-file (spell-fu--file-is-older words-file 
dict-file)))
+(and
+  has-words-file dict-file
+  (spell-fu--file-is-older words-file
+;; Chase links is needed as checking the symbolic-link date isn't 
correct, #31.
+(file-chase-links dict-file
   ;; Return value, failure to run `aspell' leaves this nil.
   (updated nil))
 
@@ -1275,9 +1279,9 @@ Return t if the file was updated."
   (has-dict-personal (and personal-words-file (file-exists-p 
personal-words-file)))
   (is-dict-outdated
 (and
-  has-words-file
-  has-dict-personal
-  (spell-fu--file-is-older words-file personal-words-file
+  has-words-file has-dict-personal
+  ;; Chase links is needed as checking the symbolic-link date isn't 
correct, #31.
+  (spell-fu--file-is-older words-file (file-chase-links 
personal-words-file)
 
 (when (or (not has-words-file) is-dict-outdated)
 



[nongnu] elpa/spell-fu 39549871c7 15/21: Cleanup: format

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 39549871c733b333855c763559d11aac0e91007c
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: format
---
 spell-fu.el | 49 ++---
 1 file changed, 22 insertions(+), 27 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index 0dbae02598..2f26332c5a 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -351,6 +351,7 @@ PROMPT is shown to the users completing read."
 
 (defmacro spell-fu--with-advice (fn-orig where fn-advice &rest body)
   "Execute BODY with WHERE advice on FN-ORIG temporarily enabled."
+  (declare (indent 3))
   `
   (let ((fn-advice-var ,fn-advice))
 (unwind-protect
@@ -365,8 +366,7 @@ Argument PREFIX is the text to add at the start of the 
message.
 Optional argument BODY runs with the message prefix."
   (declare (indent 1))
   `
-  (spell-fu--with-advice #'message
-:around
+  (spell-fu--with-advice #'message :around
 (lambda (fn-orig arg &rest args)
   (apply fn-orig (append (list (concat "%s" arg)) (list ,prefix) args)))
 ,@body))
@@ -377,15 +377,13 @@ Argument DEPTH-OVERRIDE the depth value to call 
`add-hook' with.
 Optional argument BODY runs with the depth override."
   (declare (indent 1))
   `
-  (spell-fu--with-advice #'add-hook
-:around
+  (spell-fu--with-advice #'add-hook :around
 (lambda (fn-orig hook function &optional _depth local)
   (funcall fn-orig hook function ,depth-override local))
 ,@body))
 
 (defmacro spell-fu--setq-expand-range-to-line-boundaries (pos-beg pos-end)
   "Set POS-BEG the the line beginning, POS-END to the line end."
-  (declare (indent 1))
   ;; Ignore field boundaries.
   (let ((inhibit-field-text-motion t))
 `
@@ -433,9 +431,7 @@ Argument POS return faces at this point."
 
 (defun spell-fu--next-faces-prop-change (pos limit)
   "Return the next face change from POS restricted by LIMIT."
-  (next-single-property-change
-pos
-'read-face-name
+  (next-single-property-change pos 'read-face-name
 nil
 (next-single-property-change pos 'face nil limit)))
 
@@ -1049,8 +1045,7 @@ Return t when found, otherwise nil."
 (goto-char point-found)
 t)
   (t
-(message
-  "Spell-fu: no %s spelling error found"
+(message "Spell-fu: no %s spelling error found"
   (cond
 ((< dir 0)
   "previous")
@@ -1133,17 +1128,18 @@ Return t when the word has been removed."
 
 (with-demoted-errors "spell-fu-reset: %S"
   (dolist (buf buffers-in-mode)
-(with-current-buffer buf (spell-fu--mode-disable
+(with-current-buffer buf
+  (spell-fu--mode-disable
 
 (when (file-directory-p spell-fu-directory)
   (delete-directory spell-fu-directory t nil))
 
 (with-demoted-errors "spell-fu-reset: %S"
   (dolist (buf buffers-in-mode)
-(with-current-buffer buf (spell-fu--mode-enable
+(with-current-buffer buf
+  (spell-fu--mode-enable
 
-(message
-  "spell-fu: reset complete%s"
+(message "spell-fu: reset complete%s"
   (cond
 (buffers-in-mode
   "")
@@ -1168,7 +1164,8 @@ Return t if the file was updated."
   (dict-file (and dict-aspell-name (spell-fu--aspell-find-data-file 
dict-name)))
   (is-dict-outdated
 (and
-  has-words-file dict-file
+  has-words-file
+  dict-file
   (spell-fu--file-is-older words-file
 ;; Chase links is needed as checking the symbolic-link date isn't 
correct, #31.
 (file-chase-links dict-file
@@ -1199,8 +1196,7 @@ Return t if the file was updated."
   (call-process aspell-bin nil t nil "dump" "master")
   (setq updated t))
 (error
-  (message
-"failed to run \"aspell\" with default dictionary with 
error: %s"
+  (message "failed to run \"aspell\" with default 
dictionary with error: %s"
 (error-message-string err)
 (t
   (condition-case err
@@ -1208,8 +1204,7 @@ Return t if the file was updated."
   (call-process aspell-bin nil t nil "-d" dict-name "dump" 
"master")
   (setq updated t))
 (error
-  (message
-"failed to run aspell with %S dictionary with error: 
%s"
+  (message "failed to run aspell with %S dictionary with 
error: %s"
 dict-name
 (error-message-string err))
 
@@ -1219,8 +1214,7 @@ Return t if the file was updated."
   (let ((lang (spell-fu--aspell-lang-from-dict dict-name)))
 (unless
   (zerop
-(shell-command-on-region
-  (point-min) (point-max)
+(shell-command-on-region (point-min

[nongnu] elpa/spell-fu 83890ae6d3 01/21: Cleanup: quiet quote warnings

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 83890ae6d32e1c3ce74e4b47b945a5b3293eb1aa
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: quiet quote warnings
---
 spell-fu.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index 75aef2d4a7..1d39ac5df2 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -207,7 +207,7 @@ Notes:
 (defun spell-fu--get-edit-candidate-dictionaries (word action)
   "Return dictionaries for which it make sense to perform ACTION on WORD.
 
-ACTION is 'remove or 'add.  Returned candidates are dictionaries
+ACTION is `'remove' or `'add'.  Returned candidates are dictionaries
 which support the operation, and correspondingly do / do not
 already contain WORD."
   (let
@@ -1172,8 +1172,8 @@ Return t if the file was updated."
 (defun spell-fu--aspell-lang-from-dict (dict-name)
   "Return the language of a DICT-NAME or nil if identification fails.
 
-Supports aspell alias dictionaries, e.g. 'german' or 'deutsch',
-for 'de_DE' using Ispell's lookup routines.
+Supports aspell alias dictionaries, e.g. \"german\" or \"deutsch\",
+for \"de_DE\" using Ispell's lookup routines.
 The language is identified by looking for the data file
 associated with the dictionary."
   (unless ispell-aspell-dictionary-alist



[nongnu] elpa/spell-fu 0dc0568186 11/21: Update doc-string and readme for spell-fu-faces-exclude

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 0dc0568186409fdd9c082ad3c8a61d48d5c4becf
Author: Campbell Barton 
Commit: Campbell Barton 

Update doc-string and readme for spell-fu-faces-exclude
---
 readme.rst  | 5 -
 spell-fu.el | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/readme.rst b/readme.rst
index 137a5fc6cd..b8bd24128c 100644
--- a/readme.rst
+++ b/readme.rst
@@ -123,7 +123,10 @@ You may wish to set these values differently based on the 
current major-mode.
When not ``nil``, only faces in this list will be checked.
 
 ``spell-fu-faces-exclude``
-   When not ``nil``, text with faces in this list will be excluded.
+   When not ``nil``, text with faces in this list won't be checked.
+
+   Note that you may wish to add faces to this list if keywords or commands 
are marked as being spelled incorrectly.
+   In this case, the face used by these commands may be added to this list so 
as to skip them.
 
 ``global-spell-fu-ignore-buffer``
When not ``nil``, the buffer won't enable spell-checking from 
``global-spell-fu-mode``.
diff --git a/spell-fu.el b/spell-fu.el
index 82a98fa16d..1ef040744f 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -137,7 +137,7 @@ use `spell-fu-dictionary-add'.")
   "List of faces to check or nil to include all (used by 
`spell-fu-check-range').")
 
 (defvar-local spell-fu-faces-exclude nil
-  "List of faces to check or nil to exclude none (used by 
`spell-fu-check-range').")
+  "List of faces not to check or nil to exclude none (used by 
`spell-fu-check-range').")
 
 (defvar-local spell-fu-check-range 'spell-fu-check-range-default
   "Function that takes a beginning & end points to check for the current 
buffer.



[nongnu] elpa/spell-fu 341575b1d0 10/21: Adding spell-fu-debug variable & spell-fu-reset command

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 341575b1d097fed6f7cd94a942d3a3383eccad40
Author: Campbell Barton 
Commit: Campbell Barton 

Adding spell-fu-debug variable & spell-fu-reset command

Support debugging messages for dictionary loading.

The spell-fu-reset command can be used to reset all spell-fu cache.
---
 changelog.rst |  2 ++
 readme.rst|  9 ++
 spell-fu.el   | 99 +++
 3 files changed, 97 insertions(+), 13 deletions(-)

diff --git a/changelog.rst b/changelog.rst
index bec671bb24..beadb919c1 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -4,6 +4,8 @@ Change Log
 ##
 
 - In development.
+  - Add ``spell-fu-debug`` variable, to support debugging why dictionaries are 
not loading.
+  - Add ``spell-fu-reset`` to re-generate cache.
   - Fix #31, failure to detect updated personal dictionary when it's a symlink.
   - Stealthy font locking now checks words even when outside the view,
 so stealthy font locking ensures words are checked.
diff --git a/readme.rst b/readme.rst
index caa9157d5f..137a5fc6cd 100644
--- a/readme.rst
+++ b/readme.rst
@@ -99,6 +99,11 @@ Global Settings
 ``global-spell-fu-ignore-modes`` nil
A list of modes that won't enable spell-checking from 
``global-spell-fu-mode``.
 
+``spell-fu-debug`` nil
+   Enable to see additional messages which may help to debug failure to 
initialize dictionaries.
+
+   After enabling you may want to call the command ``spell-fu-reset``.
+
 
 Buffer Local Settings
 ^
@@ -217,6 +222,10 @@ there are some commands provided which may come in handy.
 ``spell-fu-word-remove``
Remove the word under the cursor from a personal dictionary.
 
+``spell-fu-reset``
+   Toggle ``spell-fu`` mode for all buffers and resets cache,
+   use this if you suspect errors relating to invalid cache.
+
 
 Multiple dictionaries
 -
diff --git a/spell-fu.el b/spell-fu.el
index 1abe16519a..82a98fa16d 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -70,6 +70,10 @@ Set to 0.0 to highlight immediately (as part of syntax 
highlighting)."
   "List of major-modes to exclude when `spell-fu' has been enabled globally."
   :type '(repeat symbol))
 
+(defcustom spell-fu-debug nil
+  "Enable debug messages, use for troubleshooting unexpected behavior."
+  :type 'boolean)
+
 (defvar-local spell-fu-buffer-session-localwords nil
   "Optional buffer-local word-list of words.
 This is intended to be set by file-locals or dir-locals.
@@ -176,6 +180,19 @@ Notes:
 ;; so this relies on the lists being shared between buffers (not just matching 
contents).
 (defvar spell-fu--buffer-localwords-global-cache-table-map nil)
 
+
+;; ---
+;; Internal Macros
+
+;; Developer note, don't use this for logging the checking of individual words,
+;; that is far too verbose, this is mainly for checking why dictionaries aren't
+;; being properly initialized.
+(defmacro spell-fu--debug-message (fmt &rest args)
+  "Debug message logging passing FMT and ARGS to `message'."
+  (when spell-fu-debug
+`(apply 'message (list (concat "spell-fu-debug: " ,fmt) ,@args
+
+
 ;; ---
 ;; Dictionary Utility Functions
 
@@ -185,13 +202,42 @@ Notes:
 
 (defun spell-fu--default-dictionaries ()
   "Construct the default value of `spell-fu-dictionaries'."
-  (nconc
-(list
-  (spell-fu-get-ispell-dictionary (or ispell-local-dictionary 
ispell-dictionary "default")))
-(when (and ispell-personal-dictionary (file-exists-p 
ispell-personal-dictionary))
-  (list (spell-fu-get-personal-dictionary "default" 
ispell-personal-dictionary)))
-(when spell-fu-buffer-session-localwords
-  (list (spell-fu-get-buffer-session-localwords-dictionary)
+  (let ((result))
+;; Push in reverse order (so first used dictionary is last).
+
+(cond
+  (spell-fu-buffer-session-localwords
+(push (spell-fu-get-buffer-session-localwords-dictionary) result)
+(spell-fu--debug-message
+  "default-dictionary: `spell-fu-buffer-session-localwords' found, 
using!"))
+  (t
+(spell-fu--debug-message
+  "default-dictionary: `spell-fu-buffer-session-localwords' not found, 
skipping!")))
+
+(cond
+  ((and ispell-personal-dictionary (file-exists-p 
ispell-personal-dictionary))
+(push (spell-fu-get-personal-dictionary "default" 
ispell-personal-dictionary) result)
+(spell-fu--debug-message
+  "default-dictionary: `ispell-personal-dictionary' found at \"%s\" 
using!"
+  ispell-personal-dictionary))
+  (t
+(spell-fu--debug-message
+  "default-dictionary: `ispell-personal-dictionary' not found, 
skipping!")))
+
+(let ((dict (or ispell-local-dictionary ispell-dictionary "default")))
+  (push (spell-fu-get-ispell-dictionary dict) result)
+  (spell-fu--debug-messag

[nongnu] elpa/spell-fu 3caf7047ea 21/21: Rename functions & variables that used a global- prefix

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 3caf7047ea8373b5f26b99e8b73e5da55df46a70
Author: Campbell Barton 
Commit: Campbell Barton 

Rename functions & variables that used a global- prefix

Use `spell-fu-global-*` instead, details in changelog.
---
 changelog.rst |  4 +++-
 readme.rst| 14 +++---
 spell-fu.el   | 25 +++--
 3 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/changelog.rst b/changelog.rst
index beadb919c1..751655d85a 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -3,7 +3,9 @@
 Change Log
 ##
 
-- In development.
+- Version 0.4 (2023-01-06)
+  - Rename ``global-spell-fu-mode`` to ``spell-fu-global-mode``,
+``global-spell-fu-ignore-buffer`` to ``spell-fu-global-ignore-buffer``.
   - Add ``spell-fu-debug`` variable, to support debugging why dictionaries are 
not loading.
   - Add ``spell-fu-reset`` to re-generate cache.
   - Fix #31, failure to detect updated personal dictionary when it's a symlink.
diff --git a/readme.rst b/readme.rst
index 8f5a4856c7..c32aaea08c 100644
--- a/readme.rst
+++ b/readme.rst
@@ -32,7 +32,7 @@ You may enable this globally which has the following defaults.
 .. code-block:: elisp
 
(use-package spell-fu)
-   (global-spell-fu-mode)
+   (spell-fu-global-mode)
 
 Or you may wish to configure this per-mode, e.g:
 
@@ -96,8 +96,8 @@ Global Settings
 ``spell-fu-incorrect-face`` (red, underline)
The font to use for the spell checking overlay.
 
-``global-spell-fu-ignore-modes`` nil
-   A list of modes that won't enable spell-checking from 
``global-spell-fu-mode``.
+``spell-fu-global-ignore-modes`` nil
+   A list of modes that won't enable spell-checking from 
``spell-fu-global-mode``.
 
 ``spell-fu-debug`` nil
Enable to see additional messages which may help to debug failure to 
initialize dictionaries.
@@ -128,8 +128,8 @@ You may wish to set these values differently based on the 
current major-mode.
Note that you may wish to add faces to this list if keywords or commands 
are marked as being spelled incorrectly.
In this case, the face used by these commands may be added to this list so 
as to skip them.
 
-``global-spell-fu-ignore-buffer``
-   When not ``nil``, the buffer won't enable spell-checking from 
``global-spell-fu-mode``.
+``spell-fu-global-ignore-buffer``
+   When not ``nil``, the buffer won't enable spell-checking from 
``spell-fu-global-mode``.
 
This may also be a function that takes a single buffer argument,
where returning ``nil`` will enable spell-checking, anything else will not.
@@ -139,9 +139,9 @@ You may wish to set these values differently based on the 
current major-mode.
.. code-block:: elisp
 
   (setq spell-fu-ignore-modes (list 'org-mode))
-  (setq global-spell-fu-ignore-buffer (lambda (buf) (buffer-local-value 
'buffer-read-only buf)))
+  (setq spell-fu-global-ignore-buffer (lambda (buf) (buffer-local-value 
'buffer-read-only buf)))
 
-  (global-spell-fu-mode)
+  (spell-fu-global-mode)
 
 
 Buffer Local Words
diff --git a/spell-fu.el b/spell-fu.el
index 94e17390f0..1ad4520792 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -21,15 +21,15 @@
 ;; Write the following code to your .emacs file:
 ;;
 ;;   (require 'spell-fu)
-;;   (global-spell-fu-mode)
+;;   (spell-fu-global-mode)
 ;;
 ;; Or with `use-package':
 ;;
 ;;   (use-package spell-fu)
-;;   (global-spell-fu-mode)
+;;   (spell-fu-global-mode)
 ;;
 ;; If you prefer to enable this per-mode, you may do so using
-;; mode hooks instead of calling `global-spell-fu-mode'.
+;; mode hooks instead of calling `spell-fu-global-mode'.
 ;; The following example enables this for org-mode:
 ;;
 ;;   (add-hook 'org-mode-hook
@@ -51,7 +51,6 @@
 ;; For `string-blank-p'.
 (require 'subr-x)
 
-
 ;; ---
 ;; Custom Variables
 
@@ -84,7 +83,12 @@ Call `spell-fu-buffer-session-localwords-refresh' after 
run-time modifications."
 ;;;###autoload
 (put 'spell-fu-buffer-session-localwords 'safe-local-variable 
#'spell-fu-list-of-strings-p)
 
-(defvar-local global-spell-fu-ignore-buffer nil
+(define-obsolete-variable-alias
+  'global-spell-fu-ignore-buffer
+  'spell-fu-global-ignore-buffer
+  "0.4")
+
+(defvar-local spell-fu-global-ignore-buffer nil
   "When non-nil, the global mode will not be enabled for this buffer.
 This variable can also be a predicate function, in which case
 it'll be called with one parameter (the buffer in question), and
@@ -157,7 +161,6 @@ Notes:
 - You may explicitly mark a range as incorrect using
   `spell-fu-mark-incorrect' which takes the range to mark as arguments.")
 
-
 ;; ---
 ;; Internal Variables
 
@@ -1716,18 +1719,20 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
  ;; Not explicitly ignored.
  (not (memq major-mode spell-fu-ignore-modes))
  ;; Optionally check if a function is used.
- (or 

[nongnu] elpa/spell-fu bddea99f9c 17/21: Fix #36: byte compilation error with Emacs 28.2

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit bddea99f9cffdde8cdeb2bf92fb90af83554d059
Author: Campbell Barton 
Commit: Campbell Barton 

Fix #36: byte compilation error with Emacs 28.2
---
 spell-fu.el | 10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index db3e4a1b70..63eaf3b936 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -48,6 +48,8 @@
 (require 'faces)
 ;; For variables we read `ispell-personal-dictionary' local dictionary, etc.
 (require 'ispell)
+;; For `string-blank-p'.
+(require 'subr-x)
 
 
 ;; ---
@@ -189,12 +191,14 @@ Notes:
 ;; Developer note, don't use this for logging the checking of individual words,
 ;; that is far too verbose, this is mainly for checking why dictionaries aren't
 ;; being properly initialized.
+
 (defmacro spell-fu--debug-message (fmt &rest args)
   "Debug message logging passing FMT and ARGS to `message'."
-  (when spell-fu-debug
+  ;; When emacs 28.2 support is dropped,
+  ;; this can simply check `spell-fu-debug', see: #36.
+  (when (bound-and-true-p spell-fu-debug)
 `(apply 'message (list (concat "spell-fu-debug: " ,fmt) ,@args
 
-
 ;; ---
 ;; Dictionary Utility Functions
 
@@ -1634,7 +1638,7 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
 ;;;###autoload
 (defun spell-fu-buffer-session-localwords-update ()
   "Refresh after changing `spell-fu-buffer-session-localwords'."
-  (when spell-fu-mode
+  (when (bound-and-true-p spell-fu-mode)
 (spell-fu--buffer-localwords-update-impl)))
 
 ;; ---



[nongnu] elpa/spell-fu 89b014194a 18/21: Cleanup: emacs native format (update)

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 89b014194aa02052b11c4a7451bfc18ee8d769a2
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: emacs native format (update)
---
 spell-fu.el | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index 63eaf3b936..4033d49206 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -873,9 +873,7 @@ when checking the entire buffer for example."
(state
 (unless spell-fu--global-timer
   (setq spell-fu--global-timer
-(run-with-idle-timer
- spell-fu-idle-delay
- :repeat #'spell-fu--time-callback-or-disable
+(run-with-idle-timer spell-fu-idle-delay :repeat 
#'spell-fu--time-callback-or-disable
(t
 (when spell-fu--global-timer
   (cancel-timer spell-fu--global-timer)
@@ -1439,8 +1437,7 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
   (word-point
(save-match-data
  (let ((case-fold-search t))
-   (when (re-search-forward (concat "^" (regexp-quote word) 
"[[:blank:]]*$")
-nil t)
+   (when (re-search-forward (concat "^" (regexp-quote word) 
"[[:blank:]]*$") nil t)
  (match-beginning 0))
 
   (cond



[nongnu] elpa/spell-fu updated (cbe5cd84c3 -> 3caf7047ea)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch elpa/spell-fu.

  from  cbe5cd84c3 Correct URL
   new  83890ae6d3 Cleanup: quiet quote warnings
   new  df9abe16e2 Cleanup: sharp-quote function
   new  8412ba02df Cleanup: use `zerop`
   new  68d33508ef Add support for buffer local word-lists
   new  ed504863f5 Fix #13: Every word marked as incorrect on MS-Windows
   new  d0e67cdb25 When using jit-lock-stealth, ensure words out of the 
view are checked
   new  57a678a3c4 Cleanup: sharp-quote function
   new  38f4a4a275 Fix #31: Failure to detect updated symlinked dictionaries
   new  95e005969d Cleanup: replace 'if' with 'cond'
   new  341575b1d0 Adding spell-fu-debug variable & spell-fu-reset command
   new  0dc0568186 Update doc-string and readme for spell-fu-faces-exclude
   new  f62b6d3770 Cleanup: doc-string length
   new  be719051a6 readme: note when reset may be needed
   new  219bc124a6 Cleanup: use private convention for mode management 
functions
   new  39549871c7 Cleanup: format
   new  f0d49dcc5a Cleanup: emacs native format
   new  bddea99f9c Fix #36: byte compilation error with Emacs 28.2
   new  89b014194a Cleanup: emacs native format (update)
   new  635c5c2eed Cleanup: sharp-quote function
   new  b89bfe035d Cleanup: correct typo in description
   new  3caf7047ea Rename functions & variables that used a global- prefix


Summary of changes:
 changelog.rst |   11 +-
 readme.rst|   44 ++-
 spell-fu.el   | 1201 ++---
 3 files changed, 760 insertions(+), 496 deletions(-)



[nongnu] elpa/spell-fu 68d33508ef 04/21: Add support for buffer local word-lists

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 68d33508efa9740cc0355e18668c92332e3389d9
Author: Campbell Barton 
Commit: Campbell Barton 

Add support for buffer local word-lists
---
 changelog.rst |   1 +
 readme.rst|  14 +
 spell-fu.el   | 181 +-
 3 files changed, 195 insertions(+), 1 deletion(-)

diff --git a/changelog.rst b/changelog.rst
index b11094967b..1d20171cea 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -4,6 +4,7 @@ Change Log
 ##
 
 - In development.
+  - Support buffer local word-lists via ``spell-fu-buffer-session-localwords``.
   - Fix faces of overlays (such as ``hl-line-mode``) no longer mask other 
faces when selecting words to check.
   - Support for multiple dictionaries at once.
   - Reduce idle overlay fragmentation.
diff --git a/readme.rst b/readme.rst
index fc1cb468fb..caa9157d5f 100644
--- a/readme.rst
+++ b/readme.rst
@@ -136,6 +136,20 @@ You may wish to set these values differently based on the 
current major-mode.
   (global-spell-fu-mode)
 
 
+Buffer Local Words
+^^
+
+You may optionally define a buffer-local word list.
+
+``spell-fu-buffer-session-localwords``
+   A list of strings to accept as correctly spelled words.
+   These may be set by file or directory locals.
+
+   Changing this while spell-fu is already active requires calling:
+   ``spell-fu-buffer-session-localwords-update``.
+   Calling outside of ``spell-fu-mode`` has no effect.
+
+
 Advanced Buffer Local Settings
 ^^
 
diff --git a/spell-fu.el b/spell-fu.el
index c5a06ff788..4bfdb0d630 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -70,6 +70,14 @@ Set to 0.0 to highlight immediately (as part of syntax 
highlighting)."
   "List of major-modes to exclude when `spell-fu' has been enabled globally."
   :type '(repeat symbol))
 
+(defvar-local spell-fu-buffer-session-localwords nil
+  "Optional buffer-local word-list of words.
+This is intended to be set by file-locals or dir-locals.
+Call `spell-fu-buffer-session-localwords-refresh' after run-time 
modifications.")
+
+;;;###autoload
+(put 'spell-fu-buffer-session-localwords 'safe-local-variable 
#'spell-fu-list-of-strings-p)
+
 (defvar-local global-spell-fu-ignore-buffer nil
   "When non-nil, the global mode will not be enabled for this buffer.
 This variable can also be a predicate function, in which case
@@ -157,6 +165,17 @@ Notes:
 ;; Cache the result of: `(mapcar (lambda (dict) (symbol-value dict)) 
spell-fu-dictionaries)'
 (defvar-local spell-fu--cache-table-list nil)
 
+;; The buffer local dictionary generated from 
`spell-fu-buffer-session-localwords'.
+(defvar-local spell-fu--buffer-localwords-cache-table nil)
+
+;; Map `spell-fu-buffer-session-localwords' identity to existing
+;; `spell-fu--buffer-localwords-cache-table' entries to avoid conversions from
+;; word lists to dictionaries by checking if the conversion has already been 
done.
+;;
+;; NOTE: The keys are the objects for the local-word list,
+;; so this relies on the lists being shared between buffers (not just matching 
contents).
+(defvar spell-fu--buffer-localwords-global-cache-table-map nil)
+
 ;; ---
 ;; Dictionary Utility Functions
 
@@ -170,7 +189,34 @@ Notes:
 (list
   (spell-fu-get-ispell-dictionary (or ispell-local-dictionary 
ispell-dictionary "default")))
 (when (and ispell-personal-dictionary (file-exists-p 
ispell-personal-dictionary))
-  (list (spell-fu-get-personal-dictionary "default" 
ispell-personal-dictionary)
+  (list (spell-fu-get-personal-dictionary "default" 
ispell-personal-dictionary)))
+(when spell-fu-buffer-session-localwords
+  (list (spell-fu-get-buffer-session-localwords-dictionary)
+
+(defun spell-fu--dictionaries-test-any (test-fn)
+  "Remove any dictionaries that match TEST-FN."
+  (let ((result nil))
+(let ((dict-list spell-fu-dictionaries))
+  (while dict-list
+(let ((dict (pop dict-list)))
+  (when (funcall test-fn dict)
+(setq result t)
+(setq dict-list nil)
+result))
+
+(defun spell-fu--dictionaries-remove-any (test-fn)
+  "Return non-nil if any dictionaries match TEST-FN."
+  (setq spell-fu-dictionaries
+(remq
+  nil
+  (mapcar
+(lambda (dict)
+  (cond
+((funcall test-fn dict)
+  dict)
+(t
+  nil)))
+spell-fu-dictionaries
 
 (defun spell-fu--cache-file (dict)
   "Return the location of the cache file with dictionary DICT."
@@ -355,6 +401,11 @@ Argument POS return faces at this point."
   "Return t when FILE-TEST is older than any files in FILE-LIST."
   (spell-fu--file-is-older-list file-test file-list))
 
+;; Auto load as this is a callback for `safe-local-variable'.
+;;;###autoload
+(defun spell-fu-list-of-strings-p (obj)
+  "Return t when OBJ is a list of strings."
+  (and (listp obj) (not (memq nil (

[nongnu] elpa/spell-fu 8412ba02df 03/21: Cleanup: use `zerop`

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit 8412ba02df32562a2f6d254e2aba5d4be1461237
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: use `zerop`
---
 spell-fu.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/spell-fu.el b/spell-fu.el
index 7dddfb7d8e..c5a06ff788 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -1306,7 +1306,7 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
 ;; So we can use line count as word count.
 (while
   (and
-(eq 0 (forward-line -1))
+(zerop (forward-line -1))
 (string-blank-p
   (buffer-substring-no-properties (line-beginning-position) 
(line-end-position
   (delete-region
@@ -1356,7 +1356,7 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
 (line-beginning-position)
 (line-end-position))
   word))
-  (setq keep-searching (eq 0 (forward-line 1)
+  (setq keep-searching (zerop (forward-line 1)
 
   (insert word "\n")
 
@@ -1372,7 +1372,7 @@ Argument DICT-FILE is the absolute path to the 
dictionary."
   (goto-char word-point)
   (delete-region
 (line-beginning-position)
-(or (and (eq 0 (forward-line 1)) (point)) (line-end-position)))
+(or (and (zerop (forward-line 1)) (point)) 
(line-end-position)))
 
   (message "\"%s\" successfully removed!" word)
   (setq changed t))



[nongnu] elpa/spell-fu d0e67cdb25 06/21: When using jit-lock-stealth, ensure words out of the view are checked

2023-01-07 Thread ELPA Syncer
branch: elpa/spell-fu
commit d0e67cdb252585a11c2b979629fc17159a90fd9b
Author: Campbell Barton 
Commit: Campbell Barton 

When using jit-lock-stealth, ensure words out of the view are checked
---
 changelog.rst | 2 ++
 spell-fu.el   | 7 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/changelog.rst b/changelog.rst
index 7cdcd7e609..0fe619a7c5 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -4,6 +4,8 @@ Change Log
 ##
 
 - In development.
+  - Stealthy font locking now checks words even when outside the view,
+so stealthy font locking ensures words are checked.
   - Fix #13, failure to properly generate word-list cache on MS-Windows.
   - Support buffer local word-lists via ``spell-fu-buffer-session-localwords``.
   - Fix faces of overlays (such as ``hl-line-mode``) no longer mask other 
faces when selecting words to check.
diff --git a/spell-fu.el b/spell-fu.el
index ac3a076cf1..b937046ae5 100644
--- a/spell-fu.el
+++ b/spell-fu.el
@@ -772,7 +772,12 @@ when checking the entire buffer for example."
 (overlay-put item-ov 'spell-fu-pending t)
 (overlay-put item-ov 'evaporate 't)
 
-(setq spell-fu--idle-overlay-last item-ov)
+(setq spell-fu--idle-overlay-last item-ov
+
+  ;; Use `inhibit-quit' as a way to check if `jit-lock-stealth' is in use.
+  (when inhibit-quit
+(spell-fu--idle-handle-pending-ranges-impl pos-beg pos-end)))
+
 
 ;; ---
 ;; Internal Timer Management



[elpa] externals/compat 507cd2f314 4/4: Update NEWS

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 507cd2f31430702262f2dff5bc1e227552a147f7
Author: Daniel Mendler 
Commit: Daniel Mendler 

Update NEWS
---
 NEWS.org | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/NEWS.org b/NEWS.org
index eacb0ac60e..c24c15b146 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -15,6 +15,8 @@
 - Compat takes great care to remove unneeded definitions at compile time. On
   recent Emacs 29 the byte compiled files are empty and not loaded, such that
   Compat does not any cost to the Emacs process.
+- compat-29: Drop broken ~string-pixel-width~, ~buffer-text-pixel-size~ and
+  ~string-limit~.
 
 * Release of "Compat" Version 29.1.0.1
 



[elpa] externals/compat 57834ac3f9 3/4: compat-29: Fixes to buffer-match-p

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 57834ac3f93aa3c6af02e4484241c59bcbc676d0
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-29: Fixes to buffer-match-p

- not clause adjusted to recent updates in emacs-29 branch
- and clause had a bug
---
 compat-29.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/compat-29.el b/compat-29.el
index b000411bac..5cc6b79251 100644
--- a/compat-29.el
+++ b/compat-29.el
@@ -214,13 +214,13 @@ CONDITION is either:
(buffer-local-value 'major-mode buffer)
(cdr condition)))
  ((eq (car-safe condition) 'not)
-  (not (funcall match (cadr condition
+  (not (funcall match (cdr condition
  ((eq (car-safe condition) 'or)
   (funcall match (cdr condition)))
  ((eq (car-safe condition) 'and)
   (catch 'fail
-(dolist (c (cdr conditions))
-  (unless (funcall match c)
+(dolist (c (cdr condition))
+  (unless (funcall match (list c))
 (throw 'fail nil)))
 t)))
 (throw 'match t)))



[elpa] externals/compat c1baf3f368 2/4: compat-29: Drop broken string-limit

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit c1baf3f36842e508025e06dd7cbb14969793c585
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-29: Drop broken string-limit
---
 compat-29.el | 44 
 compat.texi  | 22 --
 2 files changed, 66 deletions(-)

diff --git a/compat-29.el b/compat-29.el
index e47e87be93..b000411bac 100644
--- a/compat-29.el
+++ b/compat-29.el
@@ -241,50 +241,6 @@ CONDITION."
 
  Defined in subr-x.el
 
-(compat-defun string-limit (string length &optional end coding-system) ;; 

-  "Return a substring of STRING that is (up to) LENGTH characters long.
-If STRING is shorter than or equal to LENGTH characters, return the
-entire string unchanged.
-
-If STRING is longer than LENGTH characters, return a substring
-consisting of the first LENGTH characters of STRING.  If END is
-non-nil, return the last LENGTH characters instead.
-
-If CODING-SYSTEM is non-nil, STRING will be encoded before
-limiting, and LENGTH is interpreted as the number of bytes to
-limit the string to.  The result will be a unibyte string that is
-shorter than LENGTH, but will not contain \"partial\" characters,
-even if CODING-SYSTEM encodes characters with several bytes per
-character.
-
-When shortening strings for display purposes,
-`truncate-string-to-width' is almost always a better alternative
-than this function."
-  (unless (natnump length)
-(signal 'wrong-type-argument (list 'natnump length)))
-  (if coding-system
-  (let ((result nil)
-(result-length 0)
-(index (if end (1- (length string)) 0)))
-(while (let ((encoded (encode-coding-char
-   (aref string index) coding-system)))
- (and (<= (+ (length encoded) result-length) length)
-  (progn
-(push encoded result)
-(setq result-length
-  (+ result-length (length encoded)))
-(setq index (if end (1- index)
-  (1+ index
-  (if end (> index -1)
-(< index (length string)
-  ;; No body.
-  )
-(apply #'concat (if end result (nreverse result
-(cond
- ((<= (length string) length) string)
- (end (substring string (- (length string) length)))
- (t (substring string 0 length)
-
 (compat-defmacro with-buffer-unmodified-if-unchanged (&rest body) ;; 
   "Like `progn', but change buffer-modified status only if buffer text changes.
 If the buffer was unmodified before execution of BODY, and
diff --git a/compat.texi b/compat.texi
index 3d19933df5..166d1d9218 100644
--- a/compat.texi
+++ b/compat.texi
@@ -2124,28 +2124,6 @@ If there's a loop in the definitions, an error will be 
signalled.  If
 returned instead.
 @end defun
 
-@c copied from lispref/strings.texi
-@defun string-limit string length &optional end coding-system
-If @var{string} is shorter than @var{length} characters, @var{string}
-is returned as is.  Otherwise, return a substring of @var{string}
-consisting of the first @var{length} characters.  If the optional
-@var{end} parameter is given, return a string of the @var{length} last
-characters instead.
-
-If @var{coding-system} is non-@code{nil}, @var{string} will be encoded
-before limiting, and the result will be a unibyte string that's
-shorter than @code{length} bytes.  If @var{string} contains characters
-that are encoded into several bytes (for instance, when using
-@code{utf-8}), the resulting unibyte string is never truncated in the
-middle of a character representation.
-
-This function measures the string length in characters or bytes, and
-thus is generally inappropriate if you need to shorten strings for
-display purposes; use @code{truncate-string-to-width} or
-@code{window-text-pixel-size} or @code{string-glyph-split} instead
-(@pxref{Size of Displayed Text,Size of Displayed Text,,elisp,}).
-@end defun
-
 @c copied from lispref/strings.texi
 @defun string-equal-ignore-case string1 string2
 @code{string-equal-ignore-case} compares strings ignoring case



[elpa] externals/compat updated (32c0bdb18b -> 507cd2f314)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/compat.

  from  32c0bdb18b compat-29: Add test for function-alias-p
   new  7c17c96c1e compat-29: Drop broken string-pixel-width and 
window-pixel-width (Fix #8)
   new  c1baf3f368 compat-29: Drop broken string-limit
   new  57834ac3f9 compat-29: Fixes to buffer-match-p
   new  507cd2f314 Update NEWS


Summary of changes:
 NEWS.org |  2 ++
 compat-29.el | 83 +++-
 compat.texi  | 50 
 3 files changed, 5 insertions(+), 130 deletions(-)



[elpa] externals/org updated (b58fbaf834 -> 2f7052619b)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/org.

  from  b58fbaf834 Merge branch 'bugfix'
   new  5a8a1d4ff9 org-compile-file: Expand "~" in SOURCE
   new  a6523f1aa0 org-export-output-file-name: Remove redundant `cond' 
clause
   new  2f7052619b Merge branch 'bugfix'


Summary of changes:
 lisp/org-macs.el | 11 ---
 lisp/ox.el   |  1 -
 2 files changed, 8 insertions(+), 4 deletions(-)



[elpa] externals/compat 7c17c96c1e 1/4: compat-29: Drop broken string-pixel-width and window-pixel-width (Fix #8)

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 7c17c96c1e0e98033481394e05b20fc3399a373c
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-29: Drop broken string-pixel-width and window-pixel-width (Fix #8)

These functions seem to hangup from time to time on 28.2
(seagle0128/doom-modeline#601). By dropping the functions the hangup in
doom-modeline is resolved, since doom-modeline contains a runtime check for
string-pixel-width.

The compatibility function implementations do not contain any loops, this 
means
there is an underlying bug in `window-text-pixel-size' in 28.2 exposed by 
the
compatibility function. Either the compatibility function must be written 
in a
different form or we cannot provide them at all.
---
 compat-29.el | 33 -
 compat.texi  | 28 
 2 files changed, 61 deletions(-)

diff --git a/compat-29.el b/compat-29.el
index 300a20dc96..e47e87be93 100644
--- a/compat-29.el
+++ b/compat-29.el
@@ -55,28 +55,6 @@ the properties at POSITION."
  (eq (car properties) prop))
 (cadr properties
 
-(compat-defun buffer-text-pixel-size ;; 
-(&optional buffer-or-name window x-limit y-limit)
-  "Return size of whole text of BUFFER-OR-NAME in WINDOW.
-BUFFER-OR-NAME must specify a live buffer or the name of a live buffer
-and defaults to the current buffer.  WINDOW must be a live window and
-defaults to the selected one.  The return value is a cons of the maximum
-pixel-width of any text line and the pixel-height of all the text lines
-of the buffer specified by BUFFER-OR-NAME.
-
-The optional arguments X-LIMIT and Y-LIMIT have the same meaning as with
-`window-text-pixel-size'.
-
-Do not use this function if the buffer specified by BUFFER-OR-NAME is
-already displayed in WINDOW.  `window-text-pixel-size' is cheaper in
-that case because it does not have to temporarily show that buffer in
-WINDOW."
-  (setq buffer-or-name (or buffer-or-name (current-buffer)))
-  (setq window (or window (selected-window)))
-  (save-window-excursion
-(set-window-buffer window buffer-or-name)
-(window-text-pixel-size window nil nil x-limit y-limit)))
-
  Defined in fns.c
 
 (compat-defun ntake (n list) ;; 
@@ -307,17 +285,6 @@ than this function."
  (end (substring string (- (length string) length)))
  (t (substring string 0 length)
 
-(compat-defun string-pixel-width (string) ;; 
-  "Return the width of STRING in pixels."
-  (if (zerop (length string))
-  0
-;; Keeping a work buffer around is more efficient than creating a
-;; new temporary buffer.
-(with-current-buffer (get-buffer-create " *string-pixel-width*")
-  (delete-region (point-min) (point-max))
-  (insert string)
-  (car (buffer-text-pixel-size nil nil t)
-
 (compat-defmacro with-buffer-unmodified-if-unchanged (&rest body) ;; 
   "Like `progn', but change buffer-modified status only if buffer text changes.
 If the buffer was unmodified before execution of BODY, and
diff --git a/compat.texi b/compat.texi
index 7c005bb27b..3d19933df5 100644
--- a/compat.texi
+++ b/compat.texi
@@ -2146,26 +2146,6 @@ display purposes; use @code{truncate-string-to-width} or
 (@pxref{Size of Displayed Text,Size of Displayed Text,,elisp,}).
 @end defun
 
-@c copied from lispref/display.texi
-@defun buffer-text-pixel-size &optional buffer-or-name window x-limit y-limit
-This is much like @code{window-text-pixel-size}, but can be used when
-the buffer isn't shown in a window.  (@code{window-text-pixel-size} is
-faster when it is, so this function shouldn't be used in that case.)
-
-@var{buffer-or-name} must specify a live buffer or the name of a live
-buffer and defaults to the current buffer.  @var{window} must be a
-live window and defaults to the selected one; the function will
-compute the text dimensions as if @var{buffer} is displayed in
-@var{window}.  The return value is a cons of the maximum pixel-width
-of any text line and the pixel-height of all the text lines of the
-buffer specified by @var{buffer-or-name}.
-
-The optional arguments @var{x-limit} and @var{y-limit} have the same
-meaning as with @code{window-text-pixel-size}.
-
-@xref{Size of Displayed Text,,,elisp}.
-@end defun
-
 @c copied from lispref/strings.texi
 @defun string-equal-ignore-case string1 string2
 @code{string-equal-ignore-case} compares strings ignoring case
@@ -2240,14 +2220,6 @@ optional @code{buffer-list} argument.  Optional third 
argument
 @xref{Buffer List,,,elisp}.
 @end defun
 
-@c copied from lispref/display.texi
-@defun string-pixel-width string
-This is a convenience function that uses @code{window-text-pixel-size}
-to compute the width of @var{string} (in pixels).
-
-@xref{Size of Displayed Text,,,elisp}.
-@end defun
-
 @c copied from lispref/display.texi
 @defun string-glyph-split string
 When character compositions are in effect, sequence of characters can



[elpa] externals/org 2f7052619b: Merge branch 'bugfix'

2023-01-07 Thread ELPA Syncer
branch: externals/org
commit 2f7052619b33a1bcc3c6b4a5f2a7a6487125c003
Merge: b58fbaf834 a6523f1aa0
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

Merge branch 'bugfix'
---
 lisp/org-macs.el | 11 ---
 lisp/ox.el   |  1 -
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index 72929cdd26..07c668a807 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -372,18 +372,23 @@ be set to a buffer or a buffer name.  `shell-command' 
then uses
 it for output."
   (let* ((base-name (file-name-base source))
 (full-name (file-truename source))
-(out-dir (or (file-name-directory source) "./"))
+ (relative-name (file-relative-name source))
+(out-dir (if (file-name-directory source)
+  ;; Expand "~".  Shell expansion will be disabled
+  ;; in the shell command call.
+  (file-name-directory full-name)
+"./"))
 (output (expand-file-name (concat base-name "." ext) out-dir))
 (time (file-attribute-modification-time (file-attributes output)))
 (err-msg (if (stringp err-msg) (concat ".  " err-msg) "")))
 (save-window-excursion
   (pcase process
-   ((pred functionp) (funcall process (shell-quote-argument source)))
+   ((pred functionp) (funcall process (shell-quote-argument 
relative-name)))
((pred consp)
 (let ((log-buf (and log-buf (get-buffer-create log-buf)))
   (spec (append spec
 `((?b . ,(shell-quote-argument base-name))
-  (?f . ,(shell-quote-argument source))
+  (?f . ,(shell-quote-argument relative-name))
   (?F . ,(shell-quote-argument full-name))
   (?o . ,(shell-quote-argument out-dir))
   (?O . ,(shell-quote-argument output))
diff --git a/lisp/ox.el b/lisp/ox.el
index d5f9e96c3e..495d273957 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -6770,7 +6770,6 @@ Return file name as a string."
  (cond
   (pub-dir (concat (file-name-as-directory pub-dir)
(file-name-nondirectory base-name)))
-  ((file-name-absolute-p base-name) base-name)
   (t base-name
 ;; If writing to OUTPUT-FILE would overwrite original file, append
 ;; EXTENSION another time to final name.



[elpa] externals-release/org a6523f1aa0 2/2: org-export-output-file-name: Remove redundant `cond' clause

2023-01-07 Thread ELPA Syncer
branch: externals-release/org
commit a6523f1aa0eaf29772484cafb90a888d3ac649c1
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-export-output-file-name: Remove redundant `cond' clause

* lisp/ox.el: Remove `cond' clause equivalent to t.
---
 lisp/ox.el | 1 -
 1 file changed, 1 deletion(-)

diff --git a/lisp/ox.el b/lisp/ox.el
index 62fc8d583e..12767267a7 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -6757,7 +6757,6 @@ Return file name as a string."
  (cond
   (pub-dir (concat (file-name-as-directory pub-dir)
(file-name-nondirectory base-name)))
-  ((file-name-absolute-p base-name) base-name)
   (t base-name
 ;; If writing to OUTPUT-FILE would overwrite original file, append
 ;; EXTENSION another time to final name.



[elpa] externals-release/org updated (41ebc2e40c -> a6523f1aa0)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals-release/org.

  from  41ebc2e40c test-ob-octave.el: wrap get-buffer in buffer-live-p
   new  5a8a1d4ff9 org-compile-file: Expand "~" in SOURCE
   new  a6523f1aa0 org-export-output-file-name: Remove redundant `cond' 
clause


Summary of changes:
 lisp/org-macs.el | 11 ---
 lisp/ox.el   |  1 -
 2 files changed, 8 insertions(+), 4 deletions(-)



[elpa] externals-release/org 5a8a1d4ff9 1/2: org-compile-file: Expand "~" in SOURCE

2023-01-07 Thread ELPA Syncer
branch: externals-release/org
commit 5a8a1d4ff95639bdcbeaa62eabcc09a41a5b1ed6
Author: Ihor Radchenko 
Commit: Ihor Radchenko 

org-compile-file: Expand "~" in SOURCE

* lisp/org-macs.el (org-compile-file): Expand "~" in the source before
passing it as quoted shell argument.

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

diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index 72929cdd26..07c668a807 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -372,18 +372,23 @@ be set to a buffer or a buffer name.  `shell-command' 
then uses
 it for output."
   (let* ((base-name (file-name-base source))
 (full-name (file-truename source))
-(out-dir (or (file-name-directory source) "./"))
+ (relative-name (file-relative-name source))
+(out-dir (if (file-name-directory source)
+  ;; Expand "~".  Shell expansion will be disabled
+  ;; in the shell command call.
+  (file-name-directory full-name)
+"./"))
 (output (expand-file-name (concat base-name "." ext) out-dir))
 (time (file-attribute-modification-time (file-attributes output)))
 (err-msg (if (stringp err-msg) (concat ".  " err-msg) "")))
 (save-window-excursion
   (pcase process
-   ((pred functionp) (funcall process (shell-quote-argument source)))
+   ((pred functionp) (funcall process (shell-quote-argument 
relative-name)))
((pred consp)
 (let ((log-buf (and log-buf (get-buffer-create log-buf)))
   (spec (append spec
 `((?b . ,(shell-quote-argument base-name))
-  (?f . ,(shell-quote-argument source))
+  (?f . ,(shell-quote-argument relative-name))
   (?F . ,(shell-quote-argument full-name))
   (?o . ,(shell-quote-argument out-dir))
   (?O . ,(shell-quote-argument output))



[elpa] externals/compat cee20442b3 3/4: compat-28: Drop make-directory-autoloads

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit cee20442b3dddf5cf0fdeb12409d024e4453a8cb
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-28: Drop make-directory-autoloads

This command has been added in 28.1 and deprecated in 29.1. It was
untested in compat.el all along.
---
 compat-28.el | 23 ---
 compat.texi  |  6 --
 2 files changed, 29 deletions(-)

diff --git a/compat-28.el b/compat-28.el
index d4bf81142a..ce41338248 100644
--- a/compat-28.el
+++ b/compat-28.el
@@ -779,29 +779,6 @@ itself will be used instead as the function argument."
   'keymap button-map
   'action callback))
 
- Defined in autoload.el
-
-(defvar generated-autoload-file)
-
-(compat-defun make-directory-autoloads (dir output-file) ;; 
-  "Update autoload definitions for Lisp files in the directories DIRS.
-DIR can be either a single directory or a list of
-directories.  (The latter usage is discouraged.)
-
-The autoloads will be written to OUTPUT-FILE.  If any Lisp file
-binds `generated-autoload-file' as a file-local variable, write
-its autoloads into the specified file instead.
-
-The function does NOT recursively descend into subdirectories of the
-directory or directories specified."
-  (let ((generated-autoload-file output-file))
-;; We intentionally don't sharp-quote
-;; `update-directory-autoloads', because it was deprecated in
-;; Emacs 28 and we don't want to trigger the byte compiler for
-;; newer versions.
-(apply 'update-directory-autoloads
-   (if (listp dir) dir (list dir)
-
  Defined in time-data.el
 
 (compat-defun decoded-time-period (time) ;; 
diff --git a/compat.texi b/compat.texi
index 166d1d9218..5ee16cf51e 100644
--- a/compat.texi
+++ b/compat.texi
@@ -1785,12 +1785,6 @@ If non-@code{nil}, the argument @var{help-echo} will be 
used to set the
 @code{help-echo} text property.
 @end defun
 
-@c based on lisp/emacs-lisp/autoload.el
-@defun make-directory-autoloads dir output-file
-Parse and search the directory @var{dir} for autoload definitions, and
-write the processed results to the file @var{output-file}.
-@end defun
-
 @c based on src/xfaces.c
 @defun color-values-from-color-spec spec
 Convert the textual color specification @var{spec} to a color triple



[elpa] externals/compat e0daa07fdd 4/4: Update news

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit e0daa07fdd6e015c45aa102498e7c7900d95e200
Author: Daniel Mendler 
Commit: Daniel Mendler 

Update news
---
 NEWS.org | 1 +
 1 file changed, 1 insertion(+)

diff --git a/NEWS.org b/NEWS.org
index c24c15b146..d0d98eb08a 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -17,6 +17,7 @@
   Compat does not any cost to the Emacs process.
 - compat-29: Drop broken ~string-pixel-width~, ~buffer-text-pixel-size~ and
   ~string-limit~.
+- compat-28: Drop obsolete ~make-directory-autoloads~.
 
 * Release of "Compat" Version 29.1.0.1
 



[elpa] externals/compat updated (507cd2f314 -> e0daa07fdd)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/compat.

  from  507cd2f314 Update NEWS
   new  2290e0b508 CI: Test against 28.2
   new  2256db9958 compat-tests: Add test for with-environment-variables
   new  cee20442b3 compat-28: Drop make-directory-autoloads
   new  e0daa07fdd Update news


Summary of changes:
 .github/workflows/makefile.yml |  1 +
 NEWS.org   |  1 +
 compat-26.el   |  2 +-
 compat-28.el   | 25 +
 compat-tests.el| 17 ++---
 compat.texi|  6 --
 6 files changed, 18 insertions(+), 34 deletions(-)



[elpa] externals/compat 2290e0b508 1/4: CI: Test against 28.2

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 2290e0b50867371042b48b361d371e71c2dd58e2
Author: Daniel Mendler 
Commit: Daniel Mendler 

CI: Test against 28.2
---
 .github/workflows/makefile.yml | 1 +
 compat-tests.el| 6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/makefile.yml b/.github/workflows/makefile.yml
index 5deab64355..98da32f9b5 100644
--- a/.github/workflows/makefile.yml
+++ b/.github/workflows/makefile.yml
@@ -30,6 +30,7 @@ jobs:
   - '27.1'
   - '27.2'
   - '28.1'
+  - '28.2'
   - 'snapshot'
 steps:
 - uses: actions/checkout@v3
diff --git a/compat-tests.el b/compat-tests.el
index 1712d28979..0098b17e58 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -30,9 +30,9 @@
 ;; calling convention or behavior changed between Emacs versions.
 
 ;; The functions tested here are guaranteed to work on the Emacs versions
-;; tested by continuous integration.  This includes 24.4, 24.5, 25.1, 25.2,
-;; 25.3, 26.1, 26.2, 26.3, 27.1, 27.2, 28.1 and the current Emacs master
-;; branch.
+;; tested by continuous integration. This includes 24.4, 24.5, 25.1, 25.2,
+;; 25.3, 26.1, 26.2, 26.3, 27.1, 27.2, 28.1, 28.2 and the current Emacs
+;; master branch.
 
 ;;; Code:
 



[elpa] externals/compat 2256db9958 2/4: compat-tests: Add test for with-environment-variables

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 2256db9958ebfc3adf0855f07ca9efd8bbf484bd
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-tests: Add test for with-environment-variables
---
 compat-26.el|  2 +-
 compat-28.el|  2 +-
 compat-tests.el | 11 +++
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/compat-26.el b/compat-26.el
index 4578f2a583..a1fae8aa0b 100644
--- a/compat-26.el
+++ b/compat-26.el
@@ -315,7 +315,7 @@ are non-nil, then the result is non-nil."
 
  Defined in files.el
 
-(compat-defvar mounted-file-systems ;; 
+(compat-defvar mounted-file-systems ;; 
 (eval-when-compile
   (if (memq system-type '(windows-nt cygwin))
   "^//[^/]+/"
diff --git a/compat-28.el b/compat-28.el
index 0f5e4649d6..d4bf81142a 100644
--- a/compat-28.el
+++ b/compat-28.el
@@ -746,7 +746,7 @@ Other uses risk returning non-nil value that point to the 
wrong file."
 
  Defined in env.el
 
-(compat-defmacro with-environment-variables (variables &rest body) ;; 

+(compat-defmacro with-environment-variables (variables &rest body) ;; 
   "Set VARIABLES in the environent and execute BODY.
 VARIABLES is a list of variable settings of the form (VAR VALUE),
 where VAR is the name of the variable (a string) and VALUE
diff --git a/compat-tests.el b/compat-tests.el
index 0098b17e58..487eca8b57 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -59,6 +59,13 @@
 (setq list (funcall sym list "first" 1 #'string=))
 (should (eq (compat-call plist-get list "first" #'string=) 1
 
+(ert-deftest with-environment-variables ()
+  (let ((A "COMPAT_TESTS__VAR") (B "/foo/bar"))
+(should-not (getenv A))
+(with-environment-variables ((A B))
+  (should (equal (getenv A) B)))
+(should-not (getenv A
+
 (ert-deftest get-display-property ()
   (with-temp-buffer
 (insert (propertize "foo" 'face 'bold 'display '(height 2.0)))
@@ -669,6 +676,10 @@
   (should (directory-name-p "dir/subdir/"))
   (should-not (directory-name-p "dir/subdir")))
 
+(ert-deftest mounted-file-systems ()
+  (should-not (string-match-p mounted-file-systems "/etc/"))
+  (should (string-match-p mounted-file-systems "/mnt/")))
+
 (ert-deftest make-lock-file-name ()
   (should-equal (expand-file-name ".#") (make-lock-file-name ""))
   (should-equal (expand-file-name ".#a") (make-lock-file-name "a"))



[elpa] externals/compat updated (e0daa07fdd -> 512e6398af)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/compat.

  from  e0daa07fdd Update news
   new  57fe6a5ac9 Update news
   new  512e6398af compat-28: Fix and test with-existing-directory


Summary of changes:
 NEWS.org| 10 +++---
 compat-28.el| 25 -
 compat-tests.el |  8 
 3 files changed, 27 insertions(+), 16 deletions(-)



[elpa] externals/compat 512e6398af 2/2: compat-28: Fix and test with-existing-directory

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 512e6398af06c56dcf5853498f79b5480c17c8c1
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-28: Fix and test with-existing-directory
---
 NEWS.org|  1 +
 compat-28.el| 25 -
 compat-tests.el |  8 
 3 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/NEWS.org b/NEWS.org
index c56076e834..50281fbb15 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -15,6 +15,7 @@
 - Compat takes great care to remove unneeded definitions at compile time. On
   recent Emacs 29 the byte compiled files are empty and not loaded, such that
   Compat does not any cost to the Emacs process.
+- compat-28: Fix and test ~with-existing-directory~.
 - compat-29: Drop broken functions ~string-pixel-width~ and
   ~buffer-text-pixel-size~. These functions had poor performance which lead to 
a
   downstream issue in the doom-modeline package. If a more efficient solution 
is
diff --git a/compat-28.el b/compat-28.el
index ce41338248..a39f148909 100644
--- a/compat-28.el
+++ b/compat-28.el
@@ -380,22 +380,21 @@ Also see `local-variable-p'."
   (void-variable nil (throw 'fail nil)))
 t))
 
-(compat-defmacro with-existing-directory (&rest body) ;; 
+(compat-defmacro with-existing-directory (&rest body) ;; 
   "Execute BODY with `default-directory' bound to an existing directory.
 If `default-directory' is already an existing directory, it's not changed."
   (declare (indent 0) (debug t))
-  (let ((quit (make-symbol "with-existing-directory-quit")))
-`(catch ',quit
-   (dolist (dir (list default-directory
-  (expand-file-name "~/")
-  (getenv "TMPDIR")
-  "/tmp/"
-  ;; XXX: check if "/" works on non-POSIX
-  ;; system.
-  "/"))
- (when (and dir (file-exists-p dir))
-   (throw ',quit (let ((default-directory dir))
-   ,@body)))
+  `(let ((default-directory
+  (or (catch 'quit
+(dolist (dir (list default-directory
+   (expand-file-name "~/")
+   temporary-file-directory
+   (getenv "TMPDIR")
+   "/tmp/"))
+  (when (and dir (file-exists-p dir))
+(throw 'quit dir
+  "/")))
+ ,@body))
 
 (compat-defmacro dlet (binders &rest body) ;; 
   "Like `let' but using dynamic scoping."
diff --git a/compat-tests.el b/compat-tests.el
index 487eca8b57..2de21eb18c 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -662,6 +662,14 @@
   (should-equal t (always 1));; single argument
   (should-equal t (always 1 2 3 4))) ;; multiple arguments
 
+(ert-deftest with-existing-directory ()
+  (let ((dir (make-temp-name "/tmp/not-exist-")))
+(let ((default-directory dir))
+  (should-not (file-exists-p default-directory)))
+(with-existing-directory
+  (should-not (equal dir default-directory))
+  (should (file-exists-p default-directory)
+
 (ert-deftest directory-name-p ()
   (should (directory-name-p "/"))
   (should-not (directory-name-p "/file"))



[elpa] externals/compat 57fe6a5ac9 1/2: Update news

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 57fe6a5ac9e2fb18899a17cd455609d5d0b16eaa
Author: Daniel Mendler 
Commit: Daniel Mendler 

Update news
---
 NEWS.org | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/NEWS.org b/NEWS.org
index d0d98eb08a..c56076e834 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -15,9 +15,12 @@
 - Compat takes great care to remove unneeded definitions at compile time. On
   recent Emacs 29 the byte compiled files are empty and not loaded, such that
   Compat does not any cost to the Emacs process.
-- compat-29: Drop broken ~string-pixel-width~, ~buffer-text-pixel-size~ and
-  ~string-limit~.
-- compat-28: Drop obsolete ~make-directory-autoloads~.
+- compat-29: Drop broken functions ~string-pixel-width~ and
+  ~buffer-text-pixel-size~. These functions had poor performance which lead to 
a
+  downstream issue in the doom-modeline package. If a more efficient solution 
is
+  possible, the function will be added back.
+- compat-29: Drop broken function ~string-limit~.
+- compat-28: Drop obsolete function ~make-directory-autoloads~.
 
 * Release of "Compat" Version 29.1.0.1
 



[elpa] externals/emms updated (6910be1656 -> 7bf67ea70e)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/emms.

  from  6910be1656 * doc/emms.texinfo: improve quickstart
   new  40bbab86ea * emms-mpris.el: new file
   new  c68c0d9672 * doc/emms.texinfo: document D-Bus interface
   new  9fcec8a874 * emms-mpris.el: load library to silence the compiler
   new  f15771af4d * emms-mpris.el: make interface interactive
   new  b00955ad3e * emms-setup.el: Add to emms-all
   new  7bf67ea70e Merge branch 'mpris'


Summary of changes:
 doc/emms.texinfo |  25 +++
 emms-mpris.el| 528 +++
 emms-setup.el|   3 +-
 3 files changed, 555 insertions(+), 1 deletion(-)
 create mode 100644 emms-mpris.el



[elpa] externals/emms 40bbab86ea 1/6: * emms-mpris.el: new file

2023-01-07 Thread ELPA Syncer
branch: externals/emms
commit 40bbab86ea6c55e1a547426cffefa4c1a92bb860
Author: Fran Burstall 
Commit: Fran Burstall 

* emms-mpris.el: new file
---
 emms-mpris.el | 525 ++
 1 file changed, 525 insertions(+)

diff --git a/emms-mpris.el b/emms-mpris.el
new file mode 100644
index 00..448382e46d
--- /dev/null
+++ b/emms-mpris.el
@@ -0,0 +1,525 @@
+;;; emms-mpris.el --- Mpris interface for EMMS-*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2022  Fran Burstall
+
+;; Author: Fran Burstall 
+;; Keywords: multimedia
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see .
+
+;;; Commentary:
+;; This package provides a dbus interface to EMMS.
+
+;; Usage:
+;;  (require 'emms-mpris)
+;;  (emms-mpris-enable)
+
+;; Switch off with
+;;  (emms-mpris-disable)
+
+;; Caveats: this is not quite a complete implementation of the
+;; org.mpris.MediaPlayer2 and org.mpris.MediaPlayer2.Player interfaces
+;; (see
+;; https://specifications.freedesktop.org/mpris-spec/latest/index.html).
+;; What is missing:
+;;  - Volume: this should be easy but there seems to be no way to get a
+;; simple percentage to report the volume---every emms-volume
+;; controller returns a string in a different format, sigh.
+;; - Shuffle
+;; - LoopStatus
+;; The issue with the last two is how to allow them to be set both
+;; over dbus and via lisp/emms-ui.  I do not know how to do this in a
+;; simple way.
+
+;; TODO:
+;;   * Shuffle: value is emms-random-playlist and
+;; emms-toggle-random-playlist shows implementation
+;;   * LoopStatus: mpris expects three possibilities here: None, Track
+;; and Playlist.See emms-repeat-track and emms-repeat-playlist for
+;; values and emms-toggle-repeat-* for implementations
+;;   * Support more than tracks in files and directories (example:
+;; playlists and urls: I need a way to work out which emms-play-* to call).
+
+;; NEXT: think through how setting Shuffle or LoopStatus should work:
+;; How can shuffle be set and what should happen when it does?
+;; 1. Can be set over dbus and then a PropertiesChanged signal is
+;; fired.  This should provoke emms into changing state.  This is part
+;; of a general story: we have d-bus state and emms-state and the
+;; question is how to keep them in sync.
+;; Change in d-bus state (via dbus-set-property called from a client
+;; or wherever): this fires a PropertiesChanged signal to which emms
+;; should respond to change its state.  So we need a signal handler
+;; listening.
+;; Change in emms-state (from Lisp or emms UI): this should trigger a
+;; change in d-bus state via dbus-set-property.  This in turn emits
+;; the signal to which the handler must respond without creating a
+;; loop.  This last requirement is the heart of the matter.
+;; Strategies:
+;; 1. Advise the state changing functions in emms to only change the
+;; dbus state and then let the signal handler bring everything up to
+;; date using d-bus state as the source of truth.
+;; Pros:
+;; - Easy to reason about
+;; Cons:
+;; - Lots of advice to keep track of
+;; 2. Have a second signal internal to us which is fired from emms hooks.
+
+
+;;; Code:
+
+;;* What we need
+(require 'dbus)
+(require 'emms)
+(require 'emms-browser)
+(require 'emms-playing-time)
+(require 'cl-lib)
+
+;;* Dbus components
+(defconst emms-mpris-service "org.mpris.MediaPlayer2.emms"
+  "The service we expose.")
+
+(defconst emms-mpris-path "/org/mpris/MediaPlayer2"
+  "Our object path.")
+
+;;* Register and update
+(defun emms-mpris-register-method (iface method handler)
+  "Register METHOD with HANDLER on interface IFACE."
+  (dbus-register-method :session
+   emms-mpris-service
+   emms-mpris-path
+   iface
+   method
+   handler
+   t))
+
+(defun emms-mpris-register-property (iface property access value)
+  "Register PROPERTY on interface IFACE.
+
+VALUE is the initial value, ACCESS the access mode."
+  (let ((val (cond ((functionp value) (funcall value))
+  ((and (symbolp value) (boundp value)) (symbol-value value))
+  (t value
+(dbus-register-property :session
+   emms-mpris-service
+   emms-mpris-path
+   iface
+   prop

[elpa] externals/emms c68c0d9672 2/6: * doc/emms.texinfo: document D-Bus interface

2023-01-07 Thread ELPA Syncer
branch: externals/emms
commit c68c0d9672ec56f7e3046194a57500cee4d9a9a9
Author: Fran Burstall 
Commit: Fran Burstall 

* doc/emms.texinfo: document D-Bus interface
---
 doc/emms.texinfo | 25 +
 1 file changed, 25 insertions(+)

diff --git a/doc/emms.texinfo b/doc/emms.texinfo
index afe13a7644..6276f9aee1 100644
--- a/doc/emms.texinfo
+++ b/doc/emms.texinfo
@@ -84,6 +84,7 @@ Modules and Extensions
 * Bookmarks::Saving a place in a media file.
 * Managing Playlists::   Managing multiple playlists.
 * GNU FM::   Connect to music community websites.
+* D-Bus::Control Emms over D-Bus
 
 Copying and license
 * Copying:: The GNU General Public License gives you permission to
@@ -3012,6 +3013,30 @@ setup level.
 Then invoke @kbd{emms-librefm-stream} and enter the URL of the station
 you wish to listen to, for example ``librefm://globaltags/Classical''.
 
+@c ---
+@node D-Bus
+@chapter D-Bus
+
+@cindex D-Bus
+
+Emms can provide an MPRIS interface which allows it to be
+controlled over D-Bus.
+
+To enable this, first load the feature:
+
+@lisp
+(require 'emms-mpris)
+@end lisp
+
+
+and then turn it on with @kbd{emms-mpris-enable}.  You can
+turn it off with @kbd{emms-mpris-disable}.
+
+At present, Emms only provides a partial implementation of
+the @url{
+https://specifications.freedesktop.org/mpris-spec/latest/index.html,
+MPRIS specification}: changing the volume, shuffle or loop
+status is not currently supported.
 
 
 @c including the relevant licenses



[elpa] externals/emms 9fcec8a874 3/6: * emms-mpris.el: load library to silence the compiler

2023-01-07 Thread ELPA Syncer
branch: externals/emms
commit 9fcec8a874f7827da53afbda3a0e5119fc3b7126
Author: Fran Burstall 
Commit: Fran Burstall 

* emms-mpris.el: load library to silence the compiler
---
 emms-mpris.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/emms-mpris.el b/emms-mpris.el
index 448382e46d..3ebe2cfd4a 100644
--- a/emms-mpris.el
+++ b/emms-mpris.el
@@ -80,6 +80,7 @@
 
 ;;* What we need
 (require 'dbus)
+(require 'url-parse)
 (require 'emms)
 (require 'emms-browser)
 (require 'emms-playing-time)



[elpa] externals/emms f15771af4d 4/6: * emms-mpris.el: make interface interactive

2023-01-07 Thread ELPA Syncer
branch: externals/emms
commit f15771af4da8e97ba6e863d0ab71575603bb3402
Author: Yoni Rabkin 
Commit: Yoni Rabkin 

* emms-mpris.el: make interface interactive

Make sure that the interface functions are user-interactive.
---
 emms-mpris.el | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/emms-mpris.el b/emms-mpris.el
index 3ebe2cfd4a..8e5de25c57 100644
--- a/emms-mpris.el
+++ b/emms-mpris.el
@@ -496,6 +496,7 @@ Each entry of the form (info-field mpris-field dbus-type).")
 
 (defun emms-mpris-enable ()
   "Activate EMMS dbus service."
+  (interactive)
   (unless emms-mpris-enabled-p
 (emms-mpris-register-iface emms-mpris-mediaplayer-iface-spec)
 (emms-mpris-register-iface emms-mpris-player-iface-spec)
@@ -510,6 +511,7 @@ Each entry of the form (info-field mpris-field dbus-type).")
 
 (defun emms-mpris-disable ()
   "Turn off EMMS dbus service."
+  (interactive)
   (when emms-mpris-enabled-p
 (remove-hook 'emms-player-started-hook #'emms-mpris-change-status)
 (remove-hook 'emms-player-paused-hook #'emms-mpris-change-status)



[elpa] externals/emms 7bf67ea70e 6/6: Merge branch 'mpris'

2023-01-07 Thread ELPA Syncer
branch: externals/emms
commit 7bf67ea70ec5e3162dd7e4597dba70f3a238eef1
Merge: 6910be1656 b00955ad3e
Author: Yoni Rabkin 
Commit: Yoni Rabkin 

Merge branch 'mpris'

integrate the mpris branch into main
---
 doc/emms.texinfo |  25 +++
 emms-mpris.el| 528 +++
 emms-setup.el|   3 +-
 3 files changed, 555 insertions(+), 1 deletion(-)

diff --git a/doc/emms.texinfo b/doc/emms.texinfo
index 791e998b11..6d741bc727 100644
--- a/doc/emms.texinfo
+++ b/doc/emms.texinfo
@@ -84,6 +84,7 @@ Modules and Extensions
 * Bookmarks::Saving a place in a media file.
 * Managing Playlists::   Managing multiple playlists.
 * GNU FM::   Connect to music community websites.
+* D-Bus::Control Emms over D-Bus
 
 Copying and license
 * Copying:: The GNU General Public License gives you permission to
@@ -3004,6 +3005,30 @@ setup level.
 Then invoke @kbd{emms-librefm-stream} and enter the URL of the station
 you wish to listen to, for example ``librefm://globaltags/Classical''.
 
+@c ---
+@node D-Bus
+@chapter D-Bus
+
+@cindex D-Bus
+
+Emms can provide an MPRIS interface which allows it to be
+controlled over D-Bus.
+
+To enable this, first load the feature:
+
+@lisp
+(require 'emms-mpris)
+@end lisp
+
+
+and then turn it on with @kbd{emms-mpris-enable}.  You can
+turn it off with @kbd{emms-mpris-disable}.
+
+At present, Emms only provides a partial implementation of
+the @url{
+https://specifications.freedesktop.org/mpris-spec/latest/index.html,
+MPRIS specification}: changing the volume, shuffle or loop
+status is not currently supported.
 
 
 @c including the relevant licenses
diff --git a/emms-mpris.el b/emms-mpris.el
new file mode 100644
index 00..8e5de25c57
--- /dev/null
+++ b/emms-mpris.el
@@ -0,0 +1,528 @@
+;;; emms-mpris.el --- Mpris interface for EMMS-*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2022  Fran Burstall
+
+;; Author: Fran Burstall 
+;; Keywords: multimedia
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see .
+
+;;; Commentary:
+;; This package provides a dbus interface to EMMS.
+
+;; Usage:
+;;  (require 'emms-mpris)
+;;  (emms-mpris-enable)
+
+;; Switch off with
+;;  (emms-mpris-disable)
+
+;; Caveats: this is not quite a complete implementation of the
+;; org.mpris.MediaPlayer2 and org.mpris.MediaPlayer2.Player interfaces
+;; (see
+;; https://specifications.freedesktop.org/mpris-spec/latest/index.html).
+;; What is missing:
+;;  - Volume: this should be easy but there seems to be no way to get a
+;; simple percentage to report the volume---every emms-volume
+;; controller returns a string in a different format, sigh.
+;; - Shuffle
+;; - LoopStatus
+;; The issue with the last two is how to allow them to be set both
+;; over dbus and via lisp/emms-ui.  I do not know how to do this in a
+;; simple way.
+
+;; TODO:
+;;   * Shuffle: value is emms-random-playlist and
+;; emms-toggle-random-playlist shows implementation
+;;   * LoopStatus: mpris expects three possibilities here: None, Track
+;; and Playlist.See emms-repeat-track and emms-repeat-playlist for
+;; values and emms-toggle-repeat-* for implementations
+;;   * Support more than tracks in files and directories (example:
+;; playlists and urls: I need a way to work out which emms-play-* to call).
+
+;; NEXT: think through how setting Shuffle or LoopStatus should work:
+;; How can shuffle be set and what should happen when it does?
+;; 1. Can be set over dbus and then a PropertiesChanged signal is
+;; fired.  This should provoke emms into changing state.  This is part
+;; of a general story: we have d-bus state and emms-state and the
+;; question is how to keep them in sync.
+;; Change in d-bus state (via dbus-set-property called from a client
+;; or wherever): this fires a PropertiesChanged signal to which emms
+;; should respond to change its state.  So we need a signal handler
+;; listening.
+;; Change in emms-state (from Lisp or emms UI): this should trigger a
+;; change in d-bus state via dbus-set-property.  This in turn emits
+;; the signal to which the handler must respond without creating a
+;; loop.  This last requirement is the heart of the matter.
+;; Strategies:
+;; 1. Advise the state changing functions in emms to only change the
+;; dbus state and then l

[elpa] externals/emms b00955ad3e 5/6: * emms-setup.el: Add to emms-all

2023-01-07 Thread ELPA Syncer
branch: externals/emms
commit b00955ad3e361726809311d0b45f081059824770
Author: Yoni Rabkin 
Commit: Yoni Rabkin 

* emms-setup.el: Add to emms-all
---
 emms-setup.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/emms-setup.el b/emms-setup.el
index b7a9f4e267..895413bce5 100644
--- a/emms-setup.el
+++ b/emms-setup.el
@@ -119,7 +119,8 @@ the stable features which come with the Emms distribution."
 (require 'emms-volume)
 (require 'emms-playlist-limit)
 (require 'emms-librefm-scrobbler)
-(require 'emms-librefm-stream))
+(require 'emms-librefm-stream)
+(require 'emms-mpris))
   ;; setup
   (setq emms-playlist-default-major-mode #'emms-playlist-mode)
   (add-to-list 'emms-track-initialize-functions #'emms-info-initialize-track)



[nongnu] elpa/git-modes 06d6402344: Bump copyright years

2023-01-07 Thread ELPA Syncer
branch: elpa/git-modes
commit 06d64023445e40f1387f1156631f9e00c74b6317
Author: Jonas Bernoulli 
Commit: Jonas Bernoulli 

Bump copyright years
---
 git-modes.el  | 2 +-
 gitattributes-mode.el | 2 +-
 gitconfig-mode.el | 2 +-
 gitignore-mode.el | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/git-modes.el b/git-modes.el
index 9f723da48e..3cab81c79a 100644
--- a/git-modes.el
+++ b/git-modes.el
@@ -2,7 +2,7 @@
 
 ;; Copyright (c) 2012-2013 Sebastian Wiesner
 ;; Copyright (C) 2013-2015 Rüdiger Sonderfeld
-;; Copyright (C) 2012-2022 The Magit Project Contributors
+;; Copyright (C) 2012-2023 The Magit Project Contributors
 
 ;; Author: Sebastian Wiesner 
 ;; Rüdiger Sonderfeld 
diff --git a/gitattributes-mode.el b/gitattributes-mode.el
index bbdce5d95f..7d3442d95b 100644
--- a/gitattributes-mode.el
+++ b/gitattributes-mode.el
@@ -1,7 +1,7 @@
 ;;; gitattributes-mode.el --- Major mode for editing .gitattributes files  -*- 
lexical-binding:t -*-
 
 ;; Copyright (C) 2013-2015 Rüdiger Sonderfeld
-;; Copyright (C) 2013-2022 The Magit Project Contributors
+;; Copyright (C) 2013-2023 The Magit Project Contributors
 
 ;; Author: Rüdiger Sonderfeld 
 ;; Maintainer: Jonas Bernoulli 
diff --git a/gitconfig-mode.el b/gitconfig-mode.el
index 219499b1cb..42b0822c2e 100644
--- a/gitconfig-mode.el
+++ b/gitconfig-mode.el
@@ -1,7 +1,7 @@
 ;;; gitconfig-mode.el --- Major mode for editing .gitconfig files  -*- 
lexical-binding:t -*-
 
 ;; Copyright (c) 2012-2013 Sebastian Wiesner
-;; Copyright (C) 2012-2022 The Magit Project Contributors
+;; Copyright (C) 2012-2023 The Magit Project Contributors
 
 ;; Author: Sebastian Wiesner 
 ;; Maintainer: Jonas Bernoulli 
diff --git a/gitignore-mode.el b/gitignore-mode.el
index 47321cf275..3eda7ce864 100644
--- a/gitignore-mode.el
+++ b/gitignore-mode.el
@@ -1,7 +1,7 @@
 ;;; gitignore-mode.el --- Major mode for editing .gitignore files  -*- 
lexical-binding:t -*-
 
 ;; Copyright (c) 2012-2013 Sebastian Wiesner
-;; Copyright (C) 2012-2022 The Magit Project Contributors
+;; Copyright (C) 2012-2023 The Magit Project Contributors
 
 ;; Author: Sebastian Wiesner 
 ;; Maintainer: Jonas Bernoulli 



[nongnu] elpa/keycast bd7ed506af: Bump copyright years

2023-01-07 Thread ELPA Syncer
branch: elpa/keycast
commit bd7ed506af913e722aa524f2df9f7e8b4700a4c5
Author: Jonas Bernoulli 
Commit: Jonas Bernoulli 

Bump copyright years
---
 keycast.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keycast.el b/keycast.el
index 4abcd1726f..74a0da0ea4 100644
--- a/keycast.el
+++ b/keycast.el
@@ -1,6 +1,6 @@
 ;;; keycast.el --- Show current command and its binding  -*- lexical-binding:t 
-*-
 
-;; Copyright (C) 2018-2022 Jonas Bernoulli
+;; Copyright (C) 2018-2023 Jonas Bernoulli
 
 ;; Author: Jonas Bernoulli 
 ;; Homepage: https://github.com/tarsius/keycast



[nongnu] elpa/orgit b0ba871b69: Bump copyright years

2023-01-07 Thread ELPA Syncer
branch: elpa/orgit
commit b0ba871b69c02ef349c28c0f00deee70e723c1d8
Author: Jonas Bernoulli 
Commit: Jonas Bernoulli 

Bump copyright years
---
 orgit.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/orgit.el b/orgit.el
index b886a535d0..4d4ce214e1 100644
--- a/orgit.el
+++ b/orgit.el
@@ -1,6 +1,6 @@
 ;;; orgit.el --- Support for Org links to Magit buffers  -*- lexical-binding:t 
-*-
 
-;; Copyright (C) 2014-2022 The Magit Project Contributors
+;; Copyright (C) 2014-2023 The Magit Project Contributors
 
 ;; Author: Jonas Bernoulli 
 ;; Homepage: https://github.com/magit/orgit



[nongnu] elpa/with-editor 7042c022d6: Bump copyright years

2023-01-07 Thread ELPA Syncer
branch: elpa/with-editor
commit 7042c022d6f011ab05b81f3b342eb639da7d303c
Author: Jonas Bernoulli 
Commit: Jonas Bernoulli 

Bump copyright years
---
 docs/with-editor.texi | 2 +-
 lisp/with-editor.el   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/with-editor.texi b/docs/with-editor.texi
index 51e84dd659..7be9c358a6 100644
--- a/docs/with-editor.texi
+++ b/docs/with-editor.texi
@@ -8,7 +8,7 @@
 
 @copying
 @quotation
-Copyright (C) 2015-2022 Jonas Bernoulli 
+Copyright (C) 2015-2023 Jonas Bernoulli 
 
 You can redistribute this document and/or modify it under the terms
 of the GNU General Public License as published by the Free Software
diff --git a/lisp/with-editor.el b/lisp/with-editor.el
index 5e66449f53..bdc122995f 100644
--- a/lisp/with-editor.el
+++ b/lisp/with-editor.el
@@ -1,6 +1,6 @@
 ;;; with-editor.el --- Use the Emacsclient as $EDITOR  -*- lexical-binding:t 
-*-
 
-;; Copyright (C) 2014-2022 The Magit Project Contributors
+;; Copyright (C) 2014-2023 The Magit Project Contributors
 
 ;; Author: Jonas Bernoulli 
 ;; Homepage: https://github.com/magit/with-editor



[elpa] externals/compat c3c308125a: compat-tests: Fix and test image-property getter/setter

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit c3c308125a7a3d19de50bd904c1f42fb7b6e029b
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-tests: Fix and test image-property getter/setter
---
 NEWS.org|  1 +
 compat-26.el| 31 ++-
 compat-27.el| 25 +
 compat-tests.el | 50 +++---
 4 files changed, 63 insertions(+), 44 deletions(-)

diff --git a/NEWS.org b/NEWS.org
index 50281fbb15..9255ee57cb 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -15,6 +15,7 @@
 - Compat takes great care to remove unneeded definitions at compile time. On
   recent Emacs 29 the byte compiled files are empty and not loaded, such that
   Compat does not any cost to the Emacs process.
+- compat-26: Fix and test ~image-property~ setter.
 - compat-28: Fix and test ~with-existing-directory~.
 - compat-29: Drop broken functions ~string-pixel-width~ and
   ~buffer-text-pixel-size~. These functions had poor performance which lead to 
a
diff --git a/compat-26.el b/compat-26.el
index a1fae8aa0b..e645371ec0 100644
--- a/compat-26.el
+++ b/compat-26.el
@@ -469,43 +469,16 @@ inode-number and device-number."
 
  Defined in image.el
 
-(compat-defun image-property (image property) ;; 
+(compat-defun image-property (image property) ;; 
   "Return the value of PROPERTY in IMAGE.
 Properties can be set with
 
   (setf (image-property IMAGE PROPERTY) VALUE)
 
 If VALUE is nil, PROPERTY is removed from IMAGE."
-  ;; :feature image
+  :feature image
   (plist-get (cdr image) property))
 
-(unless (eval-when-compile
-  (require 'image)
-  (get 'image-property 'gv-expander))
-  (gv-define-setter image-property (image property value)
-(let ((image* (make-symbol "image"))
-  (property* (make-symbol "property"))
-  (value* (make-symbol "value")))
-  `(let ((,image* ,image)
- (,property* ,property)
- (,value* ,value))
- (if
- (null ,value*)
- (while
- (cdr ,image*)
-   (if
-   (eq
-(cadr ,image*)
-,property*)
-   (setcdr ,image*
-   (cdddr ,image*))
- (setq ,image*
-   (cddr ,image*
-   (setcdr ,image*
-   (plist-put
-(cdr ,image*)
-,property* ,value*)))
-
  Defined in rmc.el
 
 (compat-defun read-multiple-choice ;; 
diff --git a/compat-27.el b/compat-27.el
index 863c93df15..c0b0202aa8 100644
--- a/compat-27.el
+++ b/compat-27.el
@@ -333,6 +333,31 @@ the number of seconds east of Greenwich."
 
 ;; TODO define gv-setters for decoded-time-*
 
+ Defined in image.el
+
+(compat-defun image--set-property (image property value) ;; 
+  "Set PROPERTY in IMAGE to VALUE.
+Internal use only."
+  :explicit t
+  :feature image
+  (if (null value)
+  (while (cdr image)
+(if (eq (cadr image) property)
+(setcdr image (cdddr image))
+  (setq image (cddr image
+(setcdr image (plist-put (cdr image) property value)))
+  value)
+
+(if (eval-when-compile (version< emacs-version "26.1"))
+(with-eval-after-load 'image
+  (gv-define-simple-setter image-property image--set-property))
+  ;; HACK: image--set-property was broken with an off-by-one error on Emacs 26.
+  ;; The bug was fixed in a4ad7bed187493c1c230f223b52c71f5c34f7c89. Therefore 
we
+  ;; override the gv expander until Emacs 27.1.
+  (when (eval-when-compile (version< emacs-version "27.1"))
+(with-eval-after-load 'image
+  (gv-define-simple-setter image-property compat--image--set-property
+
  Defined in files.el
 
 (compat-defun file-size-human-readable (file-size &optional flavor space unit) 
;; 
diff --git a/compat-tests.el b/compat-tests.el
index 2de21eb18c..c70a0c06a2 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -40,6 +40,7 @@
 (require 'compat)
 (require 'subr-x)
 (require 'time-date)
+(require 'image)
 (require 'text-property-search nil t)
 
 (defmacro should-equal (a b)
@@ -59,11 +60,30 @@
 (setq list (funcall sym list "first" 1 #'string=))
 (should (eq (compat-call plist-get list "first" #'string=) 1
 
+(ert-deftest image-property ()
+  (let ((image (list 'image)))
+;; Add properties.
+(setf (image-property image :scale) 1)
+(should-equal image '(image :scale 1))
+(setf (image-property image :width) 8)
+(should-equal image '(image :scale 1 :width 8))
+(setf (image-property image :height) 16)
+(should-equal image '(image :scale 1 :width 8 :height 16))
+;; Delete properties.
+(setf (image-property image :type) nil)
+(should-equal image '(image :scale 1 :width 8 :height 16))
+(setf (image-property image :scale) nil)
+(should-equal image '(image :width 8 :height 16))
+(setf (image-property image :height) nil)
+(should-equal image '(image :width 8))
+  

[elpa] externals/eev 862fa5ea28: Rewrote parts of (find-saving-links-intro).

2023-01-07 Thread ELPA Syncer
branch: externals/eev
commit 862fa5ea2826f7a5d815d88b22c472420b01dfa1
Author: Eduardo Ochs 
Commit: Eduardo Ochs 

Rewrote parts of (find-saving-links-intro).
---
 ChangeLog |  12 ++
 VERSION   |   4 +-
 eev-elinks.el |   7 +-
 eev-intro.el  | 460 ++
 4 files changed, 319 insertions(+), 164 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ac617084fb..a185e99b48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2023-01-07  Eduardo Ochs  
+
+   * eev-intro.el (find-saving-links-intro): reordered the intro.
+
+   * eev-elinks.el (ee-color-choose-tk): use `write-region' instead
+   of `ee-write-string'.
+
+2023-01-06  Eduardo Ochs  
+
+   * eev-intro.el (find-saving-links-intro): added a list of the
+   videos.
+
 2023-01-04  Eduardo Ochs  
 
* eev-videolinks.el (ee-1stclassvideos-info): added an indication
diff --git a/VERSION b/VERSION
index b1f3c87c83..a914215781 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1,2 @@
-Thu Jan  5 01:13:41 GMT 2023
-Wed Jan  4 22:13:41 -03 2023
+Sat Jan  7 16:00:04 GMT 2023
+Sat Jan  7 13:00:04 -03 2023
diff --git a/eev-elinks.el b/eev-elinks.el
index 9e8c006cba..ada72eedb3 100644
--- a/eev-elinks.el
+++ b/eev-elinks.el
@@ -1,6 +1,6 @@
 ;;; eev-elinks.el --- `find-efunction-links' and other `find-e*-links'  -*- 
lexical-binding: nil; -*-
 
-;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
+;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GNU eev.
 ;;
@@ -19,7 +19,7 @@
 ;;
 ;; Author: Eduardo Ochs 
 ;; Maintainer: Eduardo Ochs 
-;; Version:20221216
+;; Version:20230107
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eev-elinks.el>
@@ -1229,7 +1229,8 @@ Don't use this in multi-user machines."
   (let ((ee-file-tcl "/tmp/ee.tcl")
(tclcode (format "puts [tk_chooseColor -initialcolor %s]; exit\n"
 (or initialcolor "gray"
-(ee-write-string tclcode ee-file-tcl)
+;; (ee-write-string tclcode ee-file-tcl)
+(write-region tclcode nil ee-file-tcl)
 (find-sh0 (format "wish %s" ee-file-tcl
 
 
diff --git a/eev-intro.el b/eev-intro.el
index 162101..ea9ce5bc71 100644
--- a/eev-intro.el
+++ b/eev-intro.el
@@ -1,6 +1,6 @@
 ;;; eev-intro.el --- sandboxed tutorials for eev, like (find-eev-quick-intro)  
-*- lexical-binding: nil; -*-
 
-;; Copyright (C) 2013-2022 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GNU eev.
 ;;
@@ -19,7 +19,7 @@
 ;;
 ;; Author: Eduardo Ochs 
 ;; Maintainer: Eduardo Ochs 
-;; Version:20221130
+;; Version:20230107
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://angg.twu.net/eev-current/eev-intro.el>
@@ -3812,28 +3812,134 @@ This buffer is _temporary_ and _editable_.
 It is meant as both a tutorial and a sandbox.
 
 
-\"Taking executable notes\" consists mainly on:
-  a. recording commands sent to shell-like programs,
-  b. saving elisp hyperlinks to everything interesting
- that we find.
-\"(Generating and) saving links\" is the harder half.
-This intro is about how to do that fluently.
-It is based on ideas that I tested in this workshop:
+Note: this intro is being rewritten!
+I wrote it originally for this workshop:
   http://angg.twu.net/2021-workshop.html
+  http://angg.twu.net/2021-eev-exercises.html
+and I also recorded six videos for workshop.
+Very few people came, and I didn't like the videos.
+In dec/2022 I subtitled the videos and then I realized that
+_with subtitles_ the videos are very good.
 
-THIS IS A WORK IN PROGRESS AND IS CURRENTLY A MESS.
-This was split from:
-  (find-eev-exercises-intro)
-Pre-requisites:
-  (find-here-links-intro)
-  (find-refining-intro)
-See also:
-  (find-kla-intro)
 
 
+1. Saving interesting links
+===
+Start by this video:
 
-1. Reading diagrams aloud
-=
+  Title: Material on `M-3 M-e'
+  Info:  (find-1stclassvideo-links \"2021workshop3\")
+  Play:  (find-2021workshop3video \"0:00\")
+ (find-2021workshop3video \"4:56\" \"The demo\")
+  LSubs: (find-1stclassvideolsubs \"2021workshop3\")
+ (find-1stclassvideolsubs \"2021workshop3\" \"The demo\" \"4:56\")
+
+it shows a demo of how I \"create elisp hyperlinks to everything
+interesting that I find\". The cheat sheet that I show in the
+video contains this:
+
+(eek \"M-j\")
+   (find-eek \"M-j\")
+
+   (find-eev-quick-intro \"2. Evaluating Lisp\")
+   (find-eev-quick-intro \"2. Evaluating Lisp\" \"M-0 M-e\")
+   (find-eev-quick-intro \"4.2. `find-ekey-links' and friend

[elpa] externals/compat updated (c3c308125a -> 95ad370956)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/compat.

  from  c3c308125a compat-tests: Fix and test image-property getter/setter
   new  2c331ee067 compat-tests: Fix and test read-multiple-choice
   new  95ad370956 compat-27: Add test for recenter


Summary of changes:
 NEWS.org|  1 +
 compat-26.el| 44 +++-
 compat-27.el|  2 +-
 compat-tests.el | 31 +++
 compat.texi | 12 +---
 5 files changed, 49 insertions(+), 41 deletions(-)



[elpa] externals/compat 95ad370956 2/2: compat-27: Add test for recenter

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 95ad3709567648cef4a7936801234e8277288a62
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-27: Add test for recenter
---
 compat-27.el| 2 +-
 compat-tests.el | 8 
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/compat-27.el b/compat-27.el
index c0b0202aa8..d2d414adb4 100644
--- a/compat-27.el
+++ b/compat-27.el
@@ -88,7 +88,7 @@ Letter-case is significant, but text properties are ignored."
 
  Defined in window.c
 
-(compat-defun recenter (&optional arg redisplay) ;; 
+(compat-defun recenter (&optional arg redisplay) ;; 
   "Handle optional argument REDISPLAY."
   :explicit t
   (recenter arg)
diff --git a/compat-tests.el b/compat-tests.el
index 9fa7c0fa20..eb646b3b2f 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -109,6 +109,14 @@
   (should-equal (getenv A) B))
 (should-not (getenv A
 
+(ert-deftest recenter ()
+  (save-window-excursion
+(set-window-buffer nil (current-buffer))
+(compat-call recenter nil nil)
+(compat-call recenter nil t)
+(compat-call recenter 1 nil)
+(compat-call recenter 1 t)))
+
 (ert-deftest get-display-property ()
   (with-temp-buffer
 (insert (propertize "foo" 'face 'bold 'display '(height 2.0)))



[elpa] externals/compat 2c331ee067 1/2: compat-tests: Fix and test read-multiple-choice

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 2c331ee0675714da7458bf4c04b57f183692b16e
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-tests: Fix and test read-multiple-choice
---
 NEWS.org|  1 +
 compat-26.el| 44 +++-
 compat-tests.el | 23 +++
 compat.texi | 12 +---
 4 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/NEWS.org b/NEWS.org
index 9255ee57cb..f1539c3fdd 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -16,6 +16,7 @@
   recent Emacs 29 the byte compiled files are empty and not loaded, such that
   Compat does not any cost to the Emacs process.
 - compat-26: Fix and test ~image-property~ setter.
+- compat-26: Fix and test ~read-multiple-choice~.
 - compat-28: Fix and test ~with-existing-directory~.
 - compat-29: Drop broken functions ~string-pixel-width~ and
   ~buffer-text-pixel-size~. These functions had poor performance which lead to 
a
diff --git a/compat-26.el b/compat-26.el
index e645371ec0..c3893ec6ca 100644
--- a/compat-26.el
+++ b/compat-26.el
@@ -481,8 +481,7 @@ If VALUE is nil, PROPERTY is removed from IMAGE."
 
  Defined in rmc.el
 
-(compat-defun read-multiple-choice ;; 
-(prompt choices &optional _help-string _show-help long-form)
+(compat-defun read-multiple-choice (prompt choices) ;; 
   "Ask user to select an entry from CHOICES, promting with PROMPT.
 This function allows to ask the user a multiple-choice question.
 
@@ -491,36 +490,23 @@ KEY is a character the user should type to select the 
entry.
 NAME is a short name for the entry to be displayed while prompting
 \(if there's no room, it might be shortened).
 
-If LONG-FORM, do a `completing-read' over the NAME elements in
-CHOICES instead.
-
 NOTE: This is a partial implementation of `read-multiple-choice', that
 among other things doesn't offer any help and ignores the
 optional DESCRIPTION field."
-  (if long-form
-  (let ((options (mapconcat #'cadr choices "/"))
-choice)
-(setq prompt (concat prompt " (" options "): "))
-(setq choice (completing-read prompt (mapcar #'cadr choices) nil t))
-(catch 'found
-  (dolist (option choices)
-(when (string= choice (cadr option))
-  (throw 'found option)))
-  (error "Invalid choice")))
-(let ((options
-   (mapconcat
-(lambda (opt)
-  (format
-   "[%s] %s"
-   (key-description (string (car opt)))
-   (cadr opt)))
-choices " "))
-  choice)
-  (setq prompt (concat prompt " (" options "): "))
-  (while (not (setq choice (assq (read-char prompt) choices)))
-(message "Invalid choice")
-(sit-for 1))
-  choice)))
+  (let ((options
+ (mapconcat
+  (lambda (opt)
+(format
+ "[%s] %s"
+ (key-description (string (car opt)))
+ (cadr opt)))
+  choices " "))
+choice)
+(setq prompt (concat prompt " (" options "): "))
+(while (not (setq choice (assq (read-event prompt) choices)))
+  (message "Invalid choice")
+  (sit-for 1))
+choice))
 
 (provide 'compat-26)
 ;;; compat-26.el ends here
diff --git a/compat-tests.el b/compat-tests.el
index c70a0c06a2..9fa7c0fa20 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -79,6 +79,29 @@
 (setf (image-property image :width) nil)
 (should-equal image '(image
 
+(ert-deftest read-multiple-choice ()
+  (let ((orig-re (symbol-function #'read-event))
+(orig-rc (symbol-function #'read-char))
+;;(orig-cr completing-read-function)
+)
+(unwind-protect
+(dolist (test '(("Choose"
+ (?a "first" "first description")
+ (?b "second" "second description")
+ (?c "third"))
+("Do it?" (?y "yes") (?n "no"
+  (dolist (choice (cdr test))
+(fset #'read-char (lambda (&rest _) (car choice)))
+(fset #'read-event (lambda (&rest _) (car choice)))
+;; TODO long form support
+;;(setq completing-read-function (lambda (&rest _) (cadr choice)))
+;;(should-equal choice (read-multiple-choice (car test) (cdr test) 
nil nil 'long))
+(should-equal choice (read-multiple-choice (car test) (cdr 
test)
+  (fset #'read-event orig-re)
+  (fset #'read-char orig-rc)
+  ;;(setq completing-read-function orig-cr)
+  )))
+
 (ert-deftest with-environment-variables ()
   (let ((A "COMPAT_TESTS__VAR") (B "/foo/bar"))
 (should-not (getenv A))
diff --git a/compat.texi b/compat.texi
index 5ee16cf51e..0fa277e900 100644
--- a/compat.texi
+++ b/compat.texi
@@ -590,7 +590,7 @@ Processes,,,elisp}), and as the program to run on the 
remote host.  If
 @xref{Magic File Names,,,elisp}.
 @end defun
 
-@defun read-multiple-choice prompt choices &optional help-string show-help 
long-form
+@d

[elpa] externals/compat updated (95ad370956 -> a27d62ea36)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/compat.

  from  95ad370956 compat-27: Add test for recenter
   new  060b6632c4 compat-29: Add pos-bol and pos-eol
   new  a27d62ea36 Declare pos-bol and pos-eol as side-effect-free


Summary of changes:
 NEWS.org|  3 ++-
 compat-29.el| 31 +++
 compat-tests.el | 37 +
 compat.texi | 12 
 4 files changed, 82 insertions(+), 1 deletion(-)



[elpa] externals/compat a27d62ea36 2/2: Declare pos-bol and pos-eol as side-effect-free

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit a27d62ea360eac9e1ea4d668348079e19c50e81e
Author: Daniel Mendler 
Commit: Daniel Mendler 

Declare pos-bol and pos-eol as side-effect-free
---
 compat-29.el | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/compat-29.el b/compat-29.el
index 0527ee6986..194e87f75a 100644
--- a/compat-29.el
+++ b/compat-29.el
@@ -133,6 +133,7 @@ character position on the logical line.  See 
`vertical-motion' for
 movement by screen lines.
 
 This function does not move point.  Also see `line-beginning-position'."
+  (declare (side-effect-free t))
   (let ((inhibit-field-text-motion t))
 (line-beginning-position n)))
 
@@ -146,6 +147,7 @@ position of the last character in logical order, i.e. the 
largest
 character position on the line.
 
 This function does not move point.  Also see `line-end-position'."
+  (declare (side-effect-free t))
   (let ((inhibit-field-text-motion t))
 (line-end-position n)))
 



[elpa] externals/compat 060b6632c4 1/2: compat-29: Add pos-bol and pos-eol

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 060b6632c4fd429a232a81e6c85704a457c60174
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-29: Add pos-bol and pos-eol
---
 NEWS.org|  3 ++-
 compat-29.el| 29 +
 compat-tests.el | 37 +
 compat.texi | 12 
 4 files changed, 80 insertions(+), 1 deletion(-)

diff --git a/NEWS.org b/NEWS.org
index f1539c3fdd..c2a4000409 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -18,12 +18,13 @@
 - compat-26: Fix and test ~image-property~ setter.
 - compat-26: Fix and test ~read-multiple-choice~.
 - compat-28: Fix and test ~with-existing-directory~.
+- compat-28: Drop obsolete function ~make-directory-autoloads~.
 - compat-29: Drop broken functions ~string-pixel-width~ and
   ~buffer-text-pixel-size~. These functions had poor performance which lead to 
a
   downstream issue in the doom-modeline package. If a more efficient solution 
is
   possible, the function will be added back.
 - compat-29: Drop broken function ~string-limit~.
-- compat-28: Drop obsolete function ~make-directory-autoloads~.
+- compat-29: Add ~pos-bol~ and ~pos-eol~.
 
 * Release of "Compat" Version 29.1.0.1
 
diff --git a/compat-29.el b/compat-29.el
index 5cc6b79251..0527ee6986 100644
--- a/compat-29.el
+++ b/compat-29.el
@@ -120,6 +120,35 @@ Unibyte strings are converted to multibyte for comparison."
   (throw 'found plist))
 (setq plist (cddr plist))
 
+ Defined in editfns.c
+
+(compat-defun pos-bol (&optional n) ;; 
+  "Return the position of the first character on the current line.
+With optional argument N, scan forward N - 1 lines first.
+If the scan reaches the end of the buffer, return that position.
+
+This function ignores text display directionality; it returns the
+position of the first character in logical order, i.e. the smallest
+character position on the logical line.  See `vertical-motion' for
+movement by screen lines.
+
+This function does not move point.  Also see `line-beginning-position'."
+  (let ((inhibit-field-text-motion t))
+(line-beginning-position n)))
+
+(compat-defun pos-eol (&optional n) ;; 
+  "Return the position of the last character on the current line.
+With argument N not nil or 1, move forward N - 1 lines first.
+If scan reaches end of buffer, return that position.
+
+This function ignores text display directionality; it returns the
+position of the last character in logical order, i.e. the largest
+character position on the line.
+
+This function does not move point.  Also see `line-end-position'."
+  (let ((inhibit-field-text-motion t))
+(line-end-position n)))
+
  Defined in keymap.c
 
 (compat-defun define-key (keymap key def &optional remove) ;; 
diff --git a/compat-tests.el b/compat-tests.el
index eb646b3b2f..de4fc86c1a 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -60,6 +60,43 @@
 (setq list (funcall sym list "first" 1 #'string=))
 (should (eq (compat-call plist-get list "first" #'string=) 1
 
+(ert-deftest pos-bol ()
+  (with-temp-buffer
+(insert (propertize "one" 'field 1)
+(propertize "two" 'field 2)
+(propertize "tri" 'field 3)
+"\n")
+(insert (propertize "one" 'field 1)
+(propertize "two" 'field 2)
+(propertize "tri" 'field 3)
+"\n")
+(goto-char 5)
+(should-equal (line-beginning-position) 4)
+(should-equal (line-end-position) 7)
+(should-equal (pos-bol) 1)
+(should-equal (pos-eol) 10)
+(should-equal (line-beginning-position 1) 4)
+(should-equal (line-end-position 1) 7)
+(should-equal (pos-bol 1) 1)
+(should-equal (pos-eol 1) 10)
+(should-equal (line-beginning-position 2) 11)
+(should-equal (line-end-position 2) 20)
+(should-equal (pos-bol 2) 11)
+(should-equal (pos-eol 2) 20)
+(goto-char 15)
+(should-equal (line-beginning-position) 14)
+(should-equal (line-end-position) 17)
+(should-equal (pos-bol) 11)
+(should-equal (pos-eol) 20)
+(should-equal (line-beginning-position 1) 14)
+(should-equal (line-end-position 1) 17)
+(should-equal (pos-bol 1) 11)
+(should-equal (pos-eol 1) 20)
+(should-equal (line-beginning-position 0) 1)
+(should-equal (line-end-position 0) 10)
+(should-equal (pos-bol 0) 1)
+(should-equal (pos-eol 0) 10)))
+
 (ert-deftest image-property ()
   (let ((image (list 'image)))
 ;; Add properties.
diff --git a/compat.texi b/compat.texi
index 0fa277e900..500fddd1b9 100644
--- a/compat.texi
+++ b/compat.texi
@@ -2021,6 +2021,18 @@ provided by Compat. Note that due to upstream changes, 
it might happen
 that there will be the need for changes, so use these functions with
 care.
 
+@c copied from lispref/positions.texi
+@defun pos-bol &optional count
+Like @code{line-beginning-position}, but ignores fields (and is more
+efficient).
+@end defun
+
+@c copied from lispref/positions.texi
+@defun pos-eol &optional count
+Like @code{line

[elpa] externals/compat c1501b497a 1/2: compat-29: Drop with-buffer-unmodified-if-unchanged

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit c1501b497a2e2215b1560579f2c552b7414a88c7
Author: Daniel Mendler 
Commit: Daniel Mendler 

compat-29: Drop with-buffer-unmodified-if-unchanged
---
 NEWS.org |  2 ++
 compat-29.el | 37 -
 compat.texi  | 17 -
 3 files changed, 2 insertions(+), 54 deletions(-)

diff --git a/NEWS.org b/NEWS.org
index c2a4000409..084a1babeb 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -24,6 +24,8 @@
   downstream issue in the doom-modeline package. If a more efficient solution 
is
   possible, the function will be added back.
 - compat-29: Drop broken function ~string-limit~.
+- compat-29: Drop broken macro ~with-buffer-unmodified-if-unchanged~, which 
relied
+  on ~buffer-hash~ which does not exist on all supported Emacs versions.
 - compat-29: Add ~pos-bol~ and ~pos-eol~.
 
 * Release of "Compat" Version 29.1.0.1
diff --git a/compat-29.el b/compat-29.el
index 194e87f75a..c3f4d52218 100644
--- a/compat-29.el
+++ b/compat-29.el
@@ -272,43 +272,6 @@ CONDITION."
 
  Defined in subr-x.el
 
-(compat-defmacro with-buffer-unmodified-if-unchanged (&rest body) ;; 
-  "Like `progn', but change buffer-modified status only if buffer text changes.
-If the buffer was unmodified before execution of BODY, and
-buffer text after execution of BODY is identical to what it was
-before, ensure that buffer is still marked unmodified afterwards.
-For example, the following won't change the buffer's modification
-status:
-
-  (with-buffer-unmodified-if-unchanged
-(insert \"a\")
-(delete-char -1))
-
-Note that only changes in the raw byte sequence of the buffer text,
-as stored in the internal representation, are monitored for the
-purpose of detecting the lack of changes in buffer text.  Any other
-changes that are normally perceived as \"buffer modifications\", such
-as changes in text properties, `buffer-file-coding-system', buffer
-multibyteness, etc. -- will not be noticed, and the buffer will still
-be marked unmodified, effectively ignoring those changes."
-  (declare (debug t) (indent 0))
-  (let ((hash (make-symbol "hash"))
-(buffer (make-symbol "buffer")))
-`(let ((,hash (and (not (buffer-modified-p))
-   (buffer-hash)))
-   (,buffer (current-buffer)))
-   (prog1
-   (progn
- ,@body)
- ;; If we didn't change anything in the buffer (and the buffer
- ;; was previously unmodified), then flip the modification status
- ;; back to "unchanged".
- (when (and ,hash (buffer-live-p ,buffer))
-   (with-current-buffer ,buffer
- (when (and (buffer-modified-p)
-(equal ,hash (buffer-hash)))
-   (restore-buffer-modified-p nil
-
 (compat-defun add-display-text-property (start end prop value ;; 
&optional object)
   "Add display property PROP with VALUE to the text from START to END.
diff --git a/compat.texi b/compat.texi
index 500fddd1b9..891382fa25 100644
--- a/compat.texi
+++ b/compat.texi
@@ -2221,23 +2221,6 @@ you can say:
 @xref{Size of Displayed Text,,,elisp}.
 @end defun
 
-@c based on lisp/subr-x.el
-@defmac with-buffer-unmodified-if-unchanged &rest body@dots{}
-Evaluate @var{body} like @code{progn}, but change buffer-modified status
-only if buffer text changes.  If the buffer was unmodified before
-execution of BODY, and buffer text after execution of BODY is identical
-to what it was before, ensure that buffer is still marked unmodified
-afterwards.
-
-Note that only changes in the raw byte sequence of the buffer text, as
-stored in the internal representation, are monitored for the purpose of
-detecting the lack of changes in buffer text.  Any other changes that
-are normally perceived as "buffer modifications", such as changes in
-text properties, @code{buffer-file-coding-system}, buffer multibyteness,
-etc. -- will not be noticed, and the buffer will still be marked
-unmodified, effectively ignoring those changes.
-@end defmac
-
 @defun file-attribute-file-identifier
 Return the fields @code{(inodenum device)} as a list from attributes
 generated by @code{file-attributes}.



[elpa] externals/compat updated (a27d62ea36 -> 887ec71fa3)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/compat.

  from  a27d62ea36 Declare pos-bol and pos-eol as side-effect-free
   new  c1501b497a compat-29: Drop with-buffer-unmodified-if-unchanged
   new  887ec71fa3 Version 29.1.1.0


Summary of changes:
 NEWS.org |  6 +-
 compat-29.el | 37 -
 compat.el|  2 +-
 compat.texi  | 17 -
 4 files changed, 6 insertions(+), 56 deletions(-)



[elpa] externals/compat 887ec71fa3 2/2: Version 29.1.1.0

2023-01-07 Thread ELPA Syncer
branch: externals/compat
commit 887ec71fa3a90bc0d333ae9c333436148e909dbd
Author: Daniel Mendler 
Commit: Daniel Mendler 

Version 29.1.1.0
---
 NEWS.org  | 4 +++-
 compat.el | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/NEWS.org b/NEWS.org
index 084a1babeb..6c5841c1ac 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -1,6 +1,6 @@
 #+title: compat.el - Changelog
 
-* Development of "Compat" Version 29.1.1.0
+* Release of "Compat" Version 29.1.1.0
 
 - The macros in ~compat-macs.el~ have been rewritten and simplified. The
   refactoring allows to further refine the criteria under which compatibility
@@ -28,6 +28,8 @@
   on ~buffer-hash~ which does not exist on all supported Emacs versions.
 - compat-29: Add ~pos-bol~ and ~pos-eol~.
 
+(Release <2023-01-07 Sat>)
+
 * Release of "Compat" Version 29.1.0.1
 
 - Add multiple new tests for existing APIs.
diff --git a/compat.el b/compat.el
index f1ee239e25..9e413de991 100644
--- a/compat.el
+++ b/compat.el
@@ -4,7 +4,7 @@
 
 ;; Author: Philip Kaludercic , Daniel Mendler 

 ;; Maintainer: Daniel Mendler , Compat Development 
<~pkal/compat-de...@lists.sr.ht>
-;; Version: 29.1.1.0-git
+;; Version: 29.1.1.0
 ;; URL: https://github.com/emacs-compat/compat
 ;; Package-Requires: ((emacs "24.4"))
 ;; Keywords: lisp



[elpa] externals/triples 7d7904e6de: Stop swallowing errors with Emacs 29's sqlite

2023-01-07 Thread ELPA Syncer
branch: externals/triples
commit 7d7904e6decebc7c9861d38a9443127bf66a1643
Author: Andrew Hyatt 
Commit: Andrew Hyatt 

Stop swallowing errors with Emacs 29's sqlite
---
 CHANGELOG.org |  2 ++
 triples.el| 23 ---
 2 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/CHANGELOG.org b/CHANGELOG.org
index c71b0515f2..14ab77edf5 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -1,5 +1,7 @@
 TITLE: Changelog for the triples module for GNU Emacs.
 
+* 0.2.2
+- Fix error behavior using Emacs builtin sqlite.  Now error is rethrown 
instead of swallowed.
 * 0.2.1
 - Add backup strategy =never=.
 * 0.2
diff --git a/triples.el b/triples.el
index d34b83eb42..f23965442b 100644
--- a/triples.el
+++ b/triples.el
@@ -6,7 +6,7 @@
 ;; Homepage: https://github.com/ahyatt/triples
 ;; Package-Requires: ((seq "2.0") (emacs "25"))
 ;; Keywords: triples, kg, data, sqlite
-;; Version: 0.2.1
+;; Version: 0.2.2
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
 ;; published by the Free Software Foundation; either version 2 of the
@@ -441,16 +441,17 @@ The transaction will abort if an error is thrown."
 
 (defun triples--with-transaction (db body-fun)
   (pcase triples-sqlite-interface
-('builtin  (condition-case nil
-   (progn
- (sqlite-transaction db)
- (funcall body-fun)
- (sqlite-commit db))
- (error (sqlite-rollback db
-('emacsql (funcall (triples--eval-when-fboundp emacsql-with-transaction
- (lambda (db body-fun)
-   (emacsql-with-transaction db (funcall body-fun
-   db body-fun
+  ('builtin  (condition-case err
+ (progn
+   (sqlite-transaction db)
+   (funcall body-fun)
+   (sqlite-commit db))
+   (error (sqlite-rollback db)
+  (signal (car err) (cdr err)
+  ('emacsql (funcall (triples--eval-when-fboundp emacsql-with-transaction
+   (lambda (db body-fun)
+ (emacsql-with-transaction db (funcall body-fun
+ db body-fun
 
 (defun triples-set-types (db subject &rest combined-props)
   "Set all data for types in COMBINED-PROPS in DB for SUBJECT.



[nongnu] elpa/evil 8a3ac25680: Fix evil-with-undo/evil-undo-pop with undo-tree

2023-01-07 Thread ELPA Syncer
branch: elpa/evil
commit 8a3ac256804a4786bd8adbf6a3f6925162e2722f
Author: Toby S. Cubitt 
Commit: Axel Forsman 

Fix evil-with-undo/evil-undo-pop with undo-tree

Addresses #1074

- evil-with-undo:
  nconc'ing onto front of buffer-undo-list here can corrupt buffer-undo-list
  when in undo-tree-mode in rare circumstances (see issue #1074). Leave
  standard undo machinery to work as usual when undo is enabled. Deal with
  disabled undo by temporarily enabling then disabling undo, and 
transferring
  any undo changes to evil-temporary-undo.

- evil-undo-pop:
  This function called `undo' directly from Elisp, which is wrong when in
  undo-tree-mode. Fix this by calling undo-tree-undo instead when in
  undo-tree-mode.

Co-authored-by: Axel Forsman 
---
 evil-common.el | 69 ++
 1 file changed, 40 insertions(+), 29 deletions(-)

diff --git a/evil-common.el b/evil-common.el
index ae03ae8b90..a9d511f257 100644
--- a/evil-common.el
+++ b/evil-common.el
@@ -3629,6 +3629,14 @@ If no description is available, return the empty string."
 
 ;;; Undo
 
+(defvar buffer-undo-tree)
+(declare-function undo-tree-current "ext:undo-tree")
+(declare-function undo-tree-node-next "ext:undo-tree")
+(declare-function undo-tree-node-branch "ext:undo-tree")
+(declare-function undo-tree-node-branch "ext:undo-tree")
+(declare-function undo-tree-undo "ext:undo-tree")
+(declare-function undo-tree-snip-node "ext:undo-tree")
+
 (defun evil-start-undo-step (&optional continue)
   "Start a undo step.
 All following buffer modifications are grouped together as a
@@ -3667,46 +3675,49 @@ make the entries undoable as a single action. See
   "Execute BODY with enabled undo.
 If undo is disabled in the current buffer, the undo information
 is stored in `evil-temporary-undo' instead of `buffer-undo-list'."
-  (declare (indent defun)
-   (debug t))
-  `(unwind-protect
-   (let (buffer-undo-list)
- (unwind-protect
- (progn ,@body)
-   (setq evil-temporary-undo buffer-undo-list)
-   ;; ensure evil-temporary-undo starts with exactly one undo
-   ;; boundary marker, i.e. nil
-   (unless (null (car-safe evil-temporary-undo))
- (push nil evil-temporary-undo
- (unless (eq buffer-undo-list t)
-   ;; undo is enabled, so update the global buffer undo list
-   (setq buffer-undo-list
- ;; prepend new undos (if there are any)
- (if (cdr evil-temporary-undo)
- (nconc evil-temporary-undo buffer-undo-list)
-   buffer-undo-list)
- evil-temporary-undo nil
+  (declare (debug t))
+  (let ((undo-list (make-symbol "undo-list")))
+`(let ((,undo-list buffer-undo-list)
+   (evil-undo-system evil-undo-system))
+   (when (eq ,undo-list t) (setq buffer-undo-list nil
+ evil-undo-system nil))
+   (unwind-protect
+   (progn ,@body)
+ ;; ensure any new undo changes we've accumulated start with
+ ;; exactly one undo boundary marker, i.e. nil
+ (when (car-safe buffer-undo-list) (push nil buffer-undo-list))
+ (if (eq ,undo-list t)
+ ;; undo is disabled, so store undo information in
+ ;; evil-temporary-undo
+ (setq evil-temporary-undo buffer-undo-list
+   buffer-undo-list t)
+   (setq evil-temporary-undo nil))
 
 (defmacro evil-with-single-undo (&rest body)
   "Execute BODY as a single undo step."
-  (declare (indent defun)
-   (debug t))
+  (declare (debug t))
   `(let (evil-undo-list-pointer)
  (evil-with-undo
+   (evil-start-undo-step)
(unwind-protect
-   (progn
- (evil-start-undo-step)
- (let ((evil-in-single-undo t))
-   ,@body))
+   (let ((evil-in-single-undo t)) ,@body)
  (evil-end-undo-step)
 
 (defun evil-undo-pop ()
-  "Undo the last buffer change.
-Removes the last undo information from `buffer-undo-list'.
+  "Undo and forget the last buffer change.
 If undo is disabled in the current buffer, use the information
 in `evil-temporary-undo' instead."
-  (let ((paste-undo (list nil)))
-(let ((undo-list (if (eq buffer-undo-list t)
+  (if (and (eq evil-undo-system 'undo-tree)
+   (not (eq buffer-undo-list t)))
+  (let (current)
+(undo-tree-undo)
+(setq current (undo-tree-current buffer-undo-tree)
+  current (nth (undo-tree-node-branch current)
+   (undo-tree-node-next current)))
+;; Remove only if leaf to not have to adjust child buffer positions
+(unless (undo-tree-node-next current) (undo-tree-snip-node current)))
+(let ((paste-undo (list nil))
+  (undo-list (if (eq buffer-undo-list t)
  evil-temporary-undo
buffer-undo

[nongnu] elpa/magit b908c79b44: Bump Compat dependency to 29.1.1.0

2023-01-07 Thread Jonas Bernoulli
branch: elpa/magit
commit b908c79b44f5c282eec44f19fc1d9967f041dd5c
Author: Jonas Bernoulli 
Commit: Jonas Bernoulli 

Bump Compat dependency to 29.1.1.0

Closes #4844.
---
 default.mk| 4 ++--
 lisp/magit-pkg.el | 2 +-
 lisp/magit.el | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/default.mk b/default.mk
index 6978a0f932..401d5a7e70 100644
--- a/default.mk
+++ b/default.mk
@@ -113,7 +113,7 @@ VERSION ?= $(shell \
   git describe --tags --abbrev=0 --always | cut -c2-)
 TIMESTAMP = 20211004
 
-COMPAT_VERSION= 29.1.0.1
+COMPAT_VERSION= 29.1.1.0
 DASH_VERSION  = 2.19.1
 GIT_COMMIT_VERSION= $(VERSION)
 LIBGIT_VERSION= 0
@@ -123,7 +123,7 @@ MAGIT_SECTION_VERSION = $(VERSION)
 TRANSIENT_VERSION = 0.3.6
 WITH_EDITOR_VERSION   = 3.0.5
 
-COMPAT_SNAPSHOT  = 29.1.0.1
+COMPAT_SNAPSHOT  = 29.1.1.0
 DASH_MELPA_SNAPSHOT  = 20210826
 GIT_COMMIT_MELPA_SNAPSHOT= $(TIMESTAMP)
 LIBGIT_MELPA_SNAPSHOT= 0
diff --git a/lisp/magit-pkg.el b/lisp/magit-pkg.el
index 2001360ee4..6d1ffafae7 100644
--- a/lisp/magit-pkg.el
+++ b/lisp/magit-pkg.el
@@ -1,7 +1,7 @@
 (define-package "magit" "3.3.0.50-git"
   "A Git porcelain inside Emacs."
   '((emacs "25.1")
-(compat"29.1.0.1")
+(compat"29.1.1.0")
 (dash  "20210826")
 (git-commit"20221127")
 (magit-section "20221127")
diff --git a/lisp/magit.el b/lisp/magit.el
index 372ecc65a7..a86783a9f9 100644
--- a/lisp/magit.el
+++ b/lisp/magit.el
@@ -20,7 +20,7 @@
 ;; Package-Version: 3.3.0.50-git
 ;; Package-Requires: (
 ;; (emacs "25.1")
-;; (compat "29.1.0.1")
+;; (compat "29.1.1.0")
 ;; (dash "2.19.1")
 ;; (git-commit "3.3.0")
 ;; (magit-section "3.3.0")



[elpa] externals/consult 98693ed79a: Bump Compat dependency to 29.1.1.0

2023-01-07 Thread ELPA Syncer
branch: externals/consult
commit 98693ed79a270ff52b541ca1e11b2dd856b4bff7
Author: Daniel Mendler 
Commit: Daniel Mendler 

Bump Compat dependency to 29.1.1.0
---
 consult.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/consult.el b/consult.el
index 0b2c6145d7..937e6aacfa 100644
--- a/consult.el
+++ b/consult.el
@@ -6,7 +6,7 @@
 ;; Maintainer: Daniel Mendler 
 ;; Created: 2020
 ;; Version: 0.31
-;; Package-Requires: ((emacs "27.1") (compat "29.1.0.1"))
+;; Package-Requires: ((emacs "27.1") (compat "29.1.1.0"))
 ;; Homepage: https://github.com/minad/consult
 
 ;; This file is part of GNU Emacs.



[nongnu] elpa/git-commit updated (a103d11a8a -> b908c79b44)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch elpa/git-commit.

  from  a103d11a8a ci: Tell actions/checkout to not persist-credentials
  adds  b908c79b44 Bump Compat dependency to 29.1.1.0

No new revisions were added by this update.

Summary of changes:
 default.mk| 4 ++--
 lisp/magit-pkg.el | 2 +-
 lisp/magit.el | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)



[nongnu] elpa/magit-section updated (a103d11a8a -> b908c79b44)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch elpa/magit-section.

  from  a103d11a8a ci: Tell actions/checkout to not persist-credentials
  adds  b908c79b44 Bump Compat dependency to 29.1.1.0

No new revisions were added by this update.

Summary of changes:
 default.mk| 4 ++--
 lisp/magit-pkg.el | 2 +-
 lisp/magit.el | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)



[nongnu] elpa/recomplete 33a4fdfbd5 3/7: Cleanup: sharp-quote function

2023-01-07 Thread ELPA Syncer
branch: elpa/recomplete
commit 33a4fdfbd59c59554c456a5e6f3a3fa29aab64ec
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: sharp-quote function
---
 recomplete.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/recomplete.el b/recomplete.el
index a367edd959..4b946b9386 100644
--- a/recomplete.el
+++ b/recomplete.el
@@ -114,7 +114,7 @@ When undo is disabled this behaves like `progn'."
   (declare (indent 1))
   `
   (let ((temp-message-list (list)))
-(recomplete--with-advice 'message
+(recomplete--with-advice #'message
   :override
   (lambda (&rest args)
 ;; Only check if non-null because this is a signal not to log at all.
@@ -206,7 +206,7 @@ Argument FN-CACHE stores the result for reuse."
   (pcase-let ((`(,result-choices ,word-beg ,word-end) (or fn-cache '(nil nil 
nil
 
 (unless result-choices
-  (recomplete--with-advice 'ispell-command-loop
+  (recomplete--with-advice #'ispell-command-loop
 :override
 (lambda (miss _guess _word start end)
   (when miss



[nongnu] elpa/recomplete 403c646e97 2/7: Cleanup: tweak doc-string to quiet checkdoc warning

2023-01-07 Thread ELPA Syncer
branch: elpa/recomplete
commit 403c646e97d92060fac8a3aabbfecf0bf6bca19f
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: tweak doc-string to quiet checkdoc warning
---
 recomplete.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/recomplete.el b/recomplete.el
index 1b20da6c4a..a367edd959 100644
--- a/recomplete.el
+++ b/recomplete.el
@@ -342,8 +342,8 @@ Argument CYCLE-OFFSET The offset for cycling words,
 
 Optional argument CYCLE-INDEX-INIT The initial index to use,
 defaulting to zero (which makes sense for corrections) you may wish to set
-the value to 1 when the current symbol is included in the list
-(so as to step onto the next item)."
+the value to 1 when the current symbol is included in the list (so as to
+step onto the next item)."
 
   ;; Default to 1 (one step forward).
   (setq cycle-offset (or cycle-offset 1))



[nongnu] elpa/recomplete 5dd7c4d008 4/7: Fix recomplete when a complete action doesn't add an undo step

2023-01-07 Thread ELPA Syncer
branch: elpa/recomplete
commit 5dd7c4d008752a1b92b088f2f06dd8f5ac6ecc0b
Author: Campbell Barton 
Commit: Campbell Barton 

Fix recomplete when a complete action doesn't add an undo step
---
 recomplete.el | 56 
 1 file changed, 32 insertions(+), 24 deletions(-)

diff --git a/recomplete.el b/recomplete.el
index 4b946b9386..1a5763808e 100644
--- a/recomplete.el
+++ b/recomplete.el
@@ -402,31 +402,39 @@ step onto the next item)."
 (undo-data (cdr buffer-undo-list))
 (undo-data-init (cdr buffer-undo-list-init)))
 
-  ;; Since setting undo-data could corrupt the buffer if there is an 
unexpected state,
-  ;; ensure we have exactly one undo step added, so calling undo 
returns to a known state.
-  ;;
-  ;; While this should never happen, prefer an error message over a 
corrupt buffer.
-  (unless (eq undo-data-init (recomplete--undo-next undo-data))
-(user-error "(re)complete: unexpected undo-state before undo, 
abort!"))
 
-  (let
-( ;; Roll back the edit, override `this-command' so we have 
predictable undo behavior.
-  ;; Also so setting it doesn't overwrite the current 
`this-command'
-  ;; which is checked above as `last-command'.
-  (this-command nil)
-  ;; We never want to undo in region (unlikely, set just to be 
safe).
-  (undo-in-region nil)
-  ;; The "Undo" message is just noise, don't log it or display it.
-  (inhibit-message t)
-  (message-log-max nil))
-
-(undo-only)
-
-;; Ensure a single undo step was rolled back, if not,
-;; early exit as we must _never_ set undo data for an unexpected 
state.
-(setq undo-data (cdr buffer-undo-list))
-(unless (eq undo-data-init (recomplete--undo-next 
(recomplete--undo-next undo-data)))
-  (user-error "(re)complete: unexpected undo-state after undo, 
abort!"
+  ;; It's possible the last action did not add an undo step.
+  ;; This can happen when `recomplete' cycles back to the initial 
state.
+  ;; While not common it can happen if the complete action compares 
the state
+  ;; of the current buffer with the contents that replaces it, where 
no change
+  ;; if found and no undo step is added. In this case, the last undo 
will be skipped.
+  (unless (eq undo-data-init undo-data)
+;; Since setting undo-data could corrupt the buffer if there is an 
unexpected state,
+;; ensure we have exactly one undo step added,
+;; so calling undo returns to a known state.
+;;
+;; While this should never happen, prefer an error message over a 
corrupt buffer.
+(unless (eq undo-data-init (recomplete--undo-next undo-data))
+  (user-error "(re)complete: unexpected undo-state before undo, 
abort!"))
+
+(let
+  ( ;; Roll back the edit, override `this-command' so we have 
predictable undo behavior.
+;; Also so setting it doesn't overwrite the current 
`this-command'
+;; which is checked above as `last-command'.
+(this-command nil)
+;; We never want to undo in region (unlikely, set just to be 
safe).
+(undo-in-region nil)
+;; The "Undo" message is just noise, don't log it or display 
it.
+(inhibit-message t)
+(message-log-max nil))
+
+  (undo-only)
+
+  ;; Ensure a single undo step was rolled back, if not,
+  ;; early exit as we must _never_ set undo data for an unexpected 
state.
+  (setq undo-data (cdr buffer-undo-list))
+  (unless (eq undo-data-init (recomplete--undo-next 
(recomplete--undo-next undo-data)))
+(user-error "(re)complete: unexpected undo-state after undo, 
abort!")
 
 ;; Roll back the buffer state, checks above assure us this won't cause 
any problems.
 (setq buffer-undo-list buffer-undo-list-init)



[nongnu] elpa/recomplete c4085d13ed 7/7: Cleanup: function sharp quoting

2023-01-07 Thread ELPA Syncer
branch: elpa/recomplete
commit c4085d13ed64d4be6cfc771b74e07e0febcf0415
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: function sharp quoting
---
 recomplete.el | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/recomplete.el b/recomplete.el
index 4bf0f243ae..0c185a7fb0 100644
--- a/recomplete.el
+++ b/recomplete.el
@@ -189,7 +189,7 @@ Argument LIST compatible list `buffer-undo-list'."
 
;; Break the chain.
(t
-(remove-hook 'post-command-hook 'recomplete--alist-clear-hook t)
+(remove-hook 'post-command-hook #'recomplete--alist-clear-hook t)
 (setq recomplete--alist nil
 
 
@@ -202,7 +202,7 @@ Argument FN-CACHE stores the result for reuse."
   (pcase-let ((`(,result-choices ,word-beg ,word-end) (or fn-cache '(nil nil 
nil
 
 (unless result-choices
-  (recomplete--with-advice #'ispell-command-loop
+  (recomplete--with-advice 'ispell-command-loop
   :override
   (lambda (miss _guess _word start end)
 (when miss
@@ -241,7 +241,7 @@ Argument FN-CACHE stores the result for reuse."
   (let* ((word-init (buffer-substring-no-properties word-beg word-end))
  (word-split
   (mapcar
-   'downcase
+   #'downcase
(split-string (string-trim (replace-regexp-in-string
"\\([[:lower:]]\\)\\([[:upper:]]\\)"
"\\1_\\2"
@@ -567,7 +567,7 @@ step onto the next item)."
 
 ;; Ensure a local hook, which removes it's self on the first 
non-successive call
 ;; to a command that doesn't execute `recomplete-with-callback' 
with `fn-symbol'.
-(add-hook 'post-command-hook 'recomplete--alist-clear-hook 0 t)))
+(add-hook 'post-command-hook #'recomplete--alist-clear-hook 0 t)))
 
 ;; Result, success.
 t)



[nongnu] elpa/recomplete 7c47e0e064 1/7: Change URL to codeberg (correct URL)

2023-01-07 Thread ELPA Syncer
branch: elpa/recomplete
commit 7c47e0e064e44d9205925e58c218caffc3abd8dc
Author: Campbell Barton 
Commit: Campbell Barton 

Change URL to codeberg (correct URL)
---
 recomplete.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/recomplete.el b/recomplete.el
index 749bbc6bba..1b20da6c4a 100644
--- a/recomplete.el
+++ b/recomplete.el
@@ -5,7 +5,7 @@
 
 ;; Author: Campbell Barton 
 
-;; URL: https://codeberg.com/ideasman42/emacs-recomplete
+;; URL: https://codeberg.org/ideasman42/emacs-recomplete
 ;; Version: 0.2
 ;; Package-Requires: ((emacs "26.1"))
 



[nongnu] elpa/recomplete 5aa74e66e6 5/7: Use replace in region function that avoids redundant work

2023-01-07 Thread ELPA Syncer
branch: elpa/recomplete
commit 5aa74e66e6d876fa19272a1b1f407cc8dbb2feb7
Author: Campbell Barton 
Commit: Campbell Barton 

Use replace in region function that avoids redundant work
---
 Makefile |   4 ++
 recomplete.el|  65 
 tests/recomplete-test.el | 127 +++
 3 files changed, 185 insertions(+), 11 deletions(-)

diff --git a/Makefile b/Makefile
new file mode 100644
index 00..c4f26c62f7
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+test:
+   @emacs -batch -l tests/recomplete-test.el -f 
ert-run-tests-batch-and-exit
diff --git a/recomplete.el b/recomplete.el
index 1a5763808e..773d49a5ba 100644
--- a/recomplete.el
+++ b/recomplete.el
@@ -67,8 +67,6 @@
 ;;   after `recomplete-with-callback', so we know not to break the chain in 
that case.
 (defvar-local recomplete--alist nil "Internal properties for repeated 
`recomplete' calls.")
 
-;; ---
-;; Generic Functions/Macros
 
 (defmacro recomplete--with-advice (fn-orig where fn-advice &rest body)
   "Execute BODY with advice added.
@@ -222,9 +220,7 @@ Argument FN-CACHE stores the result for reuse."
 
 (when result-choices
   (let ((word-at-index (nth (mod cycle-index (length result-choices)) 
result-choices)))
-(goto-char word-beg)
-(delete-region word-beg word-end)
-(insert word-at-index)))
+(recomplete-replace-in-region word-at-index word-beg word-end)))
 
 (list result-choices fn-cache)))
 
@@ -275,9 +271,7 @@ Argument FN-CACHE stores the result for reuse."
 (setq fn-cache (list result-choices word-beg word-end
 
 (let ((word-at-index (nth (mod cycle-index (length result-choices)) 
result-choices)))
-  (goto-char word-beg)
-  (delete-region word-beg word-end)
-  (insert word-at-index))
+  (recomplete-replace-in-region word-at-index word-beg word-end))
 
 (list result-choices fn-cache)))
 
@@ -321,9 +315,7 @@ Argument FN-CACHE stores the result for reuse."
   (setq fn-cache (list result-choices word-beg word-end)
 
 (let ((word-at-index (nth (mod cycle-index (length result-choices)) 
result-choices)))
-  (goto-char word-beg)
-  (delete-region word-beg word-end)
-  (insert word-at-index))
+  (recomplete-replace-in-region word-at-index word-beg word-end))
 
 (list result-choices fn-cache)))
 
@@ -331,6 +323,57 @@ Argument FN-CACHE stores the result for reuse."
 ;; ---
 ;; Public Functions
 
+;;;###autoload
+(defun recomplete-replace-in-region (str beg end)
+  "Utility to replace region from BEG to END with STR.
+Return the region replaced."
+  (let
+(
+  (len (length str))
+  (i-beg nil)
+  (i-end nil)
+  (i-end-ofs nil))
+
+;; Check for skip end.
+(let ((i 0))
+  (let ((len-test (min (- end beg) len)))
+(while (< i len-test)
+  (let ((i-next (1+ i)))
+(cond
+  ((eq (aref str (- len i-next)) (char-after (- end i-next)))
+(setq i i-next))
+  (t ;; Break.
+(setq len-test i))
+  (unless (zerop i)
+(setq i-end (- len i))
+(setq len (- len i))
+(setq end (- end i))
+(setq i-end-ofs i)))
+
+;; Check for skip start.
+(let ((i 0))
+  (let ((len-test (min (- end beg) len)))
+(while (< i len-test)
+  (cond
+((eq (aref str i) (char-after (+ beg i)))
+  (setq i (1+ i)))
+(t ;; Break.
+  (setq len-test i)
+  (unless (zerop i)
+(setq i-beg i)
+(setq beg (+ beg i
+
+(when (or i-beg i-end)
+  (setq str (substring str (or i-beg 0) (or i-end len
+
+(goto-char beg)
+(delete-region beg end)
+(insert str)
+(when i-end-ofs
+  ;; Leave the cursor where it would be if the end wasn't clipped.
+  (goto-char (+ (point) i-end-ofs)))
+(cons beg (+ beg (length str)
+
 ;; Make public since users may want to add their own callbacks.
 
 ;;;###autoload
diff --git a/tests/recomplete-test.el b/tests/recomplete-test.el
new file mode 100644
index 00..720e744a1b
--- /dev/null
+++ b/tests/recomplete-test.el
@@ -0,0 +1,127 @@
+;;; recomplete-test.el --- Highlight indent scope test -*- lexical-binding: t 
-*-
+
+;; SPDX-License-Identifier: GPL-3.0-or-later
+;; Copyright (C) 2022  Campbell Barton
+
+;; Author: Campbell Barton 
+
+;; URL: https://codeberg.org/ideasman42/emacs-recomplete
+;; Keywords: convenience
+;; Version: 0.1
+;; Package-Requires: ((emacs "26.1"))
+
+;;; Commentary:
+
+;; This is a test for `recomplete'.
+;;
+
+;;; Usage
+
+;;
+;; To test this file run:
+;;
+;; `emacs -batch -l tests/recomplete-test.el -f 
ert-run-tests-batch-and-exit'
+;;
+
+;;; Code:
+
+(require '

[nongnu] elpa/scroll-on-drag 5eecc1fab2 1/6: Correct URL

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-drag
commit 5eecc1fab206a62e7abbcf41c4ca20e0efd205c6
Author: Campbell Barton 
Commit: Campbell Barton 

Correct URL
---
 scroll-on-drag.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scroll-on-drag.el b/scroll-on-drag.el
index ecfabd875d..88338d3950 100644
--- a/scroll-on-drag.el
+++ b/scroll-on-drag.el
@@ -5,7 +5,7 @@
 
 ;; Author: Campbell Barton 
 
-;; URL: https://codeberg.com/ideasman42/emacs-scroll-on-drag
+;; URL: https://codeberg.org/ideasman42/emacs-scroll-on-drag
 ;; Version: 0.1
 ;; Package-Requires: ((emacs "26.2"))
 



[nongnu] elpa/recomplete 11d7dad04e 6/7: Cleanup: emacs native format

2023-01-07 Thread ELPA Syncer
branch: elpa/recomplete
commit 11d7dad04eaf64765ab06ac6f574eb9ffb2bbfcc
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: emacs native format
---
 recomplete.el| 465 ++-
 tests/recomplete-test.el | 125 +++--
 2 files changed, 283 insertions(+), 307 deletions(-)

diff --git a/recomplete.el b/recomplete.el
index 773d49a5ba..4bf0f243ae 100644
--- a/recomplete.el
+++ b/recomplete.el
@@ -28,7 +28,8 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'seq))
+(eval-when-compile
+  (require 'seq))
 
 ;; TODO: make this lazy load (not everyone needs to use).
 (require 'dabbrev)
@@ -37,7 +38,9 @@
 ;; ---
 ;; Custom Variables
 
-(defgroup recomplete nil "Extensible, immediate completion utility." :group 
'tools)
+(defgroup recomplete nil
+  "Extensible, immediate completion utility."
+  :group 'tools)
 
 (defcustom recomplete-single-line-display t
   "Display completion options to a single line, centered around the current 
item."
@@ -65,20 +68,21 @@
 ;;   Using this is optional, it can be left nil by callbacks.
 ;; - `is-first-post-command' Detect if the `post-command-hook' runs immediately
 ;;   after `recomplete-with-callback', so we know not to break the chain in 
that case.
-(defvar-local recomplete--alist nil "Internal properties for repeated 
`recomplete' calls.")
+(defvar-local recomplete--alist nil
+  "Internal properties for repeated `recomplete' calls.")
 
 
 (defmacro recomplete--with-advice (fn-orig where fn-advice &rest body)
   "Execute BODY with advice added.
 
 WHERE using FN-ADVICE temporarily added to FN-ORIG."
-  `
-  (let ((fn-advice-var ,fn-advice))
-(unwind-protect
-  (progn
-(advice-add ,fn-orig ,where fn-advice-var)
-,@body)
-  (advice-remove ,fn-orig fn-advice-var
+  (declare (indent 3))
+  `(let ((fn-advice-var ,fn-advice))
+ (unwind-protect
+ (progn
+   (advice-add ,fn-orig ,where fn-advice-var)
+   ,@body)
+   (advice-remove ,fn-orig fn-advice-var
 
 ;; Back-ported from emacs-29.1 (remove once older versions have beeen dropped).
 (defmacro recomplete--with-undo-amalgamate (&rest body)
@@ -88,62 +92,58 @@ This allows multiple operations to be undone in a single 
step.
 When undo is disabled this behaves like `progn'."
   (declare (indent 0) (debug t))
   (let ((handle (make-symbol "--change-group-handle--")))
-`
-(let
-  (
-(,handle (prepare-change-group))
-;; Don't truncate any undo data in the middle of this,
-;; otherwise Emacs might truncate part of the resulting
-;; undo step: we want to mimic the behavior we'd get if the
-;; undo-boundaries were never added in the first place.
-(undo-outer-limit nil)
-(undo-limit most-positive-fixnum)
-(undo-strong-limit most-positive-fixnum))
-  (unwind-protect
-(progn
-  (activate-change-group ,handle)
-  ,@body)
-(progn
-  (accept-change-group ,handle)
-  (undo-amalgamate-change-group ,handle))
+`(let ((,handle (prepare-change-group))
+   ;; Don't truncate any undo data in the middle of this,
+   ;; otherwise Emacs might truncate part of the resulting
+   ;; undo step: we want to mimic the behavior we'd get if the
+   ;; undo-boundaries were never added in the first place.
+   (undo-outer-limit nil)
+   (undo-limit most-positive-fixnum)
+   (undo-strong-limit most-positive-fixnum))
+   (unwind-protect
+   (progn
+ (activate-change-group ,handle)
+ ,@body)
+ (progn
+   (accept-change-group ,handle)
+   (undo-amalgamate-change-group ,handle))
 
 (defmacro recomplete--with-messages-as-list (message-list &rest body)
   "Run BODY adding any message call to the MESSAGE-LIST list."
   (declare (indent 1))
-  `
-  (let ((temp-message-list (list)))
-(recomplete--with-advice #'message
-  :override
-  (lambda (&rest args)
-;; Only check if non-null because this is a signal not to log at all.
-(when message-log-max
-  (push (apply #'format-message args) temp-message-list)))
-  (unwind-protect
-(progn
-  ,@body)
-;; Protected.
-(setq ,message-list (append ,message-list (reverse 
temp-message-list)))
+  `(let ((temp-message-list (list)))
+ (recomplete--with-advice #'message
+ :override
+ (lambda (&rest args)
+   ;; Only check if non-null because this is a signal not to log at 
all.
+   (when message-log-max
+ (push (apply #'format-message args) temp-message-list)))
+   (unwind-protect
+   (progn
+ ,@body)
+ ;; Protected.
+ (setq ,message-list (append ,message-list (reverse 
temp-message-list)))
 
 (defun recomplete--rotate-list-by-elt-a

[nongnu] elpa/recomplete updated (021ca9b047 -> c4085d13ed)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch elpa/recomplete.

  from  021ca9b047 Change URL to codeberg
   new  7c47e0e064 Change URL to codeberg (correct URL)
   new  403c646e97 Cleanup: tweak doc-string to quiet checkdoc warning
   new  33a4fdfbd5 Cleanup: sharp-quote function
   new  5dd7c4d008 Fix recomplete when a complete action doesn't add an 
undo step
   new  5aa74e66e6 Use replace in region function that avoids redundant work
   new  11d7dad04e Cleanup: emacs native format
   new  c4085d13ed Cleanup: function sharp quoting


Summary of changes:
 Makefile |   4 +
 recomplete.el| 550 +--
 tests/recomplete-test.el | 126 +++
 3 files changed, 419 insertions(+), 261 deletions(-)
 create mode 100644 Makefile
 create mode 100644 tests/recomplete-test.el



[nongnu] elpa/scroll-on-drag a8de098705 3/6: readme: minor updates & clarifications

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-drag
commit a8de098705f279598f30c31b5ff66a8afdeb2bc4
Author: Campbell Barton 
Commit: Campbell Barton 

readme: minor updates & clarifications
---
 readme.rst| 7 ++-
 scroll-on-drag.el | 2 +-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/readme.rst b/readme.rst
index 840b79fedb..070b5d98c4 100644
--- a/readme.rst
+++ b/readme.rst
@@ -73,12 +73,17 @@ Customization
 
 While the defaults seem to work well, these values can be customized.
 
+``scroll-on-drag-style``: ``'line-by-pixel``
+  The the method scrolling is calculated.
+
+  - ``'line-by-pixel`` Scrolling is calculated at a pixel level.
+  - ``'line`` Scrolling is calculated at line-level.
 ``scroll-on-drag-smooth``: t
Smooth (pixel) scroll *(snapped to line on completion).*
 ``scroll-on-drag-clamp``: nil
Prevent scrolling past the end of the buffer.
 ``scroll-on-drag-delay``: 0.01, typically in range [0.005 .. 0.1]
-   Time between scroll updates.
+   Time between scroll updates (in seconds).
 ``scroll-on-drag-motion-scale``: 0.25, typically in range [0.01 .. 1.0]
Scale cursor motion, to make scrolling easier to control.
 ``scroll-on-drag-motion-accelerate``: 0.3, typically in range [0.0 .. 1.0]
diff --git a/scroll-on-drag.el b/scroll-on-drag.el
index 12cf87f2be..6c00c67864 100644
--- a/scroll-on-drag.el
+++ b/scroll-on-drag.el
@@ -26,7 +26,7 @@
 (defgroup scroll-on-drag nil "Configure smooth scrolling on drag." :group 
'scrolling)
 
 (defcustom scroll-on-drag-style 'line-by-pixel
-  "The method of scrolling."
+  "The the method scrolling is calculated."
   :type '(choice (const :tag "Line" line) (const :tag "Line-By-Pixel" 
line-by-pixel)))
 
 (defcustom scroll-on-drag-delay 0.01 "Idle time between scroll updates (in 
seconds)." :type 'float)



[nongnu] elpa/scroll-on-drag 99c392995a 5/6: Cleanup: use emacs native formatting

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-drag
commit 99c392995a22870dc66e837e89ac07dfcef5b42b
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: use emacs native formatting
---
 scroll-on-drag.el | 559 ++
 1 file changed, 273 insertions(+), 286 deletions(-)

diff --git a/scroll-on-drag.el b/scroll-on-drag.el
index bf41bf9240..cdf51a5e30 100644
--- a/scroll-on-drag.el
+++ b/scroll-on-drag.el
@@ -23,23 +23,33 @@
 ;; ---
 ;; Custom Variables
 
-(defgroup scroll-on-drag nil "Configure smooth scrolling on drag." :group 
'scrolling)
+(defgroup scroll-on-drag nil
+  "Configure smooth scrolling on drag."
+  :group 'scrolling)
 
 (defcustom scroll-on-drag-style 'line-by-pixel
   "The the method scrolling is calculated."
   :type '(choice (const :tag "Line" line) (const :tag "Line-By-Pixel" 
line-by-pixel)))
 
-(defcustom scroll-on-drag-delay 0.01 "Idle time between scroll updates (in 
seconds)." :type 'float)
+(defcustom scroll-on-drag-delay 0.01
+  "Idle time between scroll updates (in seconds)."
+  :type 'float)
 
-(defcustom scroll-on-drag-motion-scale 0.25 "Scroll speed multiplier." :type 
'float)
+(defcustom scroll-on-drag-motion-scale 0.25
+  "Scroll speed multiplier."
+  :type 'float)
 
 (defcustom scroll-on-drag-motion-accelerate 0.3
   "Non-linear scroll power (0.0 for linear speed, 1.0 for very fast 
acceleration)."
   :type 'float)
 
-(defcustom scroll-on-drag-smooth t "Use smooth (pixel) scrolling." :type 
'boolean)
+(defcustom scroll-on-drag-smooth t
+  "Use smooth (pixel) scrolling."
+  :type 'boolean)
 
-(defcustom scroll-on-drag-clamp nil "Prevent scrolling past the buffer end." 
:type 'boolean)
+(defcustom scroll-on-drag-clamp nil
+  "Prevent scrolling past the buffer end."
+  :type 'boolean)
 
 (defcustom scroll-on-drag-follow-mouse t
   "Scroll the window under the mouse cursor (instead of the current active 
window)."
@@ -80,13 +90,12 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
 (unless (zerop lines-point-remainder)
   (setq lines (- lines lines-point-remainder)
 (unless (zerop lines)
-  (set-window-start
-window
-(save-excursion
-  (goto-char (window-start))
-  (setq lines-remainder (forward-line lines))
-  (point))
-t)
+  (set-window-start window
+(save-excursion
+  (goto-char (window-start))
+  (setq lines-remainder (forward-line lines))
+  (point))
+t)
   (when also-move-point
 (unless (zerop lines-remainder)
   (forward-line (- lines-remainder)
@@ -101,39 +110,36 @@ Argument CHAR-HEIGHT The result of `frame-char-height'.
 Argument DELTA-PX The number of pixels to scroll (signed).
 Argument ALSO-MOVE-POINT When non-nil, move the POINT as well."
   (cond
-((< delta-px 0)
-  (let*
-(
-  (scroll-px-prev (- char-height (window-vscroll nil t))) ;; flip.
-  (scroll-px-next (+ scroll-px-prev (- delta-px))) ;; flip.
-  (lines (/ scroll-px-next char-height))
-  (scroll-px (- scroll-px-next (* lines char-height)))
-  (lines-remainder 0))
-(unless (zerop lines)
-  ;; flip
-  (setq lines-remainder
-(- (scroll-on-drag--scroll-by-lines window (- lines) 
also-move-point)))
-  (unless (zerop lines-remainder)
-(setq scroll-px char-height)))
-(set-window-vscroll window (- char-height scroll-px) t)
-(- lines-remainder)))
-((> delta-px 0)
-  (let*
-(
-  (scroll-px-prev (window-vscroll nil t))
-  (scroll-px-next (+ scroll-px-prev delta-px))
-  (lines (/ scroll-px-next char-height))
-  (scroll-px (- scroll-px-next (* lines char-height)))
-  (lines-remainder 0))
-(unless (zerop lines)
-  (setq lines-remainder (scroll-on-drag--scroll-by-lines window lines 
also-move-point))
-  (unless (zerop lines-remainder)
-(setq scroll-px char-height)))
-(set-window-vscroll window scroll-px t)
-lines-remainder))
-;; no lines scrolled.
-(t
-  0)))
+   ((< delta-px 0)
+(let*
+((scroll-px-prev (- char-height (window-vscroll nil t))) ;; flip.
+ (scroll-px-next (+ scroll-px-prev (- delta-px))) ;; flip.
+ (lines (/ scroll-px-next char-height))
+ (scroll-px (- scroll-px-next (* lines char-height)))
+ (lines-remainder 0))
+  (unless (zerop lines)
+;; flip
+(setq lines-remainder
+  (- (scroll-on-drag--scroll-by-lines window (- lines) 
also-move-point)))
+(unless (zerop lines-remainder)
+  (setq scroll-px char-height)))
+  (set-window-vscroll window (- char-height scroll-px) t)
+  (- lines-remainder)))
+   ((> delta-px 0)
+(let* ((sc

[nongnu] elpa/scroll-on-drag 130c8aff62 4/6: Cleanup: improve logic for evil-mode workaround

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-drag
commit 130c8aff62754f3bab71b500b3ff90dd20d872e2
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: improve logic for evil-mode workaround

Use a separate code path for evil visual line mode,
avoid this workaround moving the cursor when no scrolling may take
place.
---
 scroll-on-drag.el | 74 +++
 1 file changed, 47 insertions(+), 27 deletions(-)

diff --git a/scroll-on-drag.el b/scroll-on-drag.el
index 6c00c67864..bf41bf9240 100644
--- a/scroll-on-drag.el
+++ b/scroll-on-drag.el
@@ -143,8 +143,9 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
 (run-hooks 'scroll-on-drag-redisplay-hook)
 (redisplay)))
 
-(defun scroll-on-drag--evil-visual-mode-workaround (state)
-  "Workaround for evil-visual line mode, STATE must be \\'pre or \\'post."
+(defun scroll-on-drag--evil-visual-line-data ()
+  "Return data associated with visual line mode or nil when none is found."
+  ;; The checks are written so as not to require evil mode as a dependency.
   (when
 (and
   (fboundp 'evil-visual-state-p)
@@ -154,23 +155,24 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
   (boundp 'evil-visual-point))
 (let ((mark (symbol-value 'evil-visual-point)))
   (when (markerp mark)
-(cond
-  ;; Without this, `point' will be at the beginning of the line
-  ;; (from the pre command hook).
-  ((eq state 'pre)
-(goto-char (marker-position mark)))
-  ;; Without this, the `point' wont move.
-  ;; See: https://github.com/emacs-evil/evil/issues/1708
-  ((eq state 'post)
-(set-marker mark (point)))
-  (t
-(error "Invalid input, internal error")))
+mark
+
+(defmacro scroll-on-drag--with-evil-visual-mode-hack (visual-line-data &rest 
body)
+  "Execute BODY without evil-visual-mode line constraints.
+Run when MARK is non-nil.
+VISUAL-LINE-DATA is the result of `scroll-on-drag--evil-visual-line-data'."
+  `
+  (unwind-protect
+(progn
+  (goto-char (marker-position ,visual-line-data))
+  ,@body)
+(set-marker ,visual-line-data (point
 
 
 ;; ---
 ;; Public Functions
 
-(defun scroll-on-drag-impl ()
+(defun scroll-on-drag--impl ()
   "Interactively scroll (typically on click event).
 Returns true when scrolling took place, otherwise nil."
   (let*
@@ -451,14 +453,38 @@ Returns true when scrolling took place, otherwise nil."
 (when has-scrolled-real
   (let ((inhibit-redisplay nil))
 (run-hooks 'scroll-on-drag-post-hook)
-(run-window-scroll-functions this-window))
+(run-window-scroll-functions this-window)))
 
-  (scroll-on-drag--evil-visual-mode-workaround 'post))
-
-;; Result so we know if any scrolling occurred,
-;; allowing a fallback action on 'click'.
 has-scrolled-real))
 
+(defun scroll-on-drag--impl-with-evil-mode-workaround ()
+  "Workaround for evil mode visual line selection.
+This requires a separate code path to run pre/post logic."
+  (let ((visual-line-data (scroll-on-drag--evil-visual-line-data)))
+(cond
+  (visual-line-data
+(let
+  (
+(result nil)
+(result-point nil))
+  (save-excursion
+(scroll-on-drag--with-evil-visual-mode-hack visual-line-data
+  (when (setq result (scroll-on-drag--impl))
+(setq result-point (point)
+  (when result
+(goto-char result-point))
+  result))
+  (t
+(scroll-on-drag--impl)
+
+(defun scroll-on-drag--impl-with-window (scroll-win)
+  "Scroll on drag function that takes an optional SCROLL-WIN."
+  (cond
+(scroll-win
+  (with-selected-window scroll-win 
(scroll-on-drag--impl-with-evil-mode-workaround)))
+(t
+  (scroll-on-drag--impl-with-evil-mode-workaround
+
 (defun scroll-on-drag (&optional event)
   "Main scroll on drag function.
 
@@ -469,14 +495,8 @@ when `scroll-on-drag-follow-mouse' is non-nil."
 (when scroll-on-drag-follow-mouse
   (setq scroll-win (posn-window (or (event-start event) 
last-input-event
 
-;; Typically moving the point is _not_ ok, however we know the post hook 
will handle this.
-;; in the case of evil visual line mode.
-(scroll-on-drag--evil-visual-mode-workaround 'pre)
-(cond
-  (scroll-win
-(with-selected-window scroll-win (scroll-on-drag-impl)))
-  (t
-(scroll-on-drag-impl)
+(scroll-on-drag--impl-with-window scroll-win)))
+
 
 ;;;###autoload
 (defmacro scroll-on-drag-with-fallback (&rest body)



[nongnu] elpa/scroll-on-jump 2b67ca0c6c 4/5: Set type of scroll-on-jump-duration to float.

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-jump
commit 2b67ca0c6ce12ef4710d8e3f6a476f9cb073ec64
Author: Felix Dick 
Commit: Campbell Barton 

Set type of scroll-on-jump-duration to float.
---
 scroll-on-jump.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scroll-on-jump.el b/scroll-on-jump.el
index 8d8508ff47..e3a0f59ac7 100644
--- a/scroll-on-jump.el
+++ b/scroll-on-jump.el
@@ -34,7 +34,7 @@
 
 (defcustom scroll-on-jump-duration 0.4
   "Duration (in seconds) for scrolling to the next position (zero disables)."
-  :type 'integer)
+  :type 'float)
 
 (defcustom scroll-on-jump-smooth t
   "Use smooth (pixel) scrolling, otherwise scroll by lines."



[nongnu] elpa/scroll-on-drag b9541a601b 6/6: Cleanup: function quotes

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-drag
commit b9541a601bddbc77792465fe57faba0f65341d8e
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: function quotes
---
 scroll-on-drag.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/scroll-on-drag.el b/scroll-on-drag.el
index cdf51a5e30..342e3e545c 100644
--- a/scroll-on-drag.el
+++ b/scroll-on-drag.el
@@ -153,9 +153,9 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
   "Return data associated with visual line mode or nil when none is found."
   ;; The checks are written so as not to require evil mode as a dependency.
   (when (and (fboundp 'evil-visual-state-p)
- (funcall 'evil-visual-state-p)
+ (funcall #'evil-visual-state-p)
  (fboundp 'evil-visual-type)
- (eq (funcall 'evil-visual-type) 'line)
+ (eq (funcall #'evil-visual-type) 'line)
  (boundp 'evil-visual-point))
 (let ((mark (symbol-value 'evil-visual-point)))
   (when (markerp mark)
@@ -273,7 +273,7 @@ Returns true when scrolling took place, otherwise nil."
 (setq scroll-timer
   (run-with-timer
scroll-on-drag-delay nil
-   #'(lambda () (funcall timer-update-fn timer-update-fn))
+   (lambda () (funcall timer-update-fn timer-update-fn))
 
  ;; Stops calling 'timer-update-fn'.
  (timer-stop-fn



[nongnu] elpa/scroll-on-drag updated (01c14f4c02 -> b9541a601b)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch elpa/scroll-on-drag.

  from  01c14f4c02 Cleanup: quiet checkdoc warning
   new  5eecc1fab2 Correct URL
   new  263512f18e Workaround bug in evil visual line mode
   new  a8de098705 readme: minor updates & clarifications
   new  130c8aff62 Cleanup: improve logic for evil-mode workaround
   new  99c392995a Cleanup: use emacs native formatting
   new  b9541a601b Cleanup: function quotes


Summary of changes:
 readme.rst|   7 +-
 scroll-on-drag.el | 567 +-
 2 files changed, 307 insertions(+), 267 deletions(-)



[nongnu] elpa/scroll-on-jump 44a7654089 5/5: Cleanup: sharp quite function calls

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-jump
commit 44a7654089d71a016469fe496d8ebc48bc305f41
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: sharp quite function calls
---
 scroll-on-jump.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scroll-on-jump.el b/scroll-on-jump.el
index e3a0f59ac7..e97b0b49c4 100644
--- a/scroll-on-jump.el
+++ b/scroll-on-jump.el
@@ -139,9 +139,9 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
   ;; the mark needs to be set to the `point'.
   ;; https://github.com/emacs-evil/evil/issues/1708
   (when (and (fboundp 'evil-visual-state-p)
- (funcall 'evil-visual-state-p)
+ (funcall #'evil-visual-state-p)
  (fboundp 'evil-visual-type)
- (eq (funcall 'evil-visual-type) 'line)
+ (eq (funcall #'evil-visual-type) 'line)
  (boundp 'evil-visual-point))
 (let ((mark (symbol-value 'evil-visual-point)))
   (when (markerp mark)



[nongnu] elpa/scroll-on-jump updated (8fde237ae6 -> 44a7654089)

2023-01-07 Thread ELPA Syncer
elpasync pushed a change to branch elpa/scroll-on-jump.

  from  8fde237ae6 Change URL to codeberg
   new  93dbd780cc Workaround bug in evil visual line mode
   new  30b686298a Cleanup: remove double `;;` in comment
   new  934af6b9c5 Cleanup: emacs native format
   new  2b67ca0c6c Set type of scroll-on-jump-duration to float.
   new  44a7654089 Cleanup: sharp quite function calls


Summary of changes:
 scroll-on-jump.el | 690 +++---
 1 file changed, 342 insertions(+), 348 deletions(-)



[nongnu] elpa/scroll-on-jump 30b686298a 2/5: Cleanup: remove double `; ; ` in comment

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-jump
commit 30b686298abaf31db59b18ce895f3adf0fc86f40
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: remove double `;;` in comment
---
 scroll-on-jump.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scroll-on-jump.el b/scroll-on-jump.el
index 7c59dbb292..596faf84dc 100644
--- a/scroll-on-jump.el
+++ b/scroll-on-jump.el
@@ -230,7 +230,7 @@ Moving the point when ALSO-MOVE-POINT is set."
 (redisplay t)))
 (setq is-early-exit nil))
 
-  ;; ;; Re-enable when editing logic.
+  ;; Re-enable when editing logic.
   (when (and (null is-early-exit) (not (zerop lines-scroll)))
 (error "Internal error, 'lines-scroll' should be zero"))
 



[nongnu] elpa/scroll-on-drag 263512f18e 2/6: Workaround bug in evil visual line mode

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-drag
commit 263512f18e7260d803c7bca564169404c375d2e4
Author: Campbell Barton 
Commit: Campbell Barton 

Workaround bug in evil visual line mode

Evil visual line mode would scroll back to the original location
after scrolling completed.

The current column was always zero on initialization.
---
 scroll-on-drag.el | 30 +-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/scroll-on-drag.el b/scroll-on-drag.el
index 88338d3950..12cf87f2be 100644
--- a/scroll-on-drag.el
+++ b/scroll-on-drag.el
@@ -143,6 +143,29 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
 (run-hooks 'scroll-on-drag-redisplay-hook)
 (redisplay)))
 
+(defun scroll-on-drag--evil-visual-mode-workaround (state)
+  "Workaround for evil-visual line mode, STATE must be \\'pre or \\'post."
+  (when
+(and
+  (fboundp 'evil-visual-state-p)
+  (funcall 'evil-visual-state-p)
+  (fboundp 'evil-visual-type)
+  (eq (funcall 'evil-visual-type) 'line)
+  (boundp 'evil-visual-point))
+(let ((mark (symbol-value 'evil-visual-point)))
+  (when (markerp mark)
+(cond
+  ;; Without this, `point' will be at the beginning of the line
+  ;; (from the pre command hook).
+  ((eq state 'pre)
+(goto-char (marker-position mark)))
+  ;; Without this, the `point' wont move.
+  ;; See: https://github.com/emacs-evil/evil/issues/1708
+  ((eq state 'post)
+(set-marker mark (point)))
+  (t
+(error "Invalid input, internal error")))
+
 
 ;; ---
 ;; Public Functions
@@ -428,7 +451,9 @@ Returns true when scrolling took place, otherwise nil."
 (when has-scrolled-real
   (let ((inhibit-redisplay nil))
 (run-hooks 'scroll-on-drag-post-hook)
-(run-window-scroll-functions this-window)))
+(run-window-scroll-functions this-window))
+
+  (scroll-on-drag--evil-visual-mode-workaround 'post))
 
 ;; Result so we know if any scrolling occurred,
 ;; allowing a fallback action on 'click'.
@@ -444,6 +469,9 @@ when `scroll-on-drag-follow-mouse' is non-nil."
 (when scroll-on-drag-follow-mouse
   (setq scroll-win (posn-window (or (event-start event) 
last-input-event
 
+;; Typically moving the point is _not_ ok, however we know the post hook 
will handle this.
+;; in the case of evil visual line mode.
+(scroll-on-drag--evil-visual-mode-workaround 'pre)
 (cond
   (scroll-win
 (with-selected-window scroll-win (scroll-on-drag-impl)))



[nongnu] elpa/scroll-on-jump 93dbd780cc 1/5: Workaround bug in evil visual line mode

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-jump
commit 93dbd780cc84bf87e735744f84be235b4d56df9e
Author: Campbell Barton 
Commit: Campbell Barton 

Workaround bug in evil visual line mode

Evil visual line mode would scroll back to the original location
after scrolling completed.
---
 scroll-on-jump.el | 20 +++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/scroll-on-jump.el b/scroll-on-jump.el
index 8e3c5b4722..7c59dbb292 100644
--- a/scroll-on-jump.el
+++ b/scroll-on-jump.el
@@ -139,6 +139,22 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
   "Blend FACTOR between A and B using ease style curvature."
   (+ a (* (- b a) (- (* 3.0 factor factor) (* 2.0 factor factor factor)
 
+(defsubst scroll-on-jump--evil-visual-mode-workaround ()
+  "Workaround for `evil-mode' line-mode."
+  ;; Without this, the line mode point jumps back to the origin,
+  ;; the mark needs to be set to the `point'.
+  ;; https://github.com/emacs-evil/evil/issues/1708
+  (when
+(and
+  (fboundp 'evil-visual-state-p)
+  (funcall 'evil-visual-state-p)
+  (fboundp 'evil-visual-type)
+  (eq (funcall 'evil-visual-type) 'line)
+  (boundp 'evil-visual-point))
+(let ((mark (symbol-value 'evil-visual-point)))
+  (when (markerp mark)
+(set-marker mark (point))
+
 
 ;; ---
 ;; Internal Logic
@@ -516,7 +532,9 @@ Argument USE-WINDOW-START detects window scrolling when 
non-nil."
   (prog1 (goto-char point-next)
 (redisplay t)))
 (t
-  (scroll-on-jump-auto-center window point-prev point-next
+  (scroll-on-jump-auto-center window point-prev point-next)))
+
+  (scroll-on-jump--evil-visual-mode-workaround))
 
 
 ;; ---



[nongnu] elpa/scroll-on-jump 934af6b9c5 3/5: Cleanup: emacs native format

2023-01-07 Thread ELPA Syncer
branch: elpa/scroll-on-jump
commit 934af6b9c5477781d3ac32f1354af6e48949db23
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: emacs native format
---
 scroll-on-jump.el | 688 ++
 1 file changed, 332 insertions(+), 356 deletions(-)

diff --git a/scroll-on-jump.el b/scroll-on-jump.el
index 596faf84dc..8d8508ff47 100644
--- a/scroll-on-jump.el
+++ b/scroll-on-jump.el
@@ -54,13 +54,12 @@
 Move LINES in WINDOW, when ALSO-MOVE-POINT is set, the point is moved too."
   (when also-move-point
 (forward-line lines))
-  (set-window-start
-window
-(save-excursion
-  (goto-char (window-start window))
-  (forward-line lines)
-  (point))
-t))
+  (set-window-start window
+(save-excursion
+  (goto-char (window-start window))
+  (forward-line lines)
+  (point))
+t))
 
 ;; Per-line Scroll.
 ;; return remainder of lines to scroll (matching forward-line).
@@ -75,13 +74,12 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
 (unless (zerop lines-point-remainder)
   (setq lines (- lines lines-point-remainder)
 (unless (zerop lines)
-  (set-window-start
-window
-(save-excursion
-  (goto-char (window-start window))
-  (setq lines-remainder (forward-line lines))
-  (point))
-t)
+  (set-window-start window
+(save-excursion
+  (goto-char (window-start window))
+  (setq lines-remainder (forward-line lines))
+  (point))
+t)
   (when also-move-point
 (unless (zerop lines-remainder)
   (forward-line (- lines-remainder)
@@ -97,43 +95,39 @@ Argument CHAR-HEIGHT The result of `frame-char-height'.
 Argument DELTA-PX The number of pixels to scroll (signed).
 Argument ALSO-MOVE-POINT When non-nil, move the POINT as well."
   (cond
-((< delta-px 0)
-  (let*
-(
-  (scroll-px-prev (window-vscroll nil t))
-  (scroll-px-next (+ scroll-px-prev delta-px))
-  (lines (/ scroll-px-next char-height))
-  (scroll-px (- scroll-px-next (* lines char-height)))
-  (lines-remainder 0))
-
-(when (< scroll-px 0)
-  (setq lines (1- lines))
-  (setq scroll-px (+ char-height scroll-px)))
-
-(unless (zerop lines)
-  (setq lines-remainder (- (scroll-on-jump--scroll-by-lines window 
lines also-move-point)))
-  (unless (zerop lines-remainder)
-(setq scroll-px 0)))
-(set-window-vscroll window scroll-px t)
-
-(cons lines-remainder lines)))
-((> delta-px 0)
-  (let*
-(
-  (scroll-px-prev (window-vscroll nil t))
-  (scroll-px-next (+ scroll-px-prev delta-px))
-  (lines (/ scroll-px-next char-height))
-  (scroll-px (- scroll-px-next (* lines char-height)))
-  (lines-remainder 0))
-(unless (zerop lines)
-  (setq lines-remainder (scroll-on-jump--scroll-by-lines window lines 
also-move-point))
-  (unless (zerop lines-remainder)
-(setq scroll-px char-height)))
-(set-window-vscroll window scroll-px t)
-(cons lines-remainder lines)))
-;; no lines scrolled.
-(t
-  (cons 0 0
+   ((< delta-px 0)
+(let* ((scroll-px-prev (window-vscroll nil t))
+   (scroll-px-next (+ scroll-px-prev delta-px))
+   (lines (/ scroll-px-next char-height))
+   (scroll-px (- scroll-px-next (* lines char-height)))
+   (lines-remainder 0))
+
+  (when (< scroll-px 0)
+(setq lines (1- lines))
+(setq scroll-px (+ char-height scroll-px)))
+
+  (unless (zerop lines)
+(setq lines-remainder (- (scroll-on-jump--scroll-by-lines window lines 
also-move-point)))
+(unless (zerop lines-remainder)
+  (setq scroll-px 0)))
+  (set-window-vscroll window scroll-px t)
+
+  (cons lines-remainder lines)))
+   ((> delta-px 0)
+(let* ((scroll-px-prev (window-vscroll nil t))
+   (scroll-px-next (+ scroll-px-prev delta-px))
+   (lines (/ scroll-px-next char-height))
+   (scroll-px (- scroll-px-next (* lines char-height)))
+   (lines-remainder 0))
+  (unless (zerop lines)
+(setq lines-remainder (scroll-on-jump--scroll-by-lines window lines 
also-move-point))
+(unless (zerop lines-remainder)
+  (setq scroll-px char-height)))
+  (set-window-vscroll window scroll-px t)
+  (cons lines-remainder lines)))
+   ;; no lines scrolled.
+   (t
+(cons 0 0
 
 (defun scroll-on-jump--interpolate-ease (a b factor)
   "Blend FACTOR between A and B using ease style curvature."
@@ -144,13 +138,11 @@ Argument ALSO-MOVE-POINT When non-nil, move the POINT as 
well."
   ;; Without this, the line mode point jumps b

[nongnu] elpa/undo-fu-session ab3d777bd1 05/11: readme: add "Vundo" to "Other Packages" section

2023-01-07 Thread ELPA Syncer
branch: elpa/undo-fu-session
commit ab3d777bd15be2c092fa4a2d52ee8617accfd5c2
Author: Campbell Barton 
Commit: Campbell Barton 

readme: add "Vundo" to "Other Packages" section
---
 readme.rst | 5 +
 1 file changed, 5 insertions(+)

diff --git a/readme.rst b/readme.rst
index a61fd1b29a..a9f0c44378 100644
--- a/readme.rst
+++ b/readme.rst
@@ -132,3 +132,8 @@ As there are multiple packages which deal with undo, it's 
worth mentioning how t
This package also stores undo data between sessions,
however it doesn't store redo data making undo-only and redo-only
operations fail to skip branches of undo history.
+
+`Vundo `__
+   This package supports navigating undo as a tree structure,
+   and works with undo/redo history loaded by ``undo-fu-session``
+   although there are no inter-dependencies as both packages operate on Emacs 
built-in undo.



[nongnu] elpa/undo-fu-session 1a28e9d9e2 04/11: Add Makefile to run tests

2023-01-07 Thread ELPA Syncer
branch: elpa/undo-fu-session
commit 1a28e9d9e20b5dc3e186d09ee5bc5dc7477e0b8e
Author: Campbell Barton 
Commit: Campbell Barton 

Add Makefile to run tests
---
 Makefile | 4 
 1 file changed, 4 insertions(+)

diff --git a/Makefile b/Makefile
new file mode 100644
index 00..b33f21203b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+test:
+   emacs -batch -l tests/undo-fu-session-test.el -f 
undo-fu-session-test-run-all



[nongnu] elpa/undo-fu-session 6c85e27da3 10/11: Cleanup: remove lambda function quote

2023-01-07 Thread ELPA Syncer
branch: elpa/undo-fu-session
commit 6c85e27da3c430879d9469734f257abe650a981f
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: remove lambda function quote
---
 undo-fu-session.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/undo-fu-session.el b/undo-fu-session.el
index d2e03c7392..038f5dbad0 100755
--- a/undo-fu-session.el
+++ b/undo-fu-session.el
@@ -336,9 +336,9 @@ Argument PENDING-LIST an `pending-undo-list' compatible 
list."
(delq
 nil ;; Non-file.
 (mapcar
- #'(lambda (x)
- (unless (nth 1 x)
-   x))
+ (lambda (x)
+   (unless (nth 1 x)
+ x))
  (directory-files-and-attributes undo-fu-session-directory 
t nil t)))
(lambda (x y) (time-less-p (nth 6 y) (nth 6 x))
   (let ((file (car file-with-attrs)))



[nongnu] elpa/undo-fu-session 3a406afabf 08/11: readme: simplify adding the hook in the readme

2023-01-07 Thread ELPA Syncer
branch: elpa/undo-fu-session
commit 3a406afabf6998bcae0df3d259bd9ecf8ec00e84
Author: Campbell Barton 
Commit: Campbell Barton 

readme: simplify adding the hook in the readme
---
 readme.rst | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/readme.rst b/readme.rst
index a9f0c44378..7957ba405d 100644
--- a/readme.rst
+++ b/readme.rst
@@ -57,9 +57,7 @@ you can enable this using a mode hook for e.g.
 .. code-block:: elisp
 
;; Only use undo-fu-session for org mode.
-   (add-hook 'org-mode-hook
- (lambda ()
-   (undo-fu-session-mode))
+   (add-hook 'org-mode-hook #'undo-fu-session-mode)
 
 
 Customization



[nongnu] elpa/undo-fu-session 386e22322c 03/11: Cleanup: doc-string warnings

2023-01-07 Thread ELPA Syncer
branch: elpa/undo-fu-session
commit 386e22322cd3e5638de4ea051f8f4917b6db265f
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: doc-string warnings
---
 undo-fu-session.el | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/undo-fu-session.el b/undo-fu-session.el
index bc93eb653d..3606166086 100755
--- a/undo-fu-session.el
+++ b/undo-fu-session.el
@@ -458,6 +458,7 @@ Argument PENDING-LIST an `pending-undo-list' compatible 
list."
 (throw 'found t)
 
 (defun undo-fu-session--directory-ensure ()
+  "Ensure the undo directory has been created."
   (unless (file-directory-p undo-fu-session-directory)
 (make-directory undo-fu-session-directory t)
 ;; These files should only readable by the owner, see #2.
@@ -707,7 +708,7 @@ Argument PENDING-LIST an `pending-undo-list' compatible 
list."
 mode-in-any-buffer))
 
 (defun undo-fu-session--mode-enable ()
-  "Turn on 'undo-fu-session-mode' for the current buffer."
+  "Turn on `undo-fu-session-mode' for the current buffer."
   ;; Even though this runs on save, call here since it's better the user 
catches
   ;; errors when the mode is enabled instead of having the hook fail.
   (undo-fu-session--directory-ensure)
@@ -716,7 +717,7 @@ Argument PENDING-LIST an `pending-undo-list' compatible 
list."
   (add-hook 'find-file-hook #'undo-fu-session--recover-safe))
 
 (defun undo-fu-session--mode-disable ()
-  "Turn off 'undo-fu-session-mode' for the current buffer."
+  "Turn off `undo-fu-session-mode' for the current buffer."
   (unless (undo-fu-session--mode-in-any-buffer)
 (remove-hook 'write-file-functions #'undo-fu-session--save-safe)
 (remove-hook 'find-file-hook #'undo-fu-session--recover-safe)))



[nongnu] elpa/undo-fu-session d08f7bf130 07/11: Cleanup: require pcase for pcase-dolist

2023-01-07 Thread ELPA Syncer
branch: elpa/undo-fu-session
commit d08f7bf130816e15bb2cae8145d878ad0036e521
Author: Campbell Barton 
Commit: Campbell Barton 

Cleanup: require pcase for pcase-dolist
---
 undo-fu-session.el | 5 +
 1 file changed, 5 insertions(+)

diff --git a/undo-fu-session.el b/undo-fu-session.el
index 0d698a078f..3a88cb8d7a 100755
--- a/undo-fu-session.el
+++ b/undo-fu-session.el
@@ -39,6 +39,11 @@
 
 ;;; Code:
 
+(eval-when-compile
+  ;; For `pcase-dolist'.
+  (require 'pcase))
+
+
 ;; ---
 ;; Custom variables.
 



[nongnu] elpa/undo-fu-session b00ebd244e 06/11: Correct typo.

2023-01-07 Thread ELPA Syncer
branch: elpa/undo-fu-session
commit b00ebd244e65d541380e441d9248a5bc564b9159
Author: Campbell Barton 
Commit: Campbell Barton 

Correct typo.
---
 undo-fu-session.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/undo-fu-session.el b/undo-fu-session.el
index 3606166086..0d698a078f 100755
--- a/undo-fu-session.el
+++ b/undo-fu-session.el
@@ -475,7 +475,7 @@ Argument PENDING-LIST an `pending-undo-list' compatible 
list."
 (cond
   ((null filename)
 nil)
-  ( ;; Ignore encryped files.
+  ( ;; Ignore encrypted files.
 (and
   undo-fu-session-ignore-encrypted-files
   epa-file-handler



  1   2   >