\input texinfo @comment -*-texinfo-*-@c dired-x.texi --- Sebastian Kremer's Extra DIRED hacked up for GNU Emacs19@c @c Author: Sebastian Kremer <sk@thp.uni-koeln.de>@c Lawrence R. Dodd <dodd@roebling.poly.edu>@c [Dodd's address no longer valid.]@c Version: 2.53@c Date: 2001/02/25 14:05:46@c Keywords: dired extensions@c dired-x.el REVISION NUMBER: 2@c State: Released@c Ident: dired-x.texi,v 2.53 2001/02/25 14:05:46 dodd Released@comment %**start of header (This is for running Texinfo on a region.)@c FOR GNU EMACS USE ../info/dired-x BELOW@setfilename ../info/dired-x@c dired-x.el REVISION NUMBER@settitle Dired Extra Version 2 User's Manual@dircategory Emacs@direntry* Dired-X: (dired-x). Dired Extra Features.@end direntry@iftex@finalout@end iftex@c @setchapternewpage odd % For book style double sided manual.@comment %**end of header (This is for running Texinfo on a region.)@c @smallbook@tex\overfullrule=0pt%\global\baselineskip 30pt % For printing in double spaces@end tex@ifinfo@node Copyright, Top, (dir), (dir)@comment node-name, next, previous, upThis documents the ``extra'' features for Dired Mode for GNU Emacs found inthe file @file{dired-x.el}.Copyright @copyright{} 1993, 1994, 2001 Free Software Foundation, Inc.Permission is granted to make and distribute verbatim copies of thismanual provided the copyright notice and this permission notice arepreserved on all copies.Permission is granted to copy and distribute modified versions ofthis manual under the conditions for verbatim copying, provided thatthe entire resulting derived work is distributed under the terms ofa permission notice identical to this one.Permission is granted to copy and distribute translations of thismanual into another language, under the above conditions formodified versions, except that this permission notice may be statedin a translation approved by the Free Software Foundation.The file used to create this is called @file{dired-x.texi}, but theoriginal work that was altered to make that file was called@file{dired.texi} written by Sebastian Kremer.@ignorePermission is granted to process this file through TeX and print theresults, provided the printed document carries copying permissionnotice identical to this one except for the removal of this paragraph(this paragraph not being relevant to the printed manual).@end ignore@end ifinfo@c@titlepage@sp 6@c dired-x.el REVISION NUMBER@center @titlefont{Dired Extra Version 2}@sp 2@center @titlefont{For The GNU Emacs}@sp 1@center @titlefont{Directory Editor}@sp 4@center Manual Revision: 2.53@center 2001/02/25 14:05:46@sp 5@center Lawrence R@. Dodd@c @center @t{dodd@@roebling.poly.edu}@sp 5@center (Based on @file{dired.texi} by Sebastian Kremer <sk@@thp.uni-koeln.de>)@page@vskip 0pt plus 1filllCopyright @copyright{} 1993, 1994, 2001 Free Software FoundationPermission is granted to make and distribute verbatim copies ofthis manual provided the copyright notice and this permission noticeare preserved on all copies.Permission is granted to copy and distribute modified versions ofthis manual under the conditions for verbatim copying, provided thatthe entire resulting derived work is distributed under the terms ofa permission notice identical to this one.Permission is granted to copy and distribute translations of thismanual into another language, under the above conditions formodified versions, except that this permission notice may be statedin a translation approved by the Free Software Foundation.The file used to create this is called @file{dired-x.texi}, but theoriginal work that was altered to make that file was called@file{dired.texi} written by Sebastian Kremer.@end titlepage@page@ifinfo@node Top, Introduction, Copyright, (dir)@comment node-name, next, previous, up@noindentThis documents the ``extra'' features for Dired Mode for GNU Emacs that areprovided by the file @file{dired-x.el}.@itemize @bullet@itemBased on @file{dired.texi} by Sebastian Kremer <sk@@thp.uni-koeln.de>@c dired-x.el REVISION NUMBER@item For @file{dired-x.el} revision 2@c @item @c Revision of this manual: 2.53 (2001/02/25 14:05:46)@c @item@c Bugs to Lawrence R. Dodd <dodd@@roebling.poly.edu>. @emph{Please} type@c @kbd{M-x dired-x-submit-report} to submit a bug report (@pxref{Bugs}).@c @item@c You can obtain a copy of this package via anonymous ftp in@c @t{/roebling.poly.edu:/pub/packages/dired-x.tar.gz}@end itemize@menu* Introduction::* Installation::* Omitting Files in Dired::* Local Variables::* Shell Command Guessing::* Virtual Dired::* Advanced Mark Commands::* Multiple Dired Directories::* Find File At Point::* Miscellaneous Commands::* Bugs::* Concept Index:: * Command Index:: * Key Index:: * Variable Index:: @end menu@end ifinfo@node Introduction, Installation, Top, Top@comment node-name, next, previous, up@chapter IntroductionThis documents the @emph{extra} features for Dired Mode for GNU Emacs. Itis derived from version 1.191 of Sebastian Kremer's @file{dired-x.el}.In adopting this @file{dired-x.el} to GNU Emacs v19 some material that hasbeen incorporated into @file{dired.el} and @file{dired-aux.el} of the GNU Emacs19 distribution has been removed and some material was modified for agreementwith the functions in @file{dired.el} and @file{dired-aux.el}. For example,the code using @code{gmhist} history functions was replaced with code usingthe mini-buffer history now built into GNU Emacs. Finally, a few otherfeatures have been added and a few more functions have been bound to keys.@ifinfo@menu* Features::* Technical Details::@end menu@end ifinfo@node Features, Technical Details, , Introduction@comment node-name, next, previous, up@section Features@cindex FeaturesSome features provided by Dired Extra@enumerate@itemOmitting uninteresting files from Dired listing. @itemize @bullet@xref{Omitting Files in Dired}.@end itemize@itemLocal variables for Dired directories.@itemize @bullet@xref{Local Variables}.@end itemize@itemGuessing shell commands in Dired buffers.@itemize @bullet@xref{Shell Command Guessing}.@end itemize@itemRunning Dired command in non-Dired buffers.@itemize @bullet@xref{Virtual Dired}.@end itemize@itemFinding a file mentioned in a buffer@itemize @bullet@xref{Find File At Point}.@end itemize@itemCommands using file marking.@itemize @bullet@xref{Advanced Mark Commands}.@end itemize@end enumerate@noindent@file{dired-x.el} binds some functions to keys in Dired Mode (@pxref{KeyIndex}) and also binds @kbd{C-x C-j} and @kbd{C-x 4 C-j} @emph{globally} to@code{dired-jump} (@pxref{Miscellaneous Commands}). It may also bind @kbd{C-xC-f} and @kbd{C-x 4 C-f} to @code{dired-x-find-file} and@code{dired-x-find-file-other-window}, respectively (@pxref{Find File AtPoint}).@node Technical Details, , Features, Introduction@comment node-name, next, previous, up@section Technical Details@cindex Redefined functions@cindex @file{dired-aux.el}When loaded this code @emph{redefines} the following functions of GNU Emacsfrom @file{dired.el}@itemize @bullet@item@code{dired-clean-up-after-deletion}@item@code{dired-find-buffer-nocreate}@item@code{dired-initial-position}@item@code{dired-up-directory}@end itemize@noindentand the following functions from @file{dired-aux.el}@itemize @bullet@item@code{dired-add-entry}@item@code{dired-read-shell-command}@end itemize@node Installation, Omitting Files in Dired, Introduction, Top@comment node-name, next, previous, up@chapter Installation@noindentThis manual describes the Dired features provided by the file@file{dired-x.el}. To take advantage of these features, you must load thefile and (optionally) set some variables.@noindentIn your @file{.emacs} file in your home directory, or in the system-wideinitialization file @file{default.el} in the @file{site-lisp} directory, put@example(add-hook 'dired-load-hook (lambda () (load "dired-x") ;; Set dired-x global variables here. For example: ;; (setq dired-guess-shell-gnutar "gtar") ;; (setq dired-x-hands-off-my-keys nil) ))(add-hook 'dired-mode-hook (lambda () ;; Set dired-x buffer-local variables here. For example: ;; (setq dired-omit-files-p t) ))@end example@noindentThis will load @file{dired-x.el} when Dired is first invoked (for example,when you first type @kbd{C-x d}).@ifinfo@menu* Optional Installation Dired Jump::* Optional Installation File At Point::@end menu@end ifinfo@node Optional Installation Dired Jump, Optional Installation File At Point, , Installation@comment node-name, next, previous, up@section Optional Installation Dired Jump@cindex Autoloading @code{dired-jump} and @code{dired-jump-other-window}In order to have @code{dired-jump} and @code{dired-jump-other-window}(@pxref{Miscellaneous Commands}) work @emph{before} @code{dired} and@code{dired-x} have been properly loaded the user should set-up an autoloadfor these functions. In your @file{.emacs} file put@example;;; Autoload `dired-jump' and `dired-jump-other-window'.;;; We autoload from FILE dired.el. This will then load dired-x.el ;;; and hence define `dired-jump' and `dired-jump-other-window'.(define-key global-map "\C-x\C-j" 'dired-jump)(define-key global-map "\C-x4\C-j" 'dired-jump-other-window)(autoload (quote dired-jump) "dired" "\Jump to Dired buffer corresponding to current buffer.If in a file, Dired the current directory and move to file's line.If in Dired already, pop up a level and goto old directory's line.In case the proper Dired file line cannot be found, refresh the Diredbuffer and try again." t nil)(autoload (quote dired-jump-other-window) "dired" "\Like \\[dired-jump] (dired-jump) but in other window." t nil)@end exampleNote that in recent releases of GNU Emacs 19 (i.e., 19.25 or later) the file@file{../lisp/loaddefs.el} of the Emacs distribution already contains theproper auto-loading for @code{dired-jump} so you need only put@example(define-key global-map "\C-x\C-j" 'dired-jump)@end example@noindentin your @file{.emacs} file in order to have @kbd{C-x C-j} workbefore @code{dired} is loaded.@node Optional Installation File At Point, , Optional Installation Dired Jump, Installation@comment node-name, next, previous, up@section Optional Installation File At Point@cindex Binding @code{dired-x-find-file}If you choose to have @file{dired-x.el} bind @code{dired-x-find-file} over@code{find-file} (@pxref{Find File At Point}), then you will need to set@code{dired-x-hands-off-my-keys} and make a call to the function@code{dired-x-bind-find-file} in the @code{dired-load-hook}:@example(add-hook 'dired-load-hook (lambda () (load "dired-x") ;; Bind dired-x-find-file. (setq dired-x-hands-off-my-keys nil) ;; Make sure our binding preference is invoked. (dired-x-bind-find-file) ))@end exampleAlternatively, you can set the variable @emph{before} @file{dired-x.el} isloaded@example(add-hook 'dired-load-hook (lambda () ;; Bind dired-x-find-file. (setq dired-x-hands-off-my-keys nil) (load "dired-x") ))@end example@node Omitting Files in Dired, Local Variables, Installation, Top@comment node-name, next, previous, up@chapter Omitting Files in Dired@cindex Omitting Files in Dired@cindex Uninteresting files@dfn{Omitting} a file means removing it from the directory listing. Omittingis useful for keeping Dired buffers free of ``uninteresting'' files (forinstance, auto-save, auxiliary, backup, and revision control files) so thatthe user can concentrate on the interesting files. Like hidden files, omittedfiles are never seen by Dired. Omitting differs from hiding in severalrespects:@itemize @bullet@itemOmitting works on individual files, not on directories; an entire directorycannot be omitted (though each of its files could be).@itemOmitting is wholesale; if omitting is turned on for a Dired buffer, then alluninteresting files listed in that buffer are omitted. The user does not omit(or unomit) files one at a time.@itemOmitting can be automatic; uninteresting file lines in the buffer can beremoved before the user ever sees them.@itemMarked files are never omitted.@end itemize@table @kbd@item M-o@kindex M-o@findex dired-omit-toggle(@code{dired-omit-toggle}) Toggle between displaying and omitting``uninteresting'' files. With a prefix argument, just markthe files, but don't actually omit them.@end table@noindentIn order to make Dired Omit work you first need to load @file{dired-x.el}inside @code{dired-load-hook} (@pxref{Installation}) and then set@code{dired-omit-files-p} in some way (@pxref{Omitting Variables}).@ifinfo@menu* Omitting Variables::* Omitting Examples::* Omitting Technical::@end menu@end ifinfo@node Omitting Variables, Omitting Examples, , Omitting Files in Dired@comment node-name, next, previous, up@section Omitting Variables@cindex Customizing file omittingThe following variables can be used to customize omitting.@table @code@vindex dired-omit-files-p@item dired-omit-files-pDefault: @code{nil}@cindex How to make omitting the default in DiredIf non-@code{nil}, ``uninteresting'' files are not listed.Uninteresting files are those whose files whose names match regexp@code{dired-omit-files}, plus those ending with extensions in@code{dired-omit-extensions}. @kbd{M-o} (@code{dired-omit-toggle})toggles its value, which is buffer-local. Put@example(setq dired-omit-files-p t)@end example@noindentinside your @code{dired-mode-hook} to have omitting initially turned on in@emph{every} Dired buffer (@pxref{Installation}). You can then use @kbd{M-o} tounomit in that buffer.To enable omitting automatically only in certain directories one can use DiredLocal Variables and put@exampleLocal Variables:dired-omit-files-p: tEnd:@end example@noindentinto a file @file{.dired} (the default value of@code{dired-local-variables-file}) in that directory (@pxref{Local Variables}).@table @code@findex dired-omit-here-always@item dired-omit-here-alwaysThis is an interactive function that creates a local variables file exactlylike the example above (if it does not already exist) in the file@code{dired-local-variables-file} in the current directory and then refreshesthe directory listing (@pxref{Local Variables}).@end table@vindex dired-omit-files@item dired-omit-filesDefault: @code{"^#\\|\\.$"}Files whose names match this buffer-local regexp will not be displayed.This only has effect when @code{dired-omit-files-p}'s value is @code{t}.The default value omits the special directories @file{.} and @file{..} andautosave files (plus other files ending in @file{.}) (@pxref{Omitting Examples}).@vindex dired-omit-extensions@item dired-omit-extensionsDefault: The elements of @code{completion-ignored-extensions},@code{dired-latex-unclean-extensions}, @code{dired-bibtex-unclean-extensions}and @code{dired-texinfo-unclean-extensions}.If non-@code{nil}, a list of extensions (strings) to omit from Dired listings.Its format is the same as that of @code{completion-ignored-extensions}.@vindex dired-omit-localp@item dired-omit-localpDefault: @code{no-dir}The @var{localp} argument @code{dired-omit-expunge} passes to@code{dired-get-filename}. If it is @code{no-dir}, omitting is much faster,but you can only match against the non-directory part of the file name. Set itto @code{nil} if you need to match the whole file name or @code{t} to match thefile name relative to the buffer's top-level directory.@item dired-omit-marker-char@vindex dired-omit-marker-char@cindex Omitting additional filesDefault: @kbd{C-o}Temporary marker used by Dired to implement omitting. Should never be usedas marker by the user or other packages. There is one exception to this rule:by adding@example(setq dired-mark-keys "\C-o");; i.e., the value of dired-omit-marker-char;; (which is not defined yet)@end example@noindentto your @file{~/.emacs}, you can bind the @kbd{C-o} key to insert a@kbd{C-o} marker, thus causing these files to be omitted in addition to theusually omitted files. Unfortunately the files you omitted manually this waywill show up again after reverting the buffer, unlike the others.@end table@node Omitting Examples, Omitting Technical, Omitting Variables, Omitting Files in Dired@comment node-name, next, previous, up@section Examples of Omitting Various File Types@itemize @bullet@item@cindex RCS files, how to omit them in Dired@cindex Omitting RCS files in DiredIf you wish to avoid seeing RCS files and the @file{RCS} directory, then put@example(setq dired-omit-files (concat dired-omit-files "\\|^RCS$\\|,v$"))@end example@noindentin the @code{dired-load-hook} (@pxref{Installation}). This assumes@code{dired-omit-localp} has its default value of @code{no-dir} to make the@code{^}-anchored matches work. As a slower alternative, with@code{dired-omit-localp} set to @code{nil}, you can use @code{/} instead of@code{^} in the regexp.@item@cindex Tib files, how to omit them in Dired@cindex Omitting tib files in DiredIf you use @code{tib}, the bibliography program for use with @TeX{} andLa@TeX{}, and youwant to omit the @file{INDEX} and the @file{*-t.tex} files, then put@example(setq dired-omit-files (concat dired-omit-files "\\|^INDEX$\\|-t\\.tex$"))@end example@noindentin the @code{dired-load-hook} (@pxref{Installation}).@item@cindex Dot files, how to omit them in Dired@cindex Omitting dot files in DiredIf you do not wish to see @samp{dot} files (files starting with a @file{.}),then put@example(setq dired-omit-files (concat dired-omit-files "\\|^\\..+$"))@end example@noindentin the @code{dired-load-hook} (@pxref{Installation}).@end itemize@node Omitting Technical, , Omitting Examples, Omitting Files in Dired@comment node-name, next, previous, up@section Some Technical Details of OmittingLoading @file{dired-x.el} will install Dired Omit by putting@code{dired-omit-expunge} on your @code{dired-after-readin-hook}, and willcall @code{dired-extra-startup}, which in turn calls @code{dired-omit-startup}in your @code{dired-mode-hook}.@node Local Variables, Shell Command Guessing, Omitting Files in Dired, Top@comment node-name, next, previous, up@chapter Local Variables for Dired Directories@cindex Local Variables for Dired Directories@vindex dired-local-variables-file@vindex dired-enable-local-variables@noindentWhen Dired visits a directory, it looks for a file whose name is the value ofvariable @code{dired-local-variables-file} (default: @file{.dired}). If sucha file is found, Dired will temporarily insert it into the Dired buffer andrun @code{hack-local-variables}. @noindentFor example, if the user puts@exampleLocal Variables:dired-actual-switches: "-lat"dired-omit-files-p: tEnd:@end example@noindentinto a file called @file{.dired} in a directory then when that directory isviewed it will be@enumerate@itemsorted by date @itemomitted automatically@end enumerate@noindentYou can set @code{dired-local-variables-file} to @code{nil} to suppress this.The value of @code{dired-enable-local-variables} controls if and how theselocal variables are read. This variable exists so that if may override thedefault value of @code{enable-local-variables}. @noindentPlease see the GNU Emacs Manual to learn more about local variables.@xref{File Variables,Local Variables in Files,Local Variables inFiles,emacs,The GNU Emacs Manual}.@noindentThe following variables affect Dired Local Variables@table @code@vindex dired-local-variables-file@item dired-local-variables-fileDefault: @code{".dired"}If non-@code{nil}, file name for local variables for Dired. If Dired finds afile with that name in the current directory, it will temporarily insert itinto the Dired buffer and run @code{hack-local-variables}.@vindex dired-enable-local-variables@item dired-enable-local-variablesDefault: @code{t}Controls the use of local-variables lists in Dired. The value can be @code{t},@code{nil}, or something else. A value of @code{t} means local-variableslists are obeyed in the @code{dired-local-variables-file}; @code{nil} meansthey are ignored; anything else means query. This variable temporarilyoverrides the value of @code{enable-local-variables} when the Dired LocalVariables are hacked.@end table@node Shell Command Guessing, Virtual Dired, Local Variables, Top@comment node-name, next, previous, up@chapter Shell Command Guessing@cindex Guessing shell commands for files.Based upon the name of a file, Dired tries to guess what shellcommand you might want to apply to it. For example, if you have pointon a file named @file{foo.tar} and you press @kbd{!}, Dired will guessyou want to @samp{tar xvf} it and suggest that as the default shellcommand.The default is mentioned in brackets and you can type @kbd{M-p} to getthe default into the minibuffer and then edit it, e.g., to change@samp{tar xvf} to @samp{tar tvf}. If there are several commands for a givenfile, e.g., @samp{xtex} and @samp{dvips} for a @file{.dvi} file, you can type@kbd{M-p} several times to see each of the matching commands.Dired only tries to guess a command for a single file, never for a listof marked files.@table @code@item dired-guess-shell-alist-default@vindex dired-guess-shell-alist-defaultPredefined rules for shell commands. Set this to @code{nil} to turn guessing off.The elements of @code{dired-guess-shell-alist-user} (defined by theuser) will override these rules.@refill@item dired-guess-shell-alist-user@vindex dired-guess-shell-alist-userIf non-@code{nil}, a user-defined alist of file regexps and their suggestedcommands. These rules take precedence over the predefined rules in thevariable @code{dired-guess-shell-alist-default} (to which they are prepended)when @code{dired-do-shell-command} is run).@refillEach element of the alist looks like@example(@var{regexp} @var{command}@dots{})@end example@noindentwhere each @var{command} can either be a string or a lisp expressionthat evaluates to a string. If several commands are given, all ofthem will temporarily be pushed onto the history.You can set this variable in your @file{~/.emacs}. For example,to add rules for @samp{.foo} and @samp{.bar} file extensions, write@example(setq dired-guess-shell-alist-user (list (list "\\.foo$" "@var{foo-command}");; fixed rule ;; possibly more rules... (list "\\.bar$";; rule with condition test '(if @var{condition} "@var{bar-command-1}" "@var{bar-command-2}"))))@end example@noindentThis will override any predefined rules for the same extensions.@item dired-guess-shell-gnutar@vindex dired-guess-shell-gnutar@cindex Passing GNU Tar its @samp{z} switch.Default: @code{nil}If non-@code{nil}, this is the name of the GNU Tar executable (e.g.,@samp{tar} or @samp{gnutar}). GNU Tar's @samp{z} switch is used forcompressed tar files.If you don't have GNU tar, set this to @code{nil}: a pipe using @samp{zcat} isthen used.@item dired-guess-shell-gzip-quiet@vindex dired-guess-shell-gzip-quiet@cindex @code{gzip}Default: @code{t}A non-@code{nil} value means that @samp{-q} is passed to @code{gzip}overriding a verbose option in the @env{GZIP} environment variable.@item dired-guess-shell-znew-switches nil@vindex dired-guess-shell-znew-switches nil@cindex @code{znew}Default: @code{nil}A string of switches passed to @code{znew}. An example is@samp{-K} which will make @code{znew} keep a @file{.Z} file when it issmaller than the @file{.gz} file.@item dired-shell-command-history nil@vindex dired-shell-command-history nilHistory list for commands that read dired-shell commands.@end table@node Virtual Dired, Advanced Mark Commands, Shell Command Guessing, Top@comment node-name, next, previous, up@chapter Virtual Dired@cindex Virtual Dired@cindex Perusing @code{ls} listings@cindex @code{ls} listings, how to peruse them in DiredUsing @dfn{Virtual Dired} means putting a buffer with Dired-likecontents in Dired mode. The files described by the buffer contents neednot actually exist. This is useful if you want to peruse an @samp{ls -lR}output file, for example one you got from an FTP server. You can useall motion commands usually available in Dired. You can also useit to save a Dired buffer in a file and resume it in a later session.@findex dired-virtual@kindex g@findex dired-virtual-revertType @kbd{M-x dired-virtual} to put the current buffer into virtualDired mode. You will be prompted for the top level directory of thisbuffer, with a default value guessed from the buffer contents. Toconvert the virtual to a real Dired buffer again, type @kbd{g} (whichcalls @code{dired-virtual-revert}) in the virtual Dired buffer andanswer @samp{y}. You don't have to do this, though: you can relistsingle subdirectories using @kbd{l} (@code{dired-do-redisplay}) on the subdirectoryheaderline, leaving the buffer in virtual Dired mode all the time.@findex dired-virtual-mode@vindex auto-mode-alistThe function @samp{dired-virtual-mode} is specially designed to turn onvirtual Dired mode from the @code{auto-mode-alist}. To edit all@file{*.dired} files automatically in virtual Dired mode, put this into your@file{~/.emacs}:@example(setq auto-mode-alist (cons '("[^/]\\.dired$" . dired-virtual-mode) auto-mode-alist))@end example@noindentThe regexp is a bit more complicated than usual to exclude @file{.dired}local-variable files.@node Advanced Mark Commands, Multiple Dired Directories, Virtual Dired, Top@comment node-name, next, previous, up@chapter Advanced Mark Commands@table @kbd@item F@kindex F@cindex Visiting several files at once@cindex Simultaneous visiting of several files@findex dired-do-find-marked-files(@code{dired-do-find-marked-files}) Find all marked files at once displayingthem simultaneously. If optional @var{noselect} is non-@code{nil} then justfind thefiles but do not select. If you want to keep the Dired buffer displayed, type@kbd{C-x 2} first. If you want just the marked files displayed and nothingelse, type @kbd{C-x 1} first.The current window is split across all files marked, as evenly as possible.Remaining lines go to the bottom-most window. The number of files that can bedisplayed this way is restricted by the height of the current window and thevariable @code{window-min-height}.@end table@table @code@item dired-mark-extension@findex dired-mark-extensionMark all files with a certain extension for use in later commands. A @samp{.}is not automatically prepended to the string entered, you must type itexplicitly.When called from Lisp, @var{extension} may also be a list of extensionsand an optional argument @var{marker-char} specifies the marker used.@item dired-flag-extension@findex dired-flag-extensionFlag all files with a certain extension for deletion. A @samp{.} is@emph{not} automatically prepended to the string entered.@end table@ifinfo@menu* Advanced Cleaning Functions::* Advanced Cleaning Variables::* Special Marking Function::@end menu@end ifinfo@node Advanced Cleaning Functions, Advanced Cleaning Variables, , Advanced Mark Commands@comment node-name, next, previous, up@section Advanced Cleaning Functions@table @code@item dired-clean-patch@findex dired-clean-patchFlag dispensable files created by the @samp{patch} program for deletion. Seevariable @code{dired-patch-unclean-extensions}.@item dired-clean-tex@findex dired-clean-texFlag dispensable files created by @TeX{}, La@TeX{}, and @samp{texinfo} fordeletion. See the following variables (@pxref{Advanced Cleaning Variables}):@itemize @bullet@item@code{dired-tex-unclean-extensions}@item@code{dired-texinfo-unclean-extensions}@item@code{dired-latex-unclean-extensions}@item@code{dired-bibtex-unclean-extensions}@end itemize@item dired-very-clean-tex@findex dired-very-clean-texFlag dispensable files created by @TeX{}, La@TeX{}, @samp{texinfo},and @file{*.dvi} files for deletion.@end table@node Advanced Cleaning Variables, Special Marking Function, Advanced Cleaning Functions, Advanced Mark Commands@comment node-name, next, previous, up@section Advanced Cleaning Variables@noindent Variables used by the above cleaning commands (and in the default value forvariable @code{dired-omit-extensions}, @pxref{Omitting Variables})@table @code@item dired-patch-unclean-extensions@vindex dired-patch-unclean-extensionsDefault: @code{(".rej" ".orig")}List of extensions of dispensable files created by the @samp{patch} program.@item dired-tex-unclean-extensions@vindex dired-tex-unclean-extensionsDefault: @code{(".toc" ".log" ".aux")}List of extensions of dispensable files created by @TeX{}.@item dired-texinfo-unclean-extensions@vindex dired-texinfo-unclean-extensionsDefault: @code{(".cp" ".cps" ".fn" ".fns" ".ky" ".kys"}@code{".pg" ".pgs" ".tp" ".tps" ".vr" ".vrs")}List of extensions of dispensable files created by @samp{texinfo}.@item dired-latex-unclean-extensions@vindex dired-latex-unclean-extensionsDefault: @code{(".idx" ".lof" ".lot" ".glo")}List of extensions of dispensable files created by La@TeX{}.@item dired-bibtex-unclean-extensions@vindex dired-bibtex-unclean-extensionsDefault: @code{(".blg" ".bbl")}List of extensions of dispensable files created by Bib@TeX{}.@end table@node Special Marking Function, , Advanced Cleaning Variables, Advanced Mark Commands@comment node-name, next, previous, up@section Special Marking Function@table @kbd@item M-(@kindex M-(@findex dired-mark-sexp@cindex Lisp expression, marking files with in Dired@cindex Mark file by lisp expression(@code{dired-mark-sexp}) Mark files for which @var{predicate} returnsnon-@code{nil}. With a prefix argument, unflag those files instead.The @var{predicate} is a lisp expression that can refer to the followingsymbols:@table @code@item inode[@i{integer}] the inode of the file (only for @samp{ls -i} output)@item s[@i{integer}] the size of the file for @samp{ls -s} output (usually in blocks or,with @samp{-k}, in KBytes)@item mode[@i{string}] file permission bits, e.g., @samp{-rw-r--r--}@item nlink[@i{integer}] number of links to file@item uid[@i{string}] owner@item gid[@i{string}] group (If the gid is not displayed by @samp{ls}, thiswill still be set (to the same as uid))@item size[@i{integer}] file size in bytes@item time[@i{string}] the time that @samp{ls} displays, e.g., @samp{Feb 12 14:17}@item name[@i{string}] the name of the file@item sym[@i{string}] if file is a symbolic link, the linked-to name, else @code{""}@end table@noindentFor example, use@example(equal 0 size)@end exampleto mark all zero length files.To find out all not yet compiled Emacs lisp files in a directory, Diredall @file{.el} files in the lisp directory using the wildcard@samp{*.el}. Then use @kbd{M-(} with@example(not (file-exists-p (concat name "c")))@end exampleto mark all @file{.el} files without a corresponding @file{.elc} file.@end table@node Multiple Dired Directories, Find File At Point, Advanced Mark Commands, Top@comment node-name, next, previous, up@chapter Multiple Dired Directories and Non-Dired Commands@cindex Multiple Dired directories@cindex Working directoryAn Emacs buffer can have but one working directory, stored in thebuffer-local variable @code{default-directory}. A Dired buffer may haveseveral subdirectories inserted, but it still has only one workingdirectory: that of the top-level Dired directory in that buffer. Forsome commands it is appropriate that they use the current Direddirectory instead of @code{default-directory}, e.g., @code{find-file} and@code{compile}.A general mechanism is provided for special handling of the workingdirectory in special major modes:@table @code@item default-directory-alist@vindex default-directory-alistDefault: @code{((dired-mode . (dired-current-directory)))}Alist of major modes and their notion of @code{default-directory}, as alisp expression to evaluate. A resulting value of @code{nil} is ignoredin favor of @code{default-directory}.@item default-directory@findex default-directoryFunction with usage like variable @code{default-directory}, but knows about thespecial cases in variable @code{default-directory-alist}.@end table@node Find File At Point, Miscellaneous Commands, Multiple Dired Directories, Top@comment node-name, next, previous, up@section Find File At Point@cindex Visiting a file mentioned in a buffer@cindex Finding a file at point@file{dired-x} provides a method of visiting or editing a file mentioned inthe buffer you are viewing (e.g., a mail buffer, a news article, a@file{README} file, etc.) or to test if that file exists. You can then modifythis in the minibuffer after snatching the file name.When installed @file{dired-x} will substitute @code{dired-x-find-file} for@code{find-file} (normally bound to @kbd{C-x C-f}) and@code{dired-x-find-file-other-window} for @code{find-file-other-window}(normally bound to @kbd{C-x 4 C-f}).In order to use this feature, you will need to set@code{dired-x-hands-off-my-keys} to @code{nil} inside @code{dired-load-hook}(@pxref{Optional Installation File At Point}).@table @code@item dired-x-find-file@findex dired-x-find-file@kindex C-x C-f@code{dired-x-find-file} behaves exactly like @code{find-file} (normally boundto @kbd{C-x C-f}) unless a prefix argument is passed to the function in whichcase it will use the file name at point as a guess for the file to visit.For example, if the buffer you were reading contained the words@exampleAvailable via anonymous ftp in /roebling.poly.edu:/pub/lisp/crypt++.el.gz@end example@noindentthen you could move your cursor to the line containing the ftp address andtype @kbd{C-u C-x C-f} (the @kbd{C-u} is a universal argument). Theminibuffer would read@exampleFind file: /roebling.poly.edu:/pub/lisp/crypt++.el.gz@end example@noindentwith the point after the last @code{/}. If you hit @key{RET}, emacs will visitthe file at that address. This also works with files on your own computer.@item dired-x-find-file-other-window@findex dired-x-find-file-other-window@kindex C-x 4 C-f@code{dired-x-find-file-other-window} behaves exactly like@code{find-file-other-window} (normally bound to @kbd{C-x 4 C-f}) unless aprefix argument is used. See @code{dired-x-find-file} for more information.@item dired-x-hands-off-my-keys@vindex dired-x-hands-off-my-keysIf set to @code{t}, then it means that @file{dired-x} should @emph{not} bind@code{dired-x-find-file} over @code{find-file} on keyboard. Similarly, itshould not bind @code{dired-x-find-file-other-window} over@code{find-file-other-window}. If you change this variable after@file{dired-x.el} is loaded then do @kbd{M-x dired-x-bind-find-file}. Thedefault value of this variable is @code{t}; by default, the binding is notdone. See @xref{Optional Installation File At Point}.@item dired-x-bind-find-file@findex dired-x-bind-find-fileA function, which can be called interactively or in your @file{~/.emacs} file,that uses the value of @code{dired-x-hands-off-my-keys} to determine if@code{dired-x-find-file} should be bound over @code{find-file} and@code{dired-x-find-file-other-window} bound over@code{find-file-other-window}. See @xref{Optional Installation File At Point}.@end table@node Miscellaneous Commands, Bugs, Find File At Point, Top@comment node-name, next, previous, up@chapter Miscellaneous CommandsMiscellaneous features not fitting anywhere else:@table @code@item dired-find-subdir@vindex dired-find-subdirDefault: @code{nil}If non-@code{nil}, Dired does not make a new buffer for a directory if it canbe found (perhaps as subdirectory) in some existing Dired buffer.If there are several Dired buffers for a directory, the most recentlyused is chosen.Dired avoids switching to the current buffer, so that if you have anormal and a wildcard buffer for the same directory, @kbd{C-x d RET}will toggle between those two.@end table@table @kbd@findex dired-goto-file@kindex M-g@item M-g(@code{dired-goto-file}) Go to the line of a file (or directory).@findex dired-goto-subdir@kindex M-G@item M-G(@code{dired-goto-subdir}) Go to the header line of an inserted directory.This command reads its argument, with completion derived from the names of theinserted subdirectories.@end table@table @kbd@item w@cindex Adding to the kill ring in Dired.@kindex w@findex dired-copy-filename-as-kill(@code{dired-copy-filename-as-kill}) The @kbd{w} command puts the namesof the marked (or next @var{N}) files into the kill ring, as if you hadkilled them with @kbd{C-w}. With a zero prefix argument @var{N}=0, use thecomplete pathname of each file. With a raw (just @kbd{C-u}) prefix argument,use the relative pathname of each marked file. As a special case, if noprefix argument is given and point is on a directory headerline, itgives you the name of that directory, without looking for marked files.@vindex dired-marked-filesThe list of names is also stored onto the variable @code{dired-marked-files}for use, e.g., in the @kbd{M-:} (@code{eval-expression}) command.As this command also displays what was pushed onto the kill ring, you canuse it to display the list of currently marked files in theecho area (unless you happen to be on a subdirectory headerline).You can then feed the file name to other Emacs commands with @kbd{C-y}.For example, say you want to rename a file with a long name to a slightlydifferent name. First type @kbd{w} to push the old name onto the killring. Then type @kbd{R} to rename it and use @kbd{C-y} inside @kbd{R}'sminibuffer prompt to insert the old name at a convenient place.@item T@kindex T@cindex Toggling marks.@findex dired-do-toggle(@code{dired-do-toggle}) Toggle marks. That is, currently markedfiles become unmarked and vice versa. Files marked with other flags(such as @samp{D}) are not affected. The special directories @file{.}and @file{..} are never toggled.@end table@table @code@item dired-smart-shell-command@findex dired-smart-shell-command@findex shell-command@kindex M-!Like function @code{shell-command}, but in the current Dired directory.Bound to @kbd{M-!} in Dired buffers.@item dired-jump@findex dired-jump@kindex C-x C-j@cindex Jumping to Dired listing containing file.Bound to @kbd{C-x C-j}. Jump back to Dired: If in a file, edit the currentdirectory and move to file's line. If in Dired already, pop up a level andgo to old directory's line. In case the proper Dired file line cannot befound, refresh the Dired buffer and try again.@item dired-jump-other-window@findex dired-jump-other-window@kindex C-x 4 C-jBound to @kbd{C-x 4 C-j}. Like @code{dired-jump}, but to other window.These functions can be autoloaded so they work even though @file{dired-x.el}has not been loaded yet (@pxref{Optional Installation Dired Jump}).@vindex dired-bind-jumpIf the variable @code{dired-bind-jump} is @code{nil}, @code{dired-jump} will not bebound to @kbd{C-x C-j} and @code{dired-jump-other-window} will not be bound to@kbd{C-x 4 C-j}.@item dired-vm@cindex Reading mail.@kindex V@findex dired-vmBound to @kbd{V} if @code{dired-bind-vm} is t. Run VM on this file (assumedto be a UNIX mail folder).@vindex dired-vm-read-only-foldersIf you give this command a prefix argument, it will visit the folderread-only. This only works in VM 5, not VM 4.If the variable @code{dired-vm-read-only-folders} is @code{t},@code{dired-vm} willvisit all folders read-only. If it is neither @code{nil} nor @code{t}, e.g.,the symbol @code{if-file-read-only}, only files not writable by you arevisited read-only. This is the recommended value if you run VM 5.@vindex dired-bind-vmIf the variable @code{dired-bind-vm} is t, @code{dired-vm} will be bound to@kbd{V}. Otherwise, @code{dired-bind-rmail} will be bound.@item dired-rmail@cindex Reading mail.@findex dired-rmailBound to @kbd{V} if @code{dired-bind-vm} is @code{nil}. Run Rmail on thisfile (assumed to be mail folder in Rmail/BABYL format).@item dired-info@kindex I@cindex Running info.@findex dired-infoBound to @kbd{I}. Run Info on this file (assumed to be a file in Infoformat).@vindex dired-bind-infoIf the variable @code{dired-bind-info} is @code{nil}, @code{dired-info} willnot be bound to @kbd{I}.@item dired-man@cindex Running man.@kindex N@findex dired-manBound to @kbd{N}. Run man on this file (assumed to be a file in @code{nroff}format).@vindex dired-bind-manIf the variable @code{dired-bind-man} is @code{nil}, @code{dired-man} will notbe bound to @kbd{N}.@item dired-do-relative-symlink@cindex Relative symbolic links.@kindex Y@findex dired-do-relative-symlinkBound to @kbd{Y}. Relative symlink all marked (or next ARG) files into adirectory, or make a relative symbolic link to the current file. This createsrelative symbolic links like@example foo -> ../bar/foo@end example@noindentnot absolute ones like@example foo -> /ugly/path/that/may/change/any/day/bar/foo@end example@item dired-do-relative-symlink-regexp@kindex %Y@findex dired-do-relative-symlink-regexpBound to @kbd{%Y}. Relative symlink all marked files containing@var{regexp} to @var{newname}. See functions@code{dired-do-rename-regexp} and @code{dired-do-relsymlink} for moreinfo.@end table@node Bugs, Concept Index, Miscellaneous Commands, Top@comment node-name, next, previous, up@chapter Bugs@cindex Bugs@findex dired-x-submit-report@noindentIf you encounter a bug in this package, wish to suggest anenhancement, or want to make a smart remark, then type@example@kbd{M-x dired-x-submit-report} @end example@noindentto set up an outgoing mail buffer, with the proper address to the@file{dired-x.el} maintainer automatically inserted in the @samp{To:@:} field.This command also inserts information that the Dired X maintainer can use torecreate your exact setup, making it easier to verify your bug or socialmaladjustment.Lawrence R. Dodd @c <dodd@@roebling.poly.edu>@node Concept Index, Command Index, Bugs, Top@comment node-name, next, previous, up@unnumbered Concept Index@printindex cp@node Command Index, Key Index, Concept Index, Top@comment node-name, next, previous, up@unnumbered Function Index@printindex fn@node Key Index, Variable Index, Command Index, Top@comment node-name, next, previous, up@unnumbered Key Index@printindex ky@node Variable Index, , Key Index, Top@comment node-name, next, previous, up@unnumbered Variable Index@printindex vr@setchapternewpage odd@c @summarycontents@contents@bye@c dired-x.texi ends here.