[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Making project-files the "canonical" generic
From: |
Stefan Monnier |
Subject: |
Re: Making project-files the "canonical" generic |
Date: |
Wed, 16 Jan 2019 11:38:28 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
BTW, we could also make both "canonical", i.e. allow any project system
to provide either of them, and have the default implementation of both
delegate to the other.
Stefan
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 844744bf95..f971c85a7c 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -157,6 +157,8 @@
vc-directory-exclusion-list)
grep-find-ignored-files))
+(defvar project--from-files nil)
+
(cl-defgeneric project-file-completion-table (project dirs)
"Return a completion table for files in directories DIRS in PROJECT.
DIRS is a list of absolute directories; it should be some
@@ -167,6 +167,8 @@
;; FIXME: Uniquely abbreviate the roots?
(require 'xref)
(let ((all-files
+ (if (not project--from-files)
+ (project-files project dirs) ;; Delegate to project--files.
(cl-mapcan
(lambda (dir)
(let ((command
@@ -178,7 +180,7 @@
(project-ignores project dir)
(expand-file-name dir)))))
(split-string (shell-command-to-string command) "\0" t)))
- dirs)))
+ dirs))))
(lambda (string pred action)
(cond
((eq action 'metadata)
@@ -197,9 +197,10 @@
;; returns a "flat" completion table.
;; FIXME: Maybe we should do the reverse: implement the default
;; `project-file-completion-table' on top of `project-files'.
+ (unless dirs (setq dirs (project-roots project)))
(all-completions
- "" (project-file-completion-table
- project (or dirs (project-roots project)))))
+ "" (let ((project--from-files t))
+ (project-file-completion-table project dirs))))
(defgroup project-vc nil
"Project implementation using the VC package."
- Making project-files the "canonical" generic, was: Re: [Emacs-diffs] master 55ec674: * lisp/multifile.el: New file, extracted from etags.el, Dmitry Gutov, 2019/01/11
- project--completing-read-strict breaks ada-mode project completion table, Stephen Leake, 2019/01/16
- Re: project--completing-read-strict breaks ada-mode project completion table, Stephen Leake, 2019/01/16
- Re: project--completing-read-strict breaks ada-mode project completion table, Stephen Leake, 2019/01/17
- Re: project--completing-read-strict breaks ada-mode project completion table, Dmitry Gutov, 2019/01/17
- Re: project--completing-read-strict breaks ada-mode project completion table, Stephen Leake, 2019/01/18
- Re: project--completing-read-strict breaks ada-mode project completion table, Dmitry Gutov, 2019/01/19
- Re: project--completing-read-strict breaks ada-mode project completion table, Stephen Leake, 2019/01/20