Subject: bug#16933: 24.3.50; completion-table-dynamic causes error numberp nil

From: Leo Liu <[email-masked]>
Date: Tue, 04 Mar 2014 19:30:19 +0800

If I modify octave-completion-at-point to allow (= beg end), i.e.

=== modified file 'lisp/progmodes/octave.el'
--- lisp/progmodes/octave.el	2014-02-10 01:34:22 +0000
+++ lisp/progmodes/octave.el	2014-03-04 11:22:04 +0000
@@ -1414,10 +1414,9 @@
         ;; Extend region past point, if applicable.
         (save-excursion (skip-syntax-forward "w_")
                         (setq end (point))))
-    (when (> end beg)
-      (list beg end (or (and (inferior-octave-process-live-p)
-                             (inferior-octave-completion-table))
-                        octave-reserved-words)))))
+    (list beg end (or (and (inferior-octave-process-live-p)
+                           (inferior-octave-completion-table))
+                      octave-reserved-words))))
 
 (define-obsolete-function-alias 'octave-complete-symbol
   'completion-at-point "24.1")

I can reproduce the error this way:

1. Create a new buffer
2. M-x run-octave
3. M-x octave-mode
4. M-x completion-at-point a few times

Debugger entered--Lisp error: (wrong-type-argument numberp nil)
  zerop(nil)
  minibuffer-completion-help(#<marker at 533 in *Scratch*> 533)
  completion--do-completion(#<marker at 533 in *Scratch*> 533)
  completion--in-region-1(#<marker at 533 in *Scratch*> 533)
  ....
  completion-at-point()
  indent-for-tab-command(nil)
  call-interactively(indent-for-tab-command nil nil)
  command-execute(indent-for-tab-command)

I also tried with ggtags-completing-table and got the same error in 24.4

Both completion tables work well in 24.3.

Leo