Function: moccur
moccur is an interactive and byte-compiled function defined in
hmoccur.el.
Signature
(moccur REGEXP &optional FILE-REGEXP NO-FOLD-SEARCH)
Documentation
Show all lines of all buffers containing a match for REGEXP.
With optional FILE-REGEXP (a pattern which matches to files in a single directory), search matching files rather than current buffers. The lines are shown in a buffer named *Moccur* which serves as a menu to find any of the occurrences in this buffer. With optional NO-FOLD-SEARCH non-nil do case sensitive search.
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/hmoccur.el
;;; ************************************************************************
;;; Public functions
;;; ************************************************************************
(defun moccur (regexp &optional file-regexp no-fold-search)
"Show all lines of all buffers containing a match for REGEXP.
With optional FILE-REGEXP (a pattern which matches to files in a
single directory), search matching files rather than current
buffers. The lines are shown in a buffer named *Moccur* which
serves as a menu to find any of the occurrences in this buffer.
With optional NO-FOLD-SEARCH non-nil do case sensitive search.
\\{moccur-mode-map}"
(interactive "sRegexp to find occurrences of: \nsFiles to search (default current file buffers): ")
(if (equal file-regexp "") (setq file-regexp nil))
(let* ((buffers (if file-regexp (directory-files
(expand-file-name
(or (file-name-directory
file-regexp)
"."))
'full (file-name-nondirectory file-regexp))
(buffer-list)))
(occbuf (get-buffer-create "*Moccur*"))
(matches 0)
(firstmatch t))
(set-buffer occbuf)
(setq buffer-read-only nil)
(widen)
(erase-buffer)
(insert "Lines matching '" regexp "':\n\n")
(let ((currbuf) (currfile) (kill-buf)
;; Disable syntax highlighting of new buffers created by this command.
(font-lock-global-modes))
(while buffers
(setq currbuf (car buffers)
currfile (if (stringp currbuf) currbuf)
kill-buf (and currfile (not (get-file-buffer currfile)))
buffers (cdr buffers))
(if currfile
(setq currbuf (find-file-noselect currfile))
(setq currfile (hypb:buffer-file-name currbuf)))
(if (or (not currfile) (not currbuf))
nil
(set-buffer currbuf)
(let ((case-fold-search (not no-fold-search)))
(save-excursion
(goto-char (point-min))
(setq firstmatch t)
(while (re-search-forward regexp nil t)
(setq matches (+ matches 1))
(let* ((linenum (count-lines (point-min)(point)))
(tag (format "\n%5d:" linenum)))
(set-buffer occbuf)
(if firstmatch
(progn
(insert moccur-source-prefix currfile "\n")
(setq firstmatch nil)))
(insert tag)
(set-buffer currbuf)
(forward-word -1) ;; needed if match goes to eoline
(beginning-of-line)
(let ((beg (point)))
(end-of-line)
(append-to-buffer occbuf beg (point)))
(forward-line 1)))))
(with-current-buffer occbuf
(if (not firstmatch) (insert "\n\n"))
(if kill-buf (kill-buffer currbuf))))))
(if (> matches 0)
(progn
(set-buffer occbuf)
(moccur-mode)
(and (progn (goto-char 1)
(search-forward "\C-m" nil t))
(outline-minor-mode 1))
(goto-char (point-min))
(pop-to-buffer occbuf)
(message "%d matches." matches)
t)
(message "No matches.")
nil)))