unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#32757: 27.0.50; icomplete-mode's M-TAB doesn't as documented
@ 2018-09-18  9:19 OGAWA Hirofumi
  2019-06-23 21:44 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 3+ messages in thread
From: OGAWA Hirofumi @ 2018-09-18  9:19 UTC (permalink / raw)
  To: 32757



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@mail.parknet.co.jp>





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#32757: 27.0.50; icomplete-mode's M-TAB doesn't as documented
  2018-09-18  9:19 bug#32757: 27.0.50; icomplete-mode's M-TAB doesn't as documented OGAWA Hirofumi
@ 2019-06-23 21:44 ` Lars Ingebrigtsen
  2019-06-24  0:37   ` OGAWA Hirofumi
  0 siblings, 1 reply; 3+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-23 21:44 UTC (permalink / raw)
  To: OGAWA Hirofumi; +Cc: 32757

OGAWA Hirofumi <hirofumi@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





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#32757: 27.0.50; icomplete-mode's M-TAB doesn't as documented
  2019-06-23 21:44 ` Lars Ingebrigtsen
@ 2019-06-24  0:37   ` OGAWA Hirofumi
  0 siblings, 0 replies; 3+ messages in thread
From: OGAWA Hirofumi @ 2019-06-24  0:37 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 32757

Lars Ingebrigtsen <larsi@gnus.org> writes:

> OGAWA Hirofumi <hirofumi@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@mail.parknet.co.jp>





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-06-24  0:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-18  9:19 bug#32757: 27.0.50; icomplete-mode's M-TAB doesn't as documented OGAWA Hirofumi
2019-06-23 21:44 ` Lars Ingebrigtsen
2019-06-24  0:37   ` OGAWA Hirofumi

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).