(tex-command-end): New variable.
[bpt/emacs.git] / lisp / dired-x.el
index f3d8969..7c67642 100644 (file)
@@ -7,7 +7,7 @@
 ;; Date: 1994/08/18 19:27:42
 ;; Keywords: dired extensions
 
-;; Copyright (C) 1993, 1994 Free Software Foundation
+;; Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc.
 
 ;; This file is part of GNU Emacs.
 
 
 ;;; User-defined variables.
 
-(defvar dired-bind-vm nil
-  "*t says \"V\" in dired-mode will `dired-vm', otherwise \"V\" is `dired-rmail'.
-Also, RMAIL files contain -*- rmail -*- at the top so \"f\",
-`dired-advertised-find-file', will run rmail.")
-
-(defvar dired-bind-jump t
-  "*t says bind `dired-jump' to C-x C-j, otherwise do not.")
+(defgroup dired-x nil
+  "Extended directory editing (dired-x)."
+  :group 'dired)
 
-(defvar dired-bind-man t
-  "*t says bind `dired-man' to \"N\" in dired-mode, otherwise do not.")
+(defgroup dired-keys nil
+  "Dired keys customizations."
+  :prefix "dired-"
+  :group 'dired-x)
 
-(defvar dired-bind-info t
-  "*t says bind `dired-info' to \"I\" in dired-mode, otherwise do not.")
-
-(defvar dired-vm-read-only-folders nil
+(defcustom dired-bind-vm nil
+  "*t says \"V\" in dired-mode will `dired-vm', otherwise \"V\" is `dired-rmail'.
+Also, RMAIL files contain -*- rmail -*- at the top so \"f\",
+`dired-advertised-find-file', will run rmail."
+  :type 'boolean
+  :group 'dired-keys)
+
+(defcustom dired-bind-jump t
+  "*t says bind `dired-jump' to C-x C-j, otherwise do not."
+  :type 'boolean
+  :group 'dired-keys)
+
+(defcustom dired-bind-man t
+  "*t says bind `dired-man' to \"N\" in dired-mode, otherwise do not."
+  :type 'boolean
+  :group 'dired-keys)
+
+(defcustom dired-bind-info t
+  "*t says bind `dired-info' to \"I\" in dired-mode, otherwise do not."
+  :type 'boolean
+  :group 'dired-keys)
+
+(defcustom dired-vm-read-only-folders nil
   "*If t, \\[dired-vm] will visit all folders read-only.
 If neither nil nor t, e.g. the symbol `if-file-read-only', only
 files not writable by you are visited read-only.
 
-Read-only folders only work in VM 5, not in VM 4.")
+Read-only folders only work in VM 5, not in VM 4."
+  :type '(choice (const :tag "off" nil)
+                (const :tag "on" t)
+                (sexp :tag "non-writable only" if-file-read-only))
+  :group 'dired-x)
 
-(defvar dired-omit-files-p nil
+(defcustom dired-omit-files-p nil
   "*If non-nil, \"uninteresting\" files are not listed (buffer-local).
 Use \\[dired-omit-toggle] to toggle its value.
 Uninteresting files are those whose filenames match regexp `dired-omit-files',
-plus those ending with extensions in `dired-omit-extensions'.")
+plus those ending with extensions in `dired-omit-extensions'."
+  :type 'boolean
+  :group 'dired-x)
 (make-variable-buffer-local 'dired-omit-files-p)
 
-(defvar dired-omit-files "^#\\|^\\.$\\|^\\.\\.$"
+(defcustom dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$"
   "*Filenames matching this regexp will not be displayed.
 This only has effect when `dired-omit-files-p' is t.  See interactive function
 `dired-omit-toggle' \(\\[dired-omit-toggle]\) and variable
-`dired-omit-extensions'.  The default is to omit  `.', `..', and auto-save
-files.")
+`dired-omit-extensions'.  The default is to omit  `.', `..', auto-save
+files and lock files."
+  :type 'regexp
+  :group 'dired-x)
 
-(defvar dired-omit-size-limit 20000
-  "*If a dired buffer listing contains more than this many characters,
-do not do omitting.  If nil, always do omitting.")
-
-(defvar dired-find-subdir nil           ; t is pretty near to DWIM...
+(defcustom dired-find-subdir nil           ; t is pretty near to DWIM...
   "*If non-nil, Dired always finds a directory in a buffer of its own.
 If nil, Dired finds the directory as a subdirectory in some other buffer
 if it is present as one.
@@ -183,30 +204,48 @@ used is chosen.
 
 Dired avoids switching to the current buffer, so that if you have
 a normal and a wildcard buffer for the same directory, C-x d RET will
-toggle between those two.")
+toggle between those two."
+  :type 'boolean
+  :group 'dired-x)
+
+(defcustom dired-omit-size-limit 20000
+  "*Maximum size for the \"omitting\" feature.
+If nil, there is no maximum size."
+  :type '(choice (const :tag "no maximum" nil) integer)
+  :group 'dired-x)
 
-(defvar dired-enable-local-variables t
+(defcustom dired-enable-local-variables t
   "*Control use of local-variables lists in dired.
 The value can be t, nil or something else.
 A value of t means local-variables lists are obeyed;
 nil means they are ignored; anything else means query.
 
 This temporarily overrides the value of `enable-local-variables' when listing
-a directory.  See also `dired-local-variables-file'.")
+a directory.  See also `dired-local-variables-file'."
+  :type 'boolean
+  :group 'dired-x)
 
-(defvar dired-guess-shell-gnutar nil
+(defcustom dired-guess-shell-gnutar nil
   "*If non-nil, name of GNU tar executable (e.g., \"tar\" or \"gtar\") and `z'
 switch will be used for compressed or gzip'ed tar files.  If no GNU tar, set
-to nil: a pipe using `zcat' or `gunzip -c' will be used.")
+to nil: a pipe using `zcat' or `gunzip -c' will be used."
+  :type 'boolean
+  :group 'dired-x)
 
-(defvar dired-guess-shell-gzip-quiet t
-  "*non-nil says pass -q to gzip overriding verbose GZIP environment.")
+(defcustom dired-guess-shell-gzip-quiet t
+  "*non-nil says pass -q to gzip overriding verbose GZIP environment."
+  :type 'boolean
+  :group 'dired-x)
 
-(defvar dired-guess-shell-znew-switches nil
-  "*If non-nil, then string of switches passed to `znew', example: \"-K\"")
+(defcustom dired-guess-shell-znew-switches nil
+  "*If non-nil, then string of switches passed to `znew', example: \"-K\""
+  :type 'boolean
+  :group 'dired-x)
 
-(defvar dired-clean-up-buffers-too t
-  "*t says offer to kill buffers visiting files and dirs deleted in dired.")
+(defcustom dired-clean-up-buffers-too t
+  "*t says offer to kill buffers visiting files and dirs deleted in dired."
+  :type 'boolean
+  :group 'dired-x)
 
 ;;; KEY BINDINGS.
 
@@ -215,8 +254,6 @@ to nil: a pipe using `zcat' or `gunzip -c' will be used.")
 (define-key dired-mode-map "*(" 'dired-mark-sexp)
 (define-key dired-mode-map "*." 'dired-mark-extension)
 (define-key dired-mode-map "\M-!" 'dired-smart-shell-command)
-(define-key dired-mode-map "T" 'dired-do-toggle)
-(define-key dired-mode-map "*t" 'dired-do-toggle)
 (define-key dired-mode-map "w" 'dired-copy-filename-as-kill)
 (define-key dired-mode-map "\M-g" 'dired-goto-file)
 (define-key dired-mode-map "\M-G" 'dired-goto-subdir)
@@ -252,7 +289,6 @@ to nil: a pipe using `zcat' or `gunzip -c' will be used.")
   \\[dired-man]\t-- run man on file
   \\[dired-do-find-marked-files]\t-- visit all marked files simultaneously
   \\[dired-omit-toggle]\t-- toggle omitting of files
-  \\[dired-do-toggle]\t-- toggle marks
   \\[dired-mark-sexp]\t-- mark by lisp expression
   \\[dired-copy-filename-as-kill]\t-- copy the file or subdir names into the kill ring.
   \t   You can feed it to other commands using \\[yank].
@@ -446,33 +482,6 @@ buffer and try again."
   (interactive)
   (dired-jump t))
 \f
-;;; TOGGLE.
-;;; Toggle marked files with unmarked files.
-
-(defun dired-do-toggle ()
-  "Toggle marks.
-That is, currently marked files become unmarked and vice versa.
-Files marked with other flags (such as `D') are not affected.
-`.' and `..' are never toggled.
-As always, hidden subdirs are not affected."
-  (interactive)
-  (save-excursion
-    (goto-char (point-min))
-    (let (buffer-read-only)
-      (while (not (eobp))
-        (or (dired-between-files)
-            (looking-at dired-re-dot)
-            ;; use subst instead of insdel because it does not move
-            ;; the gap and thus should be faster and because
-            ;; other characters are left alone automatically
-            (apply 'subst-char-in-region
-                   (point) (1+ (point))
-                   (if (eq ?\040 (following-char)) ; SPC
-                       (list ?\040 dired-marker-char)
-                     (list dired-marker-char ?\040))))
-        (forward-line 1)))))
-
-\f
 ;;; COPY NAMES OF MARKED FILES INTO KILL-RING.
 
 (defun dired-copy-filename-as-kill (&optional arg)
@@ -620,7 +629,7 @@ Second optional argument LOCALP is as in `dired-get-filename'."
      msg)))
 
 ;;; REDEFINE.
-(defun dired-omit-new-add-entry (filename &optional marker-char)
+(defun dired-omit-new-add-entry (filename &optional marker-char relative)
   ;; This redefines dired-aux.el's dired-add-entry to avoid calling ls for
   ;; files that are going to be omitted anyway.
   (if dired-omit-files-p
@@ -639,12 +648,12 @@ Second optional argument LOCALP is as in `dired-get-filename'."
                                   filename
                                   (file-name-directory filename)))))))
             ;; if it didn't match, go ahead and add the entry
-            (dired-omit-old-add-entry filename marker-char)
+            (dired-omit-old-add-entry filename marker-char relative)
           ;; dired-add-entry returns t for success, perhaps we should
           ;; return file-exists-p
           t))
     ;; omitting is not turned on at all
-    (dired-omit-old-add-entry filename marker-char)))
+    (dired-omit-old-add-entry filename marker-char relative)))
 
 ;;; REDEFINE.
 ;;; Redefine dired-aux.el's version of `dired-add-entry'
@@ -1422,6 +1431,7 @@ See also variable `dired-vm-read-only-folders'."
 
 \f
 ;; Does anyone use this? - lrd 6/29/93.
+;; Apparently people do use it. - lrd 12/22/97.
 (defun dired-mark-sexp (predicate &optional unflag-p)
   "Mark files for which PREDICATE returns non-nil.
 With a prefix arg, unflag those files instead.
@@ -1483,7 +1493,8 @@ to mark all zero length files."
               (setq mode (buffer-substring (point) (+ mode-len (point))))
               (forward-char mode-len)
               (setq nlink (read (current-buffer)))
-              (setq uid (buffer-substring (point) (progn (forward-word 1) (point))))
+              ;; Karsten Wenger <kw@cis.uni-muenchen.de> fixed uid.
+              (setq uid (buffer-substring (+ (point) 1) (progn (forward-word 1) (point))))
               (re-search-forward "\\(Jan\\|Feb\\|Mar\\|Apr\\|May\\|Jun\\|Jul\\|Aug\\|Sep\\|Oct\\|Nov\\|Dec\\)")
               (goto-char (match-beginning 1))
               (forward-char -1)