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.
View this message in rfc822 format
From: OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp> To: 32757 <at> debbugs.gnu.org Subject: bug#32757: 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>
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.