diff options
Diffstat (limited to 'emacs.d/nxhtml/alts/find-recursive-orig.el')
-rw-r--r-- | emacs.d/nxhtml/alts/find-recursive-orig.el | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/emacs.d/nxhtml/alts/find-recursive-orig.el b/emacs.d/nxhtml/alts/find-recursive-orig.el deleted file mode 100644 index 509a038..0000000 --- a/emacs.d/nxhtml/alts/find-recursive-orig.el +++ /dev/null @@ -1,137 +0,0 @@ -;; find-recursive.el -- Find files recursively into a directory -;; -;; Copyright (C) 2001 Ovidiu Predescu -;; -;; Author: Ovidiu Predescu <ovidiu@cup.hp.com> -;; Date: March 26, 2001 -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License -;; as published by the Free Software Foundation; either version 2 -;; of the License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -;; -;; Setup: put this file in your Lisp path and add the following line in -;; your .emacs: -;; -;; (require 'find-recursive) -;; - -(require 'cl) - -(defcustom find-recursive-exclude-files '(".*.class$" ".*~$" ".*.elc$") - "List of regular expressions of files to be excluded when recursively searching for files." - :type '(repeat (string :tag "File regexp"))) - -(defun find-file-recursively (file-regexp directory) - (interactive "sFile name to search for recursively: \nDIn directory: ") - (let ((directory (if (equal (substring directory -1) "/") - directory - (concat directory "/"))) - (matches - (find-recursive-filter-out - find-recursive-exclude-files - (find-recursive-directory-relative-files directory "" file-regexp)))) - (cond ((eq (length matches) 0) (message "No file(s) found!")) - ((eq (length matches) 1) - (find-file (concat directory (car matches)))) - (t - (run-with-timer 0.001 nil - (lambda () - (dispatch-event - (make-event 'key-press '(key tab))))) - (let ((file (completing-read "Choose file: " - (mapcar 'list matches) - nil t))) - (if (or (eq file nil) (equal file "")) - (message "No file selected.") - (find-file (concat directory file)))))))) - -(defun find-recursive-directory-relative-files (directory - relative-directory - file-regexp) - (let* ((full-dir (concat directory "/" relative-directory)) - (matches - (mapcar - (function (lambda (x) - (concat relative-directory x))) - (find-recursive-filter-out '(nil) - (directory-files full-dir nil - file-regexp nil t)))) - (inner - (mapcar - (function - (lambda (dir) - (find-recursive-directory-relative-files directory - (concat relative-directory - dir "/") - file-regexp))) - (find-recursive-filter-out '(nil "\\." "\\.\\.") - (directory-files full-dir nil ".*" - nil 'directories))))) - (mapcar (function (lambda (dir) (setq matches (append matches dir)))) - inner) - matches)) - -(defun find-recursive-filter-out (remove-list list) - "Remove all the elements in *remove-list* from *list*" - (if (eq list nil) - nil - (let ((elem (car list)) - (rest (cdr list))) - (if (some - (lambda (regexp) - (if (or (eq elem nil) (eq regexp nil)) - nil - (not (eq (string-match regexp elem) nil)))) - remove-list) - (find-recursive-filter-out remove-list rest) - (cons elem (find-recursive-filter-out remove-list rest)))))) - -(defvar find-recursive-running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) - -(if find-recursive-running-xemacs - nil - (defadvice directory-files (after - directory-files-xemacs - (dirname &optional full match nosort files-only) - activate) - "Add an additional argument, FILES-ONLY to the list of arguments -for GNU Emacs. If the symbol is t, then only the files in the -directory will be returned. If FILES-ONLY is nil, then both files and -directories are selected. If FILES-ONLY is not nil and not t, then -only sundirectories are returned." - (setq ad-return-value - (cond ((null files-only) ad-return-value) - ((eq files-only t) - (find-recursive-remove-if (lambda (f) - (file-directory-p - (concat dirname "/" f))) - ad-return-value)) - (t - (find-recursive-remove-if (lambda (f) - (not (file-directory-p - (concat dirname "/" f)))) - ad-return-value))))) - - (defun find-recursive-remove-if (func list) - "Removes all elements satisfying FUNC from LIST." - (let ((result nil)) - (while list - (if (not (funcall func (car list))) - (setq result (cons (car list) result))) - (setq list (cdr list))) - (nreverse result)))) - -(global-set-key [(control x) (meta f)] 'find-file-recursively) - -(provide 'find-recursive) |