Subject: bug#54885: 29.0.50; Tramp completion support for top-level sshconfig include

From: Bartosz Kaczyński <[email-masked]>
Date: Tue, 12 Apr 2022 15:53:08 +0200

emacs -Q

Hi, I noticed that TRAMP hostname complation doesn't support my 
top-level sshconfig like below:

tree ~/.ssh/conf.d/
/home/bk/.ssh/conf.d/
├── domainX
├── domainY
└── personal

My ~/.ssh/config contains only one line

Include conf.d/*

and it's work perfectly from the shell by Emacs can't parse this Include 
directive. It would be very useful enhancement if the built-in 
completion frameworks (I use icomplete with vertical mode) can handle 
that structure which I first saw on counsel-tramp package(1).

1. 
https://github.com/masasam/emacs-counsel-tramp#support-for-top-level-sshconfig-include

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 
3.24.33, cairo version 1.16.0)
  of 2022-04-12 built on RSQ-P030.rsq.local
Repository revision: 78784ccfadaee1c86207ecc360db7236285713f5
Repository branch: master
System Description: openSUSE MicroOS

Configured using:
  'configure --with-native-compilation --with-json --with-pgtk'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG SECCOMP
SOUND THREADS TIFF TOOLKIT_SCROLL_BARS XIM GTK3 ZLIB

Important settings:
   value of $LC_CTYPE: en_US.UTF-8
   value of $LANG: en_US.UTF-8
   locale-coding-system: utf-8

Major mode: Helpful

Minor modes in effect:
   windmove-mode: t
   yas-global-mode: t
   yas-minor-mode: t
   shell-dirtrack-mode: t
   which-key-mode: t
   save-place-mode: t
   savehist-mode: t
   recentf-mode: t
   icomplete-vertical-mode: t
   icomplete-mode: t
   global-display-line-numbers-mode: t
   display-line-numbers-mode: t
   global-eldoc-mode: t
   show-paren-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   buffer-read-only: t
   column-number-mode: t
   line-number-mode: t
   transient-mark-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message yank-media rmc puny rfc822 mml
mml-sec epa epg rfc6068 epg-config gnus-util text-property-search
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils mule-util jka-compr dired-aux dired dired-loaddefs tramp-sh
tramp-cache tramp tramp-loaddefs trampver tramp-integration cus-start
tramp-compat parse-time ls-lisp helpful imenu trace edebug backtrace
info-look f help-fns radix-tree elisp-refs s rainbow-delimiters vc-git
diff-mode vc-dispatcher server init init-locales init-tools
init-navigation windmove init-misc init-devel smartparens thingatpt dash
init-snippets yasnippet-snippets yasnippet init-gnus init-org ob-python
python ob-plantuml ob-restclient restclient ob-sql ob-shell shell org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src
ob-comint org-pcomplete pcomplete comint ansi-color ring org-list
org-faces org-entities noutline outline easy-mmode org-version
ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex iso8601
time-date ol org-keys oc org-compat advice org-macs org-loaddefs
format-spec find-func cal-menu calendar cal-loaddefs init-restclient
init-command-lines init-c-cpp init-config-files init-erc init-pass
init-tramp cus-edit pp cus-load files-x init-dired init-minibuffer
which-key saveplace savehist recentf tree-widget wid-edit icomplete
init-defaults modus-vivendi-theme modus-themes pcase
display-line-numbers init-exec-path exec-path-from-shell init-elpa
fullframe finder-inf info package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
mailcap url-handlers url-parse auth-source eieio eieio-core
eieio-loaddefs password-cache json map url-vars init-site-lisp
init-utils init-benchmarking derived comp comp-cstr warnings rx cl-seq
cl-macs cl-extra help-mode seq gv subr-x byte-opt cl-loaddefs cl-lib
bytecomp byte-compile cconv early-init iso-transl tooltip eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/pgtk-win pgtk-win term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice simple 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 emoji-zwj charscript charprop
case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
gtk pgtk multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 552105 260802)
  (symbols 48 30739 3)
  (strings 32 145715 35356)
  (string-bytes 1 4211779)
  (vectors 16 50703)
  (vector-slots 8 888993 274160)
  (floats 8 371 1031)
  (intervals 56 1767 509)
  (buffers 992 17))