Fix overlooked case in erc--get-inserted-msg-beg-at
* lisp/erc/erc.el (erc--get-inserted-msg-beg-at): Account for the start of a props header being `bobp' when searching backwards. (erc--get-inserted-msg-prop): Add optional `point' parameter. * test/lisp/erc/erc-goodies-tests.el (erc--get-inserted-msg-beg/truncated/readonly): New test. * test/lisp/erc/erc-tests.el (erc--get-inserted-msg-beg/truncated): New test. * test/lisp/erc/resources/erc-tests-common.el (erc-tests-common-assert-get-inserted-msg/truncated): New test helper. (Bug#72736)
This commit is contained in:
parent
054602533c
commit
08f662da11
4 changed files with 26 additions and 6 deletions
|
@ -3324,10 +3324,14 @@ value. Otherwise, return the stored value."
|
|||
(macroexp-let2* nil ((point point)
|
||||
(at-start-p at-start-p))
|
||||
`(or (and ,at-start-p ,point)
|
||||
(and-let* ((p (previous-single-property-change ,point 'erc--msg)))
|
||||
(if (and (= p (1- ,point)) (get-text-property p 'erc--msg))
|
||||
p
|
||||
(1- p))))))
|
||||
(let ((p (previous-single-property-change ,point 'erc--msg)))
|
||||
(cond
|
||||
((and p (= p (1- ,point)) (get-text-property p 'erc--msg)) p)
|
||||
(p (1- p))
|
||||
((and (null p)
|
||||
(> ,point (point-min))
|
||||
(get-text-property (1- point) 'erc--msg))
|
||||
(1- point)))))))
|
||||
|
||||
(defmacro erc--get-inserted-msg-end-at (point at-start-p)
|
||||
(macroexp-let2 nil point point
|
||||
|
@ -3356,9 +3360,9 @@ if not found."
|
|||
(and-let* ((b (erc--get-inserted-msg-beg-at point at-start-p)))
|
||||
(cons b (erc--get-inserted-msg-end-at point at-start-p)))))
|
||||
|
||||
(defun erc--get-inserted-msg-prop (prop)
|
||||
(defun erc--get-inserted-msg-prop (prop &optional point)
|
||||
"Return the value of text property PROP for some message at point."
|
||||
(and-let* ((stack-pos (erc--get-inserted-msg-beg (point))))
|
||||
(and-let* ((stack-pos (erc--get-inserted-msg-beg (or point (point)))))
|
||||
(get-text-property stack-pos prop)))
|
||||
|
||||
;; FIXME improve this nascent "message splicing" facility to include a
|
||||
|
|
|
@ -597,6 +597,11 @@
|
|||
#'erc-tests-common-assert-get-inserted-msg/basic
|
||||
(lambda (arg) (should (= 3 (erc--get-inserted-msg-beg arg))))))
|
||||
|
||||
(ert-deftest erc--get-inserted-msg-beg/truncated/readonly ()
|
||||
(erc-tests-common-assert-get-inserted-msg-readonly-with
|
||||
#'erc-tests-common-assert-get-inserted-msg/truncated
|
||||
(lambda (arg) (should (= 1 (erc--get-inserted-msg-beg arg))))))
|
||||
|
||||
(ert-deftest erc--get-inserted-msg-end/readonly ()
|
||||
(erc-tests-common-assert-get-inserted-msg-readonly-with
|
||||
#'erc-tests-common-assert-get-inserted-msg/basic
|
||||
|
|
|
@ -1934,6 +1934,10 @@
|
|||
(erc-tests-common-assert-get-inserted-msg/basic
|
||||
(lambda (arg) (should (= 3 (erc--get-inserted-msg-beg arg))))))
|
||||
|
||||
(ert-deftest erc--get-inserted-msg-beg/truncated ()
|
||||
(erc-tests-common-assert-get-inserted-msg/truncated
|
||||
(lambda (arg) (should (= 1 (erc--get-inserted-msg-beg arg))))))
|
||||
|
||||
(ert-deftest erc--get-inserted-msg-end/basic ()
|
||||
(erc-tests-common-assert-get-inserted-msg/basic
|
||||
(lambda (arg) (should (= 11 (erc--get-inserted-msg-end arg))))))
|
||||
|
|
|
@ -184,6 +184,13 @@ For simplicity, assume string evaluates to itself."
|
|||
(should (looking-back "<bob> hi"))
|
||||
(erc-tests-common-assert-get-inserted-msg 3 11 test-fn))
|
||||
|
||||
(defun erc-tests-common-assert-get-inserted-msg/truncated (test-fn)
|
||||
(erc-tests-common-get-inserted-msg-setup)
|
||||
(with-silent-modifications (delete-region 1 3))
|
||||
(goto-char 9)
|
||||
(should (looking-back "<bob> hi"))
|
||||
(erc-tests-common-assert-get-inserted-msg 1 9 test-fn))
|
||||
|
||||
;; This is a "mixin" and requires a base assertion function, like
|
||||
;; `erc-tests-common-assert-get-inserted-msg/basic', to work.
|
||||
(defun erc-tests-common-assert-get-inserted-msg-readonly-with
|
||||
|
|
Loading…
Add table
Reference in a new issue