mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-29 19:48:19 +00:00
* lisp/comint.el (comint--common-quoted-suffix): Check string boundary
before comparing. * lisp/pcomplete.el (pcomplete--common-quoted-suffix): Idem. Fixes: debbugs:11158
This commit is contained in:
parent
df5817ee10
commit
305d9f44b0
@ -1,3 +1,9 @@
|
||||
2012-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* comint.el (comint--common-quoted-suffix): Check string boundary
|
||||
before comparing (bug#11158).
|
||||
* pcomplete.el (pcomplete--common-quoted-suffix): Idem.
|
||||
|
||||
2012-04-04 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* minibuffer.el (completion-extra-properties): Doc fix.
|
||||
|
@ -3069,24 +3069,25 @@ Returns t if successful."
|
||||
(defun comint--common-quoted-suffix (s1 s2)
|
||||
;; FIXME: Copied in pcomplete.el.
|
||||
"Find the common suffix between S1 and S2 where S1 is the expanded S2.
|
||||
S1 is expected to be the unquoted and expanded version of S1.
|
||||
S1 is expected to be the unquoted and expanded version of S2.
|
||||
Returns (PS1 . PS2), i.e. the shortest prefixes of S1 and S2, such that
|
||||
S1 = (concat PS1 SS1) and S2 = (concat PS2 SS2) and
|
||||
SS1 = (unquote SS2)."
|
||||
(let* ((cs (comint--common-suffix s1 s2))
|
||||
(ss1 (substring s1 (- (length s1) cs)))
|
||||
(qss1 (comint-quote-filename ss1))
|
||||
qc)
|
||||
qc s2b)
|
||||
(if (and (not (equal ss1 qss1))
|
||||
(setq qc (comint-quote-filename (substring ss1 0 1)))
|
||||
(eq t (compare-strings s2 (- (length s2) cs (length qc) -1)
|
||||
(- (length s2) cs -1)
|
||||
(setq s2b (- (length s2) cs (length qc) -1))
|
||||
(>= s2b 0) ;bug#11158.
|
||||
(eq t (compare-strings s2 s2b (- (length s2) cs -1)
|
||||
qc nil nil)))
|
||||
;; The difference found is just that one char is quoted in S2
|
||||
;; but not in S1, keep looking before this difference.
|
||||
(comint--common-quoted-suffix
|
||||
(substring s1 0 (- (length s1) cs))
|
||||
(substring s2 0 (- (length s2) cs (length qc) -1)))
|
||||
(substring s2 0 s2b))
|
||||
(cons (substring s1 0 (- (length s1) cs))
|
||||
(substring s2 0 (- (length s2) cs))))))
|
||||
|
||||
|
@ -387,24 +387,25 @@ modified to be an empty string, or the desired separation string."
|
||||
(defun pcomplete--common-quoted-suffix (s1 s2)
|
||||
;; FIXME: Copied in comint.el.
|
||||
"Find the common suffix between S1 and S2 where S1 is the expanded S2.
|
||||
S1 is expected to be the unquoted and expanded version of S1.
|
||||
S1 is expected to be the unquoted and expanded version of S2.
|
||||
Returns (PS1 . PS2), i.e. the shortest prefixes of S1 and S2, such that
|
||||
S1 = (concat PS1 SS1) and S2 = (concat PS2 SS2) and
|
||||
SS1 = (unquote SS2)."
|
||||
(let* ((cs (comint--common-suffix s1 s2))
|
||||
(ss1 (substring s1 (- (length s1) cs)))
|
||||
(qss1 (pcomplete-quote-argument ss1))
|
||||
qc)
|
||||
qc s2b)
|
||||
(if (and (not (equal ss1 qss1))
|
||||
(setq qc (pcomplete-quote-argument (substring ss1 0 1)))
|
||||
(eq t (compare-strings s2 (- (length s2) cs (length qc) -1)
|
||||
(- (length s2) cs -1)
|
||||
(setq s2b (- (length s2) cs (length qc) -1))
|
||||
(>= s2b 0) ;bug#11158.
|
||||
(eq t (compare-strings s2 s2b (- (length s2) cs -1)
|
||||
qc nil nil)))
|
||||
;; The difference found is just that one char is quoted in S2
|
||||
;; but not in S1, keep looking before this difference.
|
||||
(pcomplete--common-quoted-suffix
|
||||
(substring s1 0 (- (length s1) cs))
|
||||
(substring s2 0 (- (length s2) cs (length qc) -1)))
|
||||
(substring s2 0 s2b))
|
||||
(cons (substring s1 0 (- (length s1) cs))
|
||||
(substring s2 0 (- (length s2) cs))))))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user