X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/ed7f1a6c5caaf4159125c08db5d18c5471fdd032..cd99601878e97578ecd8e2209feeda275a3a13f5:/lisp/dired-x.el diff --git a/lisp/dired-x.el b/lisp/dired-x.el index 548728cf28..1237eef86c 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el @@ -1,6 +1,6 @@ ;;; dired-x.el --- extra Dired functionality -;; Copyright (C) 1993-1994, 1997, 2001-2011 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 1997, 2001-2012 Free Software Foundation, Inc. ;; Author: Sebastian Kremer ;; Lawrence R. Dodd @@ -85,12 +85,12 @@ use \\[customize]." :set (lambda (sym val) (if (set sym val) (progn - (define-key global-map "\C-x\C-j" 'dired-jump) - (define-key global-map "\C-x4\C-j" 'dired-jump-other-window)) - (if (eq 'dired-jump (lookup-key global-map "\C-x\C-j")) - (define-key global-map "\C-x\C-j" nil)) - (if (eq 'dired-jump-other-window (lookup-key global-map "\C-x4\C-j")) - (define-key global-map "\C-x4\C-j" nil)))) + (define-key ctl-x-map "\C-j" 'dired-jump) + (define-key ctl-x-4-map "\C-j" 'dired-jump-other-window)) + (if (eq 'dired-jump (lookup-key ctl-x-map "\C-j")) + (define-key ctl-x-map "\C-j" nil)) + (if (eq 'dired-jump-other-window (lookup-key ctl-x-4-map "\C-j")) + (define-key ctl-x-4-map "\C-j" nil)))) :group 'dired-keys) (defcustom dired-bind-man t @@ -132,17 +132,23 @@ If nil, there is no maximum size." :type '(choice (const :tag "no maximum" nil) integer) :group 'dired-x) +;; For backward compatibility +(define-obsolete-variable-alias 'dired-omit-files-p 'dired-omit-mode "22.1") (define-minor-mode dired-omit-mode - "Toggle Dired-Omit mode. -With numeric ARG, enable Dired-Omit mode if ARG is positive, disable -otherwise. Enabling and disabling is buffer-local. -If enabled, \"uninteresting\" files are not listed. -Uninteresting files are those whose filenames match regexp `dired-omit-files', -plus those ending with extensions in `dired-omit-extensions'. + "Toggle omission of uninteresting files in Dired (Dired-Omit mode). +With a prefix argument ARG, enable Dired-Omit mode if ARG is +positive, and disable it otherwise. If called from Lisp, enable +the mode if ARG is omitted or nil. -To enable omitting in every Dired buffer, you can put in your ~/.emacs +Dired-Omit mode is a buffer-local minor mode. When enabled in a +Dired buffer, Dired does not list files whose filenames match +regexp `dired-omit-files', nor files ending with extensions in +`dired-omit-extensions'. - (add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1))) +To enable omitting in every Dired buffer, you can put this in +your init file: + + (add-hook 'dired-mode-hook (lambda () (dired-omit-mode))) See Info node `(dired-x) Omitting Variables' for more information." :group 'dired-x @@ -153,9 +159,6 @@ See Info node `(dired-x) Omitting Variables' for more information." (put 'dired-omit-mode 'safe-local-variable 'booleanp) -;; For backward compatibility -(define-obsolete-variable-alias 'dired-omit-files-p 'dired-omit-mode "22.1") - (defcustom dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$" "Filenames matching this regexp will not be displayed. This only has effect when `dired-omit-mode' is t. See interactive function @@ -168,6 +171,7 @@ files and lock files." (defcustom dired-omit-verbose t "When non-nil, show messages when omitting files. When nil, don't show messages." + :version "24.1" :type 'boolean :group 'dired-x) @@ -546,11 +550,14 @@ This functions works by temporarily binding `dired-marker-char' to ;; Returns t if any work was done, nil otherwise. (defun dired-mark-unmarked-files (regexp msg &optional unflag-p localp) "Mark unmarked files matching REGEXP, displaying MSG. -REGEXP is matched against the entire file name. -Does not re-mark files which already have a mark. +REGEXP is matched against the entire file name. When called +interactively, prompt for REGEXP. With prefix argument, unflag all those files. Optional fourth argument LOCALP is as in `dired-get-filename'." - (interactive "P") + (interactive + (list (dired-read-regexp + "Mark unmarked files matching regexp (default all): ") + nil current-prefix-arg nil)) (let ((dired-marker-char (if unflag-p ?\s dired-marker-char))) (dired-mark-if (and @@ -716,15 +723,13 @@ determine a default directory.") (defun dired-default-directory () "Return the `dired-default-directory-alist' entry for the current major-mode. If none, return `default-directory'." + ;; It looks like this was intended to be something of a "general" + ;; feature, but it only ever seems to have been used in + ;; dired-smart-shell-command, and doesn't seem worth keeping around. + (declare (obsolete nil "24.1")) (or (eval (cdr (assq major-mode dired-default-directory-alist))) default-directory)) -;; It looks like this was intended to be something of a "general" feature, -;; but it only ever seems to have been used in dired-smart-shell-command, -;; and does not seem worth keeping around (?). -(make-obsolete 'dired-default-directory - "this feature is due to be removed." "24.1") - (defun dired-smart-shell-command (command &optional output-buffer error-buffer) "Like function `shell-command', but in the current Virtual Dired directory." (interactive @@ -775,6 +780,7 @@ See also `dired-enable-local-variables'." (defun dired-hack-local-variables () "Evaluate local variables in `dired-local-variables-file' for dired buffer." + (declare (obsolete hack-dir-local-variables-non-file-buffer "24.1")) (and (stringp dired-local-variables-file) (file-exists-p dired-local-variables-file) (let ((opoint (point-max)) @@ -793,17 +799,15 @@ See also `dired-enable-local-variables'." (hack-local-variables)) ;; Delete this stuff: `eobp' is used to find last subdir by dired.el. (delete-region opoint (point-max))) - ;; Make sure that the modeline shows the proper information. - (dired-sort-set-modeline)))) - -(make-obsolete 'dired-hack-local-variables - 'hack-dir-local-variables-non-file-buffer "24.1") + ;; Make sure that the mode line shows the proper information. + (dired-sort-set-mode-line)))) ;; Does not seem worth a dedicated command. ;; See the more general features in files-x.el. (defun dired-omit-here-always () "Create `dir-locals-file' setting `dired-omit-mode' to t in `dired-mode'. If in a Dired buffer, reverts it." + (declare (obsolete add-dir-local-variable "24.1")) (interactive) (if (file-exists-p dired-local-variables-file) (error "Old-style dired-local-variables-file `./%s' found; @@ -823,8 +827,6 @@ replace it with a dir-locals-file `./%s'" (dired-extra-startup) (dired-revert)))) -(make-obsolete 'dired-omit-here-always 'add-dir-local-variable "24.1") - ;;; GUESS SHELL COMMAND. @@ -956,24 +958,26 @@ replace it with a dir-locals-file `./%s'" ;; FIXME "man ./" does not work with dired-do-shell-command, ;; because there seems to be no way for us to modify the filename, ;; only the command. Hmph. `dired-man' works though. - (list "\\.\\(?:[0-9]\\|man\\)\\'" '(let ((loc (Man-support-local-filenames))) - (cond ((eq loc 'man-db) "man -l") - ((eq loc 'man) "man ./") - (t - "cat * | tbl | nroff -man -h")))) + (list "\\.\\(?:[0-9]\\|man\\)\\'" + '(let ((loc (Man-support-local-filenames))) + (cond ((eq loc 'man-db) "man -l") + ((eq loc 'man) "man ./") + (t + "cat * | tbl | nroff -man -h | col -b")))) (list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'" '(let ((loc (Man-support-local-filenames))) (cond ((eq loc 'man-db) "man -l") ((eq loc 'man) "man ./") - (t "gunzip -qc * | tbl | nroff -man -h"))) + (t "gunzip -qc * | tbl | nroff -man -h | col -b"))) ;; Optional decompression. '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) - (list "\\.[0-9]\\.Z\\'" '(let ((loc (Man-support-local-filenames))) - (cond ((eq loc 'man-db) "man -l") - ((eq loc 'man) "man ./") - (t "zcat * | tbl | nroff -man -h"))) + (list "\\.[0-9]\\.Z\\'" + '(let ((loc (Man-support-local-filenames))) + (cond ((eq loc 'man-db) "man -l") + ((eq loc 'man) "man ./") + (t "zcat * | tbl | nroff -man -h | col -b"))) ;; Optional conversion to gzip format. '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") " " dired-guess-shell-znew-switches)) @@ -1053,12 +1057,11 @@ You can set this variable in your ~/.emacs. For example, to add rules for `.foo' and `.bar' files, write \(setq dired-guess-shell-alist-user - (list (list \"\\\\.foo\\\\'\" \"FOO-COMMAND\");; fixed rule - ;; possibly more rules ... - (list \"\\\\.bar\\\\'\";; rule with condition test - '(if condition - \"BAR-COMMAND-1\" - \"BAR-COMMAND-2\")))\)" + '((\"\\\\.foo\\\\'\" \"FOO-COMMAND\") + (\"\\\\.bar\\\\'\" + (if condition + \"BAR-COMMAND-1\" + \"BAR-COMMAND-2\"))))" :group 'dired-x :type '(alist :key-type regexp :value-type (repeat sexp))) @@ -1069,7 +1072,7 @@ You can set this variable in your ~/.emacs. For example, to add rules for :type 'boolean) (defun dired-guess-default (files) - "Guess a shell commands for FILES. Return command or list of commands. + "Return a shell command, or a list of commands, appropriate for FILES. See `dired-guess-shell-alist-user'." (let* ((case-fold-search dired-guess-shell-case-fold-search) @@ -1101,8 +1104,8 @@ See `dired-guess-shell-alist-user'." ;; Return commands or nil if flist is still non-nil. ;; Evaluate the commands in order that any logical testing will be done. (if (cdr cmds) - (mapcar #'eval cmds) - (eval (car cmds))))) ; single command + (delete-dups (mapcar #'eval cmds)) + (eval (car cmds))))) ; single command (defun dired-guess-shell-command (prompt files) "Ask user with PROMPT for a shell command, guessing a default from FILES." @@ -1253,7 +1256,7 @@ Remaining lines go to bottom-most window. The number of files that can be displayed this way is restricted by the height of the current window and `window-min-height'. -To keep dired buffer displayed, type \\[split-window-vertically] first. +To keep dired buffer displayed, type \\[split-window-below] first. To display just marked files, type \\[delete-other-windows] first." (interactive "P") (dired-simultaneous-find-file (dired-get-marked-files) noselect)) @@ -1386,7 +1389,7 @@ Considers buffers closer to the car of `buffer-list' to be more recent." ;; Apparently people do use it. - lrd 12/22/97. (with-no-warnings - ;; Warnings are suppresed to avoid "global/dynamic var `X' lacks a prefix". + ;; Warnings are suppressed to avoid "global/dynamic var `X' lacks a prefix". ;; This is unbearably ugly, but not more than having global variables ;; named size, time, name or s, however practical it can be while writing ;; `dired-mark-sexp' predicates. @@ -1403,7 +1406,7 @@ Considers buffers closer to the car of `buffer-list' to be more recent." (defun dired-mark-sexp (predicate &optional unflag-p) "Mark files for which PREDICATE returns non-nil. -With a prefix arg, unflag those files instead. +With a prefix arg, unmark or unflag those files instead. PREDICATE is a lisp expression that can refer to the following symbols: