From 0dd4ba87aaf8b6801c3aced856bb85c615d84ccf Mon Sep 17 00:00:00 2001 From: Andrey Kotlarski Date: Fri, 29 Mar 2013 15:53:39 +0200 Subject: [PATCH] Add regex search forward functionality. --- vlfi.el | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/vlfi.el b/vlfi.el index a6f0c3a..edad793 100644 --- a/vlfi.el +++ b/vlfi.el @@ -61,6 +61,7 @@ (lambda () "Decrease vlfi batch size by factor of 2." (interactive) (vlfi-change-batch-size t))) + (define-key map "\C-c\C-s" 'vlfi-re-search-forward) map) "Keymap for `vlfi-mode'.") @@ -220,6 +221,34 @@ OP-TYPE specifies the file operation being performed over FILENAME." ;;;###autoload (fset 'abort-if-file-too-large 'vlfi-if-file-too-large) +;;; search +(defun vlfi-re-search-forward (regexp &optional count) + "Search for REGEXP COUNT number of times." + (interactive "sSearch: \np") + (let ((start vlfi-start-pos) + (end vlfi-end-pos) + (pos (point)) + (to-find count)) + (catch 'end-of-file + (while (not (zerop to-find)) + (cond ((re-search-forward regexp nil t) + (setq to-find (1- to-find))) + ((= vlfi-end-pos vlfi-file-size) + (throw 'end-of-file nil)) + (t (vlfi-next-batch 1))))) + (or (zerop to-find) + (if (< to-find count) + (message "Moved to the %d match which is last" + (- count to-find)) + (let ((inhibit-read-only t)) + (insert-file-contents buffer-file-name nil start end)) + (goto-char pos) + (setq vlfi-start-pos start + vlfi-end-pos end) + (set-buffer-modified-p nil) + (vlfi-update-buffer-name) + (message "None found"))))) + (provide 'vlfi) ;;; vlfi.el ends here