From f8ff2ef9662f79ebff2ab8e25097eac094c19667 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Mon, 9 Apr 2018 13:31:44 +0000 Subject: [PATCH] Improve completion experience for headers Summary: When calling `completing-read', we should provide a default to prevent the behavior described in https://github.com/DarwinAwardWinner/ido-completing-read-plus#why-does-ret-sometimes-not-select-the-first-completion-on-the-list--why-is-there-an-empty-entry-at-the-beginning-of-the-completion-list--what-happened-to-old-style-default-selection. Also, don't use an assertion to check whether the user selected a header; raise a proper signal instead. Reviewers: klimek Reviewed By: klimek Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D43969 llvm-svn: 329566 --- .../include-fixer/tool/clang-include-fixer.el | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/clang-tools-extra/include-fixer/tool/clang-include-fixer.el b/clang-tools-extra/include-fixer/tool/clang-include-fixer.el index ab10002db6e4..c3a3bba772e6 100644 --- a/clang-tools-extra/include-fixer/tool/clang-include-fixer.el +++ b/clang-tools-extra/include-fixer/tool/clang-include-fixer.el @@ -314,14 +314,18 @@ They are replaced by the single element selected by the user." (goto-char (clang-include-fixer--closest-overlay overlays))) (cl-flet ((header (info) (let-alist info .Header))) ;; The header-infos is already sorted by include-fixer. - (let* ((header (completing-read + (let* ((headers (mapcar #'header .HeaderInfos)) + (header (completing-read (clang-include-fixer--format-message "Select include for '%s': " symbol) - (mapcar #'header .HeaderInfos) - nil :require-match nil - 'clang-include-fixer--history)) + headers nil :require-match nil + 'clang-include-fixer--history + ;; Specify a default to prevent the behavior + ;; described in + ;; https://github.com/DarwinAwardWinner/ido-completing-read-plus#why-does-ret-sometimes-not-select-the-first-completion-on-the-list--why-is-there-an-empty-entry-at-the-beginning-of-the-completion-list--what-happened-to-old-style-default-selection. + (car headers))) (info (cl-find header .HeaderInfos :key #'header :test #'string=))) - (cl-assert info) + (unless info (user-error "No header selected")) (setcar .HeaderInfos info) (setcdr .HeaderInfos nil)))) (mapc #'delete-overlay overlays)))))