* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
@ 2013-12-28 5:52 Drew Adams
2014-01-03 4:23 ` Stefan Monnier
` (2 more replies)
0 siblings, 3 replies; 25+ messages in thread
From: Drew Adams @ 2013-12-28 5:52 UTC (permalink / raw)
To: 16274
I believe I reported long ago (in the Emacs 24 cycle, IIRC) that I
occasionally get this error. This is still the case. The value it
complains about not being a function is a list of completions (strings),
which each have text property `face' with values
`completions-common-part' and `(completions-first-difference)' (a list).
I haven't been able to see where in the code this error could occur. I
have noticed it being raised with my setup (icomplete+.el). Dunno
whether it occurs also in emacs -Q.
FWIW, my code does not even reference `icomplete-post-command-hook'
explicitly, and it does not use those particular faces explicitly.
I also have not been able to find the code that issues that error
message. Perhaps it is in some C code - the latest C code I have is for
Emacs 24.3.
A wild guess about this is that the list of completions is the cached
value in variable `completion-all-sorted-completions'. And perhaps in
code like this:
(completion-try-completion name comps nil (length name) md)
Maybe COMPS here (which is the value of
`completion-all-sorted-completions') is somehow expected to be a
function? Does this ring a bell for anyone? Just poking in the dark.
Dunno how to debug this better. The error message does not stop
execution, being on `post-command-hook'. It just flashes ephemerally
and then I can find it in `*Messages*'.
And, again, it seems that this happens just once in a while.
If this info does not help at all, feel free to close the bug. Or leave
it open, for future reference. It has been there for a while now.
In GNU Emacs 24.3.50.1 (i686-pc-mingw32)
of 2013-12-27 on ODIEONE
Bzr revision: 115778 rgm@gnu.org-20131228000456-1797o8z6veuyozs0
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
`configure --prefix=/c/Devel/emacs/binary --enable-checking=yes,glyphs
'CFLAGS=-O0 -g3' LDFLAGS=-Lc:/Devel/emacs/lib
CPPFLAGS=-Ic:/Devel/emacs/include'
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2013-12-28 5:52 bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...)) Drew Adams
@ 2014-01-03 4:23 ` Stefan Monnier
2014-01-03 16:20 ` Drew Adams
2015-01-30 14:25 ` bug#16274: ; One method to produce an error in icomplete-post-command-hook Jeremy Moore
2015-08-11 19:02 ` bug#16274: Can still reproduce in Emacs 24.5.2/x86_64-unknown-linux-gnu Michael Hoffman
2 siblings, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2014-01-03 4:23 UTC (permalink / raw)
To: Drew Adams; +Cc: 16274
> I haven't been able to see where in the code this error could occur.
> I have noticed it being raised with my setup (icomplete+.el). Dunno
> whether it occurs also in emacs -Q.
For now, I'll assume that the problem is in your icomplete+.el, because
in any case, there's not much info to go about tracking down
the problem.
Stefan
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-01-03 4:23 ` Stefan Monnier
@ 2014-01-03 16:20 ` Drew Adams
2014-01-03 22:14 ` Stefan Monnier
0 siblings, 1 reply; 25+ messages in thread
From: Drew Adams @ 2014-01-03 16:20 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 16274
> > I haven't been able to see where in the code this error could
> > occur. I have noticed it being raised with my setup
> > (icomplete+.el). Dunno whether it occurs also in emacs -Q.
>
> For now, I'll assume that the problem is in your icomplete+.el,
> because in any case, there's not much info to go about tracking
> down the problem.
Fair enough. But note that I mentioned that:
> FWIW, my code does not even reference `icomplete-post-command-hook'
> explicitly, and it does not use those particular faces explicitly.
Can you identify the code that issues that error message? That
might help.
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-01-03 16:20 ` Drew Adams
@ 2014-01-03 22:14 ` Stefan Monnier
2014-01-03 22:52 ` Drew Adams
0 siblings, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2014-01-03 22:14 UTC (permalink / raw)
To: Drew Adams; +Cc: 16274
>> FWIW, my code does not even reference `icomplete-post-command-hook'
>> explicitly,
The message only says that the error occurs while running
icomplete-post-command-hook. So if your code affects
something run by icomplete-post-command-hook, it's still a possible culprit.
>> and it does not use those particular faces explicitly.
Obviously the list of strings comes from completion-all-completions or
completion-all-sorted-completions and looks sane. So the error is that
some code mistakenly treats the list as a function.
> Can you identify the code that issues that error message?
It's the C code that runs `post-command-hook', AFAIK.
Stefan
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-01-03 22:14 ` Stefan Monnier
@ 2014-01-03 22:52 ` Drew Adams
2014-01-04 4:51 ` Stefan Monnier
0 siblings, 1 reply; 25+ messages in thread
From: Drew Adams @ 2014-01-03 22:52 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 16274
> Obviously the list of strings comes from completion-all-completions
> or completion-all-sorted-completions and looks sane. So the error is
> that some code mistakenly treats the list as a function.
Yes, I said as much, explicitly.
> > Can you identify the code that issues that error message?
>
> It's the C code that runs `post-command-hook', AFAIK.
I was looking for the function that issued the `invalid-function'
error. It seems to be `eval_sub' (via `Qinvalid_function').
So no special help there.
So far, my best guess is still that in
(completion-try-completion name comps nil (length name) md)
the list COMPS is for some reason being treated as a function (the
second argument can of course be either).
And I'm still wild-guessing that this somehow has to do with
the caching of the list of completions in variable
`completion-all-sorted-completions'.
Maybe `completion--nth-completion' (called by
`completion-try-completion') for some reason finds
(completion-metadata-get metadata 'completion--unquote-requote) to be
non-nil, and so calls its TABLE argument, trying to requote?
Not easy to debug this. I do not see the problem regularly.
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-01-03 22:52 ` Drew Adams
@ 2014-01-04 4:51 ` Stefan Monnier
2014-01-04 7:03 ` Drew Adams
2017-10-22 15:06 ` Charles A. Roelli
0 siblings, 2 replies; 25+ messages in thread
From: Stefan Monnier @ 2014-01-04 4:51 UTC (permalink / raw)
To: Drew Adams; +Cc: 16274
>> > Can you identify the code that issues that error message?
>> It's the C code that runs `post-command-hook', AFAIK.
> I was looking for the function that issued the `invalid-function'
> error. It seems to be `eval_sub' (via `Qinvalid_function').
Right, it's probably eval of funcall.
> So no special help there.
Indeed.
> So far, my best guess is still that in
> (completion-try-completion name comps nil (length name) md)
> the list COMPS is for some reason being treated as a function (the
> second argument can of course be either).
Oh, you mean that the error could come from the fact that `md' goes with
`candidates', so some code might assume that the completion table is
a function based on the `md' data, whereas we passed `comps' which is
a list of strings?
Hmm... that sounds plausible.
> Maybe `completion--nth-completion' (called by
> `completion-try-completion') for some reason finds
> (completion-metadata-get metadata 'completion--unquote-requote) to be
> non-nil, and so calls its TABLE argument, trying to requote?
Apply the patch below. That should replace your error message with
a different one, so if the error message stays the same, the problem
is elsewhere. And if a new message appears we've found a culprit.
Of course, minibuffer.el is preloaded, so you'll want to re-dump your
Emacs, force reloading minibuffer.el(c) from your .emacs, or do some
other dance to make sure you use the new definition of
completion--nth-completion.
Stefan
=== modified file 'lisp/minibuffer.el'
--- lisp/minibuffer.el 2014-01-01 07:43:34 +0000
+++ lisp/minibuffer.el 2014-01-04 04:48:56 +0000
@@ -819,6 +819,7 @@
;; part of the string (e.g. substitute-in-file-name).
(let ((requote
(when (completion-metadata-get metadata 'completion--unquote-requote)
+ (cl-assert (functionp table))
(let ((new (funcall table string point 'completion--unquote)))
(setq string (pop new))
(setq table (pop new))
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-01-04 4:51 ` Stefan Monnier
@ 2014-01-04 7:03 ` Drew Adams
2014-01-04 15:45 ` Drew Adams
2017-10-22 15:06 ` Charles A. Roelli
1 sibling, 1 reply; 25+ messages in thread
From: Drew Adams @ 2014-01-04 7:03 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 16274
> Apply the patch below. That should replace your error message with
> a different one, so if the error message stays the same, the problem
> is elsewhere. And if a new message appears we've found a culprit.
> Of course, minibuffer.el is preloaded, so you'll want to re-dump
> your Emacs, force reloading minibuffer.el(c) from your .emacs, or
> do some other dance to make sure you use the new definition of
> completion--nth-completion.
Hey, thanks for hanging in there. I patched minibuffer.el and will
`load-library' the patched version from my .emacs. That should do it,
I assume.
It's not often that I notice the error (in *Messages*, since the message
itself is fleeting), but I'll try to keep an eye out for the new message
and let you know. (I added a noticeable STRING arg to the `cl-assert'
form.)
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-01-04 7:03 ` Drew Adams
@ 2014-01-04 15:45 ` Drew Adams
2014-02-10 3:53 ` Lars Ingebrigtsen
0 siblings, 1 reply; 25+ messages in thread
From: Drew Adams @ 2014-01-04 15:45 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 16274
> It's not often that I notice the error (in *Messages*, since the
> message itself is fleeting), but I'll try to keep an eye out for
> the new message and let you know. (I added a noticeable STRING
> arg to the `cl-assert' form.)
Well, it didn't take that long. In the same session (after loading
the patched minibuffer.el. I did not get the `cl-assert' violation.
I got the same, original error:
Error in post-command-hook (icomplete-post-command-hook):
(wrong-type-argument stringp nil)
Well, actually, that's not the same error, but it is (IIRC)
the one I reported originally.
I've added some more debug with `stringp' assertions. Will let
you know what I find out.
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-01-04 15:45 ` Drew Adams
@ 2014-02-10 3:53 ` Lars Ingebrigtsen
2014-02-10 16:34 ` Stefan Monnier
0 siblings, 1 reply; 25+ messages in thread
From: Lars Ingebrigtsen @ 2014-02-10 3:53 UTC (permalink / raw)
To: Drew Adams; +Cc: 16274
Drew Adams <drew.adams@oracle.com> writes:
>> It's not often that I notice the error (in *Messages*, since the
>> message itself is fleeting), but I'll try to keep an eye out for
>> the new message and let you know. (I added a noticeable STRING
>> arg to the `cl-assert' form.)
>
> Well, it didn't take that long. In the same session (after loading
> the patched minibuffer.el. I did not get the `cl-assert' violation.
> I got the same, original error:
>
> Error in post-command-hook (icomplete-post-command-hook):
> (wrong-type-argument stringp nil)
>
> Well, actually, that's not the same error, but it is (IIRC)
> the one I reported originally.
>
> I've added some more debug with `stringp' assertions. Will let
> you know what I find out.
You can also use `debug-on-message' to find what make the message appear.
Anyway, is this an Emacs bug?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog http://lars.ingebrigtsen.no/
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-02-10 3:53 ` Lars Ingebrigtsen
@ 2014-02-10 16:34 ` Stefan Monnier
2014-02-10 20:55 ` Drew Adams
0 siblings, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2014-02-10 16:34 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 16274
>> Error in post-command-hook (icomplete-post-command-hook):
>> (wrong-type-argument stringp nil)
> You can also use `debug-on-message' to find what make the message appear.
In this case, you won't learn anything more than what the error message
says, sadly.
> Anyway, is this an Emacs bug?
That was the working hypothesis, yes. Drew, any news on this bug?
Stefan
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-02-10 16:34 ` Stefan Monnier
@ 2014-02-10 20:55 ` Drew Adams
2014-02-20 5:09 ` Drew Adams
0 siblings, 1 reply; 25+ messages in thread
From: Drew Adams @ 2014-02-10 20:55 UTC (permalink / raw)
To: Stefan Monnier, Lars Ingebrigtsen; +Cc: 16274
> > Anyway, is this an Emacs bug?
>
> That was the working hypothesis, yes. Drew, any news on this bug?
Not yet, unfortunately. But I've been checking *Messages*.
And I've kept my copy of minibuffer.el, with the inserted cl-assert's,
up-to-date wrt minibuffer.el changes. I'll keep watching *Messages*.
Unfortunately, although I've pretty much sprinkled cl-assert's
everywhere, I still see the error with no cl-assert message. Here,
for example, an extract of *Messages* from today:
...
Refining difference region 22 ...
Saving old diff region #22 of buffer A. To recover, type `ra' [2 times]
Only white-space differences in region 22
Quit this Ediff session? (y or n) y
Saving file d:/path/to/stefan-minibuffer.el...
Wrote d:/path/to/stefan-minibuffer.el
byte-code: Beginning of buffer
Quit
Undo! [2 times]
Error in post-command-hook (icomplete-post-command-hook): (wrong-type-argument stringp yes)
Sending...
Sending via mail...
Sending...done
Back to top level.
Mark set
Auto-saving...done
Mark set [2 times]
...
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-02-10 20:55 ` Drew Adams
@ 2014-02-20 5:09 ` Drew Adams
2014-07-19 21:51 ` Drew Adams
0 siblings, 1 reply; 25+ messages in thread
From: Drew Adams @ 2014-02-20 5:09 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 16274
> > Drew, any news on this bug?
An update, but I'm not sure whether it is the exact same problem I
have seen before. After changing some of my code recently, and doing
something different, I can now get such an assertion violation.
If I turn off icomplete-mode then the problem goes away.
The assertion violation occurs in `completion--nth-completion', after
(when (completion-metadata-get metadata 'completion--unquote-requote).
I inserted this debug code just after that arg to `when':
(message "N: %S, STRING: %S, TABLE: %S, PRED: %S, POINT: %S, METADATA: %S"
n string table pred point metadata)
(cl-assert (functionp table) nil
"=================== INVALID FUNCTION ==================")
This is what I see in *Messages* (I've added some newlines for the mail):
N: 2, STRING: "ls", TABLE: read-file-name-internal, PRED: file-exists-p,
POINT: 2, METADATA: (metadata (category . file) (completion--unquote-requote . t))
N: 1, STRING: "ls", TABLE: (#("ls-lisp+.el" 0 1 (face completions-common-part)
1 2 (face completions-common-part) 2 3 (face (completions-first-difference)))
#("ls-lisp-20.el" 0 1 (face completions-common-part) 1 2
(face completions-common-part) 2 3 (face (completions-first-difference)))),
PRED: nil, POINT: 2, METADATA: (metadata (category . file)
(completion--unquote-requote . t))
Error in post-command-hook (icomplete-post-command-hook):
(error "=================== INVALID FUNCTION ==================")
There are two calls to `completion--nth-completion' here, of which the
first (which I guess corresponds to `completion-all-completions') goes OK.
For the second (which I guess corresponds to `completion-try-completion'),
arg TABLE is a list of (propertized) strings, not a function.
I do not understand this code very well. Hope this sheds some light for you.
I doubt if describing what I was doing at the time will help, but here
it is, just in case:
With my code (Icicles), I use a different kind of completion for `!'
in Dired (e.g.). It is file-name completion (against program files in
the path etc.), but the minibuffer history in this case is
`shell-command-history'. I hit `!' on a file in Dired, then hit `M-p'
to access the first item of the history, which was `ls' (which matches
a couple of file names). It was when I hit `M-p' that I got the assertion
violation.
The same thing happened using my icomplete+.el and using vanilla
icomplete.el.
With a little more debug I determined that it is the second call to
`completion-try-completion' that causes the problem: the one that
is used when BASE-SIZE is not > 0. In this case, BASE-SIZE = 0, so
this code is executed:
;; If the `comps' are 0-based, the result should be the same with `comps'.
(completion-try-completion name comps nil (length name) md)))
The problem is apparently that COMPS is a list of strings (file names),
not a function.
HTH. Let me know if you have further debugging suggestions or need
more info.
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-02-20 5:09 ` Drew Adams
@ 2014-07-19 21:51 ` Drew Adams
2015-12-26 3:40 ` Drew Adams
0 siblings, 1 reply; 25+ messages in thread
From: Drew Adams @ 2014-07-19 21:51 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 16274
FWIW, just got the error again, in this version:
In GNU Emacs 24.4.50.1 (i686-pc-mingw32)
of 2014-06-28 on ODIEONE
Bzr revision: 117431 rgm@gnu.org-20140628015517-eku6hj8mpgcvfnso
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
`configure --prefix=/c/Devel/emacs/snapshot/trunk
--enable-checking=yes,glyphs 'CFLAGS=-O0 -g3'
LDFLAGS=-Lc:/Devel/emacs/lib 'CPPFLAGS=-DGC_MCHECK=1
-Ic:/Devel/emacs/include''
Error in post-command-hook (icomplete-post-command-hook): (cl-assertion-failed (functionp table))
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: ; One method to produce an error in icomplete-post-command-hook
2013-12-28 5:52 bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...)) Drew Adams
2014-01-03 4:23 ` Stefan Monnier
@ 2015-01-30 14:25 ` Jeremy Moore
2015-08-11 19:02 ` bug#16274: Can still reproduce in Emacs 24.5.2/x86_64-unknown-linux-gnu Michael Hoffman
2 siblings, 0 replies; 25+ messages in thread
From: Jeremy Moore @ 2015-01-30 14:25 UTC (permalink / raw)
To: 16274
[-- Attachment #1: Type: text/plain, Size: 3494 bytes --]
Hi folks,
I get a similar error by following this sequence in 24.4.1:
1. emacs -Q
2. M-x icomplete-mode
3. M-x set-variable icomplete-show-matches-on-no-input t
4. C-x C-f C-a C-k
Version and settings are below.
Regards,
Jeremy
In GNU Emacs 24.4.1 (i686-pc-mingw32)
of 2014-10-24 on LEG570
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
`configure --prefix=/c/usr'
Important settings:
value of $LANG: ENG
locale-coding-system: cp1252
Major mode: Lisp Interaction
Minor modes in effect:
icomplete-mode: t
tooltip-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
M-x i c o m p l e t e SPC m o d e <return> M-x s e
t SPC v a r <return> i c o m p l e t e SPC s h o w
<return> t <return> C-x C-f C-a C-k C-g M-x r e p o
t <backspace> r t <return>
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Icomplete mode enabled
Error in post-command-hook (icomplete-post-command-hook): (invalid-function
(#("./" 0 1 (face (completions-first-difference))) #("../" 0 1 (face
(completions-first-difference))) #("addpm.exe" 0 1 (face
(completions-first-difference))) #("ctags.exe" 0 1 (face
(completions-first-difference))) #("emacs.exe" 0 1 (face
(completions-first-difference))) #("etags.exe" 0 1 (face
(completions-first-difference))) #("libXpm.dll" 0 1 (face
(completions-first-difference))) #("ebrowse.exe" 0 1 (face
(completions-first-difference))) #("runemacs.exe" 0 1 (face
(completions-first-difference))) #("emacs-24.4.exe" 0 1 (face
(completions-first-difference))) #("grep-changelog" 0 1 (face
(completions-first-difference))) #("runvanilla.lnk" 0 1 (face
(completions-first-difference))) #("emacsclient.exe" 0 1 (face
(completions-first-difference))) #("emacsclientw.exe" 0 1 (face
(completions-first-difference)))))
Quit
Load-path shadows:
None found.
Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils cus-edit easymenu wid-edit cl-loaddefs cl-lib
help-fns mule-util cus-start cus-load icomplete time-date tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel dos-w32
ls-lisp w32-common-fns disp-table w32-win w32-vars tool-bar dnd fontset
image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode
register page menu-bar rfn-eshadow timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
w32notify w32 multi-tty emacs)
Memory information:
((conses 8 94199 5225)
(symbols 32 19208 0)
(miscs 32 36 138)
(strings 16 14989 3911)
(string-bytes 1 391743)
(vectors 8 10790)
(vector-slots 4 394081 3824)
(floats 8 65 84)
(intervals 28 212 41)
(buffers 508 11))
[-- Attachment #2: Type: text/html, Size: 4096 bytes --]
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: Can still reproduce in Emacs 24.5.2/x86_64-unknown-linux-gnu
2013-12-28 5:52 bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...)) Drew Adams
2014-01-03 4:23 ` Stefan Monnier
2015-01-30 14:25 ` bug#16274: ; One method to produce an error in icomplete-post-command-hook Jeremy Moore
@ 2015-08-11 19:02 ` Michael Hoffman
2 siblings, 0 replies; 25+ messages in thread
From: Michael Hoffman @ 2015-08-11 19:02 UTC (permalink / raw)
To: 16274
I can reproduce this with Emacs 24.5.2 on Linux using the instructions found in <http://lists.gnu.org/archive/html/bug-gnu-emacs/2015-01/msg00995.html>. Specifically:
1. emacs -Q
2. M-x icomplete-mode
3. M-x set-variable icomplete-show-matches-on-no-input t
4. C-x C-f C-a C-k
I have now set `icomplete-show-matches-on-no-input` to `nil` and have not triggered the bug again.
In GNU Emacs 24.5.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.8)
of 2015-07-29 on mhoffman2.uhnres.utoronto.ca
Windowing system distributor `The X.Org Foundation', version 11.0.11500000
System Description: CentOS Linux release 7.1.1503 (Core)
Configured using:
`configure --prefix=/users/mhoffman
--exec-prefix=/users/mhoffman/arch/Linux-x86_64 'CFLAGS=-O2
-march=native -pipe -fomit-frame-pointer' LDFLAGS=-Wl,-O1'
Important settings:
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=ibus
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
icomplete-mode: t
tooltip-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Icomplete mode enabled
Error in post-command-hook (icomplete-post-command-hook): (invalid-function (#("./" 0 1 (face (completions-first-difference))) #("../" 0 1 (face (completions-first-difference)))))
Quit
Load-path shadows:
None found.
Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils cus-edit easymenu wid-edit cl-loaddefs cl-lib
help-fns mule-util cus-start cus-load icomplete time-date tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)
Memory information:
((conses 16 90594 3758)
(symbols 48 19313 0)
(miscs 40 36 124)
(strings 32 13452 4435)
(string-bytes 1 370253)
(vectors 16 10101)
(vector-slots 8 392565 9391)
(floats 8 71 91)
(intervals 56 176 1)
(buffers 960 11)
(heap 1024 20881 916))
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-07-19 21:51 ` Drew Adams
@ 2015-12-26 3:40 ` Drew Adams
2017-02-03 15:49 ` Drew Adams
0 siblings, 1 reply; 25+ messages in thread
From: Drew Adams @ 2015-12-26 3:40 UTC (permalink / raw)
To: 16274
> FWIW, just got the error again, in this version:
>
> In GNU Emacs 24.4.50.1 (i686-pc-mingw32)
> of 2014-06-28 on ODIEONE
> ...
>
> Error in post-command-hook (icomplete-post-command-hook):
> (cl-assertion-failed (functionp table))
FYI, I still get this error fairly often, in Emacs 25 builds.
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2015-12-26 3:40 ` Drew Adams
@ 2017-02-03 15:49 ` Drew Adams
0 siblings, 0 replies; 25+ messages in thread
From: Drew Adams @ 2017-02-03 15:49 UTC (permalink / raw)
To: 16274
Now that this bug reported 4 years ago has been confirmed by someone else, perhaps it can be fixed? Thx.
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2014-01-04 4:51 ` Stefan Monnier
2014-01-04 7:03 ` Drew Adams
@ 2017-10-22 15:06 ` Charles A. Roelli
2017-11-01 20:02 ` Charles A. Roelli
1 sibling, 1 reply; 25+ messages in thread
From: Charles A. Roelli @ 2017-10-22 15:06 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 16274
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Fri, 03 Jan 2014 23:51:48 -0500
>
> > So far, my best guess is still that in
> > (completion-try-completion name comps nil (length name) md)
> > the list COMPS is for some reason being treated as a function (the
> > second argument can of course be either).
>
> Oh, you mean that the error could come from the fact that `md' goes with
> `candidates', so some code might assume that the completion table is
> a function based on the `md' data, whereas we passed `comps' which is
> a list of strings?
>
> Hmm... that sounds plausible.
This seems to be the mistake. If you pass nil instead of `md' (as in
the patch below), then there's no more problem.
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index 038f58f..38be657 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -395,7 +395,7 @@ icomplete-completions
;; If the `comps' are 0-based, the result should be
;; the same with `comps'.
(completion-try-completion
- name comps nil (length name) md)))
+ name comps nil (length name) nil)))
(most (if (consp most-try) (car most-try)
(if most-try (car comps) "")))
;; Compare name and most, so we can determine if name is
Alternatively, this part of `completion--nth-completion' could be
updated to respond to `completio--unquote-requote' in the completion
metadata when `table' is not a function:
(when (completion-metadata-get metadata 'completion--unquote-requote)
(cl-assert (functionp table))
(let ((new (funcall table string point 'completion--unquote)))
(No idea if that would make sense.)
I was using this recipe for testing:
> Date: Fri, 30 Jan 2015 14:25:04 +0000
> From: Jeremy Moore <jmoore@ieee.org>
>
> Hi folks,
>
> I get a similar error by following this sequence in 24.4.1:
> 1. emacs -Q
> 2. M-x icomplete-mode
> 3. M-x set-variable icomplete-show-matches-on-no-input t
> 4. C-x C-f C-a C-k
>
> Version and settings are below.
>
> Regards,
> Jeremy
>
> In GNU Emacs 24.4.1 (i686-pc-mingw32)
> of 2014-10-24 on LEG570
> Windowing system distributor `Microsoft Corp.', version 6.1.7601
> Configured using:
> `configure --prefix=/c/usr'
^ permalink raw reply related [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2017-10-22 15:06 ` Charles A. Roelli
@ 2017-11-01 20:02 ` Charles A. Roelli
2017-11-04 8:56 ` Eli Zaretskii
0 siblings, 1 reply; 25+ messages in thread
From: Charles A. Roelli @ 2017-11-01 20:02 UTC (permalink / raw)
To: Charles A. Roelli; +Cc: 16274, monnier
Ping! I hope to fix this for emacs-26 if it's possible. It also
solves Bug#28898.
> Date: Sun, 22 Oct 2017 17:06:35 +0200
> From: charles@aurox.ch (Charles A. Roelli)
>
> > From: Stefan Monnier <monnier@iro.umontreal.ca>
> > Date: Fri, 03 Jan 2014 23:51:48 -0500
> >
> > > So far, my best guess is still that in
> > > (completion-try-completion name comps nil (length name) md)
> > > the list COMPS is for some reason being treated as a function (the
> > > second argument can of course be either).
> >
> > Oh, you mean that the error could come from the fact that `md' goes with
> > `candidates', so some code might assume that the completion table is
> > a function based on the `md' data, whereas we passed `comps' which is
> > a list of strings?
> >
> > Hmm... that sounds plausible.
>
> This seems to be the mistake. If you pass nil instead of `md' (as in
> the patch below), then there's no more problem.
>
> diff --git a/lisp/icomplete.el b/lisp/icomplete.el
> index 038f58f..38be657 100644
> --- a/lisp/icomplete.el
> +++ b/lisp/icomplete.el
> @@ -395,7 +395,7 @@ icomplete-completions
> ;; If the `comps' are 0-based, the result should be
> ;; the same with `comps'.
> (completion-try-completion
> - name comps nil (length name) md)))
> + name comps nil (length name) nil)))
> (most (if (consp most-try) (car most-try)
> (if most-try (car comps) "")))
> ;; Compare name and most, so we can determine if name is
>
> Alternatively, this part of `completion--nth-completion' could be
> updated to respond to `completio--unquote-requote' in the completion
> metadata when `table' is not a function:
>
> (when (completion-metadata-get metadata 'completion--unquote-requote)
> (cl-assert (functionp table))
> (let ((new (funcall table string point 'completion--unquote)))
>
> (No idea if that would make sense.)
>
> I was using this recipe for testing:
>
> > Date: Fri, 30 Jan 2015 14:25:04 +0000
> > From: Jeremy Moore <jmoore@ieee.org>
> >
> > Hi folks,
> >
> > I get a similar error by following this sequence in 24.4.1:
> > 1. emacs -Q
> > 2. M-x icomplete-mode
> > 3. M-x set-variable icomplete-show-matches-on-no-input t
> > 4. C-x C-f C-a C-k
> >
> > Version and settings are below.
> >
> > Regards,
> > Jeremy
> >
> > In GNU Emacs 24.4.1 (i686-pc-mingw32)
> > of 2014-10-24 on LEG570
> > Windowing system distributor `Microsoft Corp.', version 6.1.7601
> > Configured using:
> > `configure --prefix=/c/usr'
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2017-11-01 20:02 ` Charles A. Roelli
@ 2017-11-04 8:56 ` Eli Zaretskii
2017-11-07 4:06 ` Stefan Monnier
0 siblings, 1 reply; 25+ messages in thread
From: Eli Zaretskii @ 2017-11-04 8:56 UTC (permalink / raw)
To: Charles A. Roelli; +Cc: 16274, monnier
> Date: Wed, 01 Nov 2017 21:02:00 +0100
> From: charles@aurox.ch (Charles A. Roelli)
> Cc: 16274@debbugs.gnu.org, monnier@iro.umontreal.ca
>
> Ping! I hope to fix this for emacs-26 if it's possible. It also
> solves Bug#28898.
Stefan, any objections for pushing this to the emacs-26 branch?
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2017-11-04 8:56 ` Eli Zaretskii
@ 2017-11-07 4:06 ` Stefan Monnier
2017-11-11 10:09 ` Eli Zaretskii
0 siblings, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2017-11-07 4:06 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 16274, Charles A. Roelli
>> Ping! I hope to fix this for emacs-26 if it's possible. It also
>> solves Bug#28898.
> Stefan, any objections for pushing this to the emacs-26 branch?
Yes, using nil instead of `md` has other undesirable side-effects.
E.g. it loses the `category` metadata so it will cause the wrong
completion-styles to be used e.g. in C-x b.
Does the patch below work around the problem?
BTW, thanks Charles for the recipe,
Stefan
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index f13f1fa798..54a6afeca9 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -896,8 +896,15 @@ completion--nth-completion
;; than from completion-extra-properties) because it may apply only to some
;; part of the string (e.g. substitute-in-file-name).
(let ((requote
- (when (completion-metadata-get metadata 'completion--unquote-requote)
- (cl-assert (functionp table))
+ (when (and
+ (completion-metadata-get metadata 'completion--unquote-requote)
+ ;; Sometimes a table's metadata is used on another
+ ;; table (typically that other table is just a list taken
+ ;; from the output of `all-completions' or something equivalent,
+ ;; for progressive refinement).
+ ;; FIXME: Rather than do nothing, we should somehow call
+ ;; the original table, in that case!
+ (functionp table))
(let ((new (funcall table string point 'completion--unquote)))
(setq string (pop new))
(setq table (pop new))
^ permalink raw reply related [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2017-11-07 4:06 ` Stefan Monnier
@ 2017-11-11 10:09 ` Eli Zaretskii
2017-11-11 10:31 ` Charles A. Roelli
0 siblings, 1 reply; 25+ messages in thread
From: Eli Zaretskii @ 2017-11-11 10:09 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 16274, charles
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: charles@aurox.ch (Charles A. Roelli), 16274@debbugs.gnu.org
> Date: Mon, 06 Nov 2017 23:06:26 -0500
>
> >> Ping! I hope to fix this for emacs-26 if it's possible. It also
> >> solves Bug#28898.
> > Stefan, any objections for pushing this to the emacs-26 branch?
>
> Yes, using nil instead of `md` has other undesirable side-effects.
> E.g. it loses the `category` metadata so it will cause the wrong
> completion-styles to be used e.g. in C-x b.
>
> Does the patch below work around the problem?
Ping! Charles, any comments?
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2017-11-11 10:09 ` Eli Zaretskii
@ 2017-11-11 10:31 ` Charles A. Roelli
2017-11-11 10:41 ` Eli Zaretskii
0 siblings, 1 reply; 25+ messages in thread
From: Charles A. Roelli @ 2017-11-11 10:31 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 16274, monnier
> Date: Sat, 11 Nov 2017 12:09:00 +0200
> From: Eli Zaretskii <eliz@gnu.org>
>
> > From: Stefan Monnier <monnier@iro.umontreal.ca>
> > Cc: charles@aurox.ch (Charles A. Roelli), 16274@debbugs.gnu.org
> > Date: Mon, 06 Nov 2017 23:06:26 -0500
> >
> > >> Ping! I hope to fix this for emacs-26 if it's possible. It also
> > >> solves Bug#28898.
> > > Stefan, any objections for pushing this to the emacs-26 branch?
> >
> > Yes, using nil instead of `md` has other undesirable side-effects.
> > E.g. it loses the `category` metadata so it will cause the wrong
> > completion-styles to be used e.g. in C-x b.
> >
> > Does the patch below work around the problem?
>
> Ping! Charles, any comments?
All good. Thanks to both of you for looking into this.
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2017-11-11 10:31 ` Charles A. Roelli
@ 2017-11-11 10:41 ` Eli Zaretskii
2017-11-11 15:25 ` Stefan Monnier
0 siblings, 1 reply; 25+ messages in thread
From: Eli Zaretskii @ 2017-11-11 10:41 UTC (permalink / raw)
To: Charles A. Roelli; +Cc: 16274, monnier
> Date: Sat, 11 Nov 2017 11:31:45 +0100
> From: charles@aurox.ch (Charles A. Roelli)
> CC: monnier@iro.umontreal.ca, 16274@debbugs.gnu.org
>
> > Date: Sat, 11 Nov 2017 12:09:00 +0200
> > From: Eli Zaretskii <eliz@gnu.org>
> >
> > > From: Stefan Monnier <monnier@iro.umontreal.ca>
> > > Cc: charles@aurox.ch (Charles A. Roelli), 16274@debbugs.gnu.org
> > > Date: Mon, 06 Nov 2017 23:06:26 -0500
> > >
> > > >> Ping! I hope to fix this for emacs-26 if it's possible. It also
> > > >> solves Bug#28898.
> > > > Stefan, any objections for pushing this to the emacs-26 branch?
> > >
> > > Yes, using nil instead of `md` has other undesirable side-effects.
> > > E.g. it loses the `category` metadata so it will cause the wrong
> > > completion-styles to be used e.g. in C-x b.
> > >
> > > Does the patch below work around the problem?
> >
> > Ping! Charles, any comments?
>
> All good. Thanks to both of you for looking into this.
Thanks. Stefan, please install your changes and close the bug.
^ permalink raw reply [flat|nested] 25+ messages in thread
* bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...))
2017-11-11 10:41 ` Eli Zaretskii
@ 2017-11-11 15:25 ` Stefan Monnier
0 siblings, 0 replies; 25+ messages in thread
From: Stefan Monnier @ 2017-11-11 15:25 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Charles A. Roelli, 16274-done
>> All good. Thanks to both of you for looking into this.
Thanks, installed,
Stefan
^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2017-11-11 15:25 UTC | newest]
Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-28 5:52 bug#16274: 24.3.50; Error in post-command-hook (icomplete-post-command-hook): (invalid-function ("..." ...)) Drew Adams
2014-01-03 4:23 ` Stefan Monnier
2014-01-03 16:20 ` Drew Adams
2014-01-03 22:14 ` Stefan Monnier
2014-01-03 22:52 ` Drew Adams
2014-01-04 4:51 ` Stefan Monnier
2014-01-04 7:03 ` Drew Adams
2014-01-04 15:45 ` Drew Adams
2014-02-10 3:53 ` Lars Ingebrigtsen
2014-02-10 16:34 ` Stefan Monnier
2014-02-10 20:55 ` Drew Adams
2014-02-20 5:09 ` Drew Adams
2014-07-19 21:51 ` Drew Adams
2015-12-26 3:40 ` Drew Adams
2017-02-03 15:49 ` Drew Adams
2017-10-22 15:06 ` Charles A. Roelli
2017-11-01 20:02 ` Charles A. Roelli
2017-11-04 8:56 ` Eli Zaretskii
2017-11-07 4:06 ` Stefan Monnier
2017-11-11 10:09 ` Eli Zaretskii
2017-11-11 10:31 ` Charles A. Roelli
2017-11-11 10:41 ` Eli Zaretskii
2017-11-11 15:25 ` Stefan Monnier
2015-01-30 14:25 ` bug#16274: ; One method to produce an error in icomplete-post-command-hook Jeremy Moore
2015-08-11 19:02 ` bug#16274: Can still reproduce in Emacs 24.5.2/x86_64-unknown-linux-gnu Michael Hoffman
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.