Ping! Ping! João, please respond.

> Cc: fernandodemorais...@gmail.com, 72...@debbugs.gnu.org
> Date: Sat, 17 Aug 2024 11:08:14 +0300
> From: Eli Zaretskii <e...@gnu.org>
> 
> Ping!  João, any comments to this issue?
> 
> > Cc: 72...@debbugs.gnu.org
> > Date: Thu, 25 Jul 2024 10:42:47 +0300
> > From: Eli Zaretskii <e...@gnu.org>
> > 
> > > From: Fernando de Morais <fernandodemorais...@gmail.com>
> > > 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 
> > > <https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/embark.el?h=externals/embark#n2108>
> > >   (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?
> > 
> > 
> > 
> > 
> 
> 
> 
> 



  • bug#72210:... Eli Zaretskii
    • bug#7... João Távora
      • b... Eli Zaretskii
    • bug#7... Bug reports for GNU Emacs, the Swiss army knife of text editors
      • b... Fernando de Morais

Reply via email to