GNU bug report logs - #20425
24.5; completion-at-point not working with prefix starting with '(:'

Previous Next

Package: emacs;

Reported by: Alexander Miller <alexanderm <at> web.de>

Date: Sat, 25 Apr 2015 23:13:02 UTC

Severity: normal

Merged with 19529

Found in versions 24.3, 24.5

Fixed in version 25.1

Done: Dmitry Gutov <dgutov <at> yandex.ru>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 20425 in the body.
You can then email your comments to 20425 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#20425; Package emacs. (Sat, 25 Apr 2015 23:13:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Alexander Miller <alexanderm <at> web.de>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 25 Apr 2015 23:13:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Alexander Miller <alexanderm <at> web.de>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.5; completion-at-point not working with prefix starting with '(:'
Date: Sun, 26 Apr 2015 00:21:03 +0200
The issue can best be demonstrated as follows:

* Start vanilla emacs via emacs -q
* Switch to scratch buffer
* Enter the string '(:backg'
* Toggle completion-at-point (using C-M-i and M-x makes no difference)
* emacs will incorrectly report that no matches have been found

What should happen is that the prefix is completed to ':background'.
Removing the open paren and trying to complete with ':backg' as prefix
leads to the correct behaviour.

The above is just a specific example. In general completion-at-point is
not correctly completing for all of emacs' keywords which start with a
colon if the colon is preceded by '('.


In GNU Emacs 24.5.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.16.2)
of 2015-04-20 on bitzer.hoetzel.info
Windowing system distributor `The X.Org Foundation', version 11.0.11701000
Configured using:
`configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
--localstatedir=/var --with-x-toolkit=gtk3 --with-xft
'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong
--param=ssp-buffer-size=4' CPPFLAGS=-D_FORTIFY_SOURCE=2
LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro'

Important settings:
value of $LANG: de_DE.UTF-8
locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
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.
No match [2 times]
You can run the command `completion-at-point' with C-M-i
No match [4 times]
Making completion list...

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message idna 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 help-fns mail-prsvr mail-utils help-mode easymenu 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 74736 8772)
(symbols 48 17662 0)
(miscs 40 42 206)
(strings 32 9306 4675)
(string-bytes 1 253406)
(vectors 16 8988)
(vector-slots 8 383795 17139)
(floats 8 64 248)
(intervals 56 221 24)
(buffers 960 13)
(heap 1024 33123 898))





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20425; Package emacs. (Mon, 27 Apr 2015 04:48:02 GMT) Full text and rfc822 format available.

Message #8 received at 20425 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Alexander Miller <alexanderm <at> web.de>
Cc: 20425 <at> debbugs.gnu.org
Subject: Re: bug#20425: 24.5;
 completion-at-point not working with prefix starting with '(:'
Date: Mon, 27 Apr 2015 00:47:33 -0400
tags 20425 notabug
thanks

> * Start vanilla emacs via emacs -q
> * Switch to scratch buffer
> * Enter the string '(:backg'
> * Toggle completion-at-point (using C-M-i and M-x makes no difference)
[ Nitpick: "toggle" is not what you mean to stay. ]

> * Emacs will incorrectly report that no matches have been found

But this is correct: the scratch buffer is intended for Elisp code, and
(:background ...) is not valid Elisp code because there is
no :background function (or macro).

> The above is just a specific example.  In general completion-at-point is
> not correctly completing for all of emacs' keywords which start with a
> colon if the colon is preceded by '('.

Could you provide some other example, where the "colon something" fails
to complete, whereas it really should be completed (because indeed, it
is not in a position corresponding to a function call)?


        Stefan




Added tag(s) notabug. Request was from Stefan Monnier <monnier <at> iro.umontreal.ca> to control <at> debbugs.gnu.org. (Mon, 27 Apr 2015 04:48:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20425; Package emacs. (Mon, 27 Apr 2015 12:51:01 GMT) Full text and rfc822 format available.

Message #13 received at 20425 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Alexander Miller <alexanderm <at> web.de>
Cc: 20425 <at> debbugs.gnu.org, dgutov <at> gnu.org
Subject: Re: bug#20425: 24.5;
 completion-at-point not working with prefix starting with '(:'
Date: Mon, 27 Apr 2015 08:50:19 -0400
[ Please keep the Cc.  ]

> `(some-face ((,class (:backg

Thanks.  Indeed, M-TAB at the end of the previous line incorrectly claims
there's no completion, even that this "(:backg" is not a "function
call", so it should complete against "anything we can find".

Dmitry, could you take a look at this?


        Stefan




Removed tag(s) notabug. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Mon, 27 Apr 2015 17:09:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20425; Package emacs. (Tue, 28 Apr 2015 03:26:03 GMT) Full text and rfc822 format available.

Message #18 received at 20425 <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>,
 Alexander Miller <alexanderm <at> web.de>
Cc: 20425 <at> debbugs.gnu.org
Subject: Re: bug#20425: 24.5; completion-at-point not working with
 prefix starting with '(:'
Date: Tue, 28 Apr 2015 06:25:39 +0300
On 04/27/2015 03:50 PM, Stefan Monnier wrote:

> Thanks.  Indeed, M-TAB at the end of the previous line incorrectly claims
> there's no completion, even that this "(:backg" is not a "function
> call", so it should complete against "anything we can find".

As a first pass, this patch seems to help (here and in bug#19529, which 
is apparently a duplicate). It'll also make things worse for macro 
writers, but the existing `elisp--form-quoted-p' usage doesn't exactly 
cater to them either.

I should really revisit the "macroexpand all the things for completion" 
discussion.


diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index ad35c48..ca6042a 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -480,7 +480,7 @@ It can be quoted, or be inside a quoted form."
       (when (and end (or (not (nth 8 (syntax-ppss)))
                          (eq (char-before beg) ?`)))
         (let ((table-etc
-               (if (not funpos)
+               (if (or (not funpos) (elisp--form-quoted-p beg))
                    ;; FIXME: We could look at the first element of the 
list and
                    ;; use it to provide a more specific completion 
table in some
                    ;; cases.  E.g. filter out keywords that are not 
understood by






Merged 19529 20425. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Tue, 28 Apr 2015 05:20:03 GMT) Full text and rfc822 format available.

Reply sent to Dmitry Gutov <dgutov <at> yandex.ru>:
You have taken responsibility. (Sun, 03 May 2015 21:13:02 GMT) Full text and rfc822 format available.

Notification sent to Alexander Miller <alexanderm <at> web.de>:
bug acknowledged by developer. (Sun, 03 May 2015 21:13:03 GMT) Full text and rfc822 format available.

Message #25 received at 20425-done <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>,
 Alexander Miller <alexanderm <at> web.de>
Cc: 20425-done <at> debbugs.gnu.org, Giulio Petrucci <giulio.petrucci <at> gmail.com>
Subject: Re: bug#20425: 24.5; completion-at-point not working with prefix
 starting with '(:'
Date: Mon, 4 May 2015 00:12:32 +0300
Version: 25.1

Should work fine now.

Thanks all.




Reply sent to Dmitry Gutov <dgutov <at> yandex.ru>:
You have taken responsibility. (Sun, 03 May 2015 21:13:03 GMT) Full text and rfc822 format available.

Notification sent to Giulio Petrucci <giulio.petrucci <at> gmail.com>:
bug acknowledged by developer. (Sun, 03 May 2015 21:13:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 01 Jun 2015 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 10 years and 71 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.