From: Dmitry Gutov Date: Thu, 15 Dec 2022 22:45:55 +0000 (+0200) Subject: When completing relative project file names, use relative history X-Git-Tag: emacs-29.0.90~1146 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c8d75046a2f1b5d29e073ac2e4a987145343b0b7;p=emacs.git When completing relative project file names, use relative history * lisp/progmodes/project.el: Require 'cl-lib'. * lisp/progmodes/project.el (project--read-file-cpd-relative): Pre-process history entries around completing-read (bug#58447). This includes both filtering by common-parent-directory prefix and mapping into relative names. --- diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 4fd855255b0..559da6dd649 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -174,6 +174,7 @@ ;;; Code: (require 'cl-generic) +(require 'cl-lib) (require 'seq) (eval-when-compile (require 'subr-x)) @@ -1038,7 +1039,14 @@ by the user at will." (_ (when included-cpd (setq substrings (cons "./" substrings)))) (new-collection (project--file-completion-table substrings)) - (relname (let ((history-add-new-input nil)) + (abbr-cpd (abbreviate-file-name common-parent-directory)) + (relname (cl-letf ((history-add-new-input nil) + ((symbol-value hist) + (mapcan + (lambda (s) + (and (string-prefix-p abbr-cpd s) + (list (substring s (length abbr-cpd))))) + (symbol-value hist)))) (project--completing-read-strict prompt new-collection predicate