Функция, соответствующая strpos
в PHP, для поиска строки внутри другой строки - search
из пакета cl
:
(require 'cl)
(search needle haystack :start2 offset)
Если вы хотите найти строку в буфере, используйте search-forward
. Так как это изменяет текущий буфер и точку внутри этого буфера, вам нужно обернуть вашу функцию внутри save-excursion
; это распространенная идиома Emacs Lisp. Вам также следует обернуть вашу функцию в save-match-data
, чтобы не мешать поискам того, что вызывает ваш код.
(save-match-data
(save-excursion
(set-buffer haystack)
(goto-char (or offset (point-min)))
(let ((pos (search-forward needle nil t)))
...)))