4

I want to know how do you use Emacs lisp to check the content of the current buffer, specially to know if certain string exists within the current buffer.

7

I think the easiest approach would be

(save-excursion
    (goto-char (point-min))
    (search-forward string nil t))

This will return non-nil if the given string is in the current buffer.

  • 2
    And in most cases, you'll want to use re-search-forward, for the added flexibility of specifying a regexp rather than a mere substring. – Stefan Mar 19 '16 at 22:52
0

You can also do this on a way which probably looks familiar from other languages using s.el:

(with-current-buffer "some_buffer"
      (s-contains? "some string"
            (buffer-substring-no-properties (point-min) (point-max))))
  • 5
    Emacs is very good at acting directly on buffer contents. Copying portions of the buffer (let alone the entire contents, as in this case) in order to perform string-based operations is generally not the best approach. – phils Mar 19 '16 at 22:14
  • 1
    I second @phils's recommendation, pointing out that it's very inefficient, especially in this case, since it copies the whole buffer's content. – Stefan Mar 19 '16 at 22:50
  • Yes, you're right. This is not the best approach, I recommend accepted answer over this one. My idea was to point to s.el. @phils – foki Mar 20 '16 at 0:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.