emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

`k' in Dired with inserted subdirectories.


From: Luc Teirlinck
Subject: `k' in Dired with inserted subdirectories.
Date: Tue, 13 Jul 2004 14:55:13 -0500 (CDT)

As I pointed out in a prior message in this thread (quite a while
ago),  the documentation of `dired-do-kill-lines' in the docstring and
the Emacs manual contradict each other and _both_ are wrong.
Moreover, `dired-do-kill-lines' contains code that never gets
executed.  Of course, it is strictly speaking not necessary to remove
that code.  Since it never gets executed it never does any harm.  But
it is confusing to anybody reading the source code.

The patches below to dired-aux and man/dired.texi correct both problems.

The reason I replaced:

! \(A negative argument kills lines before the current line.)

with:

! \(A negative argument kills backward.)

in `dired-do-kill-lines's docstring is that to me, the original
sentence does not make clear whether the line itself is included (it is).

I can install if it looks OK.

===File ~/dired-aux-diff====================================
*** dired-aux.el        14 Jun 2004 22:05:32 -0500      1.124
--- dired-aux.el        13 Jul 2004 14:22:28 -0500      
***************
*** 627,635 ****
  (defun dired-do-kill-lines (&optional arg fmt)
    "Kill all marked lines (not the files).
  With a prefix argument, kill that many lines starting with the current line.
! \(A negative argument kills lines before the current line.)
! To kill an entire subdirectory, go to its directory header line
! and use this command with a prefix argument (the value does not matter)."
    ;; Returns count of killed lines.  FMT="" suppresses message.
    (interactive "P")
    (if arg
--- 627,640 ----
  (defun dired-do-kill-lines (&optional arg fmt)
    "Kill all marked lines (not the files).
  With a prefix argument, kill that many lines starting with the current line.
! \(A negative argument kills backward.)
! If a prefix argument is given and you kill the line for a file
! that is a directory, which is inserted in the Dired buffer as
! a subdirectory, then that subdirectory is deleted from the buffer
! as well.
! To kill an entire subdirectory \(without killing its line in the
! parent directory), go to its directory header line and use this
! command with a prefix argument (the value does not matter)."
    ;; Returns count of killed lines.  FMT="" suppresses message.
    (interactive "P")
    (if arg
***************
*** 638,660 ****
        (dired-kill-line arg))
      (save-excursion
        (goto-char (point-min))
!       (let (buffer-read-only (count 0))
!       (if (not arg)                   ; kill marked lines
!           (let ((regexp (dired-marker-regexp)))
!             (while (and (not (eobp))
!                         (re-search-forward regexp nil t))
!               (setq count (1+ count))
!               (delete-region (progn (beginning-of-line) (point))
!                              (progn (forward-line 1) (point)))))
!         ;; else kill unmarked lines
!         (while (not (eobp))
!           (if (or (dired-between-files)
!                   (not (looking-at "^  ")))
!               (forward-line 1)
!             (setq count (1+ count))
!             (delete-region (point) (save-excursion
!                                      (forward-line 1)
!                                      (point))))))
        (or (equal "" fmt)
            (message (or fmt "Killed %d line%s.") count (dired-plural-s count)))
        count))))
--- 643,656 ----
        (dired-kill-line arg))
      (save-excursion
        (goto-char (point-min))
!       (let (buffer-read-only
!           (count 0)
!           (regexp (dired-marker-regexp)))
!       (while (and (not (eobp))
!                   (re-search-forward regexp nil t))
!         (setq count (1+ count))
!         (delete-region (progn (beginning-of-line) (point))
!                        (progn (forward-line 1) (point))))
        (or (equal "" fmt)
            (message (or fmt "Killed %d line%s.") count (dired-plural-s count)))
        count))))
============================================================

===File ~/dired.texi-diff===================================
*** dired.texi  14 Jun 2004 14:51:51 -0500      1.29
--- dired.texi  13 Jul 2004 12:46:51 -0500      
***************
*** 1030,1039 ****
  files, or on the marked files if any; but it does not operate on the
  current file as a last resort.
  
!   If you kill the line for a file that is a directory, the directory's
! contents are also deleted from the buffer.  Typing @kbd{C-u k} on the
! header line for a subdirectory is another way to delete a subdirectory
! from the Dired buffer.
  
    The @kbd{g} command brings back any individual lines that you have
  killed in this way, but not subdirectories---you must use @kbd{i} to
--- 1030,1040 ----
  files, or on the marked files if any; but it does not operate on the
  current file as a last resort.
  
!   If a numeric prefix argument is given and you kill the line for a
! file that is a directory, the directory's contents are also deleted
! from the buffer.  Typing @kbd{C-u k} on the header line for a
! subdirectory is another way to delete a subdirectory from the Dired
! buffer.
  
    The @kbd{g} command brings back any individual lines that you have
  killed in this way, but not subdirectories---you must use @kbd{i} to
============================================================




reply via email to

[Prev in Thread] Current Thread [Next in Thread]