mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Accept string argument in erc-add-to-input-ring
* lisp/erc/erc-ring.el: (erc-add-to-input-ring) (erc-previous-command): Use existing API to grab input. * test/lisp/erc/erc-tests.el: (erc-ring-previous-command) See (bug#46339).
This commit is contained in:
parent
2a9ce136ed
commit
c9f5c314ad
2 changed files with 74 additions and 8 deletions
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
(require 'ert)
|
||||
(require 'erc)
|
||||
(require 'erc-ring)
|
||||
|
||||
(ert-deftest erc--read-time-period ()
|
||||
(cl-letf (((symbol-function 'read-string) (lambda (&rest _) "")))
|
||||
|
|
@ -45,3 +46,66 @@
|
|||
|
||||
(cl-letf (((symbol-function 'read-string) (lambda (&rest _) "1d")))
|
||||
(should (equal (erc--read-time-period "foo: ") 86400))))
|
||||
|
||||
(ert-deftest erc-ring-previous-command-base-case ()
|
||||
(ert-info ("Create ring when nonexistent and do nothing")
|
||||
(let (erc-input-ring
|
||||
erc-input-ring-index)
|
||||
(erc-previous-command)
|
||||
(should (ring-p erc-input-ring))
|
||||
(should (zerop (ring-length erc-input-ring)))
|
||||
(should-not erc-input-ring-index)))
|
||||
(should-not erc-input-ring))
|
||||
|
||||
(ert-deftest erc-ring-previous-command ()
|
||||
(with-current-buffer (get-buffer-create "*#fake*")
|
||||
(erc-mode)
|
||||
(insert "\n\n")
|
||||
(setq erc-input-marker (make-marker) ; these are all local
|
||||
erc-insert-marker (make-marker)
|
||||
erc-send-completed-hook nil)
|
||||
(set-marker erc-insert-marker (point-max))
|
||||
(erc-display-prompt)
|
||||
(should (= (point) erc-input-marker))
|
||||
(add-hook 'erc-pre-send-functions #'erc-add-to-input-ring nil t)
|
||||
;;
|
||||
(cl-letf (((symbol-function 'erc-process-input-line)
|
||||
(lambda (&rest _)
|
||||
(insert-before-markers
|
||||
(erc-display-message-highlight 'notice "echo: one\n"))))
|
||||
((symbol-function 'erc-command-no-process-p)
|
||||
(lambda (&rest _) t)))
|
||||
(ert-info ("Create ring, populate, recall")
|
||||
(insert "/one")
|
||||
(erc-send-current-line)
|
||||
(should (ring-p erc-input-ring))
|
||||
(should (zerop (ring-member erc-input-ring "/one"))) ; equal
|
||||
(should (save-excursion (forward-line -1) (goto-char (point-at-bol))
|
||||
(looking-at-p "[*]+ echo: one")))
|
||||
(should-not erc-input-ring-index)
|
||||
(erc-bol)
|
||||
(should (looking-at "$"))
|
||||
(erc-previous-command)
|
||||
(erc-bol)
|
||||
(should (looking-at "/one"))
|
||||
(should (zerop erc-input-ring-index)))
|
||||
(ert-info ("Back to one")
|
||||
(should (= (ring-length erc-input-ring) (1+ erc-input-ring-index)))
|
||||
(erc-previous-command)
|
||||
(should-not erc-input-ring-index)
|
||||
(erc-bol)
|
||||
(should (looking-at "$"))
|
||||
(should (equal (ring-ref erc-input-ring 0) "/one")))
|
||||
(ert-info ("Swap input after prompt with previous (#bug46339)")
|
||||
(insert "abc")
|
||||
(erc-previous-command)
|
||||
(should (= 1 erc-input-ring-index))
|
||||
(erc-bol)
|
||||
(should (looking-at "/one"))
|
||||
(should (equal (ring-ref erc-input-ring 0) "abc"))
|
||||
(should (equal (ring-ref erc-input-ring 1) "/one"))
|
||||
(erc-next-command)
|
||||
(erc-bol)
|
||||
(should (looking-at "abc")))))
|
||||
(when noninteractive
|
||||
(kill-buffer "*#fake*")))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue