From: F. Jason Park Date: Mon, 11 Sep 2023 05:55:16 +0000 (-0700) Subject: ; Fix example in display-buffer section of ERC manual X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ef4a3c2a6d8ef854bed066ce25b31ff73e1d7664;p=emacs.git ; Fix example in display-buffer section of ERC manual * doc/misc/erc.texi: Fix `display-buffer-alist' example and mention that it's only meant for users of Emacs 29 and above. * test/lisp/erc/erc-tests.el (erc-setup-buffer--custom-action): Add simplistic test case for example in manual. --- diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index 6d7785a9b54..3297d8b17f0 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi @@ -1803,10 +1803,11 @@ Observe that ERC supplies the names of buffer-display options as the symbols @samp{erc-tls} or @samp{url}, the full lineup of which are listed below. -In this second example, the user writes three predicates that somewhat -resemble the ``@code{display-buffer}-like'' function above. These too -look for @var{action} alist keys sharing the names of buffer-display -options (and, in one case, a module's minor mode). +In this second example, for Emacs 29 and above, the user writes three +predicates that somewhat resemble the ``@code{display-buffer}-like'' +function above. These too look for @var{action} alist keys sharing +the names of ERC's buffer-display options (and, in one case, a +module's minor mode). @lisp (defun my-erc-disp-entry-p (_ action) @@ -1821,7 +1822,7 @@ options (and, in one case, a module's minor mode). (defun my-erc-disp-chan-p (_ action) (or (assq 'erc-autojoin-mode action) - (and (memq (cdr (assq 'erc-buffer-display alist)) 'JOIN) + (and (eq (cdr (assq 'erc-buffer-display action)) 'JOIN) (member (erc-default-target) '("#emacs" "#fsf"))))) @end lisp diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el index 3b278959dc1..05d45b2d027 100644 --- a/test/lisp/erc/erc-tests.el +++ b/test/lisp/erc/erc-tests.el @@ -560,6 +560,36 @@ (pop calls))) (should-not calls))) + ;; Mimic simplistic version of example in "(erc) display-buffer". + (when (>= emacs-major-version 29) + (let ((proc erc-server-process)) + (with-temp-buffer + (should-not (eq (window-buffer) (current-buffer))) + (erc-mode) + (setq erc-server-process proc) + + (cl-letf (((symbol-function 'erc--test-fun-p) + (lambda (buf action) + (should (eql 1 (alist-get 'erc-buffer-display action))) + (push (cons 'erc--test-fun-p buf) calls))) + ((symbol-function 'action-fn) + (lambda (buf action) + (should (eql 1 (alist-get 'erc-buffer-display action))) + (should (eql 42 (alist-get 'foo action))) + (push (cons 'action-fn buf) calls) + (selected-window)))) + + (let ((erc--display-context '((erc-buffer-display . 1))) + (display-buffer-alist + `(((and (major-mode . erc-mode) erc--test-fun-p) + action-fn (foo . 42)))) + (erc-buffer-display 'display-buffer)) + + (erc-setup-buffer (current-buffer)) + (should (equal 'action-fn (car (pop calls)))) + (should (equal 'erc--test-fun-p (car (pop calls)))) + (should-not calls)))))) + (should (eq owin (selected-window))) (should (eq obuf (window-buffer)))))