[nongnu] elpa/slime 89a93a1c78: slime-indentation.el: use the canonical package name for comparisons

2025-06-02 Thread ELPA Syncer
branch: elpa/slime
commit 89a93a1c788379ac041c11570f565f5b3d16080f
Author: Gabor Melis 
Commit: Luís Oliveira 

slime-indentation.el: use the canonical package name for comparisons

Previously, common-lisp-get-indentation did not use the indentation
associated with some symbol name in the current package reliably
because it compared slime-current-package (e.g :pgkname, #:pkgname, or
"pkgname") to PKGNAME. Without an exact package name match, it
heuristically chose the indentation setting associated with the most
packages.

This change looks up the canonical package name on the Common Lisp
side, so the above heuristic need not trigger in most cases. If Slime
is not connected, then the canonical package name is guessed
heuristically, so that any leftover data in
common-lisp-system-indentation may still be matched.
---
 contrib/slime-cl-indent.el |  6 +++---
 slime.el   | 18 ++
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/contrib/slime-cl-indent.el b/contrib/slime-cl-indent.el
index 5f8863d7d6..46cc7edca9 100644
--- a/contrib/slime-cl-indent.el
+++ b/contrib/slime-cl-indent.el
@@ -32,8 +32,7 @@
 ;; (setq lisp-indent-function 'common-lisp-indent-function)
 ;;
 ;; This file is substantially patched from original cl-indent.el,
-;; which is in Emacs proper. It does not require SLIME, but is instead
-;; required by one of it's contribs, `slime-indentation'.
+;; which is in Emacs proper.
 ;;
 ;; Before making modifications to this file, consider adding them to
 ;; Emacs's own `cl-indent' and refactoring this file to be an
@@ -616,7 +615,8 @@ given point. Defaults to 
`common-lisp-guess-current-package'.")
 (caar system-info)
   (let ((guess nil)
 (guess-n 0)
-(package (common-lisp-symbol-package full)))
+(package (slime-canonicalize-package
+  (common-lisp-symbol-package full
 (cl-dolist (info system-info guess)
   (let* ((pkgs (cdr info))
  (n (length pkgs)))
diff --git a/slime.el b/slime.el
index c484f17b9c..6c39d45445 100644
--- a/slime.el
+++ b/slime.el
@@ -2080,6 +2080,24 @@ search for and read an `in-package' form."
 (widen)
 (slime-find-buffer-package
 
+(defun slime-canonicalize-package (package-name)
+  "Find the CL:PACKAGE-NAME of the package with PACKAGE-NAME,
+which may be a package designator. When connected, nicknames are
+resolved in `slime-current-package'."
+  (when package-name
+(if (slime-current-connection)
+(slime-eval `(cl:let ((pkg (swank::guess-package ,package-name)))
+ (cl:when pkg (cl:package-name pkg
+  (upcase (cond ((string-prefix-p "#:" package-name)
+ (substring package-name 2))
+((string-prefix-p ":" package-name)
+ (substring package-name 1))
+((and (string-prefix-p "\"" package-name)
+  (string-suffix-p "\"" package-name))
+ (substring package-name 1 (1- (length package-name
+(t
+ package-name))
+
 (defvar slime-find-buffer-package-function 'slime-search-buffer-package
   "*Function to use for `slime-find-buffer-package'.
 The result should be the package-name (a string)



[nongnu] elpa/gnuplot df8dea78c8: Package header update

2025-06-02 Thread ELPA Syncer
branch: elpa/gnuplot
commit df8dea78c81c3958e81b803f4c8eab3a192b2d9b
Author: Daniel Mendler 
Commit: Daniel Mendler 

Package header update
---
 gnuplot-gui.el | 11 ---
 gnuplot.el |  5 +
 2 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/gnuplot-gui.el b/gnuplot-gui.el
index f2def049b4..fd61c59434 100644
--- a/gnuplot-gui.el
+++ b/gnuplot-gui.el
@@ -20,18 +20,16 @@
 ;; along with this program.  If not, see .
 
 ;;; Commentary:
-;;
+
 ;; This file provides a graphical user interface to setting arguments
 ;; to gnuplot commands.  Positioning point near a command and invoking
 ;; `gnuplot-gui-set-options-and-insert' (C-c C-c or shift-mouse-2)
 ;; will pop open a frame with widgets for setting the various
 ;; arguments appropriate the the item that was near point.  The goal
 ;; is to provide point-and-click functionality to gnuplot-mode.
-;;
-;;;
-;;
+
 ;;; To do:
-;;
+
 ;; Widgets I need:
 ;; -- 'position: two or three comma separated numbers used to denote a
 ;;   position or a tic start/end/increment (see arrow,
@@ -49,8 +47,7 @@
 ;; overall:
 ;; -- continuation lines (ugh!)
 ;; -- multiple frames end up displaying same window after setting options
-;;
-;;;
+
 ;;; Code:
 
 (require 'gnuplot)
diff --git a/gnuplot.el b/gnuplot.el
index 75a1cf7c6e..4ed2ea4b1c 100644
--- a/gnuplot.el
+++ b/gnuplot.el
@@ -37,11 +37,9 @@
 ;; commentary in gnuplot-context.el for more information.  If you
 ;; don't find it useful, it can be turned off by customizing
 ;; `gnuplot-context-sensitive-mode'.
-;;
-;;
 
-;;
 ;;; Acknowledgements:
+
 ;;David Batty  numerous corrections
 ;;Laurent Bonnaud  suggestions regarding font-lock rules
 ;;Markus Dickebohm suggested `gnuplot-send-line-and-forward'
@@ -61,7 +59,6 @@
 ;;Lars Hecking gnuplot distribution and installation materials
 ;;Maxime F. Treca  package update, XEmacs deprecation
 ;;Daniel Mendler   package update, support for recent Emacs
-;;
 
 ;;; Code:
 



[nongnu] elpa/treesit-fold 5b76926c14 2/2: Update CHANGELOG.md

2025-06-02 Thread ELPA Syncer
branch: elpa/treesit-fold
commit 5b76926c14436b252150f88a8cd7e125ab295bcb
Author: Jen-Chieh Shen 
Commit: GitHub 

Update CHANGELOG.md
---
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7b97bd1398..0d435ae154 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for 
recommendations on how
 > Released N/A
 
 * feat(parsers): Improve folding of block nodes in python (#32)
+* feat: Add basic `Magik` support (76bba5243883f6c8bff51c744c31e287a045a9f5)
 
 ## 0.2.0
 > Released Feb 12, 2025



[nongnu] elpa/treesit-fold updated (c866b8ea7b -> 5b76926c14)

2025-06-02 Thread ELPA Syncer
elpasync pushed a change to branch elpa/treesit-fold.

  from  c866b8ea7b feat(parsers): Improve folding of block nodes in python 
(#32)
   new  76bba52438 feat: Basic support for Magik
   new  5b76926c14 Update CHANGELOG.md


Summary of changes:
 CHANGELOG.md| 1 +
 README.md   | 3 ++-
 treesit-fold-parsers.el | 7 +++
 treesit-fold-summary.el | 1 +
 treesit-fold.el | 2 ++
 5 files changed, 13 insertions(+), 1 deletion(-)



[elpa] externals/hyperbole 8e4d0ffb70: Use ert-with-message-capture (#739)

2025-06-02 Thread ELPA Syncer
branch: externals/hyperbole
commit 8e4d0ffb70c59fcdf4d447676113be8673282185
Author: Mats Lidell 
Commit: GitHub 

Use ert-with-message-capture (#739)
---
 ChangeLog|  6 ++
 test/demo-tests.el   | 50 +++-
 test/hactypes-tests.el   | 15 ---
 test/hib-kbd-tests.el|  3 +--
 test/hibtypes-tests.el   | 10 +-
 test/hmouse-drv-tests.el | 11 ++-
 test/hui-select-tests.el | 47 +
 test/hy-test-helpers.el  | 11 ---
 test/hyrolo-tests.el |  3 +--
 9 files changed, 85 insertions(+), 71 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4c92af5062..9ec6944e06 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2025-06-01  Mats Lidell  
+
+* test/hy-test-helpers.el (hy-test-helpers:should-last-message): Change
+helper to work on captured messages by ert-with-message-capture. Add
+use of ert-with-message-capture where the helper is used.
+
 2025-05-31  Mats Lidell  
 
 * hyrolo.el (consult-preview-key): Defvar var from consult.
diff --git a/test/demo-tests.el b/test/demo-tests.el
index 3366971c05..0bdfc5678f 100644
--- a/test/demo-tests.el
+++ b/test/demo-tests.el
@@ -3,7 +3,7 @@
 ;; Author:   Mats Lidell 
 ;;
 ;; Orig-Date:30-Jan-21 at 12:00:00
-;; Last-Mod: 19-May-25 at 22:53:23 by Bob Weiner
+;; Last-Mod:  2-Jun-25 at 10:39:14 by Mats Lidell
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -19,6 +19,7 @@
 ;;; Code:
 
 (require 'ert)
+(require 'ert-x)
 (require 'hib-kbd)
 (require 'hmouse-drv)
 (require 'hhist)
@@ -32,7 +33,6 @@
 (require 'hy-test-helpers "test/hy-test-helpers")
 
 (declare-function hy-test-helpers:consume-input-events "hy-test-helpers")
-(declare-function hy-test-helpers:should-last-message "hy-test-helpers")
 (declare-function hyrolo-demo-quit "hyrolo-demo.el")
 (declare-function org-check-for-hidden "org-el")
 
@@ -211,8 +211,9 @@
   (with-temp-buffer
 (insert "")
 (goto-char 2)
-(action-key)
-(hy-test-helpers:should-last-message "4")))
+(ert-with-message-capture cap
+  (action-key)
+  (hy-test-helpers:should-last-message "4" cap
 
 (ert-deftest demo-implicit-button-action-button-sexp-test ()
   (with-temp-buffer
@@ -224,22 +225,24 @@
  (mapcar #'buffer-name
  (nthcdr (- (length (buffer-list)) 3) 
(buffer-list>")
 (goto-char 2)
-(action-key)
-(let* ((bufs (reverse (buffer-list)))
-  (hsettings-buf (buffer-name (nth 0 bufs)))
-  (hactypes-buf  (buffer-name (nth 1 bufs)))
-  (hibtypes-buf  (buffer-name (nth 2 bufs
-  (should (and (hy-test-helpers:should-last-message "Last 3 buffers are")
-  (string-match-p "hsettings\\.el" hsettings-buf)
-  (string-match-p "hactypes\\.el"  hactypes-buf)
-  (string-match-p "hibtypes\\.el"  hibtypes-buf))
+(ert-with-message-capture cap
+  (action-key)
+  (let* ((bufs (reverse (buffer-list)))
+(hsettings-buf (buffer-name (nth 0 bufs)))
+(hactypes-buf  (buffer-name (nth 1 bufs)))
+(hibtypes-buf  (buffer-name (nth 2 bufs
+(hy-test-helpers:should-last-message "Last 3 buffers are" cap)
+(should (and (string-search "hsettings.el" hsettings-buf)
+(string-search "hactypes.el"  hactypes-buf)
+(string-search "hibtypes.el"  hibtypes-buf)))
 
 (ert-deftest demo-implicit-button-action-button-display-boolean-test ()
   (with-temp-buffer
 (insert "")
 (goto-char 2)
-(action-key)
-(hy-test-helpers:should-last-message "Result = nil; Boolean value = 
False")))
+(ert-with-message-capture cap
+  (action-key)
+  (hy-test-helpers:should-last-message "Result = nil; Boolean value = 
False" cap
 
 (ert-deftest demo-implicit-button-hash-link-test ()
   (unwind-protect
@@ -403,9 +406,10 @@
   (unwind-protect
   (let ((enable-local-variables nil))
 (hypb:display-file-with-logo "DEMO")
-(should (hact 'kbd-key "C-h h a factorial RET"))
-(hy-test-helpers:consume-input-events)
-(hy-test-helpers:should-last-message "Factorial of 5 = 120"))
+(ert-with-message-capture cap
+  (should (hact 'kbd-key "C-h h a factorial RET"))
+  (hy-test-helpers:consume-input-events)
+  (hy-test-helpers:should-last-message "Factorial of 5 = 120" cap)))
 (hy-test-helpers:kill-buffer "DEMO")))
 
 (ert-deftest demo-factorial-ebutton-test ()
@@ -415,8 +419,9 @@
 (hypb:display-file-with-logo "DEMO")
 (re-search-forward "<(factorial)>")
 (forward-char -5)
-(action-key)
-(hy-test-helpers:should-last-message "Factorial of 5 = 120"))
+(ert-with-message-capture cap
+  (action-key)
+  (hy-test-helpers:should-last-message "Factorial of 5 = 120" cap)))
 (hy-test-helpers:kill-buffer "DEMO

[elpa] externals/polymode b384eec4ce: Use set-window-buffer instead of switch_to_buffer in pm--select-existing-buffer-visibly

2025-06-02 Thread ELPA Syncer
branch: externals/polymode
commit b384eec4ce3fd989302b25c4b9c94cbebdc993b7
Author: vitalie 
Commit: Vitalie Spinu 

Use set-window-buffer instead of switch_to_buffer in 
pm--select-existing-buffer-visibly

  As recomended by Stefan Monnier 
https://lists.gnu.org/archive/html/emacs-devel/2025-05/msg00747.html
---
 polymode-core.el | 10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/polymode-core.el b/polymode-core.el
index ad2757eddc..d33e812796 100644
--- a/polymode-core.el
+++ b/polymode-core.el
@@ -1099,11 +1099,15 @@ switch."
 
 (pm--move-overlays old-buffer new-buffer)
 
-;; make sure we display in the same window as the old buffer (#337)
-(let ((switch-to-buffer-obey-display-actions))
- (switch-to-buffer new-buffer nil 'force-same-window))
+(let ((strongly-dedicated-flag (window-dedicated-p)))
+  (when strongly-dedicated-flag
+(set-window-dedicated-p nil nil))
+  (set-window-buffer nil new-buffer 'keep-margins)
+  (when strongly-dedicated-flag
+(set-window-dedicated-p nil strongly-dedicated-flag)))
 
 (bury-buffer-internal old-buffer)
+;; remove old-buffer form window-prev-buffers
 (set-window-prev-buffers nil (assq-delete-all old-buffer 
(window-prev-buffers nil)))
 
 ;; if header line is active in some modes, make it active everywhere



[elpa] externals/yasnippet dd570a6b22: yasnippet.el: Bump version to trigger release

2025-06-02 Thread ELPA Syncer
branch: externals/yasnippet
commit dd570a6b22364212fff9769cbf4376bdbd7a63c5
Author: Stefan Monnier 
Commit: Stefan Monnier 

yasnippet.el: Bump version to trigger release

* yasnippet-tests.el (string-suffix-p): Remove fallback definition.
---
 NEWS   |  3 ++-
 yasnippet-tests.el | 13 +
 yasnippet.el   |  2 +-
 3 files changed, 4 insertions(+), 14 deletions(-)

diff --git a/NEWS b/NEWS
index 6e65fdc491..a7bb0926f7 100644
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,11 @@
 Yasnippet NEWS -- history of user-visible changes.
 
-Copyright (C) 2017-2024 Free Software Foundation, Inc.
+Copyright (C) 2017-2025 Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
 Changes since 0.14.0:
 
+- Silence warning about missing lexical-binding cookie.
 - Bug fixes and code cleanups.
 - Accept ${N} as another syntax for $N (issue #1012).
 - Understand the new AUCTeX modes hierarchy (issue #1193).
diff --git a/yasnippet-tests.el b/yasnippet-tests.el
index cef25484bf..49d18b8012 100644
--- a/yasnippet-tests.el
+++ b/yasnippet-tests.el
@@ -138,17 +138,6 @@ This lets `yas--maybe-expand-from-keymap-filter' work as 
expected."
 ;;; Older emacsen
 ;;;
 
-(unless (fboundp 'string-suffix-p)
-  ;; introduced in Emacs 24.4
-  (defun string-suffix-p (suffix string &optional ignore-case)
-"Return non-nil if SUFFIX is a suffix of STRING.
-If IGNORE-CASE is non-nil, the comparison is done without paying
-attention to case differences."
-(let ((start-pos (- (length string) (length suffix
-  (and (>= start-pos 0)
-   (eq t (compare-strings suffix nil nil
-  string start-pos nil ignore-case))
-
 
 ;;; Snippet mechanics
 
@@ -1735,7 +1724,7 @@ TODO: be meaner"
(org-mode)
(yas-minor-mode 1)
(insert "#+BEGIN_SRC " mode "\nT\n#+END_SRC")
-   (if (fboundp 'font-lock-ensure)
+   (if (fboundp 'font-lock-ensure)  ;Emacs≥25
(font-lock-ensure)
  (jit-lock-fontify-now))
(re-search-backward "^T$") (goto-char (match-end 0))
diff --git a/yasnippet.el b/yasnippet.el
index 1f9ac9b248..cbeebd1253 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -5,7 +5,7 @@
 ;;  João Távora ,
 ;;  Noam Postavsky 
 ;; Maintainer: Noam Postavsky 
-;; Version: 0.14.2
+;; Version: 0.14.3
 ;; X-URL: http://github.com/joaotavora/yasnippet
 ;; Keywords: convenience, emulation
 ;; URL: http://github.com/joaotavora/yasnippet



[nongnu] elpa/treesit-fold 76bba52438 1/2: feat: Basic support for Magik

2025-06-02 Thread ELPA Syncer
branch: elpa/treesit-fold
commit 76bba5243883f6c8bff51c744c31e287a045a9f5
Author: JenChieh 
Commit: JenChieh 

feat: Basic support for Magik
---
 README.md   | 3 ++-
 treesit-fold-parsers.el | 7 +++
 treesit-fold-summary.el | 1 +
 treesit-fold.el | 2 ++
 4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index a294968fa6..1df42bb8d5 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 > [!IMPORTANT]
 >
 > This package is code folding support for built-in [treesit.el][] (**since 
 > Emacs 29.1**).
-> 
+>
 > For external [tree-sitter.el][] (**support Emacs 26.1+**), please use 
 > [ts-fold][] instead.
 
 [![License: GPL 
v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
@@ -151,6 +151,7 @@ These languages are in development:
 - Agda
 - Elm
 - Fortran
+- Magik
 - Pascal
 - Smithy
 
diff --git a/treesit-fold-parsers.el b/treesit-fold-parsers.el
index 125799f98d..77bdf52d49 100644
--- a/treesit-fold-parsers.el
+++ b/treesit-fold-parsers.el
@@ -472,6 +472,13 @@
 (repeat_statement . treesit-fold-range-lua-repeat)
 (comment  . treesit-fold-range-lua-comment)))
 
+(defun treesit-fold-parsers-magik ()
+  "Rule set for Magik."
+  '((method . treesit-fold-range-seq)
+(comment
+ . (lambda (node offset)
+ (treesit-fold-range-line-comment node offset "#")
+
 (defun treesit-fold-parsers-make ()
   "Rule set for Make."
   '((recipe . treesit-fold-range-make-recipe)
diff --git a/treesit-fold-summary.el b/treesit-fold-summary.el
index 06c35a8879..4bd7be6d37 100644
--- a/treesit-fold-summary.el
+++ b/treesit-fold-summary.el
@@ -241,6 +241,7 @@ type of content by checking the word boundary's existence."
 (llvm-mode  . treesit-fold-summary-elisp)
 (llvm-mir-mode  . treesit-fold-summary-elisp)
 (lua-mode   . treesit-fold-summary-lua-doc)
+(magik-mode . treesit-fold-summary-ruby-doc)
 (makefile-mode  . treesit-fold-summary-ruby-doc)
 (makefile-automake-mode . treesit-fold-summary-ruby-doc)
 (makefile-gmake-mode. treesit-fold-summary-ruby-doc)
diff --git a/treesit-fold.el b/treesit-fold.el
index d9fe6cf22c..79358fbf3a 100644
--- a/treesit-fold.el
+++ b/treesit-fold.el
@@ -140,6 +140,8 @@
 (llvm-mir-mode  . ,(treesit-fold-parsers-llvm-mir))
 (lua-mode   . ,(treesit-fold-parsers-lua))
 (lua-ts-mode. ,(treesit-fold-parsers-lua))
+(magik-mode . ,(treesit-fold-parsers-magik))
+(magik-ts-mode  . ,(treesit-fold-parsers-magik))
 (makefile-mode  . ,(treesit-fold-parsers-make))
 (makefile-ts-mode   . ,(treesit-fold-parsers-make))
 (makefile-automake-mode . ,(treesit-fold-parsers-make))



[nongnu] elpa/mastodon 137bfcdbf0 05/31: add a followed_tags view (no pagination as yet).

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 137bfcdbf047af828fda0ef5ac66fcea2b8004ae
Author: marty hiatt 
Commit: marty hiatt 

add a followed_tags view (no pagination as yet).
---
 lisp/mastodon-tl.el | 28 +---
 lisp/mastodon.el|  1 +
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 75341b6831..a6afe11601 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -2281,7 +2281,10 @@ call this function after it is set or use something 
else."
   ((mastodon-tl--endpoint-str-= "timelines/link")
'link-timeline)
   ((mastodon-tl--endpoint-str-= "announcements")
-   'announcements
+   'announcements)
+  ;; followed hashtags
+  ((mastodon-tl--endpoint-str-= "followed_tags")
+   'followed-hashtags
 
 (defun mastodon-tl--buffer-type-eq (type)
   "Return t if current buffer type is equal to symbol TYPE."
@@ -2989,8 +2992,8 @@ If TAG is provided, unfollow it."
(lambda (_)
  (message "tag #%s unfollowed!" tag)
 
-(defun mastodon-tl-list-followed-tags (&optional prefix)
-  "List followed tags. View timeline of tag user choses.
+(defun mastodon-tl-jump-to-followed-tag (&optional prefix)
+  "Prompt for a followed tag and view its timeline.
 PREFIX is sent to `mastodon-tl-get-tag-timeline', which see."
   (interactive "p")
   (let* ((followed-tags-json (mastodon-tl--followed-tags))
@@ -3000,6 +3003,25 @@ PREFIX is sent to `mastodon-tl-get-tag-timeline', which 
see."
 (user-error "You have to follow some tags first")
   (mastodon-tl-get-tag-timeline prefix tag
 
+(defun mastodon-tl-list-followed-tags ()
+  "List followed tags. View timeline of tag user choses.
+PREFIX is sent to `mastodon-tl-get-tag-timeline', which see."
+  (interactive)
+  (let* ((json (mastodon-tl--followed-tags))
+ (sorted (sort json :key (lambda (x)
+   (downcase (alist-get 'name x)
+ (buf "*mastodon-followed-tags*"))
+(if (null sorted)
+(user-error "You have to follow some tags first")
+  (with-mastodon-buffer (get-buffer-create buf)
+  #'mastodon-mode nil
+(mastodon-tl--set-buffer-spec
+ buf "followed_tags" #'mastodon-tl-list-followed-tags)
+(mastodon-search--insert-heading "followed tags")
+(insert "\n")
+(mastodon-search--print-tags sorted)
+(goto-char (point-min))
+
 (defun mastodon-tl-followed-tags-timeline (&optional prefix)
   "Open a timeline of multiple tags.
 With a single PREFIX arg, only show posts with media.
diff --git a/lisp/mastodon.el b/lisp/mastodon.el
index 1e973d78de..7e797fec4c 100644
--- a/lisp/mastodon.el
+++ b/lisp/mastodon.el
@@ -228,6 +228,7 @@ Also nil `mastodon-auth--token-alist'."
 ;; navigation between timelines
 (define-key map (kbd "#")  #'mastodon-tl-get-tag-timeline)
 (define-key map (kbd "\"") #'mastodon-tl-list-followed-tags)
+(define-key map (kbd "C-\"") #'mastodon-tl-jump-to-followed-tag)
 (define-key map (kbd "'")  #'mastodon-tl-followed-tags-timeline)
 (define-key map (kbd "C-'")   #'mastodon-tl-tag-group-timeline)
 (define-key map (kbd "A")  #'mastodon-profile-get-toot-author)



[nongnu] elpa/mastodon a95bae2755 17/31: Merge pull request 'http: trim the json-string' (#688) from rayslava/mastodon.el:feature/http_empty_response into develop

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit a95bae27559b7135d3f5a78584dd5cfb52398923
Merge: a161f3803e a825e44f45
Author: martianh 
Commit: martianh 

Merge pull request 'http: trim the json-string' (#688) from 
rayslava/mastodon.el:feature/http_empty_response into develop
---
 lisp/mastodon-http.el | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lisp/mastodon-http.el b/lisp/mastodon-http.el
index a55097dff2..a91f272dd4 100644
--- a/lisp/mastodon-http.el
+++ b/lisp/mastodon-http.el
@@ -220,9 +220,10 @@ Callback to `mastodon-http--get-response-async', usually
 (goto-char (point-min))
 (re-search-forward "^$" nil 'move)
 (let ((json-array-type (if vector 'vector 'list))
-  (json-string (decode-coding-string
-(buffer-substring-no-properties (point) (point-max))
-'utf-8)))
+  (json-string (string-trim-right
+(decode-coding-string
+ (buffer-substring-no-properties (point) (point-max))
+ 'utf-8
   (kill-buffer)
   (cond ((or (string-empty-p json-string) (null json-string))
  nil)



[nongnu] elpa/mastodon 2317e3811b 03/31: tl: proper splice of optional params

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 2317e3811be4995ca4f6ea6af147244cc3e1dc47
Author: marty hiatt 
Commit: marty hiatt 

tl: proper splice of optional params
---
 lisp/mastodon-tl.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 34f7cbed27..145aa646d7 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -508,8 +508,8 @@ MAX-ID is a flag to add the max_id pagination parameter."
   (interactive "p")
   (let* ((params
   `(("limit" . ,mastodon-tl--timeline-posts-count)
-,(when max-id
-   `("max_id" . ,(mastodon-tl--buffer-property 'max-id))
+,@(when max-id
+`(("max_id" . ,(mastodon-tl--buffer-property 'max-id)))
 (message "Loading home timeline...")
 (mastodon-tl--init "home" "timelines/home" 'mastodon-tl--timeline nil
params



[nongnu] elpa/mastodon 734b7cc518 10/31: Made mastodon-toot--read-poll-expiry accept any number of seconds.

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 734b7cc518758fe36b9428102a4151518666aec2
Author: Dave Marquardt 
Commit: Dave Marquardt 

Made mastodon-toot--read-poll-expiry accept any number of seconds.
---
 lisp/mastodon-toot.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index 9ebb1ef0c7..e50d42d718 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -1487,7 +1487,8 @@ Return a cons of a human readable string, and a 
seconds-from-now string."
 options nil 'confirm)))
 (or (assoc response options #'string=)
 (if (< (string-to-number response) 600)
-(car options) ;; min 5 mins
+(car options) ;; min 5 mins
+ (cons (format "%s seconds" response) response)
 
 (defun mastodon-toot--poll-expiry-options-alist ()
   "Return an alist of expiry options options in seconds."



[nongnu] elpa/mastodon 829b37bb8b 12/31: Updated the pull request list item to reference the correct item

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 829b37bb8b13735e6f49ab5f879df4092f495a32
Author: Dave Marquardt 
Commit: Dave Marquardt 

Updated the pull request list item to reference the correct item
---
 README.org | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.org b/README.org
index ba1640da02..b57ae14954 100644
--- a/README.org
+++ b/README.org
@@ -570,7 +570,7 @@ am=, if you want to actually contribute a commit.
 3. Fork the repository and create a branch off of =develop=.
 4. Run the tests and ensure that your code doesn't break any of them.
 5. Create a pull request (to develop) referencing the issue created in
-   step 1.
+   step 2.
 
 *** Coding style
 



[nongnu] elpa/mastodon f6247f0c9b 31/31: Merge branch 'develop'

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit f6247f0c9b8c15b19e8ddca2f600ceb2cf48beb9
Merge: 163ba2b0b8 e24f6ee5db
Author: marty hiatt 
Commit: marty hiatt 

Merge branch 'develop'
---
 README.org|  11 +--
 lisp/mastodon-http.el |   7 +-
 lisp/mastodon-profile.el  |   3 +-
 lisp/mastodon-tl.el   | 172 ++
 lisp/mastodon-toot.el |   7 +-
 lisp/mastodon.el  |  11 ++-
 test/mastodon-tl-tests.el |  47 +
 7 files changed, 213 insertions(+), 45 deletions(-)

diff --git a/README.org b/README.org
index 1b80e59c3d..caf9b0e629 100644
--- a/README.org
+++ b/README.org
@@ -565,11 +565,12 @@ am=, if you want to actually contribute a commit.
 
 *** Fixes and features
 
-1. Create an [[https://codeberg.org/martianh/mastodon.el/issues][issue]] 
detailing what you'd like to do.
-2. Fork the repository and create a branch off of =develop=.
-3. Run the tests and ensure that your code doesn't break any of them.
-4. Create a pull request (to develop) referencing the issue created in
-   step 1.
+1. Install 
[[https://cask.readthedocs.io/en/latest/guide/installation.html][Cask]] if you 
don't already have it installed
+2. Create an [[https://codeberg.org/martianh/mastodon.el/issues][issue]] 
detailing what you'd like to do.
+3. Fork the repository and create a branch off of =develop=.
+4. Run the tests (with =make tests=) and ensure that your code doesn't break 
any of them.
+5. Create a pull request (to develop) referencing the issue created in
+   step 2.
 
 *** Coding style
 
diff --git a/lisp/mastodon-http.el b/lisp/mastodon-http.el
index a55097dff2..a91f272dd4 100644
--- a/lisp/mastodon-http.el
+++ b/lisp/mastodon-http.el
@@ -220,9 +220,10 @@ Callback to `mastodon-http--get-response-async', usually
 (goto-char (point-min))
 (re-search-forward "^$" nil 'move)
 (let ((json-array-type (if vector 'vector 'list))
-  (json-string (decode-coding-string
-(buffer-substring-no-properties (point) (point-max))
-'utf-8)))
+  (json-string (string-trim-right
+(decode-coding-string
+ (buffer-substring-no-properties (point) (point-max))
+ 'utf-8
   (kill-buffer)
   (cond ((or (string-empty-p json-string) (null json-string))
  nil)
diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el
index 95d275d253..177179fdf1 100644
--- a/lisp/mastodon-profile.el
+++ b/lisp/mastodon-profile.el
@@ -693,7 +693,8 @@ MAX-ID is a flag to include the max_id pagination 
parameter."
  (mastodon-profile--image-from-account account 'avatar_static)
  (mastodon-profile--image-from-account account 'header_static)
  "\n"
- (propertize .display_name 'face 'mastodon-display-name-face)
+ (when .display_name
+   (propertize .display_name 'face 'mastodon-display-name-face))
  ;; roles
  (when .roles
(concat " " (mastodon-profile--render-roles .roles)))
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 508332b098..b1a5b90cdd 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -95,6 +95,9 @@
 (autoload 'mastodon-notifications--current-type "mastodon-notifications")
 (autoload 'mastodon-notifications--timeline "mastodon-notifications")
 (autoload 'mastodon-notifications--empty-group-json-p "mastodon-notifications")
+(autoload 'mastodon-search--print-tags "mastodon-search")
+(autoload 'mastodon-profile-show-user "mastodon-profile")
+
 (defvar mastodon-toot--visibility)
 (defvar mastodon-toot-mode)
 (defvar mastodon-active-user)
@@ -508,8 +511,8 @@ MAX-ID is a flag to add the max_id pagination parameter."
   (interactive "p")
   (let* ((params
   `(("limit" . ,mastodon-tl--timeline-posts-count)
-,(when max-id
-   `("max_id" . ,(mastodon-tl--buffer-property 'max-id))
+,@(when max-id
+`(("max_id" . ,(mastodon-tl--buffer-property 'max-id)))
 (message "Loading home timeline...")
 (mastodon-tl--init "home" "timelines/home" 'mastodon-tl--timeline nil
params
@@ -637,7 +640,8 @@ is extracted from it."
   (let ((data (or (alist-get 'account toot)
   toot))) ;; grouped nofifs use account data directly
 (let-alist data
-  (propertize (if (not (string-empty-p .display_name))
+  (propertize (if (and .display_name
+   (not (string-empty-p .display_name)))
   .display_name
 .username)
   'face 'mastodon-display-name-face
@@ -1164,6 +1168,39 @@ the toot)."
(string-prefix-p "/tag" path)) ;; "/tag/" or "/tags/"
   (nth 2 split
 
+(defun mastodon-tl--base-tags (tags body-tags)
+  "Return a string of all tags not in BODY-TAGS, linkified.
+TAGS is a list of tag alists, from a post's

[nongnu] elpa/mastodon 05dcad9449 11/31: Updated README to mention Cask

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 05dcad94498bc9f8a4888ea46a319672285028b3
Author: Dave Marquardt 
Commit: Dave Marquardt 

Updated README to mention Cask
---
 README.org | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/README.org b/README.org
index 1b80e59c3d..ba1640da02 100644
--- a/README.org
+++ b/README.org
@@ -565,10 +565,11 @@ am=, if you want to actually contribute a commit.
 
 *** Fixes and features
 
-1. Create an [[https://codeberg.org/martianh/mastodon.el/issues][issue]] 
detailing what you'd like to do.
-2. Fork the repository and create a branch off of =develop=.
-3. Run the tests and ensure that your code doesn't break any of them.
-4. Create a pull request (to develop) referencing the issue created in
+1. Install 
[[https://cask.readthedocs.io/en/latest/guide/installation.html][Cask]] if you 
don't already have it installed
+2. Create an [[https://codeberg.org/martianh/mastodon.el/issues][issue]] 
detailing what you'd like to do.
+3. Fork the repository and create a branch off of =develop=.
+4. Run the tests and ensure that your code doesn't break any of them.
+5. Create a pull request (to develop) referencing the issue created in
step 1.
 
 *** Coding style



[nongnu] elpa/mastodon a161f3803e 16/31: Merge pull request 'Support nil as display_name' (#686) from rayslava/mastodon.el:develop into develop

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit a161f3803e150797d51b2911ca7aa8cc8c4f5900
Merge: bc951d430e b7f58adade
Author: martianh 
Commit: martianh 

Merge pull request 'Support nil as display_name' (#686) from 
rayslava/mastodon.el:develop into develop
---
 lisp/mastodon-profile.el  |  3 ++-
 lisp/mastodon-tl.el   |  3 ++-
 test/mastodon-tl-tests.el | 47 +++
 3 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el
index 95d275d253..177179fdf1 100644
--- a/lisp/mastodon-profile.el
+++ b/lisp/mastodon-profile.el
@@ -693,7 +693,8 @@ MAX-ID is a flag to include the max_id pagination 
parameter."
  (mastodon-profile--image-from-account account 'avatar_static)
  (mastodon-profile--image-from-account account 'header_static)
  "\n"
- (propertize .display_name 'face 'mastodon-display-name-face)
+ (when .display_name
+   (propertize .display_name 'face 'mastodon-display-name-face))
  ;; roles
  (when .roles
(concat " " (mastodon-profile--render-roles .roles)))
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 1cc00c1e2a..a04e06cfff 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -637,7 +637,8 @@ is extracted from it."
   (let ((data (or (alist-get 'account toot)
   toot))) ;; grouped nofifs use account data directly
 (let-alist data
-  (propertize (if (not (string-empty-p .display_name))
+  (propertize (if (and .display_name
+   (not (string-empty-p .display_name)))
   .display_name
 .username)
   'face 'mastodon-display-name-face
diff --git a/test/mastodon-tl-tests.el b/test/mastodon-tl-tests.el
index a4f6fa8249..6078cf2927 100644
--- a/test/mastodon-tl-tests.el
+++ b/test/mastodon-tl-tests.el
@@ -110,6 +110,35 @@
 (reblogged)))
   "A sample reblogged/boosted toot (parsed json)")
 
+(defconst mastodon-tl-test-empty-display-name
+  '((id . 61208)
+(created_at . "2017-04-24T19:01:02.000Z")
+(in_reply_to_id)
+(in_reply_to_account_id)
+(sensitive . :json-false)
+(spoiler_text . "")
+(visibility . "public")
+(account (id . 42)
+ (username . "acct42")
+ (acct . "acct42@example.space")
+ (display_name . nil)
+ (locked . :json-false)
+ (created_at . "2017-04-01T00:00:00.000Z")
+ (followers_count . 99)
+ (following_count . 13)
+ (statuses_count . 101)
+ (note . "E"))
+(media_attachments . ())
+(mentions . ())
+(tags . ())
+(uri . "tag:example.space,2017-04-24:objectId=654321:objectType=Status")
+(url . "https://example.space/users/acct42/updates/123456789";)
+(content . "Just some text")
+(reblogs_count . 0)
+(favourites_count . 0)
+(reblog))
+  "A sample toot (parsed json)")
+
 (defconst mastodon-tl--follow-notify-true-response
   "HTTP/1.1 200 OK
 Date: Mon, 20 Dec 2021 13:42:29 GMT
@@ -532,6 +561,24 @@ Strict-Transport-Security: max-age=31536000
  "7 years, 4 months ago"
  (plist-get properties 'display)))
 
+(ert-deftest mastodon-tl--byline-no-displayname ()
+  "Should not fail when display_name is nil."
+  (let* ((mastodon-tl--show-avatars-p nil)
+ (toot (cons '(reblogged . t) mastodon-tl-test-empty-display-name))
+ (timestamp (cdr (assoc 'created_at toot
+(with-mock
+  (mock (date-to-time timestamp) => '(22782 21551))
+  (mock (mastodon-tl--symbol 'boost) => "B")
+  (mock (mastodon-tl--toot-stats toot) => "")
+  (mock (format-time-string mastodon-toot-timestamp-format '(22782 21551)) 
=> "2999-99-99 00:11:22")
+
+  (should (string= (substring-no-properties
+(mastodon-tl--byline toot))
+   (concat "(B) acct42 (@acct42@example.space) 2999-99-99 
00:11:22
+  "
+   mastodon-tl--horiz-bar "
+"))
+
 (ert-deftest mastodon-tl--consider-timestamp-for-updates-no-active-callback ()
   "Should update the timestamp update variables as expected."
 



[nongnu] elpa/mastodon 32bc411efd 20/31: url-lookup: peertube post regex

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 32bc411efdf758ebc540656bff2300fa8ce6601d
Author: marty hiatt 
Commit: marty hiatt 

url-lookup: peertube post regex
---
 lisp/mastodon.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lisp/mastodon.el b/lisp/mastodon.el
index 7e797fec4c..07d50e7a76 100644
--- a/lisp/mastodon.el
+++ b/lisp/mastodon.el
@@ -519,7 +519,9 @@ If FORCE, do a lookup regardless of the result of 
`mastodon--fedi-url-p'."
   (string-match "^/comment/[[:digit:]]+$" query) ; lemmy
   (string-match "^/@[^/]+/statuses/[[:alnum:]]" query) ; GTS
   (string-match "^/user[s]?/[[:alnum:]_]+/statuses/[[:digit:]]+$" 
query) ; hometown
-  (string-match "^/notes/[[:alnum:]]+$" query) ; misskey post
+  (string-match "^/notes/[[:alnum:]]+$" query) ; misskey post
+  (string-match "^/w/[[:alnum:]_]+$" query) ; peertube post
+  
 
 (defun mastodon-live-buffers ()
   "Return a list of open mastodon buffers.



[nongnu] elpa/mastodon bc951d430e 15/31: Merge pull request 'Made mastodon-toot--read-poll-expiry accept any number of seconds.' (#692) from davemq/mastodon.el:mastodon-tweet-expiry-fix into develop

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit bc951d430e2c725e0e93cdae0e5464b2c11829b7
Merge: 63e7e6823d 734b7cc518
Author: martianh 
Commit: martianh 

Merge pull request 'Made mastodon-toot--read-poll-expiry accept any number 
of seconds.' (#692) from davemq/mastodon.el:mastodon-tweet-expiry-fix into 
develop
---
 lisp/mastodon-toot.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index 9ebb1ef0c7..e50d42d718 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -1487,7 +1487,8 @@ Return a cons of a human readable string, and a 
seconds-from-now string."
 options nil 'confirm)))
 (or (assoc response options #'string=)
 (if (< (string-to-number response) 600)
-(car options) ;; min 5 mins
+(car options) ;; min 5 mins
+ (cons (format "%s seconds" response) response)
 
 (defun mastodon-toot--poll-expiry-options-alist ()
   "Return an alist of expiry options options in seconds."



[nongnu] elpa/mastodon 7596fefa6d 02/31: tl updates: respect update-params on calling --more*. FIX #681.

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 7596fefa6d546f2e45e00bed33347a71d77f9bbf
Author: marty hiatt 
Commit: marty hiatt 

tl updates: respect update-params on calling --more*. FIX #681.
---
 lisp/mastodon-tl.el | 25 +++--
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 508332b098..34f7cbed27 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -3279,20 +3279,22 @@ and profile pages when showing followers or accounts 
followed."
 (mastodon-tl--update-params)
 'mastodon-tl--more* (current-buffer) (point)))
   (t ;; max_id paginate (timelines, items with ids/timestamps):
-   (let ((max-id (mastodon-tl--oldest-id)))
+   (let ((max-id (mastodon-tl--oldest-id))
+ (params (mastodon-tl--update-params)))
  (mastodon-tl--more-json-async
   (mastodon-tl--endpoint)
-  max-id
-  (mastodon-tl--update-params)
-  'mastodon-tl--more* (current-buffer) (point) nil max-id))
+  max-id params
+  'mastodon-tl--more*
+  (current-buffer) (point) nil max-id params))
 
 (defun mastodon-tl--more* (response buffer point-before
-&optional headers max-id)
+&optional headers max-id update-params)
   "Append older toots to timeline, asynchronously.
 Runs the timeline's update function on RESPONSE, in BUFFER.
 When done, places point at POINT-BEFORE.
 HEADERS is the http headers returned in the response, if any.
-MAX-ID is the pagination parameter, a string."
+MAX-ID is the pagination parameter, a string.
+UPDATE-PARAMS is from prev buffer spec, added to the new one."
   (with-current-buffer buffer
 (if (not response)
 (user-error "No more results")
@@ -3335,10 +3337,13 @@ MAX-ID is the pagination parameter, a string."
 (goto-char point-before)
 ;; update buffer spec to new link-header or max-id:
 ;; (other values should just remain as they were)
-(mastodon-tl--set-buffer-spec (mastodon-tl--buffer-name)
-  (mastodon-tl--endpoint)
-  (mastodon-tl--update-function)
-  link-header nil nil max-id)
+(mastodon-tl--set-buffer-spec
+ (mastodon-tl--buffer-name)
+ (mastodon-tl--endpoint)
+ (mastodon-tl--update-function)
+ link-header update-params
+ nil ;; FIXME: hide-replies?
+ max-id)
 (message "Loading... done.")))
 
 (defun mastodon-tl--find-property-range (property start-point



[nongnu] elpa/mastodon 0d83e87207 27/31: add mastodon-tl-return, RET on foll reqs/folls loads profiles. FIX #713

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 0d83e87207ddbaa70d207155690a3e15f438689c
Author: marty hiatt 
Commit: marty hiatt 

add mastodon-tl-return, RET on foll reqs/folls loads profiles. FIX #713
---
 lisp/mastodon-tl.el | 13 +
 lisp/mastodon.el|  2 +-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index a04e06cfff..131f97c6e4 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -2486,6 +2486,19 @@ view all branches of a thread."
 (let ((id (mastodon-tl--property 'base-item-id)))
   (mastodon-tl--thread-do id
 
+(defun mastodon-tl-return ()
+  "Load user profile or thread of item at point.
+If item at point is a follow or follow request, load user profile.
+Else load thread."
+  (interactive)
+  (let ((notif (mastodon-tl--property 'notification-type)))
+(if (or (equal "follow" notif)
+(equal "follow_request" notif))
+(let* ((json (mastodon-tl--property 'item-json))
+   (handle (alist-get 'acct json)))
+  (mastodon-profile-show-user handle))
+  (mastodon-tl-thread
+
 (defun mastodon-tl-thread ()
   "Open thread buffer for toot at point."
   (interactive)
diff --git a/lisp/mastodon.el b/lisp/mastodon.el
index 7e797fec4c..d033952eba 100644
--- a/lisp/mastodon.el
+++ b/lisp/mastodon.el
@@ -257,7 +257,7 @@ Also nil `mastodon-auth--token-alist'."
 (define-key map (kbd "v")  #'mastodon-tl-poll-vote)
 (define-key map (kbd "E")  #'mastodon-toot-view-toot-edits)
 (define-key map (kbd "T")  #'mastodon-tl-thread)
-(define-key map (kbd "RET")#'mastodon-tl-thread)
+(define-key map (kbd "RET")#'mastodon-tl-return)
 (define-key map (kbd "m")  #'mastodon-tl-dm-user)
 (define-key map (kbd "=")  #'mastodon-tl-view-first-full-image)
 (when (require 'lingva nil :no-error)



[nongnu] elpa/mastodon 1b013e9f7b 13/31: Updated the README with how to run the tests

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 1b013e9f7b72347e469d93cef36f65287cc609a4
Author: Dave Marquardt 
Commit: Dave Marquardt 

Updated the README with how to run the tests
---
 README.org | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.org b/README.org
index b57ae14954..caf9b0e629 100644
--- a/README.org
+++ b/README.org
@@ -568,7 +568,7 @@ am=, if you want to actually contribute a commit.
 1. Install 
[[https://cask.readthedocs.io/en/latest/guide/installation.html][Cask]] if you 
don't already have it installed
 2. Create an [[https://codeberg.org/martianh/mastodon.el/issues][issue]] 
detailing what you'd like to do.
 3. Fork the repository and create a branch off of =develop=.
-4. Run the tests and ensure that your code doesn't break any of them.
+4. Run the tests (with =make tests=) and ensure that your code doesn't break 
any of them.
 5. Create a pull request (to develop) referencing the issue created in
step 2.
 



[nongnu] elpa/mastodon 0aad468b2d 19/31: Merge pull request 'Fixed poll expiry minimum time' (#697) from davemq/mastodon.el:fix-poll-minimum into develop

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 0aad468b2d7df8f59fa827d6bd7ee8e3171d56d8
Merge: a95bae2755 a369dc6178
Author: martianh 
Commit: martianh 

Merge pull request 'Fixed poll expiry minimum time' (#697) from 
davemq/mastodon.el:fix-poll-minimum into develop
---
 lisp/mastodon-toot.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index e50d42d718..5381c0ff98 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -1486,8 +1486,8 @@ Return a cons of a human readable string, and a 
seconds-from-now string."
  (response (completing-read "poll ends in [or enter seconds]: "
 options nil 'confirm)))
 (or (assoc response options #'string=)
-(if (< (string-to-number response) 600)
-(car options) ;; min 5 mins
+(if (< (string-to-number response) 300)
+(cons "5 minutes" (number-to-string (* 60 5))) ;; min 5 mins
  (cons (format "%s seconds" response) response)
 
 (defun mastodon-toot--poll-expiry-options-alist ()



[nongnu] elpa/mastodon a825e44f45 08/31: http: trim the json-string

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit a825e44f45d9d9a7982ea16931c6b02ad5faa144
Author: Slava Barinov 
Commit: Slava Barinov 

http: trim the json-string

Some servers (e.g. Mitra) adds a single newline in the end of answer which
results into (error "\n")
---
 lisp/mastodon-http.el | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lisp/mastodon-http.el b/lisp/mastodon-http.el
index a55097dff2..a91f272dd4 100644
--- a/lisp/mastodon-http.el
+++ b/lisp/mastodon-http.el
@@ -220,9 +220,10 @@ Callback to `mastodon-http--get-response-async', usually
 (goto-char (point-min))
 (re-search-forward "^$" nil 'move)
 (let ((json-array-type (if vector 'vector 'list))
-  (json-string (decode-coding-string
-(buffer-substring-no-properties (point) (point-max))
-'utf-8)))
+  (json-string (string-trim-right
+(decode-coding-string
+ (buffer-substring-no-properties (point) (point-max))
+ 'utf-8
   (kill-buffer)
   (cond ((or (string-empty-p json-string) (null json-string))
  nil)



[nongnu] elpa/mastodon a369dc6178 18/31: Fixed poll expiry minimum time

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit a369dc61782c9225afed7350ca63d16ffacd09d7
Author: Dave Marquardt 
Commit: Dave Marquardt 

Fixed poll expiry minimum time

- Enforce at 300 seconds
- Construct default minimum value directly rather than depend on
  (car (mastodon-toot--poll-expiry-options-alist))
---
 lisp/mastodon-toot.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index e50d42d718..5381c0ff98 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -1486,8 +1486,8 @@ Return a cons of a human readable string, and a 
seconds-from-now string."
  (response (completing-read "poll ends in [or enter seconds]: "
 options nil 'confirm)))
 (or (assoc response options #'string=)
-(if (< (string-to-number response) 600)
-(car options) ;; min 5 mins
+(if (< (string-to-number response) 300)
+(cons "5 minutes" (number-to-string (* 60 5))) ;; min 5 mins
  (cons (format "%s seconds" response) response)
 
 (defun mastodon-toot--poll-expiry-options-alist ()



[nongnu] elpa/mastodon e319ab4cd8 22/31: toot: tags regex - allow _

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit e319ab4cd889bcacdad8e8aacbf15c6873879efe
Author: marty hiatt 
Commit: marty hiatt 

toot: tags regex - allow _
---
 lisp/mastodon-toot.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index 5381c0ff98..697e582049 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -258,7 +258,7 @@ send.")
 
 (defvar mastodon-toot-tag-regex
   (rx (| (any ?\( "\n" "\t" " ") bol)
-  (group-n 2 ?# (+ (any "A-Z" "a-z" "0-9")))
+  (group-n 2 ?# (+ (any "_" "A-Z" "a-z" "0-9")))
   (| "'" word-boundary))) ; boundary or possessive
 
 (defvar mastodon-toot-emoji-regex



[nongnu] elpa/mastodon 1e3b40590d 23/31: tl: view single toot cmd fix up

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 1e3b40590dfa844635ee763c9be2b9c0b4bbfaa2
Author: marty hiatt 
Commit: marty hiatt 

tl: view single toot cmd fix up
---
 lisp/mastodon-tl.el | 15 ++-
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index a69237f663..244ea983cf 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -2475,10 +2475,15 @@ webapp"
 
 ;;; THREADS
 
-(defun mastodon-tl-single-toot (id)
-  "View toot at point in separate buffer.
-ID is that of the toot to view."
+(defun mastodon-tl-view-single-toot ()
+  "View toot at point in a separate buffer."
   (interactive)
+  (let ((id (mastodon-tl--property 'base-item-id)))
+(mastodon-tl--single-toot id)))
+
+(defun mastodon-tl--single-toot (id)
+  "View toot in separate buffer.
+ID is that of the toot to view."
   (let* ((buffer (format "*mastodon-toot-%s*" id))
  (toot (mastodon-http--get-json
 (mastodon-http--api (concat "statuses/" id)
@@ -2499,7 +2504,7 @@ ID is that of the toot to view."
 (defun mastodon-tl--update-toot (json)
   "Call `mastodon-tl-single-toot' on id found in JSON."
   (let ((id (alist-get 'id json)))
-(mastodon-tl-single-toot id)))
+(mastodon-tl--single-toot id)))
 
 (defun mastodon-tl-view-whole-thread ()
   "From a thread view, view entire thread.
@@ -2560,7 +2565,7 @@ programmatically and not crash into
   (if (not (< 0 (+ (length (alist-get 'ancestors context))
(length (alist-get 'descendants context)
   ;; just print the lone toot:
-  (mastodon-tl-single-toot id)
+  (mastodon-tl--single-toot id)
 ;; we have a thread:
 (with-mastodon-buffer buffer #'mastodon-mode nil
   (let ((marker (make-marker)))



[nongnu] elpa/mastodon d80db8e0fe 29/31: autoloads

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit d80db8e0febce72d4c7b49fa8a2abc26256d8b8e
Author: marty hiatt 
Commit: marty hiatt 

autoloads
---
 lisp/mastodon-tl.el | 1 +
 lisp/mastodon.el| 2 ++
 2 files changed, 3 insertions(+)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 2923a204da..b1a5b90cdd 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -96,6 +96,7 @@
 (autoload 'mastodon-notifications--timeline "mastodon-notifications")
 (autoload 'mastodon-notifications--empty-group-json-p "mastodon-notifications")
 (autoload 'mastodon-search--print-tags "mastodon-search")
+(autoload 'mastodon-profile-show-user "mastodon-profile")
 
 (defvar mastodon-toot--visibility)
 (defvar mastodon-toot-mode)
diff --git a/lisp/mastodon.el b/lisp/mastodon.el
index 4407a154c7..404ba2cf42 100644
--- a/lisp/mastodon.el
+++ b/lisp/mastodon.el
@@ -73,6 +73,8 @@
 (when (require 'lingva nil :no-error)
   (autoload 'mastodon-toot-translate-toot-text "mastodon-toot"))
 (autoload 'mastodon-toot--view-toot-history "mastodon-tl")
+(autoload 'mastodon-tl-return "mastodon-tl")
+(autoload 'mastodon-tl-jump-to-followed-tag "mastodon-tl")
 
 ;; for M-x visibility
 ;; (views.el uses `mastodon-mode-map', so we can't easily require it)



[nongnu] elpa/mastodon b7f58adade 07/31: tl: support nil as display_name

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit b7f58adadeed443b7d1b7fd6f8830a13b5429f53
Author: Slava Barinov 
Commit: Slava Barinov 

tl: support nil as display_name

Some servers return no value instead of empty string when display_name is 
not
set which results into nil argument passed to propertize.
---
 lisp/mastodon-profile.el  |  3 ++-
 lisp/mastodon-tl.el   |  3 ++-
 test/mastodon-tl-tests.el | 47 +++
 3 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el
index 95d275d253..177179fdf1 100644
--- a/lisp/mastodon-profile.el
+++ b/lisp/mastodon-profile.el
@@ -693,7 +693,8 @@ MAX-ID is a flag to include the max_id pagination 
parameter."
  (mastodon-profile--image-from-account account 'avatar_static)
  (mastodon-profile--image-from-account account 'header_static)
  "\n"
- (propertize .display_name 'face 'mastodon-display-name-face)
+ (when .display_name
+   (propertize .display_name 'face 'mastodon-display-name-face))
  ;; roles
  (when .roles
(concat " " (mastodon-profile--render-roles .roles)))
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index f6700ed391..c5e4461d01 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -637,7 +637,8 @@ is extracted from it."
   (let ((data (or (alist-get 'account toot)
   toot))) ;; grouped nofifs use account data directly
 (let-alist data
-  (propertize (if (not (string-empty-p .display_name))
+  (propertize (if (and .display_name
+   (not (string-empty-p .display_name)))
   .display_name
 .username)
   'face 'mastodon-display-name-face
diff --git a/test/mastodon-tl-tests.el b/test/mastodon-tl-tests.el
index a4f6fa8249..6078cf2927 100644
--- a/test/mastodon-tl-tests.el
+++ b/test/mastodon-tl-tests.el
@@ -110,6 +110,35 @@
 (reblogged)))
   "A sample reblogged/boosted toot (parsed json)")
 
+(defconst mastodon-tl-test-empty-display-name
+  '((id . 61208)
+(created_at . "2017-04-24T19:01:02.000Z")
+(in_reply_to_id)
+(in_reply_to_account_id)
+(sensitive . :json-false)
+(spoiler_text . "")
+(visibility . "public")
+(account (id . 42)
+ (username . "acct42")
+ (acct . "acct42@example.space")
+ (display_name . nil)
+ (locked . :json-false)
+ (created_at . "2017-04-01T00:00:00.000Z")
+ (followers_count . 99)
+ (following_count . 13)
+ (statuses_count . 101)
+ (note . "E"))
+(media_attachments . ())
+(mentions . ())
+(tags . ())
+(uri . "tag:example.space,2017-04-24:objectId=654321:objectType=Status")
+(url . "https://example.space/users/acct42/updates/123456789";)
+(content . "Just some text")
+(reblogs_count . 0)
+(favourites_count . 0)
+(reblog))
+  "A sample toot (parsed json)")
+
 (defconst mastodon-tl--follow-notify-true-response
   "HTTP/1.1 200 OK
 Date: Mon, 20 Dec 2021 13:42:29 GMT
@@ -532,6 +561,24 @@ Strict-Transport-Security: max-age=31536000
  "7 years, 4 months ago"
  (plist-get properties 'display)))
 
+(ert-deftest mastodon-tl--byline-no-displayname ()
+  "Should not fail when display_name is nil."
+  (let* ((mastodon-tl--show-avatars-p nil)
+ (toot (cons '(reblogged . t) mastodon-tl-test-empty-display-name))
+ (timestamp (cdr (assoc 'created_at toot
+(with-mock
+  (mock (date-to-time timestamp) => '(22782 21551))
+  (mock (mastodon-tl--symbol 'boost) => "B")
+  (mock (mastodon-tl--toot-stats toot) => "")
+  (mock (format-time-string mastodon-toot-timestamp-format '(22782 21551)) 
=> "2999-99-99 00:11:22")
+
+  (should (string= (substring-no-properties
+(mastodon-tl--byline toot))
+   (concat "(B) acct42 (@acct42@example.space) 2999-99-99 
00:11:22
+  "
+   mastodon-tl--horiz-bar "
+"))
+
 (ert-deftest mastodon-tl--consider-timestamp-for-updates-no-active-callback ()
   "Should update the timestamp update variables as expected."
 



[nongnu] elpa/mastodon 63e7e6823d 14/31: Merge pull request 'Update README to mention Cask' (#691) from davemq/mastodon.el:mastodon-readme-cask into develop

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 63e7e6823d5ccf13cf5865c5a95af37bb23584a5
Merge: b3fe122fe6 1b013e9f7b
Author: martianh 
Commit: martianh 

Merge pull request 'Update README to mention Cask' (#691) from 
davemq/mastodon.el:mastodon-readme-cask into develop
---
 README.org | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/README.org b/README.org
index 1b80e59c3d..caf9b0e629 100644
--- a/README.org
+++ b/README.org
@@ -565,11 +565,12 @@ am=, if you want to actually contribute a commit.
 
 *** Fixes and features
 
-1. Create an [[https://codeberg.org/martianh/mastodon.el/issues][issue]] 
detailing what you'd like to do.
-2. Fork the repository and create a branch off of =develop=.
-3. Run the tests and ensure that your code doesn't break any of them.
-4. Create a pull request (to develop) referencing the issue created in
-   step 1.
+1. Install 
[[https://cask.readthedocs.io/en/latest/guide/installation.html][Cask]] if you 
don't already have it installed
+2. Create an [[https://codeberg.org/martianh/mastodon.el/issues][issue]] 
detailing what you'd like to do.
+3. Fork the repository and create a branch off of =develop=.
+4. Run the tests (with =make tests=) and ensure that your code doesn't break 
any of them.
+5. Create a pull request (to develop) referencing the issue created in
+   step 2.
 
 *** Coding style
 



[nongnu] elpa/mastodon 4b2de6183d 28/31: Merge branch 'tags' into develop

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 4b2de6183db3a052673a03a9bf7ed3aca73b9716
Merge: 0d83e87207 d567dea214
Author: marty hiatt 
Commit: marty hiatt 

Merge branch 'tags' into develop
---
 lisp/mastodon-tl.el | 77 -
 lisp/mastodon.el|  4 ++-
 2 files changed, 74 insertions(+), 7 deletions(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 131f97c6e4..2923a204da 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -95,6 +95,8 @@
 (autoload 'mastodon-notifications--current-type "mastodon-notifications")
 (autoload 'mastodon-notifications--timeline "mastodon-notifications")
 (autoload 'mastodon-notifications--empty-group-json-p "mastodon-notifications")
+(autoload 'mastodon-search--print-tags "mastodon-search")
+
 (defvar mastodon-toot--visibility)
 (defvar mastodon-toot-mode)
 (defvar mastodon-active-user)
@@ -1165,6 +1167,39 @@ the toot)."
(string-prefix-p "/tag" path)) ;; "/tag/" or "/tags/"
   (nth 2 split
 
+(defun mastodon-tl--base-tags (tags body-tags)
+  "Return a string of all tags not in BODY-TAGS, linkified.
+TAGS is a list of tag alists, from a post's JSON."
+  (when (mastodon-tl--base-tags-print-p tags body-tags)
+(concat
+ "\n"
+ (cl-loop for tag in tags
+  concat (concat (mastodon-tl--render-base-tag tag body-tags)
+ " ")
+
+(defun mastodon-tl--base-tags-print-p (tags body-tags)
+  "Non-nil if we need to print base tags.
+We need to do so if TAGS contains any elements not in BODY-TAGS."
+  (cl-remove-if (lambda (tag)
+  (member (alist-get 'name tag) body-tags))
+tags))
+
+(defun mastodon-tl--render-base-tag (tag body-tags)
+  "Return TAG as a linkified string, provided it is not in BODY-TAGS."
+  (let ((name (alist-get 'name tag)))
+(unless (member (downcase name) body-tags)
+  (mastodon-tl--buttonify-link
+   (concat "#" name)
+   'mastodon-tab-stop 'hashtag
+   'mastodon-tag name
+   'mouse-face '(highlight)
+   'keymap mastodon-tl--link-keymap
+   'face '(shr-text shr-link)
+   'follow-link t
+   'shr-tab-stop t
+   'shr-url (alist-get 'url tag)
+   'help-echo (concat "Browse tag #" name)
+
 
 ;;; HYPERLINKS
 
@@ -1797,6 +1832,25 @@ Runs `mastodon-tl--render-text' and fetches poll or 
media."
   (let ((prev-id (mastodon-tl--prev-item-id)))
 (string= reply-to-id prev-id)))
 
+(defun mastodon-tl--body-tags (body)
+  "Return a plain string list of the tags in BODY."
+  ;; NB: replies on text props 'mastodon-tab-stop and 'shr-url
+  ;; FIXME: snac tags fail our prop test, not sure about others.
+  (let (list prop)
+(with-temp-buffer
+  (insert body)
+  (goto-char (point-min))
+  (save-match-data
+(while
+(setq prop (text-property-search-forward
+'mastodon-tab-stop 'hashtag t))
+  (goto-char (prop-match-beginning prop))
+  (let ((tag (mastodon-tl--property 'mastodon-tag)))
+(when tag
+  (push (downcase tag) list)))
+  (goto-char (prop-match-end prop)
+list))
+
 (defun mastodon-tl--insert-status
 (toot body &optional detailed-p thread domain unfolded no-byline
   cw-expanded)
@@ -1819,7 +1873,8 @@ CW-EXPANDED means treat content warnings as unfolded."
(length> body mastodon-tl--fold-toots-at-length)))
  (cw-p (not
 (string-empty-p
- (alist-get 'spoiler_text toot)
+ (alist-get 'spoiler_text toot
+ (body-tags (mastodon-tl--body-tags body)))
 (insert
  (propertize ;; body + byline:
   (concat
@@ -1846,6 +1901,11 @@ CW-EXPANDED means treat content warnings as unfolded."
   "LESS" cw-p (not cw-expanded))
""))
 'toot-body t) ;; includes newlines etc. for folding
+   ;; post tags:
+   (let ((tags (alist-get 'tags toot)))
+ ;; FIXME: we also need to test here for normal body tags, and if
+ ;; so, don't go ahead:
+ (if tags (concat (mastodon-tl--base-tags tags body-tags)) ""))
;; byline:
"\n"
(if no-byline
@@ -2448,10 +2508,15 @@ webapp"
 
 ;;; THREADS
 
-(defun mastodon-tl-single-toot (id)
-  "View toot at point in separate buffer.
-ID is that of the toot to view."
+(defun mastodon-tl-view-single-toot ()
+  "View toot at point in a separate buffer."
   (interactive)
+  (let ((id (mastodon-tl--property 'base-item-id)))
+(mastodon-tl--single-toot id)))
+
+(defun mastodon-tl--single-toot (id)
+  "View toot in separate buffer.
+ID is that of the toot to view."
   (let* ((buffer (format "*mastodon-toot-%s*" id))
  (toot (mastodon-http--get-json
 (mastodon-http--api (concat "statuses/" id)
@@ -2472,7 +2537,7 @@ ID is that of the toot to view."
 (defun mastodon-tl--update-toot (json)
   "Call `mastodon-tl-single-toot' on id found i

[nongnu] elpa/mastodon updated (163ba2b0b8 -> f6247f0c9b)

2025-06-02 Thread ELPA Syncer
elpasync pushed a change to branch elpa/mastodon.

  from  163ba2b0b8 build info
   new  3f77204a0c flycheck media.el
   new  7596fefa6d tl updates: respect update-params on calling --more*. 
FIX #681.
   new  2317e3811b tl: proper splice of optional params
   new  b727554a18 updates tl: improve respecting of buffer spec props on 
update.
   new  137bfcdbf0 add a followed_tags view (no pagination as yet).
   new  077aac4b1f tl: thread-do: fix fetch item type when grouped notifs 
enabled.
   new  b3fe122fe6 comment re update/reload view
   new  05dcad9449 Updated README to mention Cask
   new  829b37bb8b Updated the pull request list item to reference the 
correct item
   new  1b013e9f7b Updated the README with how to run the tests
   new  63e7e6823d Merge pull request 'Update README to mention Cask' 
(#691) from davemq/mastodon.el:mastodon-readme-cask into develop
   new  734b7cc518 Made mastodon-toot--read-poll-expiry accept any number 
of seconds.
   new  bc951d430e Merge pull request 'Made mastodon-toot--read-poll-expiry 
accept any number of seconds.' (#692) from 
davemq/mastodon.el:mastodon-tweet-expiry-fix into develop
   new  b7f58adade tl: support nil as display_name
   new  a161f3803e Merge pull request 'Support nil as display_name' (#686) 
from rayslava/mastodon.el:develop into develop
   new  a825e44f45 http: trim the json-string
   new  a95bae2755 Merge pull request 'http: trim the json-string' (#688) 
from rayslava/mastodon.el:feature/http_empty_response into develop
   new  a369dc6178 Fixed poll expiry minimum time
   new  0aad468b2d Merge pull request 'Fixed poll expiry minimum time' 
(#697) from davemq/mastodon.el:fix-poll-minimum into develop
   new  e6f8415e87 toot: tags regex - allow _
   new  0d83e87207 add mastodon-tl-return, RET on foll reqs/folls loads 
profiles. FIX #713
   new  32bc411efd url-lookup: peertube post regex
   new  fe3a4b8e2c WIP tl: render post tags direct from tags data.
   new  e319ab4cd8 toot: tags regex - allow _
   new  1e3b40590d tl: view single toot cmd fix up
   new  9df4feabc8 working baseline tags but not for body tags
   new  d567dea214 tl: autoload
   new  4b2de6183d Merge branch 'tags' into develop
   new  d80db8e0fe autoloads
   new  e24f6ee5db bump
   new  f6247f0c9b Merge branch 'develop'


Summary of changes:
 README.org|  11 +--
 lisp/mastodon-http.el |   7 +-
 lisp/mastodon-profile.el  |   3 +-
 lisp/mastodon-tl.el   | 172 ++
 lisp/mastodon-toot.el |   7 +-
 lisp/mastodon.el  |  11 ++-
 test/mastodon-tl-tests.el |  47 +
 7 files changed, 213 insertions(+), 45 deletions(-)



[nongnu] elpa/mastodon b3fe122fe6 09/31: comment re update/reload view

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit b3fe122fe62097b60a9c67479087934b212a7091
Author: marty hiatt 
Commit: marty hiatt 

comment re update/reload view
---
 lisp/mastodon-tl.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index f6700ed391..1cc00c1e2a 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -3538,7 +3538,8 @@ This location is defined by a non-nil value of
   "Update timeline with new toots."
   (interactive)
   ;; FIXME: actually these buffers should just reload by calling their own
-  ;; load function (actually g is mostly mapped as such):
+  ;; load function (actually g is mostly mapped as such)
+  ;; well actually, g should be for reload, update is different.
   (if (or (member (mastodon-tl--get-buffer-type)
   '(trending-statuses
 trending-tags



[nongnu] elpa/mastodon fe3a4b8e2c 21/31: WIP tl: render post tags direct from tags data.

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit fe3a4b8e2c7690c089805d3756b877b3c347eeaf
Author: marty hiatt 
Commit: marty hiatt 

WIP tl: render post tags direct from tags data.

WIP: we should only render like this if the same tags aren't already
rendered in the item's body, to avoid doubling up.
---
 lisp/mastodon-tl.el | 27 +++
 1 file changed, 27 insertions(+)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index a04e06cfff..a69237f663 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -1165,6 +1165,28 @@ the toot)."
(string-prefix-p "/tag" path)) ;; "/tag/" or "/tags/"
   (nth 2 split
 
+(defun mastodon-tl--base-tags (tags)
+  "TAGS is a list of tag alists, from a post's JSON.
+Return a string of all tags, linkified."
+  (cl-loop for tag in tags
+   concat (concat (mastodon-tl--render-base-tag tag)
+  " ")))
+
+(defun mastodon-tl--render-base-tag (tag)
+  "TAG."
+  (let ((name (alist-get 'name tag)))
+(mastodon-tl--buttonify-link
+ (concat "#" name)
+ 'mastodon-tab-stop 'hashtag
+ 'mastodon-tag name
+ 'mouse-face '(highlight)
+ 'keymap mastodon-tl--link-keymap
+ 'face '(shr-text shr-link)
+ 'follow-link t
+ 'shr-tab-stop t
+ 'shr-url (alist-get 'url tag)
+ 'help-echo (concat "Browse tag #" name
+
 
 ;;; HYPERLINKS
 
@@ -1846,6 +1868,11 @@ CW-EXPANDED means treat content warnings as unfolded."
   "LESS" cw-p (not cw-expanded))
""))
 'toot-body t) ;; includes newlines etc. for folding
+   ;; post tags:
+   (let ((tags (alist-get 'tags toot)))
+ ;; FIXME: we also need to test here for normal body tags, and if
+ ;; so, don't go ahead:
+ (if tags (concat "\n" (mastodon-tl--base-tags tags)) ""))
;; byline:
"\n"
(if no-byline



[nongnu] elpa/mastodon 3f77204a0c 01/31: flycheck media.el

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 3f77204a0c7f5a14bc7601ba450b9dc84d5ac873
Author: marty hiatt 
Commit: marty hiatt 

flycheck media.el
---
 lisp/mastodon-media.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lisp/mastodon-media.el b/lisp/mastodon-media.el
index 87b58b8b38..0e3c24a22b 100644
--- a/lisp/mastodon-media.el
+++ b/lisp/mastodon-media.el
@@ -39,6 +39,7 @@
 
 (autoload 'mastodon-tl--propertize-img-str-or-url "mastodon-tl")
 (autoload 'mastodon-tl--image-trans-check "mastodon-tl")
+(autoload 'mastodon-image-mode "mastodon-tl")
 
 (defvar url-show-status)
 
@@ -334,7 +335,8 @@ image-data prop so it can be toggled."
 
 (defvar mastodon-media--attachments nil
   "A list attachment details for full sized image view buffer.
-The first element is the URL of the image displayed, followed by plists of 
details of all of a toot's attachments.")
+The first element is the URL of the image displayed, followed by plists
+of details of all of a toot's attachments.")
 
 (defun mastodon-media--process-full-sized-image-response
 (status-plist url attachments &optional prev-buf)



[nongnu] elpa/mastodon e6f8415e87 26/31: toot: tags regex - allow _

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit e6f8415e873f9eb711554143006edeb7c0b3bdc5
Author: marty hiatt 
Commit: marty hiatt 

toot: tags regex - allow _
---
 lisp/mastodon-toot.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index 5381c0ff98..697e582049 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -258,7 +258,7 @@ send.")
 
 (defvar mastodon-toot-tag-regex
   (rx (| (any ?\( "\n" "\t" " ") bol)
-  (group-n 2 ?# (+ (any "A-Z" "a-z" "0-9")))
+  (group-n 2 ?# (+ (any "_" "A-Z" "a-z" "0-9")))
   (| "'" word-boundary))) ; boundary or possessive
 
 (defvar mastodon-toot-emoji-regex



[nongnu] elpa/mastodon d567dea214 25/31: tl: autoload

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit d567dea214a6090b5439962dd0a621c2eb2c8ed1
Author: marty hiatt 
Commit: marty hiatt 

tl: autoload
---
 lisp/mastodon-tl.el | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 735e9cbee7..ea27076abc 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -95,6 +95,8 @@
 (autoload 'mastodon-notifications--current-type "mastodon-notifications")
 (autoload 'mastodon-notifications--timeline "mastodon-notifications")
 (autoload 'mastodon-notifications--empty-group-json-p "mastodon-notifications")
+(autoload 'mastodon-search--print-tags "mastodon-search")
+
 (defvar mastodon-toot--visibility)
 (defvar mastodon-toot-mode)
 (defvar mastodon-active-user)



[elpa] externals/polymode 57dbda2a71: Remove strongly- qualifier in the previous commit

2025-06-02 Thread ELPA Syncer
branch: externals/polymode
commit 57dbda2a7140b397662db8e3250666795ec43bcc
Author: Vitalie Spinu 
Commit: Vitalie Spinu 

Remove strongly- qualifier in the previous commit
---
 polymode-core.el | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/polymode-core.el b/polymode-core.el
index d33e812796..50f1c57824 100644
--- a/polymode-core.el
+++ b/polymode-core.el
@@ -1099,12 +1099,12 @@ switch."
 
 (pm--move-overlays old-buffer new-buffer)
 
-(let ((strongly-dedicated-flag (window-dedicated-p)))
-  (when strongly-dedicated-flag
+(let ((dedicated-flag (window-dedicated-p)))
+  (when dedicated-flag
 (set-window-dedicated-p nil nil))
   (set-window-buffer nil new-buffer 'keep-margins)
-  (when strongly-dedicated-flag
-(set-window-dedicated-p nil strongly-dedicated-flag)))
+  (when dedicated-flag
+(set-window-dedicated-p nil dedicated-flag)))
 
 (bury-buffer-internal old-buffer)
 ;; remove old-buffer form window-prev-buffers



[elpa] externals/transient 338ef1a98b: transient-parse-{suffix, suffixes}: Do not validate PREFIX

2025-06-02 Thread Jonas Bernoulli via
branch: externals/transient
commit 338ef1a98b54d5c84e9f7202b1ffb66bb18e9e95
Author: Jonas Bernoulli 
Commit: Jonas Bernoulli 

transient-parse-{suffix,suffixes}: Do not validate PREFIX

We only started this validation in [1: 45de8e46] and the justification
boiled down to "we might as well".

However these functions are being called by `transient--get-layout',
*before* that had a chance to upgrade from the old to the new format,
and here we perform the validation by calling `transient--get-layout',
which together resulted in an infinite loop, and this errors being
repeated many times:

  Not a legacy group definition: PREFIX: \
  (error "Not a transient prefix command or group definition: PREFIX")

1: 2025-05-16 45de8e46f066eab3160f62cbcc76859022c9c1cc
   transient-parse-suffix: Accept object as prefix
---
 lisp/transient.el | 10 --
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/lisp/transient.el b/lisp/transient.el
index 445a457f1c..c2eb5ef58e 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -1519,9 +1519,8 @@ PREFIX is a prefix command symbol or object.
 SUFFIX is a suffix command or a group specification (of
   the same forms as expected by `transient-define-prefix').
 Intended for use in a group's `:setup-children' function."
-  (if (cl-typep prefix 'transient-prefix)
-  (setq prefix (oref prefix command))
-(transient--get-layout prefix)) ; validate
+  (when (cl-typep prefix 'transient-prefix)
+(setq prefix (oref prefix command)))
   (eval (car (transient--parse-child prefix suffix)) t))
 
 (defun transient-parse-suffixes (prefix suffixes)
@@ -1530,9 +1529,8 @@ PREFIX is a prefix command symbol or object.
 SUFFIXES is a list of suffix command or a group specification
   (of the same forms as expected by `transient-define-prefix').
 Intended for use in a group's `:setup-children' function."
-  (if (cl-typep prefix 'transient-prefix)
-  (setq prefix (oref prefix command))
-(transient--get-layout prefix)) ; validate
+  (when (cl-typep prefix 'transient-prefix)
+(setq prefix (oref prefix command)))
   (mapcar (apply-partially #'transient-parse-suffix prefix) suffixes))
 
 ;;; Edit



[nongnu] elpa/mastodon 077aac4b1f 06/31: tl: thread-do: fix fetch item type when grouped notifs enabled.

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 077aac4b1fe7f45894a3e59512f7e0eeca0396c1
Author: marty hiatt 
Commit: marty hiatt 

tl: thread-do: fix fetch item type when grouped notifs enabled.
---
 lisp/mastodon-tl.el | 14 +-
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index a6afe11601..f6700ed391 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -2497,12 +2497,16 @@ view all branches of a thread."
 This is the non-interactive version, so we can call it
 programmatically and not crash into
 `mastodon-toot--with-toot-item'."
-  ;; this function's var must not be id as the above macro binds id and even
-  ;; if we provide the arg (e.g. url-lookup), the macro definition overrides
-  ;; it, making the optional arg unusable!
+  ;; this function's var must not be id as the above macro binds id and
+  ;; even if we provide the arg (e.g. url-lookup), the macro definition
+  ;; overrides it, making the optional arg unusable!
   (let* ((id (or thread-id (mastodon-tl--property 'base-item-id :no-move)))
- (type (mastodon-tl--field 'type
-   (mastodon-tl--property 'item-json 
:no-move)))
+ (type
+  (if (and (mastodon-tl--buffer-type-eq 'notifications)
+   mastodon-group-notifications)
+  (mastodon-tl--property 'notification-type)
+(mastodon-tl--field 'type
+(mastodon-tl--property 'item-json :no-move
  (unfolded-state (mastodon-tl--buffer-property 'thread-unfolded
(current-buffer) 
:noerror))
  (mastodon-tl--expand-content-warnings



[elpa] externals/consult 8a683607c1: Formatting

2025-06-02 Thread ELPA Syncer
branch: externals/consult
commit 8a683607c1e346fb0c5fcacf2248b11cc55f5141
Author: Daniel Mendler 
Commit: Daniel Mendler 

Formatting
---
 consult.el | 34 --
 1 file changed, 16 insertions(+), 18 deletions(-)

diff --git a/consult.el b/consult.el
index 48fce51461..ae3ea1c2cb 100644
--- a/consult.el
+++ b/consult.el
@@ -1920,26 +1920,24 @@ This command is used internally by the narrowing system 
of `consult--read'."
   (run-hooks 'consult--completion-refresh-hook))
 
 (defconst consult--narrow-delete
-  `(menu-item
-"" nil :filter
-,(lambda (&optional _)
-   (when (equal (minibuffer-contents-no-properties) "")
- (lambda ()
-   (interactive)
-   (consult-narrow nil))
+  `( menu-item "" nil :filter
+ ,(lambda (&optional _)
+(when (equal (minibuffer-contents-no-properties) "")
+  (lambda ()
+(interactive)
+(consult-narrow nil))
 
 (defconst consult--narrow-space
-  `(menu-item
-"" nil :filter
-,(lambda (&optional _)
-   (let ((str (minibuffer-contents-no-properties)))
- (when-let ((keys (plist-get consult--narrow-config :keys))
-(pair (or (and (length= str 1) (assoc (aref str 0) keys))
-  (and (equal str "") (assoc ?\s keys)
-   (lambda ()
- (interactive)
- (delete-minibuffer-contents)
- (consult-narrow (car pair
+  `( menu-item "" nil :filter
+ ,(lambda (&optional _)
+(let ((str (minibuffer-contents-no-properties)))
+  (when-let ((keys (plist-get consult--narrow-config :keys))
+ (pair (or (and (length= str 1) (assoc (aref str 0) keys))
+   (and (equal str "") (assoc ?\s keys)
+(lambda ()
+  (interactive)
+  (delete-minibuffer-contents)
+  (consult-narrow (car pair
 
 (defun consult-narrow-help ()
   "Print narrowing help as a `minibuffer-message'.



[nongnu] elpa/gptel 3bfe760d0f: gptel-integrations: Fix tool-import logic

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

gptel-integrations: Fix tool-import logic

* gptel-integrations.el (gptel-mcp-connect, gptel-mcp--get-tools):
Fix issue where all tools from running MCP servers were added even
if we specify one of them to import tools from in
`gptel-mcp-connect'.

New function `gptel-mcp--get-tools' works like
`mcp-hub-get-all-tool', but for a specified list of server names.

TODO: Fix the naming and argument convention across `gptel-mcp-*'
functions.  Some accept a list of server configurations (as in
`mcp-hub-servers'), while some accept a list of server names.

(gptel-mcp--activate-tools): Adjust for `gptel-mcp--get-tools'.

(gptel--suffix-mcp-connect, gptel--suffix-mcp-disconnect): Use new
calling convention of `gptel-mcp-connect' and
`gptel-mcp-disconnect'.

* README.org (Model Context Protocol (MCP) integration): Mention
that mcp.el is now available on MELPA.
---
 README.org|  2 +-
 gptel-integrations.el | 63 +++
 2 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/README.org b/README.org
index ca3621dc79..c942c736cb 100644
--- a/README.org
+++ b/README.org
@@ -1261,7 +1261,7 @@ The [[https://modelcontextprotocol.io/introduction][Model 
Context Protocol]] (MC
 
 To use MCP servers with gptel, you thus need three pieces:
 
-1. The [[https://github.com/lizqwerscott/mcp.el][mcp.el]] package for Emacs
+1. The [[https://github.com/lizqwerscott/mcp.el][mcp.el]] package for Emacs, 
[[https://melpa.org/#/mcp][available on MELPA]].
 2. MCP servers configured for and running via mcp.el.
 3. gptel and access to an LLM
 
diff --git a/gptel-integrations.el b/gptel-integrations.el
index e4ce47c442..20cea6ce46 100644
--- a/gptel-integrations.el
+++ b/gptel-integrations.el
@@ -42,6 +42,9 @@
 (declare-function mcp-hub-start-all-server "mcp-hub")
 (declare-function mcp-stop-server "mcp")
 (declare-function mcp-hub "mcp-hub")
+(declare-function mcp--status "mcp-hub")
+(declare-function mcp--tools "mcp-hub")
+(declare-function mcp-make-text-tool "mcp-hub")
 (defvar mcp-hub-servers)
 (defvar mcp-server-connections)
 
@@ -89,31 +92,34 @@ Call SERVER-CALLBACK after starting MCP servers."
 unregistered-servers))
  (server-active-p
   (lambda (server) (gethash (car server) 
mcp-server-connections)))
- (get-all-tools (lambda () (mcp-hub-get-all-tool :asyncp t 
:categoryp t)))
  (inactive-servers (cl-remove-if server-active-p servers))
  (add-all-tools
-  (lambda ()
+  (lambda (&optional server-names)
 "Register and add tools from servers.  Report failures."
-(let ((tools (funcall get-all-tools))
+(let ((tools (gptel-mcp--get-tools server-names))
   (now-active (cl-remove-if-not server-active-p 
mcp-hub-servers)))
   (mapc (lambda (tool) (apply #'gptel-make-tool tool)) 
tools)
   (gptel-mcp--activate-tools tools)
   (if-let* ((failed (cl-set-difference inactive-servers 
now-active
:test #'equal)))
-  (message "%d/%d server%s failed to start: %s.  Run 
\\[mcp-hub] to investigate."
-   (length failed) (length inactive-servers)
-   (if (= (length failed) 1) "" "s")
-   (mapconcat #'car failed ", "))
-(message "Added %d tools from %d MCP server%s: %s"
- (length tools) (length now-active)
- (if (= (length now-active) 1) "" "s")
- (mapconcat #'car now-active ", ")))
+  (progn
+(message "Inactive-before: %S, Now-Active: %S" 
inactive-servers now-active)
+(message (substitute-command-keys
+  "%d/%d server%s failed to start: %s.  
Run \\[mcp-hub] to investigate.")
+ (length failed) (length inactive-servers)
+ (if (= (length failed) 1) "" "s")
+ (mapconcat #'car failed ", ")))
+(let ((added (or server-names (mapcar #'car 
now-active
+  (message "Added %d tools from %d MCP server%s: %s"
+   (length tools) (length added)
+   (if (= (length added) 1) "" "s")
+   (mapconcat #'identity added ", "
   (when (functionp server

[nongnu] elpa/mastodon 9df4feabc8 24/31: working baseline tags but not for body tags

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit 9df4feabc8a881f3972e3230601171938841734d
Author: marty hiatt 
Commit: marty hiatt 

working baseline tags but not for body tags
---
 lisp/mastodon-tl.el | 75 +
 1 file changed, 53 insertions(+), 22 deletions(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 244ea983cf..735e9cbee7 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -1165,27 +1165,38 @@ the toot)."
(string-prefix-p "/tag" path)) ;; "/tag/" or "/tags/"
   (nth 2 split
 
-(defun mastodon-tl--base-tags (tags)
-  "TAGS is a list of tag alists, from a post's JSON.
-Return a string of all tags, linkified."
-  (cl-loop for tag in tags
-   concat (concat (mastodon-tl--render-base-tag tag)
-  " ")))
-
-(defun mastodon-tl--render-base-tag (tag)
-  "TAG."
+(defun mastodon-tl--base-tags (tags body-tags)
+  "Return a string of all tags not in BODY-TAGS, linkified.
+TAGS is a list of tag alists, from a post's JSON."
+  (when (mastodon-tl--base-tags-print-p tags body-tags)
+(concat
+ "\n"
+ (cl-loop for tag in tags
+  concat (concat (mastodon-tl--render-base-tag tag body-tags)
+ " ")
+
+(defun mastodon-tl--base-tags-print-p (tags body-tags)
+  "Non-nil if we need to print base tags.
+We need to do so if TAGS contains any elements not in BODY-TAGS."
+  (cl-remove-if (lambda (tag)
+  (member (alist-get 'name tag) body-tags))
+tags))
+
+(defun mastodon-tl--render-base-tag (tag body-tags)
+  "Return TAG as a linkified string, provided it is not in BODY-TAGS."
   (let ((name (alist-get 'name tag)))
-(mastodon-tl--buttonify-link
- (concat "#" name)
- 'mastodon-tab-stop 'hashtag
- 'mastodon-tag name
- 'mouse-face '(highlight)
- 'keymap mastodon-tl--link-keymap
- 'face '(shr-text shr-link)
- 'follow-link t
- 'shr-tab-stop t
- 'shr-url (alist-get 'url tag)
- 'help-echo (concat "Browse tag #" name
+(unless (member (downcase name) body-tags)
+  (mastodon-tl--buttonify-link
+   (concat "#" name)
+   'mastodon-tab-stop 'hashtag
+   'mastodon-tag name
+   'mouse-face '(highlight)
+   'keymap mastodon-tl--link-keymap
+   'face '(shr-text shr-link)
+   'follow-link t
+   'shr-tab-stop t
+   'shr-url (alist-get 'url tag)
+   'help-echo (concat "Browse tag #" name)
 
 
 ;;; HYPERLINKS
@@ -1819,6 +1830,25 @@ Runs `mastodon-tl--render-text' and fetches poll or 
media."
   (let ((prev-id (mastodon-tl--prev-item-id)))
 (string= reply-to-id prev-id)))
 
+(defun mastodon-tl--body-tags (body)
+  "Return a plain string list of the tags in BODY."
+  ;; NB: replies on text props 'mastodon-tab-stop and 'shr-url
+  ;; FIXME: snac tags fail our prop test, not sure about others.
+  (let (list prop)
+(with-temp-buffer
+  (insert body)
+  (goto-char (point-min))
+  (save-match-data
+(while
+(setq prop (text-property-search-forward
+'mastodon-tab-stop 'hashtag t))
+  (goto-char (prop-match-beginning prop))
+  (let ((tag (mastodon-tl--property 'mastodon-tag)))
+(when tag
+  (push (downcase tag) list)))
+  (goto-char (prop-match-end prop)
+list))
+
 (defun mastodon-tl--insert-status
 (toot body &optional detailed-p thread domain unfolded no-byline
   cw-expanded)
@@ -1841,7 +1871,8 @@ CW-EXPANDED means treat content warnings as unfolded."
(length> body mastodon-tl--fold-toots-at-length)))
  (cw-p (not
 (string-empty-p
- (alist-get 'spoiler_text toot)
+ (alist-get 'spoiler_text toot
+ (body-tags (mastodon-tl--body-tags body)))
 (insert
  (propertize ;; body + byline:
   (concat
@@ -1872,7 +1903,7 @@ CW-EXPANDED means treat content warnings as unfolded."
(let ((tags (alist-get 'tags toot)))
  ;; FIXME: we also need to test here for normal body tags, and if
  ;; so, don't go ahead:
- (if tags (concat "\n" (mastodon-tl--base-tags tags)) ""))
+ (if tags (concat (mastodon-tl--base-tags tags body-tags)) ""))
;; byline:
"\n"
(if no-byline



[nongnu] elpa/gnuplot 5d8f06ad30: Add gnuplot to interpreter-mode-alist

2025-06-02 Thread ELPA Syncer
branch: elpa/gnuplot
commit 5d8f06ad300ea1dd46b950cbf42f4c24ce30c0ae
Author: Daniel Mendler 
Commit: Daniel Mendler 

Add gnuplot to interpreter-mode-alist
---
 gnuplot.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnuplot.el b/gnuplot.el
index 4ed2ea4b1c..c383a06bf2 100644
--- a/gnuplot.el
+++ b/gnuplot.el
@@ -1889,7 +1889,9 @@ following in your .emacs file:
   (gnuplot-show-comint-buffer))
 
 ;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.gp\\'" . gnuplot-mode))
+(progn
+  (add-to-list 'auto-mode-alist '("\\.gp\\'" . gnuplot-mode))
+  (add-to-list 'interpreter-mode-alist '("gnuplot" . gnuplot-mode)))
 
 (provide 'gnuplot)
 ;;; gnuplot.el ends here



[nongnu] elpa/mastodon e24f6ee5db 30/31: bump

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit e24f6ee5db2594cbfe5b7d503d97261ebd4142c4
Author: marty hiatt 
Commit: marty hiatt 

bump
---
 lisp/mastodon.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/mastodon.el b/lisp/mastodon.el
index 404ba2cf42..185a85edd9 100644
--- a/lisp/mastodon.el
+++ b/lisp/mastodon.el
@@ -6,7 +6,7 @@
 ;; Author: Johnson Denen 
 ;; Marty Hiatt 
 ;; Maintainer: Marty Hiatt 
-;; Version: 2.0.0
+;; Version: 2.0.1
 ;; Package-Requires: ((emacs "28.1") (persist "0.4") (tp "0.7"))
 ;; Homepage: https://codeberg.org/martianh/mastodon.el
 



[nongnu] elpa/mastodon b727554a18 04/31: updates tl: improve respecting of buffer spec props on update.

2025-06-02 Thread ELPA Syncer
branch: elpa/mastodon
commit b727554a182325466f5c33fe2484f91f8a6085de
Author: marty hiatt 
Commit: marty hiatt 

updates tl: improve respecting of buffer spec props on update.

-- more* is called with same buffer active, so we can fetch from buffer
spec rather than need to hand on tiny bits of data in fun arguments.
---
 lisp/mastodon-tl.el | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 145aa646d7..75341b6831 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -2322,7 +2322,8 @@ We hide replies if user explictly set the
 `mastodon-tl--hide-replies' or used PREFIX combination to open a
 timeline."
   (and (mastodon-tl--timeline-proper-p) ; Only if we are in a proper timeline
-   (or mastodon-tl--hide-replies ; User configured to hide replies
+   (or (mastodon-tl--buffer-property 'hide-replies nil :noerror)
+   mastodon-tl--hide-replies ; User configured to hide replies
(equal '(4) prefix ; Timeline called with C-u prefix
 
 
@@ -3285,10 +3286,10 @@ and profile pages when showing followers or accounts 
followed."
   (mastodon-tl--endpoint)
   max-id params
   'mastodon-tl--more*
-  (current-buffer) (point) nil max-id params))
+  (current-buffer) (point) nil max-id))
 
-(defun mastodon-tl--more* (response buffer point-before
-&optional headers max-id update-params)
+(defun mastodon-tl--more*
+(response buffer point-before &optional headers max-id)
   "Append older toots to timeline, asynchronously.
 Runs the timeline's update function on RESPONSE, in BUFFER.
 When done, places point at POINT-BEFORE.
@@ -3341,9 +3342,8 @@ UPDATE-PARAMS is from prev buffer spec, added to the new 
one."
  (mastodon-tl--buffer-name)
  (mastodon-tl--endpoint)
  (mastodon-tl--update-function)
- link-header update-params
- nil ;; FIXME: hide-replies?
- max-id)
+ link-header (mastodon-tl--update-params)
+ (mastodon-tl--hide-replies-p) max-id)
 (message "Loading... done.")))
 
 (defun mastodon-tl--find-property-range (property start-point



[nongnu] elpa/php-mode 40b8abed30: Use save-match-data in php-local-manual.el

2025-06-02 Thread ELPA Syncer
branch: elpa/php-mode
commit 40b8abed3079771e060dd99a56703520dabf5be4
Author: USAMI Kenta 
Commit: USAMI Kenta 

Use save-match-data in php-local-manual.el
---
 lisp/php-local-manual.el | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/lisp/php-local-manual.el b/lisp/php-local-manual.el
index ba4f854ebc..eec5cc3a83 100644
--- a/lisp/php-local-manual.el
+++ b/lisp/php-local-manual.el
@@ -194,6 +194,7 @@ current `tags-file-name'."
 (setq php-local-manual--completion-table php-table
 
 (defun php-local-manual-build-table-from-file (filename)
+  "Build a table of PHP function names from FILENAME."
   (let ((table (make-vector 1022 0))
 (buf (find-file-noselect filename)))
 (with-current-buffer buf
@@ -208,10 +209,11 @@ current `tags-file-name'."
 
 (defun php-local-manual-build-table-from-path (path)
   "Return list of PHP function name from `PATH' directory."
-  (cl-loop for file in (directory-files path nil "^function\\..+\\.html$")
-   if (string-match "\\.\\([-a-zA-Z_0-9]+\\)\\.html$" file)
-   collect (replace-regexp-in-string
-"-" "_" (substring file (match-beginning 1) (match-end 1)) 
t)))
+  (save-match-data
+(cl-loop for file in (directory-files path nil "^function\\..+\\.html$")
+ if (string-match "\\.\\([-a-zA-Z_0-9]+\\)\\.html$" file)
+ collect (replace-regexp-in-string
+  "-" "_" (substring file (match-beginning 1) (match-end 
1)) t
 
 (provide 'php-local-manual)
 ;;; php-local-manual.el ends here



[elpa] externals/vertico c82f09f9dc: vertico-multiform-mode: Add context menu to change display mode

2025-06-02 Thread ELPA Syncer
branch: externals/vertico
commit c82f09f9dc1d90aa22728792836551aa4827fb60
Author: Daniel Mendler 
Commit: Daniel Mendler 

vertico-multiform-mode: Add context menu to change display mode

First enable `vertico-multiform-mode' and `context-menu-mode'. The menu will
appear with a right click in the Vertico minibuffer.
---
 CHANGELOG.org   |  6 ++
 extensions/vertico-mouse.el |  1 +
 extensions/vertico-multiform.el | 33 -
 3 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/CHANGELOG.org b/CHANGELOG.org
index 29a60a1021..6314d23ac2 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -2,6 +2,12 @@
 #+author: Daniel Mendler
 #+language: en
 
+* Development
+
+- =vertico-multiform-mode=: Add context menu to change display mode. First 
enable
+  =vertico-multiform-mode= and =context-menu-mode=. The menu will appear with a
+  right click in the Vertico minibuffer.
+
 * Version 2.2 (2025-05-26)
 
 - Guard Vertico hooks to automatically print stack traces in order to ease
diff --git a/extensions/vertico-mouse.el b/extensions/vertico-mouse.el
index b4218272b1..6a39e984de 100644
--- a/extensions/vertico-mouse.el
+++ b/extensions/vertico-mouse.el
@@ -56,6 +56,7 @@
 (defvar-keymap vertico-mouse-map
   :doc "Additional keymap activated in mouse mode."
   "" (vertico-mouse--click "RET")
+  "" (vertico-mouse--click "TAB")
   "" (vertico-mouse--click "TAB"))
 (fset 'vertico-mouse-map vertico-mouse-map)
 
diff --git a/extensions/vertico-multiform.el b/extensions/vertico-multiform.el
index 87d7f67ec7..6e62e098cb 100644
--- a/extensions/vertico-multiform.el
+++ b/extensions/vertico-multiform.el
@@ -146,14 +146,26 @@ The keys in LIST can be symbols or regexps."
   "Configure Vertico in various forms per command."
   :global t :group 'vertico
   (when (/= (recursion-depth) 0)
-(warn "vertico-multiform must not be toggled from recursive minibuffers"))
+(warn "Vertico multiform must not be toggled from recursive minibuffers"))
   (when vertico-multiform--stack
-(warn "vertico-multiform state is inconsistent")
+(warn "Vertico multiform state is inconsistent")
 (setq vertico-multiform--stack nil))
+  (remove-hook 'context-menu-functions #'vertico-multiform--display-menu)
   (cl-callf2 rassq-delete-all vertico-multiform-map minor-mode-map-alist)
   (when vertico-multiform-mode
+(add-hook 'context-menu-functions #'vertico-multiform--display-menu)
 (push `(vertico--input . ,vertico-multiform-map) minor-mode-map-alist)))
 
+(defvar vertico-multiform--display-modes nil)
+(defvar-local vertico-multiform--display-last nil)
+
+(defun vertico-multiform--display-menu (menu _event)
+  "Add Vertico display modes to MENU."
+  (when vertico--input
+(define-key menu [vertico-multiform--display-menu]
+`(menu-item "Vertico Display" ,vertico-multiform-map)))
+  menu)
+
 (cl-defmethod vertico--advice (&context (vertico-multiform-mode (eql t)) &rest 
app)
   (unwind-protect
   (progn
@@ -183,9 +195,6 @@ ARG can be nil, t, -1, 1 or toggle."
   (setcar vertico-multiform--stack (remove mode modes))
 (push not-mode (car vertico-multiform--stack))
 
-(defvar vertico-multiform--display-modes nil)
-(defvar-local vertico-multiform--display-last nil)
-
 (defun vertico-multiform-vertical (&optional mode)
   "Toggle to display MODE temporarily in minibuffer.
 MODE defaults to the vertical display."
@@ -201,13 +210,10 @@ MODE defaults to the vertical display."
   (vertico-multiform--temporary-mode mode 1))
 (setq vertico-multiform--display-last last)))
 
-(pcase-dolist (`(,key ,name) '(("M-B" buffer)
-   ("M-F" flat)
-   ("M-G" grid)
-   ("M-R" reverse)
-   ("M-U" unobtrusive) ;; must come after flat
-   ("M-V" vertical)))
-  (let ((toggle (intern (format "vertico-multiform-%s" name
+;; unobtrusive must come after flat
+(dolist (name '(buffer flat grid reverse unobtrusive vertical))
+  (let ((toggle (intern (format "vertico-multiform-%s" name)))
+(label (capitalize (symbol-name name
 (unless (eq name 'vertical)
   (let ((mode (intern (format "vertico-%s-mode" name
 (defalias toggle
@@ -215,7 +221,8 @@ MODE defaults to the vertical display."
   (format "Toggle the %s display." name))
 (push mode vertico-multiform--display-modes)))
 (put toggle 'completion-predicate #'vertico--command-p)
-(keymap-set vertico-multiform-map key toggle)))
+(define-key vertico-multiform-map (vector toggle) (cons label toggle))
+(keymap-set vertico-multiform-map (format "M-%c" (aref label 0)) toggle)))
 
 (provide 'vertico-multiform)
 ;;; vertico-multiform.el ends here