X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/362b9d483c714a8fd87966ddbd8686850f870e34..51721edc6ba92f9c7cb6a2daab45bb538a696f3d:/lisp/locate.el diff --git a/lisp/locate.el b/lisp/locate.el index 7e69f7638b..0149d01452 100644 --- a/lisp/locate.el +++ b/lisp/locate.el @@ -1,7 +1,6 @@ ;;; locate.el --- interface to the locate command -;; Copyright (C) 1996, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, -;; 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +;; Copyright (C) 1996, 1998, 2001-2014 Free Software Foundation, Inc. ;; Author: Peter Breton ;; Keywords: unix files @@ -35,7 +34,7 @@ ;; ;; SHELLPROGRAM Name-to-find ;; -;; set the variable `locate-command' in your .emacs file. +;; set the variable `locate-command' in your init file. ;; ;; To use a more complicated expression, create a function which ;; takes a string (the name to find) as input and returns a list. @@ -96,7 +95,7 @@ ;; ;; (defadvice dired-make-relative (before set-no-error activate) ;; "For locate mode and Windows, don't return errors" -;; (if (and (eq major-mode 'locate-mode) +;; (if (and (derived-mode-p 'locate-mode) ;; (memq system-type '(windows-nt ms-dos))) ;; (ad-set-arg 2 t) ;; )) @@ -449,7 +448,7 @@ file name or is inside a subdirectory." ;; Define a mode for locate ;; Default directory is set to "/" so that dired commands, which ;; expect to be in a tree, will work properly -(defun locate-mode () +(define-derived-mode locate-mode special-mode "Locate" "Major mode for the `*Locate*' buffer made by \\[locate]. \\\ In that buffer, you can use almost all the usual dired bindings. @@ -464,39 +463,32 @@ Specific `locate-mode' commands, such as \\[locate-find-directory], do not work in subdirectories. \\{locate-mode-map}" - ;; Not to be called interactively. - (kill-all-local-variables) ;; Avoid clobbering this variable (make-local-variable 'dired-subdir-alist) - (use-local-map locate-mode-map) - (setq major-mode 'locate-mode - mode-name "Locate" - default-directory "/" + (setq default-directory "/" buffer-read-only t selective-display t) (dired-alist-add-1 default-directory (point-min-marker)) (set (make-local-variable 'dired-directory) "/") (set (make-local-variable 'dired-subdir-switches) locate-ls-subdir-switches) (setq dired-switches-alist nil) - (make-local-variable 'directory-listing-before-filename-regexp) ;; This should support both Unix and Windoze style names - (setq directory-listing-before-filename-regexp - (concat "^.\\(" - (make-string (1- locate-filename-indentation) ?\s) - "\\)\\|" - (default-value 'directory-listing-before-filename-regexp))) - (make-local-variable 'dired-actual-switches) - (setq dired-actual-switches "") - (make-local-variable 'dired-permission-flags-regexp) - (setq dired-permission-flags-regexp - (concat "^.\\(" - (make-string (1- locate-filename-indentation) ?\s) - "\\)\\|" - (default-value 'dired-permission-flags-regexp))) - (make-local-variable 'revert-buffer-function) - (setq revert-buffer-function 'locate-update) - (set (make-local-variable 'page-delimiter) "\n\n") - (run-mode-hooks 'locate-mode-hook)) + (setq-local directory-listing-before-filename-regexp + (concat "^.\\(" + (make-string (1- locate-filename-indentation) ?\s) + "\\)\\|" + (default-value + 'directory-listing-before-filename-regexp))) + (setq-local dired-actual-switches "") + (setq-local dired-permission-flags-regexp + (concat "^.\\(" + (make-string (1- locate-filename-indentation) ?\s) + "\\)\\|" + (default-value 'dired-permission-flags-regexp))) + + (setq-local revert-buffer-function #'locate-update) + (setq-local page-delimiter "\n\n")) +(put 'locate-mode 'derived-mode-parent 'dired-mode) (defun locate-do-setup (search-string) (goto-char (point-min)) @@ -589,7 +581,7 @@ do not work in subdirectories. (message "This command only works inside main listing."))) ;; From Stephen Eglen -(defun locate-update (ignore1 ignore2) +(defun locate-update (_ignore1 _ignore2) "Revert the *Locate* buffer. If `locate-update-when-revert' is non-nil, offer to update the locate database using the shell command in `locate-update-command'."