GNU bug report logs - #32757
27.0.50; icomplete-mode's M-TAB doesn't as documented

Previous Next

Package: emacs;

Reported by: OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>

Date: Tue, 18 Sep 2018 09:21:02 UTC

Severity: normal

Tags: patch, unreproducible

Found in version 27.0.50

Fixed in version 27.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

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 32757 in the body.
You can then email your comments to 32757 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#32757; Package emacs. (Tue, 18 Sep 2018 09:21:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 18 Sep 2018 09:21:02 GMT) Full text and rfc822 format available.

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

From: OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; icomplete-mode's M-TAB doesn't as documented
Date: Tue, 18 Sep 2018 18:19:56 +0900

Documentation of icomplete says:

[‘M-<TAB>’ will select the first completion in the list, like ‘C-j’
but without exiting the minibuffer, so you can edit it further.  This is
typically used when entering a file name, where ‘M-<TAB>’ can be used a
few times to descend in the hierarchy of directories.]

But current implemetation doesn't work like it, and behavior is
useless if completing file name.

Step to reproduce,

cd /path/to/emacs-src
LANG=C emacs -Q
(icomplete-mode)

C-x C-f

	/path/to/emacs-src/{m4/ | nt/ | lib/ ...

Choice "nt/" from list by repeating "C-.", then select "nt/" by "M-TAB"

	/path/to/emacs-src/nt/{lib/ | doc/ | etc/ ...

Completion list is still showing under the /path/to/emacs-src, not
/path/to/emacs-src/nt/, and we can't be used to descend in the
hierarchy of directories.

This is because `minibuffer-force-complete' enters cyclic mode to select
from current completion list, so repeating "M-TAB" doesn't work as
documented.  Furthermore, in the case of icomplete mode, user already
selected from list by "C-." or "C-,", so cyclic behavior of
`minibuffer-force-complete' is useless IMO, especially for file name
completion.

To make changing behavior minimum, this patch just change in the case
of file name completion only to work as documented.

Thanks.

---

 lisp/icomplete.el |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff -puN lisp/icomplete.el~icomplete-completion-fix lisp/icomplete.el
--- emacs/lisp/icomplete.el~icomplete-completion-fix	2018-09-18 17:52:07.848686039 +0900
+++ emacs-hirofumi/lisp/icomplete.el	2018-09-18 17:52:48.202692477 +0900
@@ -145,13 +145,23 @@ icompletion is occurring."
 
 (defvar icomplete-minibuffer-map
   (let ((map (make-sparse-keymap)))
-    (define-key map [?\M-\t] 'minibuffer-force-complete)
+    (define-key map [?\M-\t] 'icomplete-force-complete)
     (define-key map [?\C-j]  'icomplete-force-complete-and-exit)
     (define-key map [?\C-.]  'icomplete-forward-completions)
     (define-key map [?\C-,]  'icomplete-backward-completions)
     map)
   "Keymap used by `icomplete-mode' in the minibuffer.")
 
+(defun icomplete-force-complete ()
+  "Select the first completion in the list.
+Repeated uses step through the possible completions if not
+completing file name."
+  (interactive)
+  (call-interactively #'minibuffer-force-complete)
+  ;; Cycle may not be useful for icomplete, so this should be unconditional?
+  (when minibuffer-completing-file-name
+    (completion--flush-all-sorted-completions)))
+
 (defun icomplete-force-complete-and-exit ()
   "Complete the minibuffer and exit.
 Use the first of the matches if there are any displayed, and use
_



In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
 of 2018-08-04 built on devron
Repository revision: da0054c30729e58259c1e7251cb03c8ef13ff943
Windowing system distributor 'The X.Org Foundation', version 11.0.12001000
System Description: Debian GNU/Linux buster/sid

Recent messages:
Checking 205 files in /usr/local/share/emacs/27.0.50/lisp/gnus...
Checking 57 files in /usr/local/share/emacs/27.0.50/lisp/eshell...
Checking 71 files in /usr/local/share/emacs/27.0.50/lisp/erc...
Checking 34 files in /usr/local/share/emacs/27.0.50/lisp/emulation...
Checking 181 files in /usr/local/share/emacs/27.0.50/lisp/emacs-lisp...
Checking 24 files in /usr/local/share/emacs/27.0.50/lisp/cedet...
Checking 57 files in /usr/local/share/emacs/27.0.50/lisp/calendar...
Checking 87 files in /usr/local/share/emacs/27.0.50/lisp/calc...
Checking 107 files in /usr/local/share/emacs/27.0.50/lisp/obsolete...
Checking for load-path shadows...done

Configured using:
 'configure --libexecdir=/usr/local/lib --with-x --with-x-toolkit=gtk3
 --without-xim --with-xpm --with-jpeg --with-tiff --with-gif --with-png
 --with-rsvg --with-dbus --with-wide-int --with-modules'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY ACL
LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS JSON LCMS2

Important settings:
  value of $LANG: ja_JP.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  gnus-topic-mode: t
  gnus-undo-mode: t
  flycheck-pos-tip-mode: t
  global-flycheck-mode: t
  auto-insert-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  global-company-mode: t
  company-mode: t
  savehist-mode: t
  eyebrowse-mode: t
  icomplete-mode: t
  show-paren-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t

Load-path shadows:
/usr/local/share/emacs/site-lisp/google-translate/features/support/env hides /usr/local/share/emacs/27.0.50/lisp/env

Features:
(shadow nnir emacsbug sendmail stem lookup-entry ndkks lookup-kanji
lookup-kanji-mecab ndict ndeb ndeb-binary lookup-content lookup-vse
lookup-text lookup-text-table lookup-package lookup lookup-types
lookup-utils lookup-cache lookup-vars evi url-http url-gw url-auth
url-cache jka-compr gnus-dup shr-color color mm-archive bbdb-gui
bbdb-hooks gnus-notifications gnus-fun notifications dbus hl-line
elfeed-show elfeed-search bookmark shr text-property-search svg dom
elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib avl-tree
generator url-queue browse-url xml-query xml pp sort gnus-cite
gnus-async gnus-bcklg qp gnus-ml disp-table gnus-topic utf-7 rfc2104
gnutls network-stream nsm nnfolder bbdb-gnus bbdb-snarf mail-extr nnnil
spam spam-stat bbdb-com warnings bbdb timezone gnus-uu yenc gnus-demon
gnus-delay gnus-draft gnus-agent gnus-srvr gnus-score score-mode
nnvirtual nntp gnus-cache gnus-msg gnus-art mm-uu mml2015 mm-view
mml-smime smime dig gnus-sum nndraft nnmh gnus-group gnus-undo
gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
parse-time gnus-spec gnus-int gnus-range message rmc puny rfc822 mml
mml-sec epa mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils wid-edit
dircolors-faces ansi-color dired-x dired dired-loaddefs
company-yasnippet flyspell ispell server generic-x multi-translate
google-translate-smooth-ui google-translate google-translate-default-ui
google-translate-core-ui ido google-translate-core google-translate-tk
url url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap magit-autoloads git-modes-autoloads
flycheck-pos-tip pos-tip flycheck find-func autoinsert yasnippet
elec-pair company-oddmuse company-keywords company-etags etags xref
project ring company-gtags company-dabbrev-code company-dabbrev
company-files company-capf company-cmake company-xcode company-clang
company-semantic company-eclim company-template company-bbdb company
edmacro kmacro bbdb-autoloads savehist browse-kill-ring cl
eyebrowse-session desktop frameset eyebrowse format-spec dash icomplete
paren mozc-im-indicater mozc-popup popup mozc-im advice mm-util
mail-prsvr time-date mule-util mozc rx finder-inf package let-alist
derived pcase cl-extra help-mode easymenu url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json map url-vars seq byte-opt gv bytecomp byte-compile
cconv epg epg-config subr-x cl-loaddefs cl-lib japan-util tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win
x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded 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 threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 703470 187252)
 (symbols 48 46081 549)
 (miscs 40 466 1661)
 (strings 32 347210 34028)
 (string-bytes 1 12772950)
 (vectors 16 133897)
 (vector-slots 8 2279431 111054)
 (floats 8 20418 3100)
 (intervals 56 3312 1331)
 (buffers 992 65))

-- 
OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32757; Package emacs. (Sun, 23 Jun 2019 21:45:01 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>
Cc: 32757 <at> debbugs.gnu.org
Subject: Re: bug#32757: 27.0.50; icomplete-mode's M-TAB doesn't as documented
Date: Sun, 23 Jun 2019 23:44:37 +0200
OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp> writes:

> Step to reproduce,
>
> cd /path/to/emacs-src
> LANG=C emacs -Q
> (icomplete-mode)
>
> C-x C-f
>
> 	/path/to/emacs-src/{m4/ | nt/ | lib/ ...
>
> Choice "nt/" from list by repeating "C-.", then select "nt/" by "M-TAB"
>
> 	/path/to/emacs-src/nt/{lib/ | doc/ | etc/ ...
>
> Completion list is still showing under the /path/to/emacs-src, not
> /path/to/emacs-src/nt/, and we can't be used to descend in the
> hierarchy of directories.

I've tried this now, but couldn't reproduce the error.  There have been
several fixed to icomplete since you reported this, though, so perhaps
it's been fixed in the meantime?  Does M-TAB work as supposed for you
now?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Added tag(s) unreproducible. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sun, 23 Jun 2019 21:45:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32757; Package emacs. (Mon, 24 Jun 2019 00:38:02 GMT) Full text and rfc822 format available.

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

From: OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 32757 <at> debbugs.gnu.org
Subject: Re: bug#32757: 27.0.50; icomplete-mode's M-TAB doesn't as documented
Date: Mon, 24 Jun 2019 09:37:38 +0900
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp> writes:
>
>> Step to reproduce,
>>
>> cd /path/to/emacs-src
>> LANG=C emacs -Q
>> (icomplete-mode)
>>
>> C-x C-f
>>
>> 	/path/to/emacs-src/{m4/ | nt/ | lib/ ...
>>
>> Choice "nt/" from list by repeating "C-.", then select "nt/" by "M-TAB"
>>
>> 	/path/to/emacs-src/nt/{lib/ | doc/ | etc/ ...
>>
>> Completion list is still showing under the /path/to/emacs-src, not
>> /path/to/emacs-src/nt/, and we can't be used to descend in the
>> hierarchy of directories.
>
> I've tried this now, but couldn't reproduce the error.  There have been
> several fixed to icomplete since you reported this, though, so perhaps
> it's been fixed in the meantime?  Does M-TAB work as supposed for you
> now?

Yes, it was fixed on bug#34070 and bug#34077.

Thanks.
-- 
OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>




bug marked as fixed in version 27.1, send any further explanations to 32757 <at> debbugs.gnu.org and OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Mon, 24 Jun 2019 10:22:02 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, 22 Jul 2019 11:24:10 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 279 days ago.

Previous Next


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