refactor(vertico): consult-dir: drop dependence on docker-tramp
Removes the dependence on docker-tramp, can later be cleaned up with `tramp-container--completion-function` when we drop support for <29.
This commit is contained in:
parent
42d5fd8350
commit
5be4517bca
1 changed files with 35 additions and 15 deletions
|
@ -10,6 +10,12 @@ overrides `completion-styles' during company completion sessions.")
|
|||
(defvar +vertico-consult-fd-args nil
|
||||
"Shell command and arguments the vertico module uses for fd.")
|
||||
|
||||
(defvar +vertico-consult-dir-container-executable "docker"
|
||||
"Command to call for listing container hosts.")
|
||||
|
||||
(defvar +vertico-consult-dir-container-args nil
|
||||
"Command to call for listing container hosts.")
|
||||
|
||||
;;
|
||||
;;; Packages
|
||||
|
||||
|
@ -197,22 +203,35 @@ orderless."
|
|||
("C-x C-j" . consult-dir-jump-file))
|
||||
:config
|
||||
(when (modulep! :tools docker)
|
||||
;; TODO Replace with `tramp-container--completion-function' when we drop support for <29
|
||||
(defun +vertico--consult-dir-container-hosts (host)
|
||||
"Get a list of hosts from HOST."
|
||||
(cl-loop for line in (cdr
|
||||
(ignore-errors
|
||||
(apply #'process-lines +vertico-consult-dir-container-executable
|
||||
(append +vertico-consult-dir-container-args (list "ps")))))
|
||||
for cand = (split-string line "[[:space:]]+" t)
|
||||
collect (let ((user (unless (string-empty-p (car cand))
|
||||
(concat (car cand) "@")))
|
||||
(hostname (car (last cand))))
|
||||
(format "/%s:%s%s:/" host user hostname))))
|
||||
|
||||
(defun +vertico--consult-dir-podman-hosts ()
|
||||
(let ((+vertico-consult-dir-container-executable "podman"))
|
||||
(+vertico--consult-dir-container-hosts "podman")))
|
||||
|
||||
(defun +vertico--consult-dir-docker-hosts ()
|
||||
"Get a list of hosts from docker."
|
||||
(when (if (>= emacs-major-version 29)
|
||||
(require 'tramp-container nil t)
|
||||
(setq-local docker-tramp-use-names t)
|
||||
(require 'docker-tramp nil t))
|
||||
(let ((hosts)
|
||||
(docker-query-fn #'docker-tramp--parse-running-containers))
|
||||
(when (>= emacs-major-version 29)
|
||||
(setq docker-query-fn #'tramp-docker--completion-function))
|
||||
(dolist (cand (funcall docker-query-fn))
|
||||
(let ((user (unless (string-empty-p (car cand))
|
||||
(concat (car cand) "@")))
|
||||
(host (car (cdr cand))))
|
||||
(push (concat "/docker:" user host ":/") hosts)))
|
||||
hosts)))
|
||||
(let ((+vertico-consult-dir-container-executable "docker"))
|
||||
(+vertico--consult-dir-container-hosts "docker")))
|
||||
|
||||
(defvar +vertico--consult-dir-source-tramp-podman
|
||||
`(:name "Podman"
|
||||
:narrow ?p
|
||||
:category file
|
||||
:face consult-file
|
||||
:history file-name-history
|
||||
:items ,#'+vertico--consult-dir-podman-hosts)
|
||||
"Podman candiadate source for `consult-dir'.")
|
||||
|
||||
(defvar +vertico--consult-dir-source-tramp-docker
|
||||
`(:name "Docker"
|
||||
|
@ -223,6 +242,7 @@ orderless."
|
|||
:items ,#'+vertico--consult-dir-docker-hosts)
|
||||
"Docker candiadate source for `consult-dir'.")
|
||||
|
||||
(add-to-list 'consult-dir-sources '+vertico--consult-dir-source-tramp-podman t)
|
||||
(add-to-list 'consult-dir-sources '+vertico--consult-dir-source-tramp-docker t))
|
||||
|
||||
(add-to-list 'consult-dir-sources 'consult-dir--source-tramp-ssh t)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue