all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Incorporating new things into completions
@ 2024-02-02  5:57 Psionic K
  2024-02-02  6:48 ` Emanuel Berg
  2024-02-04 10:51 ` Philip Kaludercic
  0 siblings, 2 replies; 3+ messages in thread
From: Psionic K @ 2024-02-02  5:57 UTC (permalink / raw)
  To: help-gnu-emacs

I want to augment `switch-to-buffer' candidates to contain a list of
exotic fruits.  Presumably the downstream handler for buffers has no
idea what to do with fruits, so I need to provide some alternative
handler.

Has this infrastructure been built into Emacs or is it exclusive to
completion packages at this time?   If Emacs provides facilities for
this kind of thing, what vocabulary should I become familiar with?



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Incorporating new things into completions
  2024-02-02  5:57 Incorporating new things into completions Psionic K
@ 2024-02-02  6:48 ` Emanuel Berg
  2024-02-04 10:51 ` Philip Kaludercic
  1 sibling, 0 replies; 3+ messages in thread
From: Emanuel Berg @ 2024-02-02  6:48 UTC (permalink / raw)
  To: help-gnu-emacs

Psionic K wrote:

> I want to augment `switch-to-buffer' candidates to contain
> a list of exotic fruits. Presumably the downstream handler
> for buffers has no idea what to do with fruits, so I need to
> provide some alternative handler.
>
> Has this infrastructure been built into Emacs or is it
> exclusive to completion packages at this time? If Emacs
> provides facilities for this kind of thing, what vocabulary
> should I become familiar with?

I have something to that extent, but instead of a list, it
matches a regexp. Don't know if this is already available
somewhere else but that wouldn't come as a surprise.

;;; -*- lexical-binding: t -*-
;;
;; this file:
;;   https://dataswamp.org/~incal/emacs-init/switch-to-buffer-regexp.el

(require 'cl-lib)
(require 'buc)

(defun switch-to-buffer-regexp (buf-re)
  (let*((ori-buf (buffer-name (current-buffer)))
        (hits    (cl-remove-if-not
                   (lambda (b) (string-match buf-re b)) (buffer-names)) ))
    (when hits
      (let ((new-hits (cl-remove ori-buf hits)))
        (when new-hits
          (when (string-match buf-re ori-buf)
            (bury-buffer ori-buf) )
          (switch-to-buffer (car new-hits)) )))))

;; try it!
;; (require 'gnus)
;; (dotimes (i 4) (gnus-post-news 'post "")) ; create 4 posts

(global-set-key "\C-cu" (lambda () (interactive) (switch-to-buffer-regexp "\*unsent posting\*.*")))
;; hit again to iterate

(provide 'switch-to-buffer-regexp)

Some more example use cases, some of which I use every day:

  https://dataswamp.org/~incal/emacs-init/switch-to-buffer.el

Ugh, for it to work this is needed as well from yet another file

(defun buffer-names ()
  "Get the names of all open buffers, as strings."
  (mapcar #'buffer-name (buffer-list)) )

https://dataswamp.org/~incal/emacs-init/buc.el

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Incorporating new things into completions
  2024-02-02  5:57 Incorporating new things into completions Psionic K
  2024-02-02  6:48 ` Emanuel Berg
@ 2024-02-04 10:51 ` Philip Kaludercic
  1 sibling, 0 replies; 3+ messages in thread
From: Philip Kaludercic @ 2024-02-04 10:51 UTC (permalink / raw)
  To: Psionic K; +Cc: help-gnu-emacs

Psionic K <psionik@positron.solutions> writes:

> I want to augment `switch-to-buffer' candidates to contain a list of
> exotic fruits.  Presumably the downstream handler for buffers has no
> idea what to do with fruits, so I need to provide some alternative
> handler.

Is "exotic fruits" a metaphor, or do you really mean that you want
the `read-buffer-to-switch' function to extend the completions with a
literal list of exotic fruit names?  What should `switch-to-buffer' do
in that case?

> Has this infrastructure been built into Emacs or is it exclusive to
> completion packages at this time?   If Emacs provides facilities for
> this kind of thing, what vocabulary should I become familiar with?

It would be helpful to clarify what infrastructure or functionality you
are talking about here, perhaps with an illustrative example.

-- 
Philip Kaludercic



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-02-04 10:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-02  5:57 Incorporating new things into completions Psionic K
2024-02-02  6:48 ` Emanuel Berg
2024-02-04 10:51 ` Philip Kaludercic

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.