comparison lisp/dired.el @ 40950:4bc87462585c

Many trivial doc fixes. (dired-get-file-for-visit): New function. (dired-find-alternate-file, dired-mouse-find-file-other-window): (dired-view-file, dired-find-file-other-window, dired-display-file): (dired-find-file): Use dired-get-file-for-visit.
author Richard M. Stallman <rms@gnu.org>
date Mon, 12 Nov 2001 17:04:33 +0000
parents 1f2eaa535150
children 078a3f1b537a
comparison
equal deleted inserted replaced
40949:c053a630489a 40950:4bc87462585c
40 (defgroup dired nil 40 (defgroup dired nil
41 "Directory editing." 41 "Directory editing."
42 :group 'environment) 42 :group 'environment)
43 43
44 (defgroup dired-mark nil 44 (defgroup dired-mark nil
45 "Handling marks in dired." 45 "Handling marks in Dired."
46 :prefix "dired-" 46 :prefix "dired-"
47 :group 'dired) 47 :group 'dired)
48 48
49 49
50 ;;;###autoload 50 ;;;###autoload
1197 (put 'dired-mode 'mode-class 'special) 1197 (put 'dired-mode 'mode-class 'special)
1198 1198
1199 (defun dired-mode (&optional dirname switches) 1199 (defun dired-mode (&optional dirname switches)
1200 "\ 1200 "\
1201 Mode for \"editing\" directory listings. 1201 Mode for \"editing\" directory listings.
1202 In dired, you are \"editing\" a list of the files in a directory and 1202 In Dired, you are \"editing\" a list of the files in a directory and
1203 \(optionally) its subdirectories, in the format of `ls -lR'. 1203 \(optionally) its subdirectories, in the format of `ls -lR'.
1204 Each directory is a page: use \\[backward-page] and \\[forward-page] to move pagewise. 1204 Each directory is a page: use \\[backward-page] and \\[forward-page] to move pagewise.
1205 \"Editing\" means that you can run shell commands on files, visit, 1205 \"Editing\" means that you can run shell commands on files, visit,
1206 compress, load or byte-compile them, change their file attributes 1206 compress, load or byte-compile them, change their file attributes
1207 and insert subdirectories into the same buffer. You can \"mark\" 1207 and insert subdirectories into the same buffer. You can \"mark\"
1337 "Goto ARG'th previous directory file line." 1337 "Goto ARG'th previous directory file line."
1338 (interactive "p") 1338 (interactive "p")
1339 (dired-next-dirline (- arg))) 1339 (dired-next-dirline (- arg)))
1340 1340
1341 (defun dired-up-directory (&optional other-window) 1341 (defun dired-up-directory (&optional other-window)
1342 "Run dired on parent directory of current directory. 1342 "Run Dired on parent directory of current directory.
1343 Find the parent directory either in this buffer or another buffer. 1343 Find the parent directory either in this buffer or another buffer.
1344 Creates a buffer if necessary." 1344 Creates a buffer if necessary."
1345 (interactive "P") 1345 (interactive "P")
1346 (let* ((dir (dired-current-directory)) 1346 (let* ((dir (dired-current-directory))
1347 (up (file-name-directory (directory-file-name dir)))) 1347 (up (file-name-directory (directory-file-name dir))))
1353 (if other-window 1353 (if other-window
1354 (dired-other-window up) 1354 (dired-other-window up)
1355 (dired up)) 1355 (dired up))
1356 (dired-goto-file dir))))) 1356 (dired-goto-file dir)))))
1357 1357
1358 (defun dired-get-file-for-visit ()
1359 "Get the current line's file name, with an error if file does not exist."
1360 (interactive)
1361 (let ((file-name (file-name-sans-versions (dired-get-filename) t)))
1362 (if (file-exists-p file-name)
1363 file-name
1364 (if (file-symlink-p file-name)
1365 (error "File is a symlink to a nonexistent target")
1366 (error "File no longer exists; type `g' to update Dired buffer")))))
1367
1358 ;; Force `f' rather than `e' in the mode doc: 1368 ;; Force `f' rather than `e' in the mode doc:
1359 (defalias 'dired-advertised-find-file 'dired-find-file) 1369 (defalias 'dired-advertised-find-file 'dired-find-file)
1360 (defun dired-find-file () 1370 (defun dired-find-file ()
1361 "In dired, visit the file or directory named on this line." 1371 "In Dired, visit the file or directory named on this line."
1362 (interactive) 1372 (interactive)
1363 (let ((file-name (file-name-sans-versions (dired-get-filename) t))) 1373 (find-file (dired-get-file-for-visit)))
1364 (if (file-exists-p file-name)
1365 (find-file file-name)
1366 (if (file-symlink-p file-name)
1367 (error "File is a symlink to a nonexistent target")
1368 (error "File no longer exists; type `g' to update Dired buffer")))))
1369 1374
1370 (defun dired-find-alternate-file () 1375 (defun dired-find-alternate-file ()
1371 "In dired, visit this file or directory instead of the dired buffer." 1376 "In Dired, visit this file or directory instead of the dired buffer."
1372 (interactive) 1377 (interactive)
1373 (set-buffer-modified-p nil) 1378 (set-buffer-modified-p nil)
1374 (find-alternate-file (dired-get-filename))) 1379 (find-alternate-file (dired-get-file-for-visit)))
1375 1380
1376 (defun dired-mouse-find-file-other-window (event) 1381 (defun dired-mouse-find-file-other-window (event)
1377 "In dired, visit the file or directory name you click on." 1382 "In Dired, visit the file or directory name you click on."
1378 (interactive "e") 1383 (interactive "e")
1379 (let (file) 1384 (let (file)
1380 (save-excursion 1385 (save-excursion
1381 (set-buffer (window-buffer (posn-window (event-end event)))) 1386 (set-buffer (window-buffer (posn-window (event-end event))))
1382 (save-excursion 1387 (save-excursion
1383 (goto-char (posn-point (event-end event))) 1388 (goto-char (posn-point (event-end event)))
1384 (setq file (dired-get-filename)))) 1389 (setq file (dired-get-file-for-visit))))
1385 (select-window (posn-window (event-end event))) 1390 (select-window (posn-window (event-end event)))
1386 (find-file-other-window (file-name-sans-versions file t)))) 1391 (find-file-other-window (file-name-sans-versions file t))))
1387 1392
1388 (defun dired-view-file () 1393 (defun dired-view-file ()
1389 "In dired, examine a file in view mode, returning to dired when done. 1394 "In Dired, examine a file in view mode, returning to dired when done.
1390 When file is a directory, show it in this buffer if it is inserted; 1395 When file is a directory, show it in this buffer if it is inserted;
1391 otherwise, display it in another buffer." 1396 otherwise, display it in another buffer."
1392 (interactive) 1397 (interactive)
1393 (if (file-directory-p (dired-get-filename)) 1398 (let ((file (dired-get-file-for-visit)))
1394 (or (and (cdr dired-subdir-alist) 1399 (if (file-directory-p file)
1395 (dired-goto-subdir (dired-get-filename))) 1400 (or (and (cdr dired-subdir-alist)
1396 (dired (dired-get-filename))) 1401 (dired-goto-subdir file))
1397 (view-file (dired-get-filename)))) 1402 (dired file))
1403 (view-file file))))
1398 1404
1399 (defun dired-find-file-other-window () 1405 (defun dired-find-file-other-window ()
1400 "In dired, visit this file or directory in another window." 1406 "In Dired, visit this file or directory in another window."
1401 (interactive) 1407 (interactive)
1402 (find-file-other-window (file-name-sans-versions (dired-get-filename) t))) 1408 (find-file-other-window (dired-get-file-for-visit)))
1403 1409
1404 (defun dired-display-file () 1410 (defun dired-display-file ()
1405 "In dired, display this file or directory in another window." 1411 "In Dired, display this file or directory in another window."
1406 (interactive) 1412 (interactive)
1407 (let ((file (file-name-sans-versions (dired-get-filename) t))) 1413 (display-buffer (find-file-noselect (dired-get-file-for-visit))))
1408 (display-buffer (find-file-noselect file))))
1409 1414
1410 ;;; Functions for extracting and manipulating file names in dired buffers. 1415 ;;; Functions for extracting and manipulating file names in Dired buffers.
1411 1416
1412 (defun dired-get-filename (&optional localp no-error-if-not-filep) 1417 (defun dired-get-filename (&optional localp no-error-if-not-filep)
1413 "In dired, return name of file mentioned on this line. 1418 "In Dired, return name of file mentioned on this line.
1414 Value returned normally includes the directory name. 1419 Value returned normally includes the directory name.
1415 Optional arg LOCALP with value `no-dir' means don't include directory 1420 Optional arg LOCALP with value `no-dir' means don't include directory
1416 name in result. A value of `verbatim' means to return the name exactly as 1421 name in result. A value of `verbatim' means to return the name exactly as
1417 it occurs in the buffer, and a value of t means construct name relative to 1422 it occurs in the buffer, and a value of t means construct name relative to
1418 `default-directory', which still may contain slashes if in a subdirectory. 1423 `default-directory', which still may contain slashes if in a subdirectory.
1993 (dired-delete-file (car files) recursive) 1998 (dired-delete-file (car files) recursive)
1994 (setq files (cdr files)))) 1999 (setq files (cdr files))))
1995 (delete-directory file)))) 2000 (delete-directory file))))
1996 2001
1997 (defun dired-do-flagged-delete (&optional nomessage) 2002 (defun dired-do-flagged-delete (&optional nomessage)
1998 "In dired, delete the files flagged for deletion. 2003 "In Dired, delete the files flagged for deletion.
1999 If NOMESSAGE is non-nil, we don't display any message 2004 If NOMESSAGE is non-nil, we don't display any message
2000 if there are no flagged files." 2005 if there are no flagged files."
2001 (interactive) 2006 (interactive)
2002 (let* ((dired-marker-char dired-del-marker) 2007 (let* ((dired-marker-char dired-del-marker)
2003 (regexp (dired-marker-regexp)) 2008 (regexp (dired-marker-regexp))
2300 (interactive "P") 2305 (interactive "P")
2301 (let ((dired-marker-char ?\040)) 2306 (let ((dired-marker-char ?\040))
2302 (dired-mark arg))) 2307 (dired-mark arg)))
2303 2308
2304 (defun dired-flag-file-deletion (arg) 2309 (defun dired-flag-file-deletion (arg)
2305 "In dired, flag the current line's file for deletion. 2310 "In Dired, flag the current line's file for deletion.
2306 With prefix arg, repeat over several lines. 2311 With prefix arg, repeat over several lines.
2307 2312
2308 If on a subdir headerline, mark all its files except `.' and `..'." 2313 If on a subdir headerline, mark all its files except `.' and `..'."
2309 (interactive "P") 2314 (interactive "P")
2310 (let ((dired-marker-char dired-del-marker)) 2315 (let ((dired-marker-char dired-del-marker))
2311 (dired-mark arg))) 2316 (dired-mark arg)))
2312 2317
2313 (defun dired-unmark-backward (arg) 2318 (defun dired-unmark-backward (arg)
2314 "In dired, move up lines and remove deletion flag there. 2319 "In Dired, move up lines and remove deletion flag there.
2315 Optional prefix ARG says how many lines to unflag; default is one line." 2320 Optional prefix ARG says how many lines to unflag; default is one line."
2316 (interactive "p") 2321 (interactive "p")
2317 (dired-unmark (- arg))) 2322 (dired-unmark (- arg)))
2318 2323
2319 (defun dired-do-toggle () 2324 (defun dired-do-toggle ()
2396 (re-search-forward regexp nil t)))) 2401 (re-search-forward regexp nil t))))
2397 ))) 2402 )))
2398 "matching file"))) 2403 "matching file")))
2399 2404
2400 (defun dired-flag-files-regexp (regexp) 2405 (defun dired-flag-files-regexp (regexp)
2401 "In dired, flag all files containing the specified REGEXP for deletion. 2406 "In Dired, flag all files containing the specified REGEXP for deletion.
2402 The match is against the non-directory part of the filename. Use `^' 2407 The match is against the non-directory part of the filename. Use `^'
2403 and `$' to anchor matches. Exclude subdirs by hiding them. 2408 and `$' to anchor matches. Exclude subdirs by hiding them.
2404 `.' and `..' are never flagged." 2409 `.' and `..' are never flagged."
2405 (interactive (list (dired-read-regexp "Flag for deletion (regexp): "))) 2410 (interactive (list (dired-read-regexp "Flag for deletion (regexp): ")))
2406 (dired-mark-files-regexp regexp dired-del-marker)) 2411 (dired-mark-files-regexp regexp dired-del-marker))