Subject: bug#24238: closed (Re: bug#24238: 25.1.50; error in capf in sh-script if imenu-index is empty)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 16 Oct 2016 13:58:01 +0000

Your bug report

#24238: 25.1.50; error in capf in sh-script if imenu-index is empty  

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
24238: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=24238
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#24238: 25.1.50; error in capf in sh-script if imenu-index is empty
From: Dmitry Gutov <[email-masked]>
To: Andreas Politz <[email-masked]>
Cc: [email-masked]
Date: Sun, 16 Oct 2016 16:57:11 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 25.2

On 16.10.2016 14:29, Andreas Politz wrote:
> No, I don't.

OK, I pushed it to emacs-25. Thanks for the patch.

Subject: 25.1.50; error in capf in sh-script if imenu-index is empty
From: Andreas Politz <[email-masked]>
To: [email-masked]
Date: Mon, 15 Aug 2016 20:19:16 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

The completion function sh--cmd-completion-table in sh-script.el may use
imenu--make-index-alist to create a list of candidates.  But this
function signals the error imenu-unavailable, if the index is empty.
This is a commonly the case, e.g. if the scripts is new.

Solution: Catch the error condition.

diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 7a9e6c7..5d362e4 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1744,7 +1744,10 @@ sh--vars-before-point
 (defun sh--cmd-completion-table (string pred action)
   (let ((cmds
          (append (when (fboundp 'imenu--make-index-alist)
-                   (mapcar #'car (imenu--make-index-alist)))
+                   (mapcar #'car
+                           (condition-case nil
+                               (imenu--make-index-alist)
+                             (imenu-unavailable nil))))
                  (mapcar (lambda (v) (concat v "="))
                          (sh--vars-before-point))
                  (locate-file-completion-table

-ap