В зависимости от того, что вы хотите, вы можете обмануть и использовать isearch-mode
: его третий аргумент ( OP-FUN
) является функцией, вызываемой после обработки каждого ввода, а его 5-й аргумент ( WORD
) может быть любой функцией, которая преобразует строку, набранную в isearch, в регулярное выражение для просмотра для в буфере.
Для 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))
если вы наберете «foo», он будет искать слово, начинающееся с «foo», при вводе «foo: bar» он будет искать слово «foo», за которым следует какой-то другой символ, а затем «bar» как начало слова ,
Может понадобиться некоторое мастерство регулярных выражений, чтобы сделать эту работу для вас.
Вы также можете просто посмотреть на источник isearch, чтобы увидеть, как это делается.