Dependendo do que você quer, você pode trapacear e usar isearch-mode
: seu terceiro argumento ( OP-FUN
) é uma função chamada depois que cada entrada é processada, e seu quinto argumento ( WORD
) pode ser qualquer função que irá transformar a string digitada em isearch em um regexp para procurar no buffer.
Para exemble:
(defun my-op-fun (string &optional lax)
(let ((words (split-string string ":")))
(mapconcat '(lambda (word)
(concat "\<" (regexp-quote word)))
words "\>.*")))
(defun my-isearch-beggining-of-line ()
(interactive)
(isearch-mode t t nil t 'my-op-fun))
se você digitar "foo" ele irá procurar por uma palavra que comece com "foo", você digita "foo: bar" ele irá procurar pela palavra "foo" seguido por algum outro caractere depois "bar" como o início de uma palavra.
Algum domínio de expressões regulares pode ser necessário para que isso funcione para você.
Você também pode ver a origem da pesquisa para ver como isso é feito.