comparison lisp/dired-x.el @ 89943:4c90ffeb71c5

Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-15 Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-218 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-220 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-221 Restore deleted tagline in etc/TUTORIAL.ru * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-222 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-228 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-229 Remove TeX output files from the archive * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-230 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-247 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248 src/lisp.h (CYCLE_CHECK): Macro moved from xfaces.c * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-249 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-256 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-258 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-263 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-264 Update from CVS: lispref/display.texi: emacs -> Emacs. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-265 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-274 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-275 Update from CVS: man/makefile.w32-in: Revert last change * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-276 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-295 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-296 Allow restarting an existing debugger session that's exited * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-297 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-299 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-300 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-327 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-328 Update from CVS: src/.gdbinit (xsymbol): Fix last change. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-329 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-344 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-345 Tweak source regexps so that building in place won't cause problems * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-346 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-351 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-352 Update from CVS: lisp/flymake.el: New file. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-353 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-361 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-362 Support " [...]" style defaults in minibuffer-electric-default-mode * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-363 (read-number): Use canonical format for default in prompt. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-364 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-367 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-368 Improve display-supports-face-attributes-p on non-ttys * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-369 Rewrite face-differs-from-default-p * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-370 Move `display-supports-face-attributes-p' entirely into C code * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-371 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372 Simplify face-differs-from-default-p; don't consider :stipple. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-373 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-374 (tty_supports_face_attributes_p): Ensure attributes differ from default * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-375 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-376 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-377 (Fdisplay_supports_face_attributes_p): Work around bootstrapping problem * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-378 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-380 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-381 Face merging cleanups * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-382 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-384 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-385 src/xfaces.c (push_named_merge_point): Return 0 if a cycle is detected * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-386 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-395 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-396 Tweak arch tagging to make build/install-in-place less annoying * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-397 Work around vc-arch problems when building eshell * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-398 Tweak permissions * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-399 Tweak directory permissions * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-400 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-401 More build-in-place tweaking of arch tagging * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-402 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-403 Yet more build-in-place tweaking of arch tagging * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-404 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-409 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-410 Make sure image types are initialized for lookup too * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-411 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-416 Update from CVS
author Miles Bader <miles@gnu.org>
date Mon, 28 Jun 2004 07:56:49 +0000
parents 68c22ea6027c 7296de1b215f
children f042e7c0fe20
comparison
equal deleted inserted replaced
89942:9cb747ae49af 89943:4c90ffeb71c5
48 ;; ;; (setq dired-guess-shell-gnutar "gtar") 48 ;; ;; (setq dired-guess-shell-gnutar "gtar")
49 ;; ))) 49 ;; )))
50 ;; (add-hook 'dired-mode-hook 50 ;; (add-hook 'dired-mode-hook
51 ;; (function (lambda () 51 ;; (function (lambda ()
52 ;; ;; Set buffer-local variables here. For example: 52 ;; ;; Set buffer-local variables here. For example:
53 ;; ;; (setq dired-omit-files-p t) 53 ;; ;; (dired-omit-mode 1)
54 ;; ))) 54 ;; )))
55 ;; 55 ;;
56 ;; At load time dired-x.el will install itself, redefine some functions, and 56 ;; At load time dired-x.el will install itself, redefine some functions, and
57 ;; bind some dired keys. *Please* see the info pages for more details. 57 ;; bind some dired keys. *Please* see the info pages for more details.
58 58
72 ;; dired-guess-shell-gnutar 72 ;; dired-guess-shell-gnutar
73 ;; dired-guess-shell-gzip-quiet 73 ;; dired-guess-shell-gzip-quiet
74 ;; dired-guess-shell-znew-switches 74 ;; dired-guess-shell-znew-switches
75 ;; dired-guess-shell-alist-user 75 ;; dired-guess-shell-alist-user
76 ;; dired-clean-up-buffers-too 76 ;; dired-clean-up-buffers-too
77 ;; dired-omit-files-p 77 ;; dired-omit-mode
78 ;; dired-omit-files 78 ;; dired-omit-files
79 ;; dired-omit-extensions 79 ;; dired-omit-extensions
80 ;; dired-omit-size-limit 80 ;; dired-omit-size-limit
81 ;; 81 ;;
82 ;; To find out more about these variables, load this file, put your cursor at 82 ;; To find out more about these variables, load this file, put your cursor at
152 :type '(choice (const :tag "off" nil) 152 :type '(choice (const :tag "off" nil)
153 (const :tag "on" t) 153 (const :tag "on" t)
154 (other :tag "non-writable only" if-file-read-only)) 154 (other :tag "non-writable only" if-file-read-only))
155 :group 'dired-x) 155 :group 'dired-x)
156 156
157 (defcustom dired-omit-files-p nil 157 (define-minor-mode dired-omit-mode
158 "*If non-nil, \"uninteresting\" files are not listed (buffer-local). 158 "Toggle Dired-Omit mode.
159 Use \\[dired-omit-toggle] to toggle its value. 159 With numeric ARG, enable Dired-Omit mode if ARG is positive, disable
160 otherwise. Enabling and disabling is buffer-local.
161 If enabled, \"uninteresting\" files are not listed.
160 Uninteresting files are those whose filenames match regexp `dired-omit-files', 162 Uninteresting files are those whose filenames match regexp `dired-omit-files',
161 plus those ending with extensions in `dired-omit-extensions'." 163 plus those ending with extensions in `dired-omit-extensions'."
162 :type 'boolean 164 :group 'dired-x
163 :group 'dired-x) 165 (if dired-omit-mode
164 (make-variable-buffer-local 'dired-omit-files-p) 166 ;; This will mention how many lines were omitted:
167 (let ((dired-omit-size-limit nil)) (dired-omit-expunge))
168 (revert-buffer)))
169
170 ;; For backward compatibility
171 (defvaralias 'dired-omit-files-p 'dired-omit-mode)
172 (make-obsolete-variable 'dired-omit-files-p 'dired-omit-mode)
165 173
166 (defcustom dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$" 174 (defcustom dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$"
167 "*Filenames matching this regexp will not be displayed. 175 "*Filenames matching this regexp will not be displayed.
168 This only has effect when `dired-omit-files-p' is t. See interactive function 176 This only has effect when `dired-omit-mode' is t. See interactive function
169 `dired-omit-toggle' \(\\[dired-omit-toggle]\) and variable 177 `dired-omit-mode' \(\\[dired-omit-mode]\) and variable
170 `dired-omit-extensions'. The default is to omit `.', `..', auto-save 178 `dired-omit-extensions'. The default is to omit `.', `..', auto-save
171 files and lock files." 179 files and lock files."
172 :type 'regexp 180 :type 'regexp
173 :group 'dired-x) 181 :group 'dired-x)
174 182
228 :type 'boolean 236 :type 'boolean
229 :group 'dired-x) 237 :group 'dired-x)
230 238
231 ;;; KEY BINDINGS. 239 ;;; KEY BINDINGS.
232 240
233 (define-key dired-mode-map "\M-o" 'dired-omit-toggle) 241 (define-key dired-mode-map "\M-o" 'dired-omit-mode)
242 (define-key dired-mode-map "*O" 'dired-mark-omitted)
234 (define-key dired-mode-map "\M-(" 'dired-mark-sexp) 243 (define-key dired-mode-map "\M-(" 'dired-mark-sexp)
235 (define-key dired-mode-map "*(" 'dired-mark-sexp) 244 (define-key dired-mode-map "*(" 'dired-mark-sexp)
236 (define-key dired-mode-map "*." 'dired-mark-extension) 245 (define-key dired-mode-map "*." 'dired-mark-extension)
237 (define-key dired-mode-map "\M-!" 'dired-smart-shell-command) 246 (define-key dired-mode-map "\M-!" 'dired-smart-shell-command)
238 (define-key dired-mode-map "w" 'dired-copy-filename-as-kill) 247 (define-key dired-mode-map "w" 'dired-copy-filename-as-kill)
266 \\<dired-mode-map> 275 \\<dired-mode-map>
267 \\[dired-do-run-mail]\t-- run mail on folder (see `dired-bind-vm') 276 \\[dired-do-run-mail]\t-- run mail on folder (see `dired-bind-vm')
268 \\[dired-info]\t-- run info on file 277 \\[dired-info]\t-- run info on file
269 \\[dired-man]\t-- run man on file 278 \\[dired-man]\t-- run man on file
270 \\[dired-do-find-marked-files]\t-- visit all marked files simultaneously 279 \\[dired-do-find-marked-files]\t-- visit all marked files simultaneously
271 \\[dired-omit-toggle]\t-- toggle omitting of files 280 \\[dired-omit-mode]\t-- toggle omitting of files
272 \\[dired-mark-sexp]\t-- mark by Lisp expression 281 \\[dired-mark-sexp]\t-- mark by Lisp expression
273 \\[dired-copy-filename-as-kill]\t-- copy the file or subdir names into the kill ring. 282 \\[dired-copy-filename-as-kill]\t-- copy the file or subdir names into the kill ring.
274 \t You can feed it to other commands using \\[yank]. 283 \t You can feed it to other commands using \\[yank].
275 284
276 For more features, see variables 285 For more features, see variables
278 `dired-bind-vm' 287 `dired-bind-vm'
279 `dired-bind-jump' 288 `dired-bind-jump'
280 `dired-bind-info' 289 `dired-bind-info'
281 `dired-bind-man' 290 `dired-bind-man'
282 `dired-vm-read-only-folders' 291 `dired-vm-read-only-folders'
283 `dired-omit-files-p' 292 `dired-omit-mode'
284 `dired-omit-files' 293 `dired-omit-files'
285 `dired-omit-extensions' 294 `dired-omit-extensions'
286 `dired-omit-size-limit' 295 `dired-omit-size-limit'
287 `dired-find-subdir' 296 `dired-find-subdir'
288 `dired-enable-local-variables' 297 `dired-enable-local-variables'
448 ;; refresh and try again 457 ;; refresh and try again
449 (progn 458 (progn
450 (dired-insert-subdir (file-name-directory file)) 459 (dired-insert-subdir (file-name-directory file))
451 (dired-goto-file file)) 460 (dired-goto-file file))
452 ;; Toggle omitting, if it is on, and try again. 461 ;; Toggle omitting, if it is on, and try again.
453 (if dired-omit-files-p 462 (if dired-omit-mode
454 (progn 463 (progn
455 (dired-omit-toggle) 464 (dired-omit-mode)
456 (dired-goto-file file)))))))) 465 (dired-goto-file file))))))))
457 466
458 (defun dired-jump-other-window () 467 (defun dired-jump-other-window ()
459 "Like \\[dired-jump] (dired-jump) but in other window." 468 "Like \\[dired-jump] (dired-jump) but in other window."
460 (interactive) 469 (interactive)
477 (defvar dired-omit-marker-char ?\017 486 (defvar dired-omit-marker-char ?\017
478 "Temporary marker used by by dired-omit. 487 "Temporary marker used by by dired-omit.
479 Should never be used as marker by the user or other packages.") 488 Should never be used as marker by the user or other packages.")
480 489
481 (defun dired-omit-startup () 490 (defun dired-omit-startup ()
482 (or (assq 'dired-omit-files-p minor-mode-alist) 491 (or (assq 'dired-omit-mode minor-mode-alist)
483 (setq minor-mode-alist 492 (setq minor-mode-alist
484 (append '((dired-omit-files-p 493 (append '((dired-omit-mode
485 (:eval (if (eq major-mode 'dired-mode) 494 (:eval (if (eq major-mode 'dired-mode)
486 " Omit" "")))) 495 " Omit" ""))))
487 minor-mode-alist)))) 496 minor-mode-alist))))
488 497
489 (defun dired-omit-toggle (&optional flag) 498 (defun dired-mark-omitted ()
490 "Toggle omitting files matching `dired-omit-files' and `dired-omit-extensions'. 499 "Mark files matching `dired-omit-files' and `dired-omit-extensions'."
491 With an arg, and if omitting was off, don't toggle and just mark the 500 (interactive)
492 files but don't actually omit them. 501 (let ((dired-omit-mode nil)) (revert-buffer)) ;; Show omitted files
493 With an arg, and if omitting was on, turn it off but don't refresh the buffer." 502 (dired-mark-unmarked-files (dired-omit-regexp) nil nil dired-omit-localp))
494 (interactive "P")
495 (if flag
496 (if dired-omit-files-p
497 (setq dired-omit-files-p (not dired-omit-files-p))
498 (dired-mark-unmarked-files (dired-omit-regexp) nil nil
499 dired-omit-localp))
500 ;; no FLAG
501 (setq dired-omit-files-p (not dired-omit-files-p))
502 (if (not dired-omit-files-p)
503 (revert-buffer)
504 ;; this will mention how many were omitted:
505 (let ((dired-omit-size-limit nil))
506 (dired-omit-expunge)))))
507 503
508 (defvar dired-omit-extensions 504 (defvar dired-omit-extensions
509 (append completion-ignored-extensions 505 (append completion-ignored-extensions
510 dired-latex-unclean-extensions 506 dired-latex-unclean-extensions
511 dired-bibtex-unclean-extensions 507 dired-bibtex-unclean-extensions
513 "If non-nil, a list of extensions \(strings\) to omit from Dired listings. 509 "If non-nil, a list of extensions \(strings\) to omit from Dired listings.
514 Defaults to elements of `completion-ignored-extensions', 510 Defaults to elements of `completion-ignored-extensions',
515 `dired-latex-unclean-extensions', `dired-bibtex-unclean-extensions', and 511 `dired-latex-unclean-extensions', `dired-bibtex-unclean-extensions', and
516 `dired-texinfo-unclean-extensions'. 512 `dired-texinfo-unclean-extensions'.
517 513
518 See interactive function `dired-omit-toggle' \(\\[dired-omit-toggle]\) and 514 See interactive function `dired-omit-mode' \(\\[dired-omit-mode]\) and
519 variables `dired-omit-files-p' and `dired-omit-files'.") 515 variables `dired-omit-mode' and `dired-omit-files'.")
520 516
521 (defun dired-omit-expunge (&optional regexp) 517 (defun dired-omit-expunge (&optional regexp)
522 "Erases all unmarked files matching REGEXP. 518 "Erases all unmarked files matching REGEXP.
523 Does nothing if global variable `dired-omit-files-p' is nil, or if called 519 Does nothing if global variable `dired-omit-mode' is nil, or if called
524 non-interactively and buffer is bigger than `dired-omit-size-limit'. 520 non-interactively and buffer is bigger than `dired-omit-size-limit'.
525 If REGEXP is nil or not specified, uses `dired-omit-files', and also omits 521 If REGEXP is nil or not specified, uses `dired-omit-files', and also omits
526 filenames ending in `dired-omit-extensions'. 522 filenames ending in `dired-omit-extensions'.
527 If REGEXP is the empty string, this function is a no-op. 523 If REGEXP is the empty string, this function is a no-op.
528 524
529 This functions works by temporarily binding `dired-marker-char' to 525 This functions works by temporarily binding `dired-marker-char' to
530 `dired-omit-marker-char' and calling `dired-do-kill-lines'." 526 `dired-omit-marker-char' and calling `dired-do-kill-lines'."
531 (interactive "sOmit files (regexp): ") 527 (interactive "sOmit files (regexp): ")
532 (if (and dired-omit-files-p 528 (if (and dired-omit-mode
533 (or (interactive-p) 529 (or (interactive-p)
534 (not dired-omit-size-limit) 530 (not dired-omit-size-limit)
535 (< (buffer-size) dired-omit-size-limit) 531 (< (buffer-size) dired-omit-size-limit)
536 (progn 532 (progn
537 (message "Not omitting: directory larger than %d characters." 533 (message "Not omitting: directory larger than %d characters."
538 dired-omit-size-limit) 534 dired-omit-size-limit)
539 (setq dired-omit-files-p nil) 535 (setq dired-omit-mode nil)
540 nil))) 536 nil)))
541 (let ((omit-re (or regexp (dired-omit-regexp))) 537 (let ((omit-re (or regexp (dired-omit-regexp)))
542 (old-modified-p (buffer-modified-p)) 538 (old-modified-p (buffer-modified-p))
543 count) 539 count)
544 (or (string= omit-re "") 540 (or (string= omit-re "")
587 583
588 ;;; REDEFINE. 584 ;;; REDEFINE.
589 (defun dired-omit-new-add-entry (filename &optional marker-char relative) 585 (defun dired-omit-new-add-entry (filename &optional marker-char relative)
590 ;; This redefines dired-aux.el's dired-add-entry to avoid calling ls for 586 ;; This redefines dired-aux.el's dired-add-entry to avoid calling ls for
591 ;; files that are going to be omitted anyway. 587 ;; files that are going to be omitted anyway.
592 (if dired-omit-files-p 588 (if dired-omit-mode
593 ;; perhaps return t without calling ls 589 ;; perhaps return t without calling ls
594 (let ((omit-re (dired-omit-regexp))) 590 (let ((omit-re (dired-omit-regexp)))
595 (if (or (string= omit-re "") 591 (if (or (string= omit-re "")
596 (not 592 (not
597 (string-match omit-re 593 (string-match omit-re
840 836
841 ;; Create `dired-local-variables-file'. 837 ;; Create `dired-local-variables-file'.
842 (save-excursion 838 (save-excursion
843 (set-buffer (get-buffer-create " *dot-dired*")) 839 (set-buffer (get-buffer-create " *dot-dired*"))
844 (erase-buffer) 840 (erase-buffer)
845 (insert "Local Variables:\ndired-omit-files-p: t\nEnd:\n") 841 (insert "Local Variables:\ndired-omit-mode: t\nEnd:\n")
846 (write-file dired-local-variables-file) 842 (write-file dired-local-variables-file)
847 (kill-buffer (current-buffer))) 843 (kill-buffer (current-buffer)))
848 844
849 ;; Run extra-hooks and revert directory. 845 ;; Run extra-hooks and revert directory.
850 (dired-extra-startup) 846 (dired-extra-startup)
1690 'dired-guess-shell-gnutar 1686 'dired-guess-shell-gnutar
1691 'dired-guess-shell-gzip-quiet 1687 'dired-guess-shell-gzip-quiet
1692 'dired-guess-shell-znew-switches 1688 'dired-guess-shell-znew-switches
1693 'dired-guess-shell-alist-user 1689 'dired-guess-shell-alist-user
1694 'dired-clean-up-buffers-too 1690 'dired-clean-up-buffers-too
1695 'dired-omit-files-p 1691 'dired-omit-mode
1696 'dired-omit-files 1692 'dired-omit-files
1697 'dired-omit-extensions 1693 'dired-omit-extensions
1698 ) 1694 )
1699 "List of variables to be appended to reports sent by `dired-x-submit-report'.") 1695 "List of variables to be appended to reports sent by `dired-x-submit-report'.")
1700 1696