72 |
"/etc/chown")) |
"/etc/chown")) |
73 |
"Name of chown command (usually `chown' or `/etc/chown').") |
"Name of chown command (usually `chown' or `/etc/chown').") |
74 |
|
|
|
(defvar dired-use-ls-dired (not (not (string-match "gnu" system-configuration))) |
|
|
"Non-nil means Dired should use `ls --dired'.") |
|
|
|
|
75 |
(defvar dired-chmod-program "chmod" |
(defvar dired-chmod-program "chmod" |
76 |
"Name of chmod command (usually `chmod').") |
"Name of chmod command (usually `chmod').") |
77 |
|
|
217 |
(defvar dired-file-version-alist) |
(defvar dired-file-version-alist) |
218 |
|
|
219 |
(defvar dired-directory nil |
(defvar dired-directory nil |
220 |
"The directory name or wildcard spec that this Dired directory lists. |
"The directory name or shell wildcard that was used as argument to `ls'. |
221 |
Local to each dired buffer. May be a list, in which case the car is the |
Local to each dired buffer. May be a list, in which case the car is the |
222 |
directory name and the cdr is the list of files to include. |
directory name and the cdr is the actual files to list.") |
|
The directory name must be absolute, but need not be fully expanded.") |
|
223 |
|
|
224 |
(defvar dired-actual-switches nil |
(defvar dired-actual-switches nil |
225 |
"The value of `dired-listing-switches' used to make this buffer's text.") |
"The value of `dired-listing-switches' used to make this buffer's text.") |
420 |
(push file result))) |
(push file result))) |
421 |
result))) |
result))) |
422 |
|
|
423 |
|
;; Function dired-ls is redefinable for VMS, ange-ftp, Prospero or |
424 |
|
;; other special applications. |
425 |
|
|
426 |
;; The dired command |
;; The dired command |
427 |
|
|
428 |
(defun dired-read-dir-and-switches (str) |
(defun dired-read-dir-and-switches (str) |
511 |
;; like find-file does. |
;; like find-file does. |
512 |
;; Optional argument MODE is passed to dired-find-buffer-nocreate, |
;; Optional argument MODE is passed to dired-find-buffer-nocreate, |
513 |
;; see there. |
;; see there. |
514 |
(let* (dirname |
(let* ((dirname (if (consp dir-or-list) (car dir-or-list) dir-or-list)) |
515 |
buffer |
;; The following line used to use dir-or-list. |
516 |
|
;; That never found an existing buffer, in the case |
517 |
|
;; where it is a list. |
518 |
|
(buffer (dired-find-buffer-nocreate dirname mode)) |
519 |
;; note that buffer already is in dired-mode, if found |
;; note that buffer already is in dired-mode, if found |
520 |
new-buffer-p |
(new-buffer-p (not buffer)) |
521 |
(old-buf (current-buffer))) |
(old-buf (current-buffer))) |
|
(if (consp dir-or-list) |
|
|
(setq dirname (car dir-or-list)) |
|
|
(setq dirname dir-or-list)) |
|
|
;; Look for an existing buffer. |
|
|
(setq buffer (dired-find-buffer-nocreate dirname mode) |
|
|
new-buffer-p (null buffer)) |
|
522 |
(or buffer |
(or buffer |
523 |
(let ((default-major-mode 'fundamental-mode)) |
(let ((default-major-mode 'fundamental-mode)) |
524 |
;; We don't want default-major-mode to run hooks and set auto-fill |
;; We don't want default-major-mode to run hooks and set auto-fill |
529 |
(if (not new-buffer-p) ; existing buffer ... |
(if (not new-buffer-p) ; existing buffer ... |
530 |
(cond (switches ; ... but new switches |
(cond (switches ; ... but new switches |
531 |
;; file list may have changed |
;; file list may have changed |
532 |
(setq dired-directory dir-or-list) |
(if (consp dir-or-list) |
533 |
|
(setq dired-directory dir-or-list)) |
534 |
;; this calls dired-revert |
;; this calls dired-revert |
535 |
(dired-sort-other switches)) |
(dired-sort-other switches)) |
536 |
;; If directory has changed on disk, offer to revert. |
;; If directory has changed on disk, offer to revert. |
553 |
(file-name-directory dirname)) |
(file-name-directory dirname)) |
554 |
(or switches (setq switches dired-listing-switches)) |
(or switches (setq switches dired-listing-switches)) |
555 |
(if mode (funcall mode) |
(if mode (funcall mode) |
556 |
(dired-mode dir-or-list switches)) |
(dired-mode dirname switches)) |
557 |
;; default-directory and dired-actual-switches are set now |
;; default-directory and dired-actual-switches are set now |
558 |
;; (buffer-local), so we can call dired-readin: |
;; (buffer-local), so we can call dired-readin: |
559 |
(let ((failed t)) |
(let ((failed t)) |
560 |
(unwind-protect |
(unwind-protect |
561 |
(progn (dired-readin) |
(progn (dired-readin dir-or-list buffer) |
562 |
(setq failed nil)) |
(setq failed nil)) |
563 |
;; dired-readin can fail if parent directories are inaccessible. |
;; dired-readin can fail if parent directories are inaccessible. |
564 |
;; Don't leave an empty buffer around in that case. |
;; Don't leave an empty buffer around in that case. |
565 |
(if failed (kill-buffer buffer)))) |
(if failed (kill-buffer buffer)))) |
566 |
|
;; No need to narrow since the whole buffer contains just |
567 |
|
;; dired-readin's output, nothing else. The hook can |
568 |
|
;; successfully use dired functions (e.g. dired-get-filename) |
569 |
|
;; as the subdir-alist has been built in dired-readin. |
570 |
|
(run-hooks 'dired-after-readin-hook) |
571 |
(goto-char (point-min)) |
(goto-char (point-min)) |
572 |
(dired-initial-position dirname)) |
(dired-initial-position dirname)) |
573 |
(set-buffer old-buf) |
(set-buffer old-buf) |
583 |
;; This differs from dired-buffers-for-dir in that it does not consider |
;; This differs from dired-buffers-for-dir in that it does not consider |
584 |
;; subdirs of default-directory and searches for the first match only. |
;; subdirs of default-directory and searches for the first match only. |
585 |
;; Also, the major mode must be MODE. |
;; Also, the major mode must be MODE. |
|
(setq dirname (expand-file-name dirname)) |
|
586 |
(let (found (blist dired-buffers)) ; was (buffer-list) |
(let (found (blist dired-buffers)) ; was (buffer-list) |
587 |
(or mode (setq mode 'dired-mode)) |
(or mode (setq mode 'dired-mode)) |
588 |
(while blist |
(while blist |
591 |
(save-excursion |
(save-excursion |
592 |
(set-buffer (cdr (car blist))) |
(set-buffer (cdr (car blist))) |
593 |
(if (and (eq major-mode mode) |
(if (and (eq major-mode mode) |
594 |
(equal dirname |
(if (consp dired-directory) |
595 |
(expand-file-name |
(equal (car dired-directory) dirname) |
596 |
(if (consp dired-directory) |
(equal dired-directory dirname))) |
|
(car dired-directory) |
|
|
dired-directory)))) |
|
597 |
(setq found (cdr (car blist)) |
(setq found (cdr (car blist)) |
598 |
blist nil) |
blist nil) |
599 |
(setq blist (cdr blist)))))) |
(setq blist (cdr blist)))))) |
605 |
;; dired-readin differs from dired-insert-subdir in that it accepts |
;; dired-readin differs from dired-insert-subdir in that it accepts |
606 |
;; wildcards, erases the buffer, and builds the subdir-alist anew |
;; wildcards, erases the buffer, and builds the subdir-alist anew |
607 |
;; (including making it buffer-local and clearing it first). |
;; (including making it buffer-local and clearing it first). |
608 |
(defun dired-readin () |
(defun dired-readin (dir-or-list buffer) |
609 |
;; default-directory and dired-actual-switches must be buffer-local |
;; default-directory and dired-actual-switches must be buffer-local |
610 |
;; and initialized by now. |
;; and initialized by now. |
611 |
(let (dirname) |
;; Thus we can test (equal default-directory dirname) instead of |
612 |
(if (consp dired-directory) |
;; (file-directory-p dirname) and save a filesystem transaction. |
613 |
(setq dirname (car dired-directory)) |
;; Also, we can run this hook which may want to modify the switches |
614 |
(setq dirname dired-directory)) |
;; based on default-directory, e.g. with ange-ftp to a SysV host |
615 |
|
;; where ls won't understand -Al switches. |
616 |
|
(let (dirname |
617 |
|
(indent-tabs-mode nil)) |
618 |
|
(if (consp dir-or-list) |
619 |
|
(setq dirname (car dir-or-list)) |
620 |
|
(setq dirname dir-or-list)) |
621 |
(setq dirname (expand-file-name dirname)) |
(setq dirname (expand-file-name dirname)) |
622 |
|
(if (consp dir-or-list) |
623 |
|
(setq dir-or-list (cons dirname (cdr dir-or-list)))) |
624 |
|
(run-hooks 'dired-before-readin-hook) |
625 |
(save-excursion |
(save-excursion |
|
;; This hook which may want to modify dired-actual-switches |
|
|
;; based on dired-directory, e.g. with ange-ftp to a SysV host |
|
|
;; where ls won't understand -Al switches. |
|
|
(run-hooks 'dired-before-readin-hook) |
|
626 |
(message "Reading directory %s..." dirname) |
(message "Reading directory %s..." dirname) |
627 |
(if (consp buffer-undo-list) |
(set-buffer buffer) |
628 |
(setq buffer-undo-list nil)) |
(let (buffer-read-only (failed t)) |
|
(let (buffer-read-only |
|
|
;; Don't make undo entries for readin. |
|
|
(buffer-undo-list t)) |
|
629 |
(widen) |
(widen) |
630 |
(erase-buffer) |
(erase-buffer) |
631 |
(dired-readin-insert)) |
(dired-readin-insert dir-or-list) |
632 |
|
(indent-rigidly (point-min) (point-max) 2) |
633 |
|
;; We need this to make the root dir have a header line as all |
634 |
|
;; other subdirs have: |
635 |
|
(goto-char (point-min)) |
636 |
|
(if (not (looking-at "^ /.*:$")) |
637 |
|
(dired-insert-headerline default-directory)) |
638 |
|
;; can't run dired-after-readin-hook here, it may depend on the subdir |
639 |
|
;; alist to be OK. |
640 |
|
) |
641 |
(message "Reading directory %s...done" dirname) |
(message "Reading directory %s...done" dirname) |
|
(goto-char (point-min)) |
|
642 |
;; Must first make alist buffer local and set it to nil because |
;; Must first make alist buffer local and set it to nil because |
643 |
;; dired-build-subdir-alist will call dired-clear-alist first |
;; dired-build-subdir-alist will call dired-clear-alist first |
644 |
(set (make-local-variable 'dired-subdir-alist) nil) |
(set (make-local-variable 'dired-subdir-alist) nil) |
646 |
(let ((attributes (file-attributes dirname))) |
(let ((attributes (file-attributes dirname))) |
647 |
(if (eq (car attributes) t) |
(if (eq (car attributes) t) |
648 |
(set-visited-file-modtime (nth 5 attributes)))) |
(set-visited-file-modtime (nth 5 attributes)))) |
649 |
(set-buffer-modified-p nil) |
(if (consp buffer-undo-list) |
650 |
;; No need to narrow since the whole buffer contains just |
(setq buffer-undo-list nil)) |
651 |
;; dired-readin's output, nothing else. The hook can |
(set-buffer-modified-p nil)))) |
|
;; successfully use dired functions (e.g. dired-get-filename) |
|
|
;; as the subdir-alist has been built in dired-readin. |
|
|
(run-hooks 'dired-after-readin-hook)))) |
|
652 |
|
|
653 |
;; Subroutines of dired-readin |
;; Subroutines of dired-readin |
654 |
|
|
655 |
(defun dired-readin-insert () |
(defun dired-readin-insert (dir-or-list) |
656 |
;; Insert listing for the specified dir (and maybe file list) |
;; Just insert listing for the passed-in directory or |
657 |
;; already in dired-directory, assuming a clean buffer. |
;; directory-and-file list, assuming a clean buffer. |
658 |
(let (dir file-list) |
(let (dirname) |
659 |
(if (consp dired-directory) |
(if (consp dir-or-list) |
660 |
(setq dir (car dired-directory) |
(setq dirname (car dir-or-list)) |
661 |
file-list (cdr dired-directory)) |
(setq dirname dir-or-list)) |
662 |
(setq dir dired-directory |
;; Expand before comparing in case one or both have been abbreviated. |
663 |
file-list nil)) |
(if (and (equal (expand-file-name default-directory) |
664 |
(if (and (equal "" (file-name-nondirectory dir)) |
(expand-file-name dirname)) |
665 |
(not file-list)) |
(not (consp dir-or-list))) |
666 |
;; If we are reading a whole single directory... |
;; If we are reading a whole single directory... |
667 |
(dired-insert-directory dir dired-actual-switches nil nil t) |
(dired-insert-directory dir-or-list dired-actual-switches nil t) |
668 |
(if (not (file-readable-p |
(if (not (file-readable-p |
669 |
(directory-file-name (file-name-directory dir)))) |
(directory-file-name (file-name-directory dirname)))) |
670 |
(error "Directory %s inaccessible or nonexistent" dir) |
(error "Directory %s inaccessible or nonexistent" dirname) |
671 |
;; Else treat it as a wildcard spec |
;; Else assume it contains wildcards, |
672 |
;; unless we have an explicit list of files. |
;; unless it is an explicit list of files. |
673 |
(dired-insert-directory dir dired-actual-switches |
(dired-insert-directory dir-or-list dired-actual-switches |
674 |
file-list (not file-list) t))))) |
(not (listp dir-or-list))) |
675 |
|
(or (consp dir-or-list) |
676 |
(defun dired-insert-directory (dir switches &optional file-list wildcard hdr) |
(save-excursion ;; insert wildcard instead of total line: |
677 |
"Insert a directory listing of DIR, Dired style. |
(goto-char (point-min)) |
678 |
Use SWITCHES to make the listings. |
(insert "wildcard " (file-name-nondirectory dirname) "\n"))))))) |
679 |
If FILE-LIST is non-nil, list only those files. |
|
680 |
Otherwise, if WILDCARD is non-nil, expand wildcards; |
(defun dired-insert-directory (dir-or-list switches &optional wildcard full-p) |
681 |
in that case, DIR should be a file name that uses wildcards. |
;; Do the right thing whether dir-or-list is atomic or not. If it is, |
682 |
In other cases, DIR should be a directory name or a directory filename. |
;; inset all files listed in the cdr (the car is the passed-in directory |
683 |
If HDR is non-nil, insert a header line with the directory name." |
;; list). |
684 |
(let ((opoint (point)) |
(let ((opoint (point)) |
685 |
(process-environment (copy-sequence process-environment)) |
(process-environment (copy-sequence process-environment)) |
686 |
end) |
end) |
|
(if dired-use-ls-dired |
|
|
(setq switches (concat "--dired " switches))) |
|
687 |
;; We used to specify the C locale here, to force English month names; |
;; We used to specify the C locale here, to force English month names; |
688 |
;; but this should not be necessary any more, |
;; but this should not be necessary any more, |
689 |
;; with the new value of dired-move-to-filename-regexp. |
;; with the new value of dired-move-to-filename-regexp. |
690 |
(if file-list |
(if (consp dir-or-list) |
691 |
(dolist (f file-list) |
;; In this case, use the file names in the cdr |
692 |
(insert-directory f switches nil nil)) |
;; exactly as originally given to dired-noselect. |
693 |
(insert-directory dir switches wildcard (not wildcard))) |
(mapcar |
694 |
|
(function (lambda (x) (insert-directory x switches wildcard full-p))) |
695 |
|
(cdr dir-or-list)) |
696 |
|
;; Expand the file name here because it may have been abbreviated |
697 |
|
;; in dired-noselect. |
698 |
|
(insert-directory (expand-file-name dir-or-list) switches wildcard full-p)) |
699 |
;; Quote certain characters, unless ls quoted them for us. |
;; Quote certain characters, unless ls quoted them for us. |
700 |
(if (not (string-match "b" dired-actual-switches)) |
(if (not (string-match "b" dired-actual-switches)) |
701 |
(save-excursion |
(save-excursion |
707 |
(while (search-forward "\^m" end t) |
(while (search-forward "\^m" end t) |
708 |
(replace-match "\\015" nil t)) |
(replace-match "\\015" nil t)) |
709 |
(set-marker end nil))) |
(set-marker end nil))) |
710 |
(dired-insert-set-properties opoint (point)) |
(dired-insert-set-properties opoint (point))) |
711 |
;; If we used --dired and it worked, the lines are already indented. |
(setq dired-directory dir-or-list)) |
|
;; Otherwise, indent them. |
|
|
(unless (save-excursion |
|
|
(forward-line -1) |
|
|
(looking-at " ")) |
|
|
(let ((indent-tabs-mode nil)) |
|
|
(indent-rigidly opoint (point) 2))) |
|
|
;; Insert text at the beginning to standardize things. |
|
|
(save-excursion |
|
|
(goto-char opoint) |
|
|
(if (and (or hdr wildcard) (not (looking-at "^ /.*:$"))) |
|
|
;; Note that dired-build-subdir-alist will replace the name |
|
|
;; by its expansion, so it does not matter whether what we insert |
|
|
;; here is fully expanded, but it should be absolute. |
|
|
(insert " " (directory-file-name (file-name-directory dir)) ":\n")) |
|
|
(when wildcard |
|
|
;; Insert "wildcard" line where "total" line would be for a full dir. |
|
|
(insert " wildcard " (file-name-nondirectory dir) "\n"))))) |
|
712 |
|
|
713 |
;; Make the file names highlight when the mouse is on them. |
;; Make the file names highlight when the mouse is on them. |
714 |
(defun dired-insert-set-properties (beg end) |
(defun dired-insert-set-properties (beg end) |
726 |
help-echo "mouse-2: visit this file in other window"))) |
help-echo "mouse-2: visit this file in other window"))) |
727 |
(error nil)) |
(error nil)) |
728 |
(forward-line 1)))) |
(forward-line 1)))) |
729 |
|
|
730 |
|
(defun dired-insert-headerline (dir);; also used by dired-insert-subdir |
731 |
|
;; Insert DIR's headerline with no trailing slash, exactly like ls |
732 |
|
;; would, and put cursor where dired-build-subdir-alist puts subdir |
733 |
|
;; boundaries. |
734 |
|
(save-excursion (insert " " (directory-file-name dir) ":\n"))) |
735 |
|
|
736 |
|
|
737 |
;; Reverting a dired buffer |
;; Reverting a dired buffer |
738 |
|
|
755 |
;; treat top level dir extra (it may contain wildcards) |
;; treat top level dir extra (it may contain wildcards) |
756 |
(dired-uncache |
(dired-uncache |
757 |
(if (consp dired-directory) (car dired-directory) dired-directory)) |
(if (consp dired-directory) (car dired-directory) dired-directory)) |
758 |
(dired-readin) |
(dired-readin dired-directory (current-buffer)) |
759 |
(let ((dired-after-readin-hook nil)) |
(let ((dired-after-readin-hook nil)) |
760 |
;; don't run that hook for each subdir... |
;; don't run that hook for each subdir... |
761 |
(dired-insert-old-subdirs old-subdir-alist)) |
(dired-insert-old-subdirs old-subdir-alist)) |
1575 |
;; This is the UNIX version. |
;; This is the UNIX version. |
1576 |
(or eol (setq eol (progn (end-of-line) (point)))) |
(or eol (setq eol (progn (end-of-line) (point)))) |
1577 |
(beginning-of-line) |
(beginning-of-line) |
1578 |
;; First try assuming `ls --dired' was used. |
(if (re-search-forward dired-move-to-filename-regexp eol t) |
1579 |
(let ((change (next-single-property-change (point) 'dired-filename |
(goto-char (match-end 0)) |
1580 |
nil eol))) |
(if raise-error |
1581 |
(if change (goto-char change) |
(error "No file on this line")))) |
|
(if (re-search-forward dired-move-to-filename-regexp eol t) |
|
|
(goto-char (match-end 0)) |
|
|
(if raise-error |
|
|
(error "No file on this line")))))) |
|
1582 |
|
|
1583 |
(defun dired-move-to-end-of-filename (&optional no-error) |
(defun dired-move-to-end-of-filename (&optional no-error) |
1584 |
;; Assumes point is at beginning of filename, |
;; Assumes point is at beginning of filename, |
1587 |
;; (dired-move-to-filename t). |
;; (dired-move-to-filename t). |
1588 |
;; On failure, signals an error (with non-nil NO-ERROR just returns nil). |
;; On failure, signals an error (with non-nil NO-ERROR just returns nil). |
1589 |
;; This is the UNIX version. |
;; This is the UNIX version. |
1590 |
(if (get-text-property (point) 'dired-filename) |
(let (opoint file-type executable symlink hidden case-fold-search used-F eol) |
1591 |
(goto-char (next-single-property-change (point) 'dired-filename)) |
;; case-fold-search is nil now, so we can test for capital F: |
1592 |
(let (opoint file-type executable symlink hidden case-fold-search used-F eol) |
(setq used-F (string-match "F" dired-actual-switches) |
1593 |
;; case-fold-search is nil now, so we can test for capital F: |
opoint (point) |
1594 |
(setq used-F (string-match "F" dired-actual-switches) |
eol (save-excursion (end-of-line) (point)) |
1595 |
opoint (point) |
hidden (and selective-display |
1596 |
eol (save-excursion (end-of-line) (point)) |
(save-excursion (search-forward "\r" eol t)))) |
1597 |
hidden (and selective-display |
(if hidden |
1598 |
(save-excursion (search-forward "\r" eol t)))) |
nil |
1599 |
(if hidden |
(save-excursion;; Find out what kind of file this is: |
1600 |
nil |
;; Restrict perm bits to be non-blank, |
1601 |
(save-excursion ;; Find out what kind of file this is: |
;; otherwise this matches one char to early (looking backward): |
1602 |
;; Restrict perm bits to be non-blank, |
;; "l---------" (some systems make symlinks that way) |
1603 |
;; otherwise this matches one char to early (looking backward): |
;; "----------" (plain file with zero perms) |
1604 |
;; "l---------" (some systems make symlinks that way) |
(if (re-search-backward |
1605 |
;; "----------" (plain file with zero perms) |
dired-permission-flags-regexp nil t) |
1606 |
(if (re-search-backward |
(setq file-type (char-after (match-beginning 1)) |
1607 |
dired-permission-flags-regexp nil t) |
symlink (eq file-type ?l) |
1608 |
(setq file-type (char-after (match-beginning 1)) |
;; Only with -F we need to know whether it's an executable |
1609 |
symlink (eq file-type ?l) |
executable (and |
1610 |
;; Only with -F we need to know whether it's an executable |
used-F |
1611 |
executable (and |
(string-match |
1612 |
used-F |
"[xst]";; execute bit set anywhere? |
1613 |
(string-match |
(concat |
1614 |
"[xst]" ;; execute bit set anywhere? |
(buffer-substring (match-beginning 2) |
1615 |
(concat |
(match-end 2)) |
1616 |
(buffer-substring (match-beginning 2) |
(buffer-substring (match-beginning 3) |
1617 |
(match-end 2)) |
(match-end 3)) |
1618 |
(buffer-substring (match-beginning 3) |
(buffer-substring (match-beginning 4) |
1619 |
(match-end 3)) |
(match-end 4)))))) |
1620 |
(buffer-substring (match-beginning 4) |
(or no-error (error "No file on this line")))) |
1621 |
(match-end 4)))))) |
;; Move point to end of name: |
1622 |
(or no-error (error "No file on this line")))) |
(if symlink |
1623 |
;; Move point to end of name: |
(if (search-forward " ->" eol t) |
1624 |
(if symlink |
(progn |
1625 |
(if (search-forward " ->" eol t) |
(forward-char -3) |
1626 |
(progn |
(and used-F |
1627 |
(forward-char -3) |
dired-ls-F-marks-symlinks |
1628 |
(and used-F |
(eq (preceding-char) ?@);; did ls really mark the link? |
1629 |
dired-ls-F-marks-symlinks |
(forward-char -1)))) |
1630 |
(eq (preceding-char) ?@) ;; did ls really mark the link? |
(goto-char eol);; else not a symbolic link |
1631 |
(forward-char -1)))) |
;; ls -lF marks dirs, sockets and executables with exactly one |
1632 |
(goto-char eol) ;; else not a symbolic link |
;; trailing character. (Executable bits on symlinks ain't mean |
1633 |
;; ls -lF marks dirs, sockets and executables with exactly one |
;; a thing, even to ls, but we know it's not a symlink.) |
1634 |
;; trailing character. (Executable bits on symlinks ain't mean |
(and used-F |
1635 |
;; a thing, even to ls, but we know it's not a symlink.) |
(or (memq file-type '(?d ?s)) |
1636 |
(and used-F |
executable) |
1637 |
(or (memq file-type '(?d ?s)) |
(forward-char -1)))) |
1638 |
executable) |
(or no-error |
1639 |
(forward-char -1)))) |
(not (eq opoint (point))) |
1640 |
(or no-error |
(error (if hidden |
1641 |
(not (eq opoint (point))) |
(substitute-command-keys |
1642 |
(error (if hidden |
"File line is hidden, type \\[dired-hide-subdir] to unhide") |
1643 |
(substitute-command-keys |
"No file on this line"))) |
1644 |
"File line is hidden, type \\[dired-hide-subdir] to unhide") |
(if (eq opoint (point)) |
1645 |
"No file on this line"))) |
nil |
1646 |
(if (eq opoint (point)) |
(point)))) |
|
nil |
|
|
(point))))) |
|
1647 |
|
|
1648 |
|
|
1649 |
;;; COPY NAMES OF MARKED FILES INTO KILL-RING. |
;;; COPY NAMES OF MARKED FILES INTO KILL-RING. |