From ed44217d3245ddc8f2cf75c9499d5bb37848cfd7 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Tue, 27 Aug 2019 09:46:28 +0200 Subject: [PATCH] Fix completion in `read-library-name' * lisp/emacs-lisp/find-func.el (read-library-name): Only list .el/.el.gz files when completing (bug#36945). --- lisp/emacs-lisp/find-func.el | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el index 9fc7e4a797d..142c99edd43 100644 --- a/lisp/emacs-lisp/find-func.el +++ b/lisp/emacs-lisp/find-func.el @@ -285,10 +285,19 @@ Interactively, prompt for LIBRARY using the one at or near point." A library name is the filename of an Emacs Lisp library located in a directory under `load-path' (or `find-function-source-path', if non-nil)." - (let* ((dirs (or find-function-source-path load-path)) - (suffixes (find-library-suffixes)) - (table (apply-partially 'locate-file-completion-table - dirs suffixes)) + (let* ((suffix-regexp (mapconcat + (lambda (suffix) + (concat (regexp-quote suffix) "\\'")) + (find-library-suffixes) + "\\|")) + (table (cl-loop for dir in (or find-function-source-path load-path) + when (file-readable-p dir) + append (mapcar + (lambda (file) + (replace-regexp-in-string suffix-regexp + "" file)) + (directory-files dir nil + suffix-regexp)))) (def (if (eq (function-called-at-point) 'require) ;; `function-called-at-point' may return 'require ;; with `point' anywhere on this line. So wrap the -- 2.39.2