Function: completion--twq-try
completion--twq-try is a byte-compiled function defined in
minibuffer.el.gz.
Signature
(completion--twq-try STRING USTRING COMPLETION POINT UNQUOTE REQUOTE)
Source Code
;; Defined in /usr/src/emacs/lisp/minibuffer.el.gz
(defun completion--twq-try (string ustring completion point
unquote requote)
;; Basically two cases: either the new result is
;; - commonprefix1 <point> morecommonprefix <qpos> suffix
;; - commonprefix <qpos> newprefix <point> suffix
(pcase-let*
((prefix (fill-common-string-prefix ustring completion))
(suffix (substring completion (max point (length prefix))))
(`(,qpos . ,qfun) (funcall requote (length prefix) string))
(qstr1 (if (> point (length prefix))
(funcall qfun (substring completion (length prefix) point))))
(qsuffix (funcall qfun suffix))
(qstring (concat (substring string 0 qpos) qstr1 qsuffix))
(qpoint
(cond
((zerop point) 0)
((> point (length prefix)) (+ qpos (length qstr1)))
(t (car (funcall requote point string))))))
;; Make sure `requote' worked.
(if (equal (funcall unquote qstring) completion)
(cons qstring qpoint)
;; If requote failed (e.g. because sifn-requote did not handle
;; Tramp's "/foo:/bar//baz -> /foo:/baz" truncation), then at least
;; try requote properly.
(let ((qstr (funcall qfun completion)))
(cons qstr (length qstr))))))