From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#72210: 31.0.50; Feature request: multi-category support in `icomplete-fido-kill'. Date: Sat, 17 Aug 2024 11:08:14 +0300 Message-ID: <86sev34ln5.fsf@gnu.org> References: <87ttgk16tg.fsf@gmail.com> <86bk2l6hoo.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1405"; mail-complaints-to="usenet@ciao.gmane.io" Cc: fernandodemorais.jf@gmail.com, 72210@debbugs.gnu.org To: joaotavora@gmail.com Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Aug 17 10:09:42 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sfEVJ-0000F8-NZ for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 17 Aug 2024 10:09:41 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sfEV2-0004l3-OL; Sat, 17 Aug 2024 04:09:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sfEV1-0004kP-IC for bug-gnu-emacs@gnu.org; Sat, 17 Aug 2024 04:09:23 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sfEV1-0001fC-7l for bug-gnu-emacs@gnu.org; Sat, 17 Aug 2024 04:09:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-version:References:In-Reply-To:From:Date:To:Subject; bh=bFEQHa6exQBtA/I3/J7f7lu+H8glDDQmsbsHq8sUg2I=; b=g90f/xKMPG0LLhd19bFVYShIZ3II92wSczrB6aTyMQMX/ZpgqvoyjUzaCYSVw+MTaL7zONq6l8E2ZvJypggYOkH/yhZrd78CxCaifZjIupiaqFURV3BYZbBC8C9W3mYBe12x4hfEhyhby8/Z8LgxF7bikuluLwXKGeshI5Atn6A1oxuyiwok77NASUyTuGEfBt08vTYPtqh+r019agH/LQntvzNHUgCefd4FcRKbmkL3kXr/0QGbDTkmZv29XpTrPDh3Wz2ycFTqx64URledLfjsiEnaio4CRbOW1wPv1QbWUUPSyExgksgKdl7zQ+FRgtX/lB8dJMNT3TdvWjo2zA==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sfEVd-0000KL-RR for bug-gnu-emacs@gnu.org; Sat, 17 Aug 2024 04:10:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 17 Aug 2024 08:10:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72210 X-GNU-PR-Package: emacs Original-Received: via spool by 72210-submit@debbugs.gnu.org id=B72210.17238821461170 (code B ref 72210); Sat, 17 Aug 2024 08:10:01 +0000 Original-Received: (at 72210) by debbugs.gnu.org; 17 Aug 2024 08:09:06 +0000 Original-Received: from localhost ([127.0.0.1]:53356 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sfEUj-0000Io-EJ for submit@debbugs.gnu.org; Sat, 17 Aug 2024 04:09:05 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:58588) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sfEUh-0000IB-Ef for 72210@debbugs.gnu.org; Sat, 17 Aug 2024 04:09:03 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sfETz-0001ap-GS; Sat, 17 Aug 2024 04:08:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=bFEQHa6exQBtA/I3/J7f7lu+H8glDDQmsbsHq8sUg2I=; b=fzM5R4QXGz1PnVDwEfG6 1FbGP8z1UpCNJ+oRIisiJwLdSO7H/S7YkRGCQfTfm+G6U42XXUtZ0h8GkEFPp+0nw42zHGZMQVQWH NY0vd8erifi6g5d5L+kDeJA0m3Ik7VcAyr3UKpn5UGnjR/MzKOhC4BdkmIenqcx6UP0mo5JmHUlJ8 pMfVtH6d5BBiroLpw6zvdLv7YnelO4Sl1cqcZ/y+tmjdmH1+8V0EHrcvskHyXQjmF8sqUZWddPKQy Zevm+DhR+rh4t1KBb5R3nLtUmneA8bu6pjsDBZ7/1niuErhzpYkdil+PhDNsVRcQpPXAPVqRFQWst S+oFCiYMA9G7/w==; In-Reply-To: <86bk2l6hoo.fsf@gnu.org> (message from Eli Zaretskii on Thu, 25 Jul 2024 10:42:47 +0300) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:290224 Archived-At: Ping! João, any comments to this issue? > Cc: 72210@debbugs.gnu.org > Date: Thu, 25 Jul 2024 10:42:47 +0300 > From: Eli Zaretskii > > > From: Fernando de Morais > > Date: Sat, 20 Jul 2024 11:22:51 -0300 > > > > Dear maintainers, > > > > `icomplete-fido-kill' works very well, but cannot handle the deletion of > > files or killing buffers when they are behind a multi-category > > ``situation''. Add this would be useful for those of us that combine > > `icomplete' with, e.g., `consult-buffer'. > > > > What follows is just the ``hacky'' approach that's currently being used > > in my init: > > > > #+begin_src emacs-lisp > > ;; Stolen from Embark > > (defun icomplete--refine-multi-category (target) > > "Refine `multi-category' TARGET to its actual type." > > (or (let ((mc (get-text-property 0 'multi-category target))) > > (cond > > ;; The `cdr' of the `multi-category' property can be a buffer object. > > ((and (eq (car mc) 'buffer) (buffer-live-p (cdr mc))) > > (cons 'buffer (buffer-name (cdr mc)))) > > ((stringp (cdr mc)) mc))) > > (cons 'general target))) > > > > (defun icomplete-fido-kill () > > "Kill line or current completion, like `ido-mode'. > > If killing to the end of line make sense, call `kill-line', > > otherwise kill the currently selected completion candidate. > > Exactly what killing entails is dependent on the things being > > completed. If completing files, it means delete the file. If > > completing buffers it means kill the buffer. Both actions > > require user confirmation." > > (interactive) > > (let ((end (icomplete--field-end))) > > (if (< (point) end) > > (call-interactively 'kill-line) > > (let* ((all (completion-all-sorted-completions)) > > ;; Actual changes ( > > (refined-pair (when (eq 'multi-category (icomplete--category)) > > (icomplete--refine-multi-category (car all)))) > > (cat (or (car-safe refined-pair) (icomplete--category))) > > (thing (or (cdr-safe refined-pair) (car all))) > > ;; ) > > (action > > (cl-case cat > > (buffer > > (lambda () > > (when (yes-or-no-p (concat "Kill buffer " thing "? ")) > > (kill-buffer thing)))) > > ((project-file file) > > (lambda () > > (let* ((dir (file-name-directory > > (icomplete--field-string))) > > (path (expand-file-name thing dir))) > > (when (yes-or-no-p (concat "Delete file " path "? ")) > > (delete-file path) t)))) > > (t > > (error "Sorry, don't know how to kill things for `%s'" > > cat))))) > > (when (let (;; Allow `yes-or-no-p' to work and don't let it > > ;; `icomplete-exhibit' anything. > > (enable-recursive-minibuffers t) > > (icomplete-mode nil)) > > (funcall action)) > > (completion--cache-all-sorted-completions > > (icomplete--field-beg) > > (icomplete--field-end) > > (cdr all))) > > (message nil))))) > > #+end_src > > > > Thank you for any consideration on the matter. > > João, any comments? > > > >