From c8d75046a2f1b5d29e073ac2e4a987145343b0b7 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Fri, 16 Dec 2022 00:45:55 +0200 Subject: [PATCH] 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. --- lisp/progmodes/project.el | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 -- 2.39.2