[elpa] externals/blist 4ea15f9397 1/2: Add an option to open each bookmark in a new tab.

2025-02-07 Thread ELPA Syncer
branch: externals/blist
commit 4ea15f93972bac0ffde12b197383335fe3d2943b
Author: JSDurand 
Commit: JSDurand 

Add an option to open each bookmark in a new tab.

* blist.el (blist-select-manner): Add an option `one-per-tab` to open
  each bookmark in a new tab, and the old option `tab` is renamed to
  `onetab`.

  (blist-prepare-select-windows): Prepare tabs in addition to the
  windows, so that the tab indices are returned as well as the
  prepared windows.

  (blist-select): Handle the switching of tabs before opening windows.

  (blist-open): Refine the documentation string.
---
 blist.el | 159 +++
 1 file changed, 108 insertions(+), 51 deletions(-)

diff --git a/blist.el b/blist.el
index e23c42cf7b..fe56f8fcc3 100644
--- a/blist.el
+++ b/blist.el
@@ -1,6 +1,6 @@
 ;;; blist.el --- Display bookmarks in an ibuffer way  -*- lexical-binding: t; 
-*-
 
-;; Copyright (C) 2021, 2022, 2023, 2024  Free Software Foundation, Inc.
+;; Copyright (C) 2021 - 2025  Free Software Foundation, Inc.
 
 ;; Author: Durand 
 ;; Keywords: convenience
@@ -391,8 +391,11 @@ follows.
higher on the list are opened on the right.
 - right, up, down: similar to left.  Left takes precedence over
right, and up takes precedence over down.
-- tab: open the bookmarks in a new tab.  Requires
-   'tab-bar if used.
+- onetab:  open the selected bookmarks in a new tab.
+   Requires 'tab-bar if used.
+- one-per-tab: open a new tab for each selected bookmark.
+   Requires 'tab-bar if used.  If this is present,
+   all other options are ignored.
 
 As a quick shortcut, if the list does not contain left, it means
 to use right; if no up, it means down; if no vertical, it means
@@ -412,7 +415,9 @@ list; they are simply ignored."
(const :tag "Towards Right" right)
(const :tag "Towards Up" up)
(const :tag "Towards Down" down)
-   (const :tag "In a new tab" tab
+   (const :tag "In a new tab" onetab)
+   (const :tag "Each bookmark in a new tab"
+one-per-tab
 
  Edit bookmark annotation buffer name
 
@@ -779,8 +784,10 @@ Note that invisible lines will not be considered here."
 
 ;; I almost forgot that I want to open bookmarks.
 
-(defun blist-open ()
-  "Open the bookmark at point."
+(defun blist-open (&optional arg)
+  "Open the bookmark at point.
+If ARG is non-nil, offer to temporarily edit the location of the
+bookmark before jumping."
   (interactive)
   (blist-assert-mode)
   (cond
@@ -811,13 +818,30 @@ Note that invisible lines will not be considered here."
 
 NUM should be a positive integer.
 
-See `blist-select-manner' for what MANNER should look like."
+See `blist-select-manner' for what MANNER should look like.
+
+Return a list of cons cells of the form
+
+(WINDOW . TAB-INDEX)
+
+where WINDOW is the prepared window and TAB-INDEX is the index of
+the prepared tab that can be fed to the function
+`tab-bar-select-tab'.  If no tab is prepared, this returned index
+is nil."
   (cond
((or (not (integerp num))
 (<= num 0))
 (error "NUM should be a positive integer, but got %S" num)))
-  (let* ((mainp (memq 'main-side manner))
- (tabp (cond (mainp nil) ((memq 'tab manner
+  ;; tab bar index starts from 1, but `tab-bar--current-tab-index'
+  ;; starts from 0.
+  (let* ((one-per-tab (memq 'one-per-tab manner))
+ (mainp (memq 'main-side manner))
+ (tabp (cond (mainp nil) ((memq 'onetab manner
+ (orig-tab-index
+  (cond
+   ((or one-per-tab tabp)
+(require 'tab-bar)
+(1+ (tab-bar--current-tab-index)
  (verticalp (memq 'vertical manner))
  (leftp (memq 'left manner))
  (upp (memq 'up manner))
@@ -835,45 +859,65 @@ See `blist-select-manner' for what MANNER should look 
like."
  (current-direction verticalp)
  (orig-window (selected-window))
  temp-window windows main-side-splitted-p)
-(cond (tabp (require 'tab-bar) (tab-bar-new-tab)))
-;; create a new window so that we are not inside some window that
-;; cannot be splitted, like a side window
-(select-window (split-window (frame-root-window) nil 'below))
-(delete-other-windows)
-(setq orig-window (selected-window))
-(setq windows (cons orig-window windows))
-(setq temp-window orig-window)
-(setq num (1- num))
-(while (> num 0)
-  (setq
-   temp-window
-   (split-window temp-window
- (cond
-  ((and mainp (not main-side-splitted-p))
-   nil)
-  (size))
- (cond
-  (current-direction
-   ;; vertical
-   (cond (upp 'above) ('below)))
- 

[elpa] externals/blist abf7cc1d6d 2/2: ChangeLog: Document the new feature.

2025-02-07 Thread ELPA Syncer
branch: externals/blist
commit abf7cc1d6dc1075c64f158ee296d4567d30b3bcf
Author: JSDurand 
Commit: JSDurand 

ChangeLog: Document the new feature.
---
 ChangeLog | 10 ++
 1 file changed, 10 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 61bfc1c8ba..9d80867995 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2025-02-07  Durand  
+
+   * blist.el: Add an option to open each bookmark in a new tab.  Now
+   `blist-select-manner` has two options related to tabs: `onetab`
+   and `one-per-tab`.  The former just opens all selected bookmarks
+   in a new tab, while the latter opens one tab for each selected
+   bookmark.  In the latter case, all other window-related options
+   are ignored as a dedicated tab is used which contains no other
+   windows at all.
+
 2024-08-07  Durand  
 
* blist.el: The new customisation option `blist-show-item-num-p`



[elpa] externals/blist updated (f5751add56 -> abf7cc1d6d)

2025-02-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/blist.

  from  f5751add56 Bump version to 0.4.
   new  4ea15f9397 Add an option to open each bookmark in a new tab.
   new  abf7cc1d6d ChangeLog: Document the new feature.


Summary of changes:
 ChangeLog |  10 
 blist.el  | 159 ++
 2 files changed, 118 insertions(+), 51 deletions(-)



[nongnu] elpa/gptel 2c853bb523: gptel-openai: Make gptel-get-backend removable

2025-02-07 Thread ELPA Syncer
branch: elpa/gptel
commit 2c853bb523cbb0e8ceba0d8fe18299162705fcd7
Author: Karthik Chikmagalur 
Commit: Karthik Chikmagalur 

gptel-openai: Make gptel-get-backend removable

* gptel-openai.el (gptel-get-backend): Make it possible to setf
the result of `gptel-get-backend' to nil.
---
 gptel-openai.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gptel-openai.el b/gptel-openai.el
index 34ef05c78d..a5db964198 100644
--- a/gptel-openai.el
+++ b/gptel-openai.el
@@ -143,7 +143,7 @@ Throw an error if there is no match."
 
 (gv-define-setter gptel-get-backend (val name)
   `(setf (alist-get ,name gptel--known-backends
-  nil nil #'equal)
+  nil t #'equal)
 ,val))
 
 (cl-defstruct



[elpa] main f53ff04475 1/2: * elpa-packages (auth-source-xoauth2-plugin): Add new package

2025-02-07 Thread Philip Kaludercic
branch: main
commit f53ff04475c4b207ba772a9294dcad65f419d3a2
Author: Philip Kaludercic 
Commit: Philip Kaludercic 

* elpa-packages (auth-source-xoauth2-plugin): Add new package
---
 elpa-packages | 1 +
 1 file changed, 1 insertion(+)

diff --git a/elpa-packages b/elpa-packages
index 2c150b54b5..74595d87ee 100644
--- a/elpa-packages
+++ b/elpa-packages
@@ -81,6 +81,7 @@
  (auctex-cont-latexmk  :url 
"https://github.com/ultronozm/auctex-cont-latexmk.el";)
  (auctex-label-numbers :url 
"https://github.com/ultronozm/auctex-label-numbers.el";)
  (aumix-mode   :url nil)
+ (auth-source-xoauth2-plugin   :url 
"https://gitlab.com/manphiz/auth-source-xoauth2-plugin";)
  (auto-correct :url nil)
  (auto-header   :url "https://codeberg.org/pkal/auto-header.el";)
  (auto-overlays:url nil 
;"http://www.dr-qubit.org/git/predictive.git";



[elpa] main 04faef706a 2/2: * elpa-packages (autorevert-tail-truncate): Add new package

2025-02-07 Thread Philip Kaludercic
branch: main
commit 04faef706abbb9bb95b285757b0f2986e9c07396
Author: Philip Kaludercic 
Commit: Philip Kaludercic 

* elpa-packages (autorevert-tail-truncate): Add new package
---
 elpa-packages | 1 +
 1 file changed, 1 insertion(+)

diff --git a/elpa-packages b/elpa-packages
index 74595d87ee..ac995ac43c 100644
--- a/elpa-packages
+++ b/elpa-packages
@@ -87,6 +87,7 @@
  (auto-overlays:url nil 
;"http://www.dr-qubit.org/git/predictive.git";
   :doc "docs/auto-overlay-manual.texinfo")
  (autocrypt :url "https://codeberg.org/pkal/autocrypt.el";)
+ (autorevert-tail-truncate  :url 
"https://github.com/shipmints/autorevert-tail-truncate.el";)
  (avy  :url "https://github.com/abo-abo/avy";
   ;; FIXME: Avy diverged https://github.com/abo-abo/avy/issues/344
   :merge t)



[elpa] main updated (ea8c4c4688 -> 04faef706a)

2025-02-07 Thread Philip Kaludercic
zge pushed a change to branch main.

  from  ea8c4c4688 elpa-packages (a68-mode): Use `README.md` i.s.o 
`Commentary:`
   new  f53ff04475 * elpa-packages (auth-source-xoauth2-plugin): Add new 
package
   new  04faef706a * elpa-packages (autorevert-tail-truncate): Add new 
package


Summary of changes:
 elpa-packages | 2 ++
 1 file changed, 2 insertions(+)



[elpa] branch externals/autorevert-tail-truncate created (now d1b9c3f6fb)

2025-02-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/autorevert-tail-truncate.

at  d1b9c3f6fb Simplify package-vc-install instruction

This branch includes the following new commits:

   new  36fdd58ca5 Initial commit
   new  662a27f883 Actual initial commit
   new  202b42bdb1 Remove Emacs defcustom version numbers
   new  19a7bb7a4d Update vis-a-vis feedback from Michael Albinus
   new  c7462550cc Remove auto-revert-tail-truncate-check-vc-info
   new  70653777a5 Remove auto-revert-tail-mode-on-log-files in favor of 
documentation
   new  4bdfc5724e Change fundamental-mode to text-mode
   new  1d8ac44671 Incorporate suggestions from Philip Kaludercic
   new  72e825b0be defcustom group. defcustom versions. package version 
number "1.0 pre".
   new  d1b9c3f6fb Simplify package-vc-install instruction




[elpa] externals/autorevert-tail-truncate 19a7bb7a4d 04/10: Update vis-a-vis feedback from Michael Albinus

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit 19a7bb7a4d6b9febb3f9f33cb465f8afeaad4c70
Author: shipmints 
Commit: shipmints 

Update vis-a-vis feedback from Michael Albinus
---
 README.md   |  4 ++--
 autorevert-tail-truncate.el | 17 -
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/README.md b/README.md
index 233a484df8..804e477ec6 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,9 @@
 
 # autorevert-tail-truncate.el
 
-Extend Emacs auto-revert-tail-mode to optimize memory and CPU.
+Emacs minor mode for auto-revert-tail-mode to optimize memory and CPU.
 
-`auto-revert-tail-truncate-mode` extends `auto-revert-tail-mode` to automate 
truncating the tailed buffer to a
+`auto-revert-tail-truncate-mode` is a veneer over `auto-revert-tail-mode` to 
automate truncating the tailed buffer to a
 user-specified number of lines. This allows you, for example, to tail log 
files in an auto-reverting buffer forever without
 running out of memory. By default, a newly tailed buffer is immediately 
truncated for the same reason. Also, by default, the
 buffer's undo log is disabled along with font-lock to both preserve memory and 
optimize CPU consumption.
diff --git a/autorevert-tail-truncate.el b/autorevert-tail-truncate.el
index 7b6031a2c1..37aeb4a7cc 100644
--- a/autorevert-tail-truncate.el
+++ b/autorevert-tail-truncate.el
@@ -1,6 +1,5 @@
 ;;; autorevert-tail-truncate.el -- Summary;: -*- mode: emacs-lisp; 
lexical-binding: t; -*-
 
-;; Copyright (C) 2025 Stephane Marks
 ;; Copyright (C) 2025 Free Software Foundation, Inc.
 
 ;; Author: Stephane Marks 
@@ -26,14 +25,14 @@
 
 ;;; Commentary:
 
-;; `auto-revert-tail-truncate-mode' extends `auto-revert-tail-mode' to
-;; automate truncating the tailed buffer to a user-specified number of
-;; lines.  This allows you, for example, to tail log files in an
-;; auto-reverting buffer forever without running out of memory.  By
-;; default, a newly tailed buffer is immediately truncated for the
-;; same reason.  Also, by default, the buffer's undo log is disabled
-;; along with font-lock to both preserve memory and optimize CPU
-;; consumption.
+;; `auto-revert-tail-truncate-mode' is a veneer over
+;; `auto-revert-tail-mode' to automate truncating the tailed buffer to
+;; a user-specified number of lines.  This allows you, for example, to
+;; tail log files in an auto-reverting buffer forever without running
+;; out of memory.  By default, a newly tailed buffer is immediately
+;; truncated for the same reason.  Also, by default, the buffer's undo
+;; log is disabled along with font-lock to both preserve memory and
+;; optimize CPU consumption.
 ;;
 ;; Use the command auto-revert-tail-truncate-file to open a file in a
 ;; new buffer with `auto-revert-tail-truncate-mode' enabled.



[elpa] externals/autorevert-tail-truncate 36fdd58ca5 01/10: Initial commit

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit 36fdd58ca5cb35e5eb61cabb9bbcb7c1f0ae7286
Author: shipmints <30732365+shipmi...@users.noreply.github.com>
Commit: GitHub 

Initial commit
---
 LICENSE   | 674 ++
 README.md |   2 +
 2 files changed, 676 insertions(+)

diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00..f288702d2f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+GNU GENERAL PUBLIC LICENSE
+   Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. 
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+   TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to 

[elpa] externals/auth-source-xoauth2-plugin d215ee80b8 12/28: Fix checkdoc errors

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit d215ee80b8d2706cf678d0a85272871c52f98f73
Author: Xiyue Deng 
Commit: Xiyue Deng 

Fix checkdoc errors
---
 auth-source-xoauth2-plugin.el | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 63e89ace19..b0baab7212 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -83,11 +83,13 @@
 (require 'smtpmail)
 
 (defun auth-source-xoauth2-plugin--search-backends (orig-fun &rest args)
-  "Perform auth-source-search and set password as access-token when requested.
-The substitution only happens if one sets `auth' to `xoauth2' in
-your auth-source-entry.  It is expected that `token_url',
-`client_id', `client_secret', and `refresh_token' are properly
-set along `host', `user', and `port' (note the snake_case)."
+  "Perform `auth-source-search' and set password as access-token when 
requested.
+Calls ORIG-FUN which would be `auth-source-search-backends' with
+ARGS to get the auth-source-entry.  The substitution only happens
+if one sets `auth' to `xoauth2' in your auth-source-entry.  It is
+expected that `token_url', `client_id', `client_secret', and
+`refresh_token' are properly set along `host', `user', and
+`port' (note the snake_case)."
   (auth-source-do-trivia "Advising auth-source-search")
   (let (check-secret)
 (when (memq :secret (nth 5 args))



[elpa] externals/auth-source-xoauth2-plugin c236d9ba0a 21/28: Reference README.org in the comments

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit c236d9ba0ae7ce0de4256d574377ae6961ad0891
Author: Xiyue Deng 
Commit: Xiyue Deng 

Reference README.org in the comments
---
 auth-source-xoauth2-plugin.el | 53 +--
 1 file changed, 1 insertion(+), 52 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 16316a010a..b82cb1fab2 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -23,58 +23,7 @@
 
 ;;; Commentary:
 
-;; This package provides a global minor mode for enabling support for
-;; xoauth2 authentication with auth-source.  OAuth 2.0, which stands for
-;; “Open Authorization”, is a standard designed to allow a website or
-;; application to access resources hosted by other web apps on behalf of
-;; a user.  The OAuth 2.0 Authorization Protocol Extensions (xoauth2)
-;; extend the OAuth 2.0 Authentication Protocol and the JSON Web Token
-;; (JWT) to enable server-to-server authentication.  More info please
-;; check out: https://stackoverflow.com/a/76389679/2337550
-
-;; To set up, please put this file in the `load-path' of Emacs, and add
-;; the following lines in your Emacs configuration:
-
-;; (require 'auth-source-xoauth2-plugin)
-;; (auth-source-xoauth2-plugin-mode t)
-
-;; or with use-package:
-
-;; (use-package auth-source-xoauth2-plugin
-;;   :custom
-;;   (auth-source-xoauth2-plugin-mode t))
-
-;; After enabling, smtpmail should be supported.  To enable this in Gnus
-;; nnimap, you should also set `(nnimap-authenticator xoauth2)' in the
-;; corresponding account settings in `gnus-secondary-select-methods'.
-;; To disable, just toggle the minor mode off by calling `M-x
-;; auth-source-xoauth2-plugin-mode' again.
-
-;; auth-source uses the `secret' field in auth-source file as password
-;; for authentication, including xoauth2.  To decide which
-;; authentication method to use (e.g. plain password vs xoauth2), it
-;; inspects the `auth' field from the auth-source entry, and if the
-;; value is `xoauth2', it will try to gather data and get the access
-;; token for use of xoauth2 authentication; otherwise, it will fallback
-;; to the default authentication method.
-
-;; When xoauth2 authentication is enabled, it will try to get the
-;; following data from the auth-source entry: `auth-url', `token-url',
-;; `scope', `client-id', `client-secret', `redirect-uri', and optionally
-;; `state'.  These information will be used by oauth2 to retrieve the
-;; access-token.  This package uses an advice to switch the auth-source
-;; search result from the `password' to the `access-token' it got, which
-;; in turn will be used to construct the xoauth2 authentication string,
-;; currently in nnimap-login and smtpmail-try-auth-method.  To really
-;; enable xoauth2 in smtpmail, it will add 'xoauth2 to
-;; 'smtpmail-auth-supported (if it is not already in the list) using
-;; `add-to-list' so that xoauth2 is tried first.
-
-;; Note that currently the auth-source requires the searched entry must
-;; have `secret' field set in the entry, which is not necessary when
-;; using xoauth2.  Therefore in the advice it temporarily disables
-;; checking for `:secret' if set and perform the search, and check the
-;; result before returning.
+;; See README.org for an introduction and usages.
 
 ;;; Code:
 



[elpa] externals/autorevert-tail-truncate 202b42bdb1 03/10: Remove Emacs defcustom version numbers

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit 202b42bdb19e709994874e7dc43487e22f810427
Author: shipmints 
Commit: shipmints 

Remove Emacs defcustom version numbers

They will be established should this package be adopted in Emacs core.
---
 autorevert-tail-truncate.el | 30 ++
 1 file changed, 10 insertions(+), 20 deletions(-)

diff --git a/autorevert-tail-truncate.el b/autorevert-tail-truncate.el
index 9104143628..7b6031a2c1 100644
--- a/autorevert-tail-truncate.el
+++ b/autorevert-tail-truncate.el
@@ -57,70 +57,60 @@
 If nil, truncation is disabled.  Bind this as a buffer-local variable to
 control the maximum number lines to retain for specific buffers."
   :group 'auto-revert
-  :type 'natnum
-  :version "31.1")
+  :type 'natnum)
 
 (defcustom auto-revert-tail-truncate-file-size-hint 64
   "Bytes per line hint to `auto-revert-tail-truncate-file'.
 This is multiplied by `auto-revert-tail-truncate-max-lines' to compute
 the initial bytes to load."
   :group 'auto-revert
-  :type 'natnum
-  :version "31.1")
+  :type 'natnum)
 
 (defcustom auto-revert-tail-truncate-revert-interval auto-revert-interval
   "Number of seconds between Auto-Revert Tail Truncate Mode file checks.
 The default value is `auto-revert-interval', which see."
   :group 'auto-revert
-  :type 'natnum
-  :version "31.1")
+  :type 'natnum)
 
 (defcustom auto-revert-tail-truncate-verbose auto-revert-verbose
   "When nil, `auto-revert-tail-truncate-mode' does not generate messages.
 When non-nil, a message is generated whenever a buffer is reverted.
 The default value is `auto-revert-verbose', which see."
   :group 'auto-revert
-  :type 'boolean
-  :version "31.1")
+  :type 'boolean)
 
 (defcustom auto-revert-tail-truncate-immediately t
   "If non-nil, buffer is truncated when this mode is enabled.
 Set the maximum number of lines to retain in the buffer using the
 option `auto-revert-tail-truncate-max-lines', which see."
   :group 'auto-revert
-  :type 'boolean
-  :version "31.1")
+  :type 'boolean)
 
 (defcustom auto-revert-tail-truncate-read-only t
   "If non-nil, the tailed buffer is set to be read only."
   :group 'auto-revert
-  :type 'boolean
-  :version "31.1")
+  :type 'boolean)
 
 (defcustom auto-revert-tail-truncate-disable-undo t
   "If non-nil, the buffer's undo log is disabled to save memory."
   :group 'auto-revert
-  :type 'boolean
-  :version "31.1")
+  :type 'boolean)
 
 (defcustom auto-revert-tail-truncate-disable-font-lock t
   "If non-nil, font-lock is disabled on the tailed buffer."
   :group 'auto-revert
-  :type 'boolean
-  :version "31.1")
+  :type 'boolean)
 
 (defcustom auto-revert-tail-truncate-check-vc-info auto-revert-check-vc-info
   "If non-nil `auto-revert-tail-truncate-mode' updates vc info.
 The default value is `auto-revert-check-vc-info', which see."
   :group 'auto-revert
-  :type 'boolean
-  :version "31.1")
+  :type 'boolean)
 
 (defcustom auto-revert-tail-truncate-mode-text " TailTrunc"
   "Mode line string when `auto-revert-tail-truncate-mode' is active."
   :group 'auto-revert
-  :type 'string
-  :version "31.1")
+  :type 'string)
 
 (defvar-local auto-revert-tail-truncate-mode nil
   "Non-nil when `auto-revert-tail-truncate-mode' is active.



[elpa] branch externals/auth-source-xoauth2-plugin created (now 991ef1751a)

2025-02-07 Thread ELPA Syncer
elpasync pushed a change to branch externals/auth-source-xoauth2-plugin.

at  991ef1751a Update auth-source json example to be part of a list

This branch includes the following new commits:

   new  b7bff4d391 Initial commit
   new  7b730e3763 Add notes on installation and setup.
   new  3aa9e65dd5 Add notes on enabling in Gnus nnimap
   new  5cf0cc0709 Use -do-debug instead of -do-trivia for logs without 
token data
   new  258c4c4803 Simplify string comparison
   new  3577be2781 Replace let + plist-get with map-let
   new  c0e9c431e1 Don't rely on the side effect of plist-put
   new  5084327a34 Use `push' instead of `add-to-list'
   new  377182b761 Sharp-quote all functions
   new  27ba009d4f Add more comments regarding oauth2 and xoauth2
   new  4ace7b0628 Fix wrong usage of push
   new  d215ee80b8 Fix checkdoc errors
   new  c9a6778dba Simplified equal check
   new  cffa536205 Fix typo
   new  cd0caa60cb Make this plugin a global minor mode
   new  9f7a58daee Update documentation for the global minor mode 
accordingly
   new  a9bb9b32d5 Incorporate suggestions from Philip Kaludercic
   new  12154b214f Fix comment header to conform to ELPA style
   new  466d4a057a Typo
   new  1162d667e8 Add README.org with an introduction and usages
   new  c236d9ba0a Reference README.org in the comments
   new  a7fc1f Small improvements in README.org
   new  d1014242e8 Add title and date in README.org
   new  fc9775ea18 Update the short description in source
   new  36e5637c10 Update copyright holder to be FSF for inclusion in GNU 
ELPA
   new  98d941394d Add comparison with auth-source-xoauth2
   new  93a69c392a Tag version 0.1
   new  991ef1751a Update auth-source json example to be part of a list




[elpa] externals/auth-source-xoauth2-plugin b7bff4d391 01/28: Initial commit

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit b7bff4d391ba984ac73ae72a672dc952d27d6140
Author: Xiyue Deng 
Commit: Xiyue Deng 

Initial commit
---
 auth-source-xoauth2-plugin.el | 123 ++
 1 file changed, 123 insertions(+)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
new file mode 100644
index 00..f540b5628c
--- /dev/null
+++ b/auth-source-xoauth2-plugin.el
@@ -0,0 +1,123 @@
+;; auth-source-xoauth2-plugin.el -- authentication source plugin for xoauth2 
-*- lexical-binding: t -*-
+
+;; Copyright (C) 2024 Xiyue Deng 
+
+;; Author: Xiyue Deng 
+;; Version: 0.1-git
+;; Package-Requires: ((emacs "28.1") (oauth2 "0.17"))
+
+;; This file is not part of GNU Emacs.
+
+;; GNU Emacs 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.
+
+;; GNU Emacs 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 GNU Emacs.  If not, see .
+
+;;; Commentary:
+
+;; This package enables support for xoauth2 authentication with
+;; auth-source.
+
+;; auth-source uses the `secret' field in auth-source file as password
+;; for authentication, including xoauth2.  To decide which
+;; authentication method to use (e.g. plain password vs xoauth2), it
+;; inspects the `auth' field from the auth-source entry, and if the
+;; value is `xaouth2', it will try to gather data and get the access
+;; token for use of xoauth2 authentication; otherwise, it will fallback
+;; to the default authentication method.
+
+;; When xoauth2 authentication is enabled, it will try to get the
+;; following data from the auth-source entry: `auth-url', `token-url',
+;; `scope', `client-id', `client-secret', `redirect-uri', and optionally
+;; `state'.  These information will be used by oauth2 to retrieve the
+;; access-token.  This package uses an advice to switch the auth-source
+;; search result from the `password' to the `access-token' it got, which
+;; in turn will be used to construct the xoauth2 authentication string,
+;; currently in nnimap-login and smtpmail-try-auth-method.  To really
+;; enable xoauth2 in smtpmail, it will add 'xoauth2 to
+;; 'smtpmail-auth-supported (if it is not already in the list) using
+;; `add-to-list' so that xoauth2 is tried first.
+
+;; Note that currently the auth-source requires the searched entry must
+;; have `secret' field set in the entry, which is not necessary when
+;; using xoauth2.  Therefore in the advice it temporarily disables
+;; checking for `:secret' if set and perform the search, and check the
+;; result before returning.
+
+;;; Code:
+
+(require 'auth-source)
+(require 'cl-lib)
+(require 'oauth2)
+(require 'smtpmail)
+
+(defun auth-source-xoauth2-plugin--search-backends (orig-fun &rest args)
+  "Perform auth-source-search and set password as access-token when requested.
+The substitution only happens if one sets `auth' to `xoauth2' in
+your auth-source-entry.  It is expected that `token_url',
+`client_id', `client_secret', and `refresh_token' are properly
+set along `host', `user', and `port' (note the snake_case)."
+  (auth-source-do-trivia "Advising auth-source-search")
+  (let (check-secret)
+(when (memq :secret (nth 5 args))
+  (auth-source-do-trivia
+   "Required fields include :secret.  As we are requesting access token to 
replace the secret, we'll temporary remove :secret from the require list and 
check that it's properly set to a valid access token later.")
+  (setf (nth 5 args) (remove :secret (nth 5 args)))
+  (setq check-secret t))
+(let ((orig-res (apply orig-fun args))
+  res)
+  (dolist (auth-data orig-res)
+(auth-source-do-trivia "Matched auth data: %s" (pp-to-string 
auth-data))
+(let ((auth (plist-get auth-data :auth)))
+  (when (and auth
+ (stringp auth)
+ (string= auth "xoauth2"))
+(auth-source-do-debug
+ ":auth set to `xoauth2'.  Will get access token.")
+(let ((auth-url (plist-get auth-data :auth-url))
+  (token-url (plist-get auth-data :token-url))
+  (scope (plist-get auth-data :scope))
+  (client-id (plist-get auth-data :client-id))
+  (client-secret (plist-get auth-data :client-secret))
+  (redirect-uri (plist-get auth-data :redirect-uri))
+  (state (plist-get auth-data :state)))
+  (auth-source-do-trivia "Using oauth2 to auth and store token...")
+  (let ((token (oauth2-auth

[elpa] externals/auth-source-xoauth2-plugin 7b730e3763 02/28: Add notes on installation and setup.

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 7b730e3763a74f6ab41b26615d8a2d0220896fed
Author: Xiyue Deng 
Commit: Xiyue Deng 

Add notes on installation and setup.
---
 auth-source-xoauth2-plugin.el | 12 +++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index f540b5628c..1a3d6e510c 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -24,7 +24,17 @@
 ;;; Commentary:
 
 ;; This package enables support for xoauth2 authentication with
-;; auth-source.
+;; auth-source.  To set up, please put this file in the `load-path' of
+;; Emacs, and add the following lines in your Emacs configuration:
+
+;; (require 'auth-source-xoauth2-plugin)
+;; (auth-source-xoauth2-plugin-enable)
+
+;; or with use-package:
+
+;; (use-package auth-source-xoauth2-plugin
+;;   :config
+;;   (auth-source-xoauth2-plugin-enable))
 
 ;; auth-source uses the `secret' field in auth-source file as password
 ;; for authentication, including xoauth2.  To decide which



[elpa] externals/auth-source-xoauth2-plugin 12154b214f 18/28: Fix comment header to conform to ELPA style

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 12154b214ff85997de2020d9ffd24449885bed52
Author: Xiyue Deng 
Commit: Xiyue Deng 

Fix comment header to conform to ELPA style
---
 auth-source-xoauth2-plugin.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 099831a92d..6ab756ead1 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -1,4 +1,4 @@
-;; auth-source-xoauth2-plugin.el -- authentication source plugin for xoauth2 
-*- lexical-binding: t -*-
+;;; auth-source-xoauth2-plugin.el --- authentication source plugin for xoauth2 
-*- lexical-binding: t -*-
 
 ;; Copyright (C) 2024 Xiyue Deng 
 



[elpa] externals/auth-source-xoauth2-plugin 377182b761 09/28: Sharp-quote all functions

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 377182b7615da0ab3042720bfb710b45995af227
Author: Xiyue Deng 
Commit: Xiyue Deng 

Sharp-quote all functions

(Based on review at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72992#14.  Thanks Philip
Kaludercic for the review and suggestions!)
---
 auth-source-xoauth2-plugin.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index a09422e627..ad563eaeae 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -132,7 +132,7 @@ set along `host', `user', and `port' (note the snake_case)."
   (unless (memq 'xoauth2 smtpmail-auth-supported)
 (push 'smtpmail-auth-supported 'xoauth2))
 
-  (advice-add 'auth-source-search-backends :around
+  (advice-add #'auth-source-search-backends :around
   #'auth-source-xoauth2-plugin--search-backends))
 
 (provide 'auth-source-xoauth2-plugin)



[elpa] externals/auth-source-xoauth2-plugin 258c4c4803 05/28: Simplify string comparison

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 258c4c4803eb1c1362eeeb2a0b3d3f91411efbfd
Author: Xiyue Deng 
Commit: Xiyue Deng 

Simplify string comparison

(Based on review at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72992#14.  Thanks Philip
Kaludercic for the review and suggestions!)
---
 auth-source-xoauth2-plugin.el | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 36cdf15d07..0f536029b7 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -92,8 +92,7 @@ set along `host', `user', and `port' (note the snake_case)."
 (auth-source-do-trivia "Matched auth data: %s" (pp-to-string 
auth-data))
 (let ((auth (plist-get auth-data :auth)))
   (when (and auth
- (stringp auth)
- (string= auth "xoauth2"))
+ (equal auth "xoauth2"))
 (auth-source-do-debug
  ":auth set to `xoauth2'.  Will get access token.")
 (let ((auth-url (plist-get auth-data :auth-url))



[elpa] externals/auth-source-xoauth2-plugin a7feeeec1f 22/28: Small improvements in README.org

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit a7fc1f2242912db2b410032f1125dab19de2
Author: Xiyue Deng 
Commit: Xiyue Deng 

Small improvements in README.org
---
 README.org | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/README.org b/README.org
index d233c06162..b59bdf6ba5 100644
--- a/README.org
+++ b/README.org
@@ -35,7 +35,9 @@ the following:
 #+BEGIN_SRC emacs-lisp
   (nnimap "account_name"
   ...
-  (nnimap-authenticator xoauth2))
+  (nnimap-authenticator xoauth2)
+  ...
+  )
 #+END_SRC
 
 To disable, just toggle the minor mode off by calling `M-x
@@ -55,7 +57,7 @@ following data from the auth-source entry: `auth-url', 
`token-url',
 `state'.  An example Authinfo entry (in JSON format as
 ~/.authinfo.json.gpg) for an Gmail account may look like below:
 
-#+BEGIN_SRC json
+#+BEGIN_SRC js
   {
 "machine": "",
 "login": "",



[elpa] externals/auth-source-xoauth2-plugin 3577be2781 06/28: Replace let + plist-get with map-let

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 3577be278127158441f93ef95656ffd5201a
Author: Xiyue Deng 
Commit: Xiyue Deng 

Replace let + plist-get with map-let

(Based on review at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72992#14.  Thanks Philip
Kaludercic for the review and suggestions!)
---
 auth-source-xoauth2-plugin.el | 16 +---
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 0f536029b7..8a4e6ec990 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -70,6 +70,7 @@
 
 (require 'auth-source)
 (require 'cl-lib)
+(require 'map)
 (require 'oauth2)
 (require 'smtpmail)
 
@@ -95,13 +96,14 @@ set along `host', `user', and `port' (note the snake_case)."
  (equal auth "xoauth2"))
 (auth-source-do-debug
  ":auth set to `xoauth2'.  Will get access token.")
-(let ((auth-url (plist-get auth-data :auth-url))
-  (token-url (plist-get auth-data :token-url))
-  (scope (plist-get auth-data :scope))
-  (client-id (plist-get auth-data :client-id))
-  (client-secret (plist-get auth-data :client-secret))
-  (redirect-uri (plist-get auth-data :redirect-uri))
-  (state (plist-get auth-data :state)))
+(map-let ((:auth-url auth-url)
+  (:token-url token-url)
+  (:scope scope)
+  (:client-d client-id)
+  (:client-secret client-secret)
+  (:redirect-uri redirect-uri)
+  (:state state))
+auth-data
   (auth-source-do-debug "Using oauth2 to auth and store token...")
   (let ((token (oauth2-auth-and-store
 auth-url token-url scope client-id client-secret



[elpa] externals/autorevert-tail-truncate d1b9c3f6fb 10/10: Simplify package-vc-install instruction

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit d1b9c3f6fb8ba963d562a77539ea50ab34e0c988
Author: shipmints 
Commit: shipmints 

Simplify package-vc-install instruction
---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 9a7144783d..d9ecdcba7e 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ If you use Emacs 29.1+, use `package-vc-install`. In your 
`*scratch*` buffer, co
 the command `eval-last-sexp`, which see:
 
 ``` elisp
-(package-vc-install '(autorevert-tail-truncate :url 
"https://github.com/shipmints/autorevert-tail-truncate.el";))
+(package-vc-install "https://github.com/shipmints/autorevert-tail-truncate.el";)
 ```
 
 Or, if you use Emacs 30+, uncomment the :vc stanza, below.



[elpa] externals/auth-source-xoauth2-plugin 36e5637c10 25/28: Update copyright holder to be FSF for inclusion in GNU ELPA

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 36e5637c1027ed1ef243441f3ad80da006f09f61
Author: Xiyue Deng 
Commit: Xiyue Deng 

Update copyright holder to be FSF for inclusion in GNU ELPA

* Also update copyright year.
---
 auth-source-xoauth2-plugin.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index bb2d61692f..07c327adf3 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -1,6 +1,6 @@
 ;;; auth-source-xoauth2-plugin.el --- authentication source plugin for xoauth2 
-*- lexical-binding: t -*-
 
-;; Copyright (C) 2024 Xiyue Deng 
+;; Copyright (C) 2024-2025  Free Software Foundation, Inc.
 
 ;; Author: Xiyue Deng 
 ;; Version: 0.1-git



[elpa] externals/auth-source-xoauth2-plugin 3aa9e65dd5 03/28: Add notes on enabling in Gnus nnimap

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 3aa9e65dd56753b4506d5a9ad98a4e28d312e0b3
Author: Xiyue Deng 
Commit: Xiyue Deng 

Add notes on enabling in Gnus nnimap
---
 auth-source-xoauth2-plugin.el | 4 
 1 file changed, 4 insertions(+)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 1a3d6e510c..037ad6a67f 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -36,6 +36,10 @@
 ;;   :config
 ;;   (auth-source-xoauth2-plugin-enable))
 
+;; After enabling, smtpmail should be supported.  To enable this in Gnus
+;; nnimap, you should also set `(nnimap-authenticator xoauth2)' in the
+;; corresponding account settings in `gnus-secondary-select-methods'
+
 ;; auth-source uses the `secret' field in auth-source file as password
 ;; for authentication, including xoauth2.  To decide which
 ;; authentication method to use (e.g. plain password vs xoauth2), it



[elpa] externals/autorevert-tail-truncate 4bdfc5724e 07/10: Change fundamental-mode to text-mode

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit 4bdfc5724ea6766c155a228e21afd53a544c5f8a
Author: shipmints 
Commit: shipmints 

Change fundamental-mode to text-mode
---
 README.md | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index cc344a26bc..9a7144783d 100644
--- a/README.md
+++ b/README.md
@@ -69,19 +69,19 @@ To invoke the mode interactively, use `M-x 
auto-revert-tail-truncate-mode`.
 To enable `auto-revert-tail-truncate-mode` automatically when viewing files of 
certain modes, add something like the following to their major-mode hooks.
 
 ``` elisp
-(defun my/fundamental-mode-hook ()
+(defun my/text-mode-hook ()
   (auto-revert-tail-truncate-mode))
-(add-hook 'fundamental-mode-hook #'my/fundamental-mode-hook)
+(add-hook 'text-mode-hook #'my/text-mode-hook)
 ```
 
 If you want to enable `auto-revert-tail-truncate-mode` only for buffers with 
file names that have a .log suffix, but not others that share the same major 
mode, consider the following.
 
 ``` elisp
-(defun my/fundamental-mode-hook ()
+(defun my/text-mode-hook ()
   (when (and buffer-file-name
  (string-match-p "\\.log\\'" buffer-file-name))
 (auto-revert-tail-truncate-mode)))
-(add-hook 'fundamental-mode-hook #'my/fundamental-mode-hook)
+(add-hook 'text-mode-hook #'my/text-mode-hook)
 ```
 
 ## Coda



[elpa] externals/autorevert-tail-truncate 662a27f883 02/10: Actual initial commit

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit 662a27f883c01648a099f5859e166ee8f24021fa
Author: shipmints 
Commit: shipmints 

Actual initial commit
---
 .elpaignore |   1 +
 .gitignore  |   7 ++
 README.md   |  76 ++-
 autorevert-tail-truncate.el | 219 
 4 files changed, 302 insertions(+), 1 deletion(-)

diff --git a/.elpaignore b/.elpaignore
new file mode 100644
index 00..6b1d0bfabc
--- /dev/null
+++ b/.elpaignore
@@ -0,0 +1 @@
+LICENSE
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00..9d48fea457
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+*-autoloads.el
+*-pkg.el
+*.elc
+*.info
+*.texi
+*~
+\#*\#
diff --git a/README.md b/README.md
index d46d87459d..233a484df8 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,76 @@
+
+
 # autorevert-tail-truncate.el
-Extend Emacs extends auto-revert-tail-mode to optimize memory and cpu
+
+Extend Emacs auto-revert-tail-mode to optimize memory and CPU.
+
+`auto-revert-tail-truncate-mode` extends `auto-revert-tail-mode` to automate 
truncating the tailed buffer to a
+user-specified number of lines. This allows you, for example, to tail log 
files in an auto-reverting buffer forever without
+running out of memory. By default, a newly tailed buffer is immediately 
truncated for the same reason. Also, by default, the
+buffer's undo log is disabled along with font-lock to both preserve memory and 
optimize CPU consumption.
+
+Use the command `auto-revert-tail-truncate-file` to open a file in a new 
buffer with `auto-revert-tail-truncate-mode`
+enabled.
+
+Add a function (example, below) to `auto-revert-tail-truncate-mode-hook` to 
control additional features in your tailed buffers;
+e.g., `truncate-lines`, controlling `so-long-mode` threshold, disabling spell 
checking, or enabling other minor modes for
+specific log-file formats (the visual features of which may require you to 
enable font-lock for those buffers).
+
+If you want this mode enabled for all *.log files, run the command
+`auto-revert-tail-mode-on-log-files` or add this to your `init.el` file.
+
+Refer to the source code or docstrings for details on user options.
+
+## Installation
+
+`autorevert-tail-truncate.el` is not yet part of Emacs (it will be submitted 
for consideration to be included in Emacs 31) and has not yet been published on 
ELPA.
+
+If you use Emacs 29.1+, use `package-vc-install`. In your `*scratch*` buffer, 
copy/paste or type the following, and run it via
+the command `eval-last-sexp`, which see:
+
+``` elisp
+(package-vc-install '(autorevert-tail-truncate :url 
"https://github.com/shipmints/autorevert-tail-truncate.el";))
+```
+
+Or, if you use Emacs 30+, uncomment the :vc stanza, below.
+
+``` elisp
+(use-package autorevert-tail-truncate
+  ;; :vc (
+  ;;   :url "https://github.com/shipmints/autorevert-tail-truncate.el";
+  ;;  :branch "master")
+  :config
+  (setq auto-revert-tail-truncate-max-lines 5000) ; default 5000
+  (setq auto-revert-tail-truncate-file-size-hint 64) ; default 64
+  (setq auto-revert-tail-truncate-immediately t) ; default t
+  (setq auto-revert-tail-truncate-verbose nil) ; default nil
+  (setq auto-revert-tail-truncate-immediately t) ; default t
+  (setq auto-revert-tail-truncate-read-only t) ; deault t
+  (setq auto-revert-tail-truncate-disable-undo t) ; default t
+  (setq auto-revert-tail-truncate-disable-font-lock t) ; default t
+
+  (defun my/auto-revert-tail-truncate-mode-hook ()
+"Custom `auto-revert-tail-truncate-mode' hook."
+(setq-local auto-revert-tail-truncate-max-lines 1)
+(setq-local truncate-lines t)
+(when (fboundp 'so-long-mode)
+  (setq-local so-long-threshold 25000))
+(when (eq my:spell-checker 'jinx)
+  (jinx-mode -1))
+(when (fboundp 'show-smartparens-mode)
+  (show-smartparens-mode -1)))
+  (add-hook 'auto-revert-tail-truncate-mode-hook 
#'my/auto-revert-tail-truncate-mode-hook)
+  ;; add auto-mode-alist entry for .log files to use auto-revert-tail-mode
+  (auto-revert-tail-mode-on-log-files))
+```
+
+## Coda
+
+I put this into the package because the earliest Emacs I can easily support is 
29.x. This will likely be altered if the package is
+published in ELPA and most certainly will be removed as a part of Emacs 31, if 
accepted.
+
+;; Package-Requires: ((emacs "29.1"))
+
+This is a new package, and though the author successfully uses it, your 
mileage may vary. The author does not used specialized
+log-file modes such as https://github.com/doublep/logview or 
https://github.com/emacsmirror/log4j-mode -- if you do, and find
+issues that you cannot resolve via your configuration, file an issue here.
diff --git a/autorevert-tail-truncate.el b/autorevert-tail-truncate.el
new file mode 100644
index 00..9104143628
--- /dev/null
+++ b/autorevert-tail-truncate.el
@@ -0,0 +1,219 @@
+;;; autorevert-tail-truncate.el -- Summary;: -*- mode: emacs-lisp; 
lexical-b

[elpa] externals/auth-source-xoauth2-plugin fc9775ea18 24/28: Update the short description in source

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit fc9775ea183630b0d72dd2b813cfc5a096de0f97
Author: Xiyue Deng 
Commit: Xiyue Deng 

Update the short description in source
---
 auth-source-xoauth2-plugin.el | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index b82cb1fab2..bb2d61692f 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -23,7 +23,14 @@
 
 ;;; Commentary:
 
-;; See README.org for an introduction and usages.
+;; An auth-source plugin to enable xoauth2 support.
+
+;; This package provides a global minor mode for enabling xoauth2 in
+;; auth-source.  Once adding information required for xoauth2 authentication in
+;; your auth-source file and enabling the global minor mode, one can
+;; authenticate through xoauth2 to supported services, e.g. Gmail, etc.
+
+;; See README.org for a more detailed introduction and usages.
 
 ;;; Code:
 



[elpa] externals/auth-source-xoauth2-plugin 1162d667e8 20/28: Add README.org with an introduction and usages

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 1162d667e83ad726e65d2685af76dbeea546b465
Author: Xiyue Deng 
Commit: Xiyue Deng 

Add README.org with an introduction and usages
---
 README.org | 88 ++
 1 file changed, 88 insertions(+)

diff --git a/README.org b/README.org
new file mode 100644
index 00..d233c06162
--- /dev/null
+++ b/README.org
@@ -0,0 +1,88 @@
+* Introduction
+
+This package provides a global minor mode for enabling support for
+xoauth2 authentication with auth-source.  OAuth 2.0, which stands for
+“Open Authorization”, is a standard designed to allow a website or
+application to access resources hosted by other web apps on behalf of
+a user.  The OAuth 2.0 Authorization Protocol Extensions (xoauth2)
+extend the OAuth 2.0 Authentication Protocol and the JSON Web Token
+(JWT) to enable server-to-server authentication.  More info please
+check out [[https://stackoverflow.com/a/76389679/2337550][this stackoverflow 
answer]].
+
+* Setup
+
+To set up, please put this file in the `load-path' of Emacs, and add
+the following lines in your Emacs configuration:
+
+#+BEGIN_SRC emacs-lisp
+  (require 'auth-source-xoauth2-plugin)
+  (auth-source-xoauth2-plugin-mode t)
+#+END_SRC
+
+or with use-package:
+
+#+BEGIN_SRC emacs-lisp
+  (use-package auth-source-xoauth2-plugin
+:custom
+(auth-source-xoauth2-plugin-mode t))
+#+END_SRC
+
+After enabling, smtpmail should be supported.  To enable this in Gnus
+nnimap, you should also set `(nnimap-authenticator xoauth2)' in the
+corresponding account settings in `gnus-secondary-select-methods' as
+the following:
+
+#+BEGIN_SRC emacs-lisp
+  (nnimap "account_name"
+  ...
+  (nnimap-authenticator xoauth2))
+#+END_SRC
+
+To disable, just toggle the minor mode off by calling `M-x
+auth-source-xoauth2-plugin-mode' again.
+
+auth-source uses the `secret' field in auth-source file as password
+for authentication, including xoauth2.  To decide which
+authentication method to use (e.g. plain password vs xoauth2), it
+inspects the `auth' field from the auth-source entry, and if the
+value is `xoauth2', it will try to gather data and get the access
+token for use of xoauth2 authentication; otherwise, it will fallback
+to the default authentication method.
+
+When xoauth2 authentication is enabled, it will try to get the
+following data from the auth-source entry: `auth-url', `token-url',
+`scope', `client-id', `client-secret', `redirect-uri', and optionally
+`state'.  An example Authinfo entry (in JSON format as
+~/.authinfo.json.gpg) for an Gmail account may look like below:
+
+#+BEGIN_SRC json
+  {
+"machine": "",
+"login": "",
+"port": "imaps",
+"auth": "xoauth2",
+"auth-url": "https://accounts.google.com/o/oauth2/auth";,
+"token-url": "https://accounts.google.com/o/oauth2/token";,
+"client-id": "",
+"client-secret": "",
+"redirect-uri": "https://oauth2.dance/";,
+"scope": "https://mail.google.com";
+  }
+#+END_SRC
+
+These information will be used by oauth2 to retrieve the access-token.
+This package uses an advice to switch the auth-source search result
+from the `password' to the `access-token' it got, which in turn will
+be used to construct the xoauth2 authentication string, currently in
+nnimap-login and smtpmail-try-auth-method.  To really enable xoauth2
+in smtpmail, it will add 'xoauth2 to 'smtpmail-auth-supported (if it
+is not already in the list) using `add-to-list' so that xoauth2 is
+tried first.
+
+** Notes
+
+Currently the auth-source requires the searched entry must have
+`secret' field set in the entry, which is not necessary when using
+xoauth2.  Therefore in the advice it temporarily disables checking
+for `:secret' if set and perform the search, and check the result
+before returning.



[elpa] externals/autorevert-tail-truncate 72e825b0be 09/10: defcustom group. defcustom versions. package version number "1.0 pre".

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit 72e825b0beace4d008030dd8edc1bcff0175eaca
Author: shipmints 
Commit: shipmints 

defcustom group. defcustom versions. package version number "1.0 pre".

"1.0 pre" causes version-to-list to parse as (1 0 -1) for ELPA. Per
Phil.
---
 autorevert-tail-truncate.el | 21 ++---
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/autorevert-tail-truncate.el b/autorevert-tail-truncate.el
index 33d83e81ae..dfcfbbbf7f 100644
--- a/autorevert-tail-truncate.el
+++ b/autorevert-tail-truncate.el
@@ -6,10 +6,12 @@
 ;; Maintainer: Stephane Marks 
 ;; Url: https://github.com/shipmints/autorevert-tail-truncate.el
 ;; Created: 2025-02-03
-;; Version: 1.0
+;; Version: 1.0 pre
 ;; Package-Requires: ((emacs "29.1"))
 ;; Keywords: convenience, tools, log files, autorevert
 
+;; This file is part of GNU Emacs.
+
 ;; 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
@@ -51,11 +53,17 @@
 
 (require 'autorevert)
 
+(defgroup auto-revert-tail-truncate nil
+  "auto-revert-tail your files with RAM control."
+  :prefix "auto-revert-tail-truncate-"
+  :group 'auto-revert
+  :group 'convenience
+  :group 'files)
+
 (defcustom auto-revert-tail-truncate-max-lines 5000
   "Truncate buffer to this maximum number of lines.
 If nil, truncation is disabled.  Bind this as a buffer-local variable to
 control the maximum number lines to retain for specific buffers."
-  :group 'auto-revert
   :type '(choice (const :tag "Disabled" nil) natnum)
   :version "29.1"
   :package-version "1.0")
@@ -64,7 +72,6 @@ control the maximum number lines to retain for specific 
buffers."
   "Bytes per line hint to `auto-revert-tail-truncate-file'.
 This is multiplied by `auto-revert-tail-truncate-max-lines' to compute
 the initial bytes to load."
-  :group 'auto-revert
   :type 'natnum
   :version "29.1"
   :package-version "1.0")
@@ -72,7 +79,6 @@ the initial bytes to load."
 (defcustom auto-revert-tail-truncate-revert-interval auto-revert-interval
   "Number of seconds between Auto-Revert Tail Truncate Mode file checks.
 The default value is `auto-revert-interval', which see."
-  :group 'auto-revert
   :type 'natnum
   :version "29.1"
   :package-version "1.0")
@@ -81,7 +87,6 @@ The default value is `auto-revert-interval', which see."
   "When nil, `auto-revert-tail-truncate-mode' does not generate messages.
 When non-nil, a message is generated whenever a buffer is reverted.
 The default value is `auto-revert-verbose', which see."
-  :group 'auto-revert
   :type 'boolean
   :version "29.1"
   :package-version "1.0")
@@ -90,35 +95,30 @@ The default value is `auto-revert-verbose', which see."
   "If non-nil, buffer is truncated when this mode is enabled.
 Set the maximum number of lines to retain in the buffer using the
 option `auto-revert-tail-truncate-max-lines', which see."
-  :group 'auto-revert
   :type 'boolean
   :version "29.1"
   :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-read-only t
   "If non-nil, the tailed buffer is set to be read only."
-  :group 'auto-revert
   :type 'boolean
   :version "29.1"
   :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-disable-undo t
   "If non-nil, the buffer's undo log is disabled to save memory."
-  :group 'auto-revert
   :type 'boolean
   :version "29.1"
   :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-disable-font-lock t
   "If non-nil, font-lock is disabled on the tailed buffer."
-  :group 'auto-revert
   :type 'boolean
   :version "29.1"
   :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-mode-text " TailTrunc"
   "Mode line string when `auto-revert-tail-truncate-mode' is active."
-  :group 'auto-revert
   :type 'string
   :version "29.1"
   :package-version "1.0")
@@ -137,7 +137,6 @@ buffer in which it is displayed.
 
 Customize `auto-revert-tail-mode-hook' to control features such as
 `truncate-lines' for the tailed buffer."
-  :group 'auto-revert
   :lighter auto-revert-tail-truncate-mode-text
   (if auto-revert-tail-truncate-mode
   (progn



[elpa] externals/consult c74ae61491: consult-buffer-filter: Add *Multiple Choice Help*

2025-02-07 Thread ELPA Syncer
branch: externals/consult
commit c74ae6149172e3429b844c22d67e02b01abea1e4
Author: Daniel Mendler 
Commit: Daniel Mendler 

consult-buffer-filter: Add *Multiple Choice Help*
---
 consult.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/consult.el b/consult.el
index f269194ef0..eb80eac0a7 100644
--- a/consult.el
+++ b/consult.el
@@ -214,6 +214,7 @@ for navigation commands like `consult-line'."
 (defcustom consult-buffer-filter
   '("\\` "
 "\\`\\*Completions\\*\\'"
+"\\`\\*Multiple Choice Help\\*\\'"
 "\\`\\*Flymake log\\*\\'"
 "\\`\\*Semantic SymRef\\*\\'"
 "\\`\\*vc\\*\\'"



[elpa] externals/auth-source-xoauth2-plugin 93a69c392a 27/28: Tag version 0.1

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 93a69c392a50b73d8d93ff486090a57dd2616e89
Author: Xiyue Deng 
Commit: Xiyue Deng 

Tag version 0.1
---
 auth-source-xoauth2-plugin.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 07c327adf3..37ab859394 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -3,7 +3,7 @@
 ;; Copyright (C) 2024-2025  Free Software Foundation, Inc.
 
 ;; Author: Xiyue Deng 
-;; Version: 0.1-git
+;; Version: 0.1
 ;; Package-Requires: ((emacs "28.1") (oauth2 "0.17"))
 
 ;; This file is not part of GNU Emacs.



[elpa] externals/auth-source-xoauth2-plugin cffa536205 14/28: Fix typo

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit cffa536205f2008c509dd496c522abe18aece688
Author: Xiyue Deng 
Commit: Xiyue Deng 

Fix typo
---
 auth-source-xoauth2-plugin.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index dd3290855a..b6dda3c806 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -108,7 +108,7 @@ expected that `token_url', `client_id', `client_secret', and
 (map-let ((:auth-url auth-url)
   (:token-url token-url)
   (:scope scope)
-  (:client-d client-id)
+  (:client-id client-id)
   (:client-secret client-secret)
   (:redirect-uri redirect-uri)
   (:state state))
@@ -132,7 +132,7 @@ expected that `token_url', `client_id', `client_secret', and
 (unless (and check-secret
  (not (plist-get auth-data :secret)))
   (auth-source-do-debug "Updating auth-source-search results.")
-  (push 'res auth-data)))
+  (push auth-data res)))
   res)))
 
 ;;;###autoload



[elpa] externals/auth-source-xoauth2-plugin cd0caa60cb 15/28: Make this plugin a global minor mode

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit cd0caa60cb52e7050123d2605c26371f6ec662bb
Author: Xiyue Deng 
Commit: Xiyue Deng 

Make this plugin a global minor mode

* One should toggle this minor mode to enable to disable the advice
for enabling xoauth2 support on auth-source.
---
 auth-source-xoauth2-plugin.el | 30 +++---
 1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index b6dda3c806..46580641e8 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -135,15 +135,39 @@ expected that `token_url', `client_id', `client_secret', 
and
   (push auth-data res)))
   res)))
 
-;;;###autoload
-(defun auth-source-xoauth2-plugin-enable ()
+(defvar auth-source-xoauth2-plugin--enabled-xoauth2-by-us nil
+  "Used for tracking whether xoauth2 in smtpmail-auth-supported is
+set by us.")
+
+(defun auth-source-xoauth2-plugin--enable ()
   "Enable auth-source-xoauth2-plugin."
   (unless (memq 'xoauth2 smtpmail-auth-supported)
-(push 'xoauth2 smtpmail-auth-supported))
+(push 'xoauth2 smtpmail-auth-supported)
+(setq auth-source-xoauth2-plugin--enabled-xoauth2-by-us t))
 
   (advice-add #'auth-source-search-backends :around
   #'auth-source-xoauth2-plugin--search-backends))
 
+(defun auth-source-xoauth2-plugin--disable ()
+  "Disable auth-source-xoauth2-plugin."
+  (when (and auth-source-xoauth2-plugin--enabled-xoauth2-by-us
+ (memq 'xoauth2 smtpmail-auth-supported))
+(delete 'xoauth2 smtpmail-auth-supported)
+(setq auth-source-xoauth2-plugin--enabled-xoauth2-by-us nil))
+
+  (advice-remove #'auth-source-search-backends
+ #'auth-source-xoauth2-plugin--search-backends))
+
+(define-minor-mode auth-source-xoauth2-plugin-mode
+  "Toggle auth-source-xoauth2-plugin-mode.
+Enable auth-source-xoauth2-plugin-mode to use xoauth2
+authentications for emails."
+  :lighter nil
+  :global t
+  (if auth-source-xoauth2-plugin-mode
+  (auth-source-xoauth2-plugin--enable)
+(auth-source-xoauth2-plugin--disable)))
+
 (provide 'auth-source-xoauth2-plugin)
 
 ;;; auth-source-xoauth2-plugin.el ends here



[elpa] externals/auth-source-xoauth2-plugin 27ba009d4f 10/28: Add more comments regarding oauth2 and xoauth2

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 27ba009d4f897af1fbc0f666ed80f13422c90906
Author: Xiyue Deng 
Commit: Xiyue Deng 

Add more comments regarding oauth2 and xoauth2

(Based on comments from
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72992#17.  Thanks Stefan
Kangas for the comments and suggestions!)
---
 auth-source-xoauth2-plugin.el | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index ad563eaeae..10dce5940c 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -24,7 +24,15 @@
 ;;; Commentary:
 
 ;; This package enables support for xoauth2 authentication with
-;; auth-source.  To set up, please put this file in the `load-path' of
+;; auth-source.  OAuth 2.0, which stands for “Open Authorization”, is a
+;; standard designed to allow a website or application to access
+;; resources hosted by other web apps on behalf of a user.  The OAuth
+;; 2.0 Authorization Protocol Extensions (xoauth2) extend the OAuth 2.0
+;; Authentication Protocol and the JSON Web Token (JWT) to enable
+;; server-to-server authentication.  More info please check out:
+;; https://stackoverflow.com/a/76389679/2337550
+
+;; To set up, please put this file in the `load-path' of
 ;; Emacs, and add the following lines in your Emacs configuration:
 
 ;; (require 'auth-source-xoauth2-plugin)



[elpa] externals/auth-source-xoauth2-plugin 5084327a34 08/28: Use `push' instead of `add-to-list'

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 5084327a3420a3a623d5e747b023a9cef8d4029b
Author: Xiyue Deng 
Commit: Xiyue Deng 

Use `push' instead of `add-to-list'

* `add-to-list' should not refer to a lexical variable.
* Push also avoids duplication check.

(Based on review at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72992#14.  Thanks Philip
Kaludercic for the review and suggestions!)
---
 auth-source-xoauth2-plugin.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 42530ec108..a09422e627 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -123,14 +123,14 @@ set along `host', `user', and `port' (note the 
snake_case)."
 (unless (and check-secret
  (not (plist-get auth-data :secret)))
   (auth-source-do-debug "Updating auth-source-search results.")
-  (add-to-list 'res auth-data t)))
+  (push 'res auth-data)))
   res)))
 
 ;;;###autoload
 (defun auth-source-xoauth2-plugin-enable ()
   "Enable auth-source-xoauth2-plugin."
   (unless (memq 'xoauth2 smtpmail-auth-supported)
-(add-to-list 'smtpmail-auth-supported 'xoauth2))
+(push 'smtpmail-auth-supported 'xoauth2))
 
   (advice-add 'auth-source-search-backends :around
   #'auth-source-xoauth2-plugin--search-backends))



[elpa] externals/autorevert-tail-truncate 1d8ac44671 08/10: Incorporate suggestions from Philip Kaludercic

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit 1d8ac4467164bee3330bc8b32685f58c3c190043
Author: shipmints 
Commit: shipmints 

Incorporate suggestions from Philip Kaludercic
---
 autorevert-tail-truncate.el | 51 +++--
 1 file changed, 35 insertions(+), 16 deletions(-)

diff --git a/autorevert-tail-truncate.el b/autorevert-tail-truncate.el
index ec6cc2cb02..33d83e81ae 100644
--- a/autorevert-tail-truncate.el
+++ b/autorevert-tail-truncate.el
@@ -1,4 +1,4 @@
-;;; autorevert-tail-truncate.el -- Summary;: -*- mode: emacs-lisp; 
lexical-binding: t; -*-
+;;; autorevert-tail-truncate.el --- auto-revert-tail your files with RAM 
control -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2025 Free Software Foundation, Inc.
 
@@ -56,54 +56,72 @@
 If nil, truncation is disabled.  Bind this as a buffer-local variable to
 control the maximum number lines to retain for specific buffers."
   :group 'auto-revert
-  :type 'natnum)
+  :type '(choice (const :tag "Disabled" nil) natnum)
+  :version "29.1"
+  :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-file-size-hint 64
   "Bytes per line hint to `auto-revert-tail-truncate-file'.
 This is multiplied by `auto-revert-tail-truncate-max-lines' to compute
 the initial bytes to load."
   :group 'auto-revert
-  :type 'natnum)
+  :type 'natnum
+  :version "29.1"
+  :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-revert-interval auto-revert-interval
   "Number of seconds between Auto-Revert Tail Truncate Mode file checks.
 The default value is `auto-revert-interval', which see."
   :group 'auto-revert
-  :type 'natnum)
+  :type 'natnum
+  :version "29.1"
+  :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-verbose auto-revert-verbose
   "When nil, `auto-revert-tail-truncate-mode' does not generate messages.
 When non-nil, a message is generated whenever a buffer is reverted.
 The default value is `auto-revert-verbose', which see."
   :group 'auto-revert
-  :type 'boolean)
+  :type 'boolean
+  :version "29.1"
+  :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-immediately t
   "If non-nil, buffer is truncated when this mode is enabled.
 Set the maximum number of lines to retain in the buffer using the
 option `auto-revert-tail-truncate-max-lines', which see."
   :group 'auto-revert
-  :type 'boolean)
+  :type 'boolean
+  :version "29.1"
+  :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-read-only t
   "If non-nil, the tailed buffer is set to be read only."
   :group 'auto-revert
-  :type 'boolean)
+  :type 'boolean
+  :version "29.1"
+  :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-disable-undo t
   "If non-nil, the buffer's undo log is disabled to save memory."
   :group 'auto-revert
-  :type 'boolean)
+  :type 'boolean
+  :version "29.1"
+  :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-disable-font-lock t
   "If non-nil, font-lock is disabled on the tailed buffer."
   :group 'auto-revert
-  :type 'boolean)
+  :type 'boolean
+  :version "29.1"
+  :package-version "1.0")
 
 (defcustom auto-revert-tail-truncate-mode-text " TailTrunc"
   "Mode line string when `auto-revert-tail-truncate-mode' is active."
   :group 'auto-revert
-  :type 'string)
+  :type 'string
+  :version "29.1"
+  :package-version "1.0")
 
 (defvar-local auto-revert-tail-truncate-mode nil
   "Non-nil when `auto-revert-tail-truncate-mode' is active.
@@ -119,15 +137,17 @@ buffer in which it is displayed.
 
 Customize `auto-revert-tail-mode-hook' to control features such as
 `truncate-lines' for the tailed buffer."
-  :group 'find-file
+  :group 'auto-revert
   :lighter auto-revert-tail-truncate-mode-text
   (if auto-revert-tail-truncate-mode
   (progn
 (setq-local auto-revert-tail-mode-text nil) ; this mode's lighter has 
priority
 (auto-revert-tail-mode)
-(make-local-variable 'auto-revert-interval)
-(make-local-variable 'auto-revert-timer)
-(setopt auto-revert-interval auto-revert-tail-truncate-revert-interval)
+(progn
+  (make-local-variable 'auto-revert-interval)
+  (make-local-variable 'auto-revert-timer)
+  (setq auto-revert-interval auto-revert-tail-truncate-revert-interval)
+  (auto-revert-set-timer))
 (setq-local auto-revert-verbose auto-revert-tail-truncate-verbose)
 (when auto-revert-tail-truncate-read-only
   (read-only-mode))
@@ -136,8 +156,7 @@ Customize `auto-revert-tail-mode-hook' to control features 
such as
 (when auto-revert-tail-truncate-disable-font-lock
   (font-lock-mode -1))
 (when (version< emacs-version "31")
-  (make-local-variable 'auto-revert-check-vc-info)
-  (setq auto-revert-check-vc-info nil))
+  (setq-local auto-revert-check-vc-info nil))
 (goto-char (point-max))
 (when auto-revert-tail-truncate-immediately
   (auto-revert--tail-truncate))



[elpa] externals/autorevert-tail-truncate 70653777a5 06/10: Remove auto-revert-tail-mode-on-log-files in favor of documentation

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit 70653777a521aa43ff52bd94117de3bdc282d459
Author: shipmints 
Commit: shipmints 

Remove auto-revert-tail-mode-on-log-files in favor of documentation
---
 README.md   | 20 
 autorevert-tail-truncate.el |  6 --
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/README.md b/README.md
index 804e477ec6..cc344a26bc 100644
--- a/README.md
+++ b/README.md
@@ -64,6 +64,26 @@ Or, if you use Emacs 30+, uncomment the :vc stanza, below.
   (auto-revert-tail-mode-on-log-files))
 ```
 
+To invoke the mode interactively, use `M-x auto-revert-tail-truncate-mode`.
+
+To enable `auto-revert-tail-truncate-mode` automatically when viewing files of 
certain modes, add something like the following to their major-mode hooks.
+
+``` elisp
+(defun my/fundamental-mode-hook ()
+  (auto-revert-tail-truncate-mode))
+(add-hook 'fundamental-mode-hook #'my/fundamental-mode-hook)
+```
+
+If you want to enable `auto-revert-tail-truncate-mode` only for buffers with 
file names that have a .log suffix, but not others that share the same major 
mode, consider the following.
+
+``` elisp
+(defun my/fundamental-mode-hook ()
+  (when (and buffer-file-name
+ (string-match-p "\\.log\\'" buffer-file-name))
+(auto-revert-tail-truncate-mode)))
+(add-hook 'fundamental-mode-hook #'my/fundamental-mode-hook)
+```
+
 ## Coda
 
 I put this into the package because the earliest Emacs I can easily support is 
29.x. This will likely be altered if the package is
diff --git a/autorevert-tail-truncate.el b/autorevert-tail-truncate.el
index 95c8c0f16c..ec6cc2cb02 100644
--- a/autorevert-tail-truncate.el
+++ b/autorevert-tail-truncate.el
@@ -192,12 +192,6 @@ Invoke programmatically specifying FILENAME."
   (auto-revert-tail-truncate-mode))
 (pop-to-buffer buf)))
 
-;;;###autoload
-(defun auto-revert-tail-mode-on-log-files ()
-  "Enable `auto-revert-tail-truncate-mode' for all *.log files."
-  (interactive)
-  (add-to-list 'auto-mode-alist '("\\.log\\'" . 
auto-revert-tail-truncate-mode)))
-
 (provide 'autorevert-tail-truncate)
 
 ;;; autorevert-tail-truncate.el ends here



[elpa] externals/auth-source-xoauth2-plugin 5cf0cc0709 04/28: Use -do-debug instead of -do-trivia for logs without token data

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 5cf0cc0709e9d50f6a10eaeb1c53afb71be5cb4a
Author: Xiyue Deng 
Commit: Xiyue Deng 

Use -do-debug instead of -do-trivia for logs without token data

(Based on review at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72992#14.  Thanks Philip
Kaludercic for the review and suggestions!)
---
 auth-source-xoauth2-plugin.el | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 037ad6a67f..36cdf15d07 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -103,13 +103,14 @@ set along `host', `user', and `port' (note the 
snake_case)."
   (client-secret (plist-get auth-data :client-secret))
   (redirect-uri (plist-get auth-data :redirect-uri))
   (state (plist-get auth-data :state)))
-  (auth-source-do-trivia "Using oauth2 to auth and store token...")
+  (auth-source-do-debug "Using oauth2 to auth and store token...")
   (let ((token (oauth2-auth-and-store
 auth-url token-url scope client-id client-secret
 redirect-uri state)))
 (auth-source-do-trivia "oauth2 token: %s" (pp-to-string token))
-(auth-source-do-trivia "Refreshing token...")
+(auth-source-do-debug "Refreshing token...")
 (oauth2-refresh-access token)
+(auth-source-do-debug "Refresh successful.")
 (auth-source-do-trivia "oauth2 token after refresh: %s"
(pp-to-string token))
 (let ((access-token (oauth2-token-access-token token)))
@@ -119,7 +120,7 @@ set along `host', `user', and `port' (note the snake_case)."
 
 (unless (and check-secret
  (not (plist-get auth-data :secret)))
-  (auth-source-do-trivia "Updating auth-source-search results.")
+  (auth-source-do-debug "Updating auth-source-search results.")
   (add-to-list 'res auth-data t)))
   res)))
 



[elpa] externals/auth-source-xoauth2-plugin 466d4a057a 19/28: Typo

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 466d4a057a3e7ec1a400537c95344c384e74b9af
Author: Xiyue Deng 
Commit: Xiyue Deng 

Typo
---
 auth-source-xoauth2-plugin.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 6ab756ead1..16316a010a 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -54,7 +54,7 @@
 ;; for authentication, including xoauth2.  To decide which
 ;; authentication method to use (e.g. plain password vs xoauth2), it
 ;; inspects the `auth' field from the auth-source entry, and if the
-;; value is `xaouth2', it will try to gather data and get the access
+;; value is `xoauth2', it will try to gather data and get the access
 ;; token for use of xoauth2 authentication; otherwise, it will fallback
 ;; to the default authentication method.
 



[elpa] externals/auth-source-xoauth2-plugin 98d941394d 26/28: Add comparison with auth-source-xoauth2

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 98d941394dc62243fd8a58b995ec6cd789bcdcb6
Author: Xiyue Deng 
Commit: Xiyue Deng 

Add comparison with auth-source-xoauth2

- With minor text revision and small format tweaks.
---
 README.org | 22 +++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/README.org b/README.org
index ca84fe7e67..08f6232ddd 100644
--- a/README.org
+++ b/README.org
@@ -58,7 +58,9 @@ When xoauth2 authentication is enabled, it will try to get the
 following data from the auth-source entry: `auth-url', `token-url',
 `scope', `client-id', `client-secret', `redirect-uri', and optionally
 `state'.  An example Authinfo entry (in JSON format as
-~/.authinfo.json.gpg) for an Gmail account may look like below:
+`~/.authinfo.json.gpg') for an Gmail account may look like below (you
+need to fill in the data between `<' and `>' based on your account
+settings):
 
 #+BEGIN_SRC js
   {
@@ -80,14 +82,28 @@ This package uses an advice to switch the auth-source 
search result
 from the `password' to the `access-token' it got, which in turn will
 be used to construct the xoauth2 authentication string, currently in
 nnimap-login and smtpmail-try-auth-method.  To really enable xoauth2
-in smtpmail, it will add 'xoauth2 to 'smtpmail-auth-supported (if it
+in smtpmail, it will add \'xoauth2 to \'smtpmail-auth-supported (if it
 is not already in the list) using `add-to-list' so that xoauth2 is
 tried first.
 
+** Comparison with other xoauth2 implementations
+
+*** [[https://github.com/ccrusius/auth-source-xoauth2][auth-source-xoauth2]]
+
+This plugin takes inspirations from auth-source-xoauth2 to advice the
+auth-source-search backends to add xoauth2 access-token for
+authentication.  The implementation is independent and reuses many
+existing facilities in `auth-source.el', where auth-source-xoauth2
+reimplemented most of the required functions itself.
+
+`auth-source-xoauth2-plugin' also makes use of `oauth2.el' and its
+storage for storing temporary/ephemeral data tokens, where
+`auth-source-xoauth2' implemented its own storage.
+
 ** Notes
 
 Currently the auth-source requires the searched entry must have
 `secret' field set in the entry, which is not necessary when using
 xoauth2.  Therefore in the advice it temporarily disables checking
-for `:secret' if set and perform the search, and check the result
+for ~:secret~ if set and perform the search, and check the result
 before returning.



[elpa] externals/autorevert-tail-truncate c7462550cc 05/10: Remove auto-revert-tail-truncate-check-vc-info

2025-02-07 Thread ELPA Syncer
branch: externals/autorevert-tail-truncate
commit c7462550cc31c4d8eae7999fcc822abe33b0243b
Author: shipmints 
Commit: shipmints 

Remove auto-revert-tail-truncate-check-vc-info

Bind auto-revert-check-vc-info to nil for Emacs < 31.
---
 autorevert-tail-truncate.el | 11 +++
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/autorevert-tail-truncate.el b/autorevert-tail-truncate.el
index 37aeb4a7cc..95c8c0f16c 100644
--- a/autorevert-tail-truncate.el
+++ b/autorevert-tail-truncate.el
@@ -100,12 +100,6 @@ option `auto-revert-tail-truncate-max-lines', which see."
   :group 'auto-revert
   :type 'boolean)
 
-(defcustom auto-revert-tail-truncate-check-vc-info auto-revert-check-vc-info
-  "If non-nil `auto-revert-tail-truncate-mode' updates vc info.
-The default value is `auto-revert-check-vc-info', which see."
-  :group 'auto-revert
-  :type 'boolean)
-
 (defcustom auto-revert-tail-truncate-mode-text " TailTrunc"
   "Mode line string when `auto-revert-tail-truncate-mode' is active."
   :group 'auto-revert
@@ -141,8 +135,9 @@ Customize `auto-revert-tail-mode-hook' to control features 
such as
   (buffer-disable-undo))
 (when auto-revert-tail-truncate-disable-font-lock
   (font-lock-mode -1))
-(make-local-variable 'auto-revert-check-vc-info)
-(setq auto-revert-check-vc-info 
auto-revert-tail-truncate-check-vc-info)
+(when (version< emacs-version "31")
+  (make-local-variable 'auto-revert-check-vc-info)
+  (setq auto-revert-check-vc-info nil))
 (goto-char (point-max))
 (when auto-revert-tail-truncate-immediately
   (auto-revert--tail-truncate))



[elpa] externals/auth-source-xoauth2-plugin 991ef1751a 28/28: Update auth-source json example to be part of a list

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 991ef1751a31fb0157ccc16245903bf1743615ed
Author: Xiyue Deng 
Commit: Xiyue Deng 

Update auth-source json example to be part of a list
---
 README.org | 28 
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/README.org b/README.org
index 08f6232ddd..e98dd76a5d 100644
--- a/README.org
+++ b/README.org
@@ -63,18 +63,22 @@ need to fill in the data between `<' and `>' based on your 
account
 settings):
 
 #+BEGIN_SRC js
-  {
-"machine": "",
-"login": "",
-"port": "imaps",
-"auth": "xoauth2",
-"auth-url": "https://accounts.google.com/o/oauth2/auth";,
-"token-url": "https://accounts.google.com/o/oauth2/token";,
-"client-id": "",
-"client-secret": "",
-"redirect-uri": "https://oauth2.dance/";,
-"scope": "https://mail.google.com";
-  }
+  [
+...
+{
+  "machine": "",
+  "login": "",
+  "port": "imaps",
+  "auth": "xoauth2",
+  "auth-url": "https://accounts.google.com/o/oauth2/auth";,
+  "token-url": "https://accounts.google.com/o/oauth2/token";,
+  "client-id": "",
+  "client-secret": "",
+  "redirect-uri": "https://oauth2.dance/";,
+  "scope": "https://mail.google.com";
+},
+...
+  ]
 #+END_SRC
 
 These information will be used by oauth2 to retrieve the access-token.



[elpa] externals/auth-source-xoauth2-plugin 9f7a58daee 16/28: Update documentation for the global minor mode accordingly

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 9f7a58daee150d9d69754f74718711e3e4de052a
Author: Xiyue Deng 
Commit: Xiyue Deng 

Update documentation for the global minor mode accordingly
---
 auth-source-xoauth2-plugin.el | 30 --
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 46580641e8..cdcc9e7ee7 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -23,30 +23,32 @@
 
 ;;; Commentary:
 
-;; This package enables support for xoauth2 authentication with
-;; auth-source.  OAuth 2.0, which stands for “Open Authorization”, is a
-;; standard designed to allow a website or application to access
-;; resources hosted by other web apps on behalf of a user.  The OAuth
-;; 2.0 Authorization Protocol Extensions (xoauth2) extend the OAuth 2.0
-;; Authentication Protocol and the JSON Web Token (JWT) to enable
-;; server-to-server authentication.  More info please check out:
-;; https://stackoverflow.com/a/76389679/2337550
-
-;; To set up, please put this file in the `load-path' of
-;; Emacs, and add the following lines in your Emacs configuration:
+;; This package provides a global minor mode for enabling support for
+;; xoauth2 authentication with auth-source.  OAuth 2.0, which stands for
+;; “Open Authorization”, is a standard designed to allow a website or
+;; application to access resources hosted by other web apps on behalf of
+;; a user.  The OAuth 2.0 Authorization Protocol Extensions (xoauth2)
+;; extend the OAuth 2.0 Authentication Protocol and the JSON Web Token
+;; (JWT) to enable server-to-server authentication.  More info please
+;; check out: https://stackoverflow.com/a/76389679/2337550
+
+;; To set up, please put this file in the `load-path' of Emacs, and add
+;; the following lines in your Emacs configuration:
 
 ;; (require 'auth-source-xoauth2-plugin)
-;; (auth-source-xoauth2-plugin-enable)
+;; (auth-source-xoauth2-plugin-mode t)
 
 ;; or with use-package:
 
 ;; (use-package auth-source-xoauth2-plugin
 ;;   :config
-;;   (auth-source-xoauth2-plugin-enable))
+;;   (auth-source-xoauth2-plugin-mode t))
 
 ;; After enabling, smtpmail should be supported.  To enable this in Gnus
 ;; nnimap, you should also set `(nnimap-authenticator xoauth2)' in the
-;; corresponding account settings in `gnus-secondary-select-methods'
+;; corresponding account settings in `gnus-secondary-select-methods'.
+;; To disable, just toggle the minor mode off by calling `M-x
+;; auth-source-xoauth2-plugin-mode' again.
 
 ;; auth-source uses the `secret' field in auth-source file as password
 ;; for authentication, including xoauth2.  To decide which



[elpa] externals/auth-source-xoauth2-plugin c0e9c431e1 07/28: Don't rely on the side effect of plist-put

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit c0e9c431e17a6d7c359685382f29fe2fa5d3ba50
Author: Xiyue Deng 
Commit: Xiyue Deng 

Don't rely on the side effect of plist-put

* Use setq to reassign the plist.

(Based on review at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72992#14.  Thanks Philip
Kaludercic for the review and suggestions!)
---
 auth-source-xoauth2-plugin.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 8a4e6ec990..42530ec108 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -117,7 +117,8 @@ set along `host', `user', and `port' (note the snake_case)."
 (let ((access-token (oauth2-token-access-token token)))
   (auth-source-do-trivia
"Updating :secret with access-token: %s" access-token)
-  (plist-put auth-data :secret access-token))
+  (setq auth-data
+(plist-put auth-data :secret access-token)))
 
 (unless (and check-secret
  (not (plist-get auth-data :secret)))



[elpa] externals/auth-source-xoauth2-plugin 4ace7b0628 11/28: Fix wrong usage of push

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit 4ace7b06286edc5ad13c9473791693ae62117312
Author: Xiyue Deng 
Commit: Xiyue Deng 

Fix wrong usage of push
---
 auth-source-xoauth2-plugin.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index 10dce5940c..63e89ace19 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -138,7 +138,7 @@ set along `host', `user', and `port' (note the snake_case)."
 (defun auth-source-xoauth2-plugin-enable ()
   "Enable auth-source-xoauth2-plugin."
   (unless (memq 'xoauth2 smtpmail-auth-supported)
-(push 'smtpmail-auth-supported 'xoauth2))
+(push 'xoauth2 smtpmail-auth-supported))
 
   (advice-add #'auth-source-search-backends :around
   #'auth-source-xoauth2-plugin--search-backends))



[elpa] externals/auth-source-xoauth2-plugin d1014242e8 23/28: Add title and date in README.org

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit d1014242e8c9cedae26fb2766eae895230ab4845
Author: Xiyue Deng 
Commit: Xiyue Deng 

Add title and date in README.org
---
 README.org | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/README.org b/README.org
index b59bdf6ba5..ca84fe7e67 100644
--- a/README.org
+++ b/README.org
@@ -1,3 +1,6 @@
+#+TITLE: Auth-source xoauth2 plugin
+#+DATE: 2024-11-08
+
 * Introduction
 
 This package provides a global minor mode for enabling support for



[elpa] externals/auth-source-xoauth2-plugin a9bb9b32d5 17/28: Incorporate suggestions from Philip Kaludercic

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit a9bb9b32d5b706b0c8c385d2ccc3cb255f2dc2d7
Author: Xiyue Deng 
Commit: Xiyue Deng 

Incorporate suggestions from Philip Kaludercic

* Use `:custom' in use-package example. (Same effect as `:config')
* Don't need to repeat variables that matches the key in `map-let'.
* Refine docstring for
`auth-source-xoauth2-plugin--enabled-xoauth2-by-us'.
* Prefer `delq' over `delete' for symbols.
* Add autoload cookie to the minor mode.
* Drop unnecessary `:lighter nil'.

Thanks Philip for the suggestions!
---
 auth-source-xoauth2-plugin.el | 23 +++
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index cdcc9e7ee7..099831a92d 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -41,7 +41,7 @@
 ;; or with use-package:
 
 ;; (use-package auth-source-xoauth2-plugin
-;;   :config
+;;   :custom
 ;;   (auth-source-xoauth2-plugin-mode t))
 
 ;; After enabling, smtpmail should be supported.  To enable this in Gnus
@@ -107,13 +107,13 @@ expected that `token_url', `client_id', `client_secret', 
and
   (when (equal auth "xoauth2")
 (auth-source-do-debug
  ":auth set to `xoauth2'.  Will get access token.")
-(map-let ((:auth-url auth-url)
-  (:token-url token-url)
-  (:scope scope)
-  (:client-id client-id)
-  (:client-secret client-secret)
-  (:redirect-uri redirect-uri)
-  (:state state))
+(map-let (:auth-url
+  :token-url
+  :scope
+  :client-id
+  :client-secret
+  :redirect-uri
+  :state)
 auth-data
   (auth-source-do-debug "Using oauth2 to auth and store token...")
   (let ((token (oauth2-auth-and-store
@@ -138,8 +138,7 @@ expected that `token_url', `client_id', `client_secret', and
   res)))
 
 (defvar auth-source-xoauth2-plugin--enabled-xoauth2-by-us nil
-  "Used for tracking whether xoauth2 in smtpmail-auth-supported is
-set by us.")
+  "Non-nil means `smtpmail-auth-supported' was set by us.")
 
 (defun auth-source-xoauth2-plugin--enable ()
   "Enable auth-source-xoauth2-plugin."
@@ -154,17 +153,17 @@ set by us.")
   "Disable auth-source-xoauth2-plugin."
   (when (and auth-source-xoauth2-plugin--enabled-xoauth2-by-us
  (memq 'xoauth2 smtpmail-auth-supported))
-(delete 'xoauth2 smtpmail-auth-supported)
+(setq smtpmail-auth-supported (delq 'xoauth2 smtpmail-auth-supported))
 (setq auth-source-xoauth2-plugin--enabled-xoauth2-by-us nil))
 
   (advice-remove #'auth-source-search-backends
  #'auth-source-xoauth2-plugin--search-backends))
 
+;;;###autoload
 (define-minor-mode auth-source-xoauth2-plugin-mode
   "Toggle auth-source-xoauth2-plugin-mode.
 Enable auth-source-xoauth2-plugin-mode to use xoauth2
 authentications for emails."
-  :lighter nil
   :global t
   (if auth-source-xoauth2-plugin-mode
   (auth-source-xoauth2-plugin--enable)



[elpa] externals/auth-source-xoauth2-plugin c9a6778dba 13/28: Simplified equal check

2025-02-07 Thread ELPA Syncer
branch: externals/auth-source-xoauth2-plugin
commit c9a6778dba989da544e8970ffa7f0d4a09837eff
Author: Xiyue Deng 
Commit: Xiyue Deng 

Simplified equal check
---
 auth-source-xoauth2-plugin.el | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/auth-source-xoauth2-plugin.el b/auth-source-xoauth2-plugin.el
index b0baab7212..dd3290855a 100644
--- a/auth-source-xoauth2-plugin.el
+++ b/auth-source-xoauth2-plugin.el
@@ -102,8 +102,7 @@ expected that `token_url', `client_id', `client_secret', and
   (dolist (auth-data orig-res)
 (auth-source-do-trivia "Matched auth data: %s" (pp-to-string 
auth-data))
 (let ((auth (plist-get auth-data :auth)))
-  (when (and auth
- (equal auth "xoauth2"))
+  (when (equal auth "xoauth2")
 (auth-source-do-debug
  ":auth set to `xoauth2'.  Will get access token.")
 (map-let ((:auth-url auth-url)



[nongnu] main 31eac8bb13: * elpa-packages (helm-core): Make it as "subpackage" of `helm`

2025-02-07 Thread Stefan Monnier via
branch: main
commit 31eac8bb1373a3b42cc80a329b28d25c56e59e20
Author: Stefan Monnier 
Commit: Stefan Monnier 

* elpa-packages (helm-core): Make it as "subpackage" of `helm`
---
 elpa-packages | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/elpa-packages b/elpa-packages
index 174667e38b..80df6f597d 100644
--- a/elpa-packages
+++ b/elpa-packages
@@ -389,7 +389,7 @@
   :ignored-files ("images" "Cask" "Makefile" "emacs-helm.sh" "helm-core.el" 
"helm.el"
  "helm-lib.el" "helm-source.el" "helm-multi-match.el"))
 
- (helm-core:url "https://github.com/emacs-helm/helm";
+ (helm-core:url helm
   :ignored-files ("images" "Cask" "Makefile" "emacs-helm.sh" "helm-adaptive.el"
  "helm-bookmark.el" "helm-buffers.el" "helm-color.el" 
"helm-comint.el"
  "helm-command.el" "helm-config.el" "helm-dabbrev.el" 
"helm-easymenu.el"



[nongnu] branch elpa/helm-core deleted (was 3f46171208)

2025-02-07 Thread Stefan Monnier via
monnier pushed a change to branch elpa/helm-core.

   was  3f46171208 Merge pull request #2706 from 
pkryger/package-vc-affixations

The revisions that were on this branch are still contained in
other references; therefore, this change does not discard any commits
from the repository.



[elpa] externals/colorful-mode 2032b8e5bb: Refactorize and clarify code.

2025-02-07 Thread ELPA Syncer
branch: externals/colorful-mode
commit 2032b8e5bbe61039bfc9b3668bb60f1067c4c5df
Author: Elijah Gabe P. 
Commit: Elijah Gabe P. 

Refactorize and clarify code.

* colorful-mode.el (colorful--find-overlay): New internal function.
(colorful--delete-overlay): Moved.
(colorful-convert-and-change-color, colorful-convert-and-copy-color)
(colorful--change-color, colorful--colorize-match, colorful--colorize)
(colorful-hex-font-lock-keywords): Add comments.
---
 colorful-mode.el | 126 +--
 1 file changed, 76 insertions(+), 50 deletions(-)

diff --git a/colorful-mode.el b/colorful-mode.el
index 24dfecc9eb..bc34bb7378 100644
--- a/colorful-mode.el
+++ b/colorful-mode.el
@@ -361,43 +361,56 @@ DIGIT specifies which how much digits per component must 
have return value."
   (apply #'color-rgb-to-hex color)
 (cdr (assoc-string name colorful-html-colors-alist
 
-; User Interactive Functions
+; Overlay functions
+
+(defun colorful--find-overlay ()
+  "Return non-nil if colorful overlay is found at point."
+  (catch 'val
+(dolist (ov (overlays-at (point)))
+  (if (overlay-get ov 'colorful--overlay)
+  (throw 'val ov)
+
+(defun colorful--delete-overlay (overlay &rest _)
+  "Helper function for delete OVERLAY."
+  (delete-overlay overlay))
+
+
+ User Interactive Functions
 
 ;;;###autoload
 (defun colorful-convert-and-change-color ()
   "Convert color to a valid format and replace color at current cursor 
position."
   (interactive "*")
-  (if-let* ((colorful-ov (catch 'val
-   (dolist (ov (overlays-at (point)))
- (if (overlay-get ov 'colorful--overlay)
- (throw 'val ov)
+  (if-let* ((colorful-ov (colorful--find-overlay)) ; Find colorful overlay tag 
at point/cursor.
+;; Start prompt for color change
 (result (colorful--change-color colorful-ov "Change '%s' to: "))
-(range (cdr result))
-(text (car result)))
+(range (cdr result)) ; Get the positions where it should be 
replaced.
+(new-color (car result)))
+  ;; Replace Color at point.
   (save-excursion
 (apply #'delete-region range)
-(insert text))
+(insert new-color))
+;; Otherwise throw error.
 (user-error "No color found")))
 
 ;;;###autoload
 (defun colorful-convert-and-copy-color ()
   "Convert color to a valid format and copy it at current cursor position."
   (interactive)
-  (if-let* ((colorful-ov (catch 'val
-   (dolist (ov (overlays-at (point)))
- (if (overlay-get ov 'colorful--overlay)
- (throw 'val ov)
+  (if-let* ((colorful-ov (colorful--find-overlay)) ; Find colorful overlay tag 
at point/cursor.
+;; Start prompt for color change, just get the color to replace 
from the list.
 (result (car (colorful--change-color colorful-ov "Copy '%s' as: 
")))
-(color (if (color-defined-p result)
-   (propertize result 'face
-   `(:background
- ,result
- :foreground
- ,(color-name-to-rgb result)))
- result))
-(text (format "`%s' copied." color)))
+;; Propertize text for message.
+(color (propertize result 'face
+   `(:background
+ ,result
+ :foreground
+ ,(color-name-to-rgb result
+(msg-text (format "`%s' copied." color)))
+  ;; Copy color and notify to user it's done
   (progn (kill-new color)
- (message text))
+ (message msg-text))
+;; Otherwise throw error.
 (user-error "No color found")))
 
 ;;;###autoload
@@ -416,39 +429,44 @@ DIGIT specifies which how much digits per component must 
have return value."
 
 ; Coloring functions
 
-(defun colorful--change-color (ov &optional prompt color beg end)
+(defun colorful--change-color (ov prompt &optional color beg end)
   "Return COLOR as other color format.
-This return a list which contain the text to be replaced,
-beginning and end where should be inserted.
-COLOR, BEG, and END are only used as internal values, not intended to
-be used externally.  OV must be an overlay.
-PROMPT must be a string with 1 format control (generally a string argument)."
-  (let* ((beg (or beg (overlay-start ov)))
+Find color to change from colorful overlay OV at point and return a list
+which contain the color to replace, the beginning and end positions where
+should be inserted.
+
+PROMPT must be a string with 1 format control (generally a string argument).
+
+COLOR, BEG, and END are only used for recursive purposes

[nongnu] elpa/gptel 7ff67c188a 1/3: gptel-transient: Improve directive/system message editing (#616)

2025-02-07 Thread ELPA Syncer
branch: elpa/gptel
commit 7ff67c188ae061a71146a987cfe24818985c91fd
Author: Henrik Ahlgren 
Commit: GitHub 

gptel-transient: Improve directive/system message editing (#616)

* gptel-transient.el (gptel--edit-directive): Enable visual-line-mode.
---
 gptel-transient.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gptel-transient.el b/gptel-transient.el
index 10c83fd704..bf7105fb5c 100644
--- a/gptel-transient.el
+++ b/gptel-transient.el
@@ -1366,7 +1366,8 @@ it is run after exiting the edit."
   ;; If it's a list, insert only the system message part
   (insert (car-safe (gptel--parse-directive directive 'raw)))
   (push-mark nil 'nomsg))
-(activate-mark))
+(activate-mark)
+   (visual-line-mode 1))
   (display-buffer (current-buffer)
   `((display-buffer-below-selected)
 (body-function . ,#'select-window)



[nongnu] elpa/gptel updated (cc53a81c1b -> 4ab198a904)

2025-02-07 Thread ELPA Syncer
elpasync pushed a change to branch elpa/gptel.

  from  cc53a81c1b gptel-transient: unmark before editing crowdsourced 
prompt
   new  7ff67c188a gptel-transient: Improve directive/system message 
editing (#616)
   new  3f64c6def4 gptel-context: Make gptel-context-remove-all interactive 
(#587)
   new  4ab198a904 gptel: Change buffer parser property-search method


Summary of changes:
 gptel-anthropic.el | 51 +++
 gptel-context.el   | 24 
 gptel-gemini.el| 49 +++--
 gptel-ollama.el| 47 ++-
 gptel-openai.el| 53 +
 gptel-transient.el |  8 
 6 files changed, 113 insertions(+), 119 deletions(-)



[nongnu] elpa/gptel 3f64c6def4 2/3: gptel-context: Make gptel-context-remove-all interactive (#587)

2025-02-07 Thread ELPA Syncer
branch: elpa/gptel
commit 3f64c6def44f49dc8cd3a6bb143f0b54a8568225
Author: Karthik Chikmagalur 
Commit: Karthik Chikmagalur 

gptel-context: Make gptel-context-remove-all interactive (#587)

* gptel-context.el (gptel-context-remove-all): Make interactive,
and message the user when called interactively.

* gptel-transient.el (gptel--infix-context-remove-all): Simplify
the context-remove-all menu item.
---
 gptel-context.el   | 24 
 gptel-transient.el |  5 ++---
 2 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/gptel-context.el b/gptel-context.el
index acdc7ca02b..24a2bbea22 100644
--- a/gptel-context.el
+++ b/gptel-context.el
@@ -256,14 +256,22 @@ If CONTEXT is a directory, recursively removes all files 
in it."
 (when-let ((ctx (gptel-context--at-point)))
   (delete-overlay ctx)
 
-(defun gptel-context-remove-all ()
-  "Remove all gptel context."
-  (cl-loop
-   for (source . ovs) in gptel-context--alist
-   if (bufferp source) do   ;Buffers and buffer regions
-   (mapc #'gptel-context-remove ovs)
-   else do (gptel-context-remove source) ;files or other types
-   finally do (setq gptel-context--alist nil)))
+(defun gptel-context-remove-all (&optional verbose)
+  "Remove all gptel context.
+
+If VERBOSE is non-nil, ask for confirmation and message
+afterwards."
+  (interactive (list t))
+  (if (null gptel-context--alist)
+  (when verbose (message "No gptel context sources to remove."))
+(when (or (not verbose) (y-or-n-p "Remove all context? "))
+  (cl-loop
+   for (source . ovs) in gptel-context--alist
+   if (bufferp source) do   ;Buffers and buffer regions
+   (mapc #'gptel-context-remove ovs)
+   else do (gptel-context-remove source) ;files or other types
+   finally do (setq gptel-context--alist nil)))
+(when verbose (message "Removed all gptel context sources."
 
 (defun gptel-context--make-overlay (start end &optional advance)
   "Highlight the region from START to END.
diff --git a/gptel-transient.el b/gptel-transient.el
index bf7105fb5c..c3f04462d6 100644
--- a/gptel-transient.el
+++ b/gptel-transient.el
@@ -929,9 +929,8 @@ supports.  See `gptel-track-media' for more information."
   :key "-d"
   :description "Remove all"
   (interactive)
-  (when (y-or-n-p "Remove all context? ")
-(gptel-context-remove-all)
-(transient-setup)))
+  (gptel-context-remove-all t)
+  (transient-setup))
 
 ;; ** Infix for additional directive
 



[nongnu] elpa/gptel 4ab198a904 3/3: gptel: Change buffer parser property-search method

2025-02-07 Thread ELPA Syncer
branch: elpa/gptel
commit 4ab198a904f1706a8daede1145386db4dc960aa1
Author: Karthik Chikmagalur 
Commit: Karthik Chikmagalur 

gptel: Change buffer parser property-search method

Parse the buffer using `previous-single-property-change' instead
of `text-property-search-backward'.  This is for compatibility
with overlay-based response bounds tracking.  In the future, we
want to be able to use both overlays and text-properties to track
responses since they can compensate for each other's weaknesses.

Specifically, overlays handle insertions in the middle of response
regions correctly, but are fragile under text deletion.  Text
properties are robust but cannot "swallow" changes to regions
consistently without adding to expensive hooks like
`yank-transform-functions' and `after-change-functions'.

* gptel-openai.el (gptel--parse-buffer): Above described changes.

* gptel-ollama.el (gptel--parse-buffer): Above described changes.

* gptel-gemini.el (gptel--parse-buffer): Above described changes.

* gptel-anthropic.el (gptel--parse-buffer): Above described
changes.
---
 gptel-anthropic.el | 51 +++
 gptel-gemini.el| 49 +++--
 gptel-ollama.el| 47 ++-
 gptel-openai.el| 53 +
 4 files changed, 93 insertions(+), 107 deletions(-)

diff --git a/gptel-anthropic.el b/gptel-anthropic.el
index 50842e8c06..bc610929f3 100644
--- a/gptel-anthropic.el
+++ b/gptel-anthropic.el
@@ -269,42 +269,37 @@ TOOL-USE is a list of plists containing tool names, 
arguments and call results."
  :content `[(:type "text" :text ,text)])))
 
 (cl-defmethod gptel--parse-buffer ((_backend gptel-anthropic) &optional 
max-entries)
-  (let ((prompts) (prop) (prev-pt (point))
+  (let ((prompts) (prev-pt (point))
 (include-media (and gptel-track-media (or (gptel--model-capable-p 
'media)
-(gptel--model-capable-p 
'url)
+  (gptel--model-capable-p 
'url)
 (if (or gptel-mode gptel-track-response)
-(while (and
-(or (not max-entries) (>= max-entries 0))
-(setq prop (text-property-search-backward
-'gptel 'response
-(when (get-char-property (max (point-min) (1- 
(point)))
- 'gptel)
-  t
+(while (and (or (not max-entries) (>= max-entries 0))
+(goto-char (previous-single-property-change
+(point) 'gptel nil (point-min)))
+(not (= (point) prev-pt)))
   ;; HACK Until we can find a more robust solution for editing
   ;; responses, ignore prompts containing only whitespace, as the
   ;; Anthropic API can't handle it.  See #452, #409, #406, #351 and 
#321
   ;; We check for blank prompts by skipping whitespace and comparing
   ;; point against the previous.
   (unless (save-excursion (skip-syntax-forward " ") (>= (point) 
prev-pt))
-(if (prop-match-value prop) ; assistant role
-(push (list :role "assistant"
-:content
-(buffer-substring-no-properties 
(prop-match-beginning prop)
-(prop-match-end 
prop)))
-  prompts)
-  (if include-media ; user role: possibly with media
-  (push (list :role "user"
-  :content
-  (gptel--anthropic-parse-multipart
-   (gptel--parse-media-links
-major-mode (prop-match-beginning prop) 
(prop-match-end prop
-prompts)
-(push (list :role "user"
-:content
-(gptel--trim-prefixes
- (buffer-substring-no-properties 
(prop-match-beginning prop)
- (prop-match-end 
prop
-  prompts
+(pcase (get-char-property (point) 'gptel)
+  ('response
+   (push (list :role "assistant"
+   :content (buffer-substring-no-properties (point) 
prev-pt))
+ prompts))
+  ('nil ; user role: possibly with media
+   (if include-media   
+   (push (list :role "user"
+   :content
+   (gptel--anthropic-parse-multipart
+(

[elpa] externals/auctex 2b2b91de47: Remove nonsense argument (bug#76115, bug#76116)

2025-02-07 Thread ELPA Syncer
branch: externals/auctex
commit 2b2b91de473c1501692652c7e9a802f103b82ab7
Author: Ikumi Keita 
Commit: Ikumi Keita 

Remove nonsense argument (bug#76115, bug#76116)

* latex.el(TeX-arg-label, TeX-arg-index, TeX-arg-cite):
* style/acro.el (LaTeX-arg-acro-acronym):
* style/acronym.el (LaTeX-arg-acronym-acronym):
Don't pass `optional' as PREFIX argument to `TeX-argument-insert'.
Update copyright year.
---
 latex.el | 8 
 style/acro.el| 4 ++--
 style/acronym.el | 2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/latex.el b/latex.el
index ba1f80de92..2cdf65a216 100644
--- a/latex.el
+++ b/latex.el
@@ -1,6 +1,6 @@
 ;;; latex.el --- Support for LaTeX documents.  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 1991, 1993-2024 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1993-2025 Free Software Foundation, Inc.
 
 ;; Maintainer: auctex-de...@gnu.org
 ;; Keywords: tex
@@ -2400,7 +2400,7 @@ string.  If DEFINITION is non-nil, add the chosen label 
to the
 list of defined labels.  `TeX-read-label-prefix' is used as
 initial input for the label."
   (TeX-argument-insert
-   (TeX-read-label optional prompt definition) optional optional))
+   (TeX-read-label optional prompt definition) optional))
 
 (defvar reftex-ref-macro-prompt)
 
@@ -2434,7 +2434,7 @@ string.  ARGS is unused."
 (if (and (not (string-equal "" entry))
  (not (member (list entry) (LaTeX-index-entry-list
 (LaTeX-add-index-entries entry))
-(TeX-argument-insert entry optional optional)))
+(TeX-argument-insert entry optional)))
 
 (defalias 'TeX-arg-define-index #'TeX-arg-index)
 
@@ -2476,7 +2476,7 @@ string.  DEFINITION is unused."
   (let ((items (multi-prompt "," t (TeX-argument-prompt optional prompt "Key")
  (LaTeX-bibitem-list
 (apply #'LaTeX-add-bibitems items)
-(TeX-argument-insert (mapconcat #'identity items ",") optional optional)))
+(TeX-argument-insert (mapconcat #'identity items ",") optional)))
 
 (defun TeX-arg-counter (optional &optional prompt definition)
   "Prompt for a LaTeX counter.
diff --git a/style/acro.el b/style/acro.el
index f02153bb37..2caa60be5c 100644
--- a/style/acro.el
+++ b/style/acro.el
@@ -1,6 +1,6 @@
 ;;; acro.el --- AUCTeX style for `acro.sty' version v3.8  -*- lexical-binding: 
t; -*-
 
-;; Copyright (C) 2013-2024 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2025 Free Software Foundation, Inc.
 
 ;; Maintainer: auctex-de...@gnu.org
 ;; Author: Mosè Giordano 
@@ -271,7 +271,7 @@ list of defined acronyms."
   'LaTeX-acro-acronym-history)))
 (if (and definition (not (string-empty-p acronym)))
 (LaTeX-add-acro-acronyms acronym))
-(TeX-argument-insert acronym optional optional)))
+(TeX-argument-insert acronym optional)))
 
 (defun LaTeX-arg-define-acro-acronym (optional &optional prompt)
   "Prompt for an acronym completing with known acronyms.
diff --git a/style/acronym.el b/style/acronym.el
index d028ac33b8..9d1e621742 100644
--- a/style/acronym.el
+++ b/style/acronym.el
@@ -75,7 +75,7 @@ list of defined acronyms."
   'LaTeX-acronym-acronym-history)))
 (if (and definition (not (string-equal "" acronym)))
 (LaTeX-add-acronyms acronym))
-(TeX-argument-insert acronym optional optional)))
+(TeX-argument-insert acronym optional)))
 
 (defun LaTeX-arg-define-acronym-acronym (optional &optional prompt)
   "Prompt for an acronym completing with known acronyms.



[elpa] externals/jinx e1a5a8921e: Improve mouse menu separators

2025-02-07 Thread ELPA Syncer
branch: externals/jinx
commit e1a5a8921e42cd4ae7cb0dba95fe968d04359ee0
Author: Daniel Mendler 
Commit: Daniel Mendler 

Improve mouse menu separators
---
 jinx.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/jinx.el b/jinx.el
index 289d958d6f..6067cdaf58 100644
--- a/jinx.el
+++ b/jinx.el
@@ -835,14 +835,14 @@ Optionally show prompt INFO and insert INITIAL input."
   (dolist (dict jinx--dicts)
 (when-let ((desc (jinx--mod-describe dict))
(suggestions (jinx--mod-suggest dict word)))
-  (push `[,(concat (car desc) " - " (cdr desc)) :active nil] menu)
+  (push `[,(concat "── " (car desc) " ─ " (cdr desc) " ──") :active 
nil] menu)
   (cl-loop for w in suggestions repeat jinx-menu-suggestions do
(push `[,w (jinx--correct-replace ,ov ,w)] menu
   (when-let ((suggestions (jinx--session-suggestions word)))
-(push ["Session" :active nil] menu)
+(push ["── Session ──" :active nil] menu)
 (cl-loop for w in suggestions repeat jinx-menu-suggestions do
   (push `[,w (jinx--correct-replace ,ov ,w)] menu)))
-  (push ["Accept and save" :active nil] menu)
+  (push ["── Accept and save ──" :active nil] menu)
   (cl-loop for (key . fun) in jinx--save-keys
for actions = (funcall fun nil key word) do
(unless (consp (car actions)) (setq actions (list actions)))