# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: address@hidden # target_branch: bzr://bzr.savannah.gnu.org/emacs/trunk/ # testament_sha1: 467acf56b28d7d9ee4be3368d2467cea25251eac # timestamp: 2012-08-08 20:34:32 +0530 # source_branch: bzr://bzr.savannah.gnu.org/emacs/trunk # base_revision_id: address@hidden # t26l1voivvzfypey # # Begin patch === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-08-08 13:40:45 +0000 +++ lisp/ChangeLog 2012-08-08 15:02:32 +0000 @@ -1,3 +1,11 @@ +2012-08-08 Jambunathan K + + * vc/vc-dir.el (vc-dir-hide-these-states): New custom variable. + (vc-dir-hide-some-states): New command. + (vc-dir-hide-up-to-date): Use `vc-dir-hide-some-states'. + (vc-dir-mode-map): Map "x" to `vc-dir-hide-some-states' instead of + `vc-dir-hide-up-to-date'. + 2012-08-08 Michael Albinus * net/tramp-sh.el (tramp-find-file-exists-command): Protect the === modified file 'lisp/vc/vc-dir.el' --- lisp/vc/vc-dir.el 2012-07-11 23:13:41 +0000 +++ lisp/vc/vc-dir.el 2012-08-08 14:44:28 +0000 @@ -51,6 +51,25 @@ :type 'hook :group 'vc) +(defcustom vc-dir-hide-these-states '("up-to-date") + "States hidden by `vc-dir-hide-some-states'." + :type '(choice + (const :tag "None") + (set :tag "Choices" + (string :tag "VC State" "added") + (string :tag "VC State" "conflict") + (string :tag "VC State" "edited") + (string :tag "VC State" "ignored") + (string :tag "VC State" "missing") + (string :tag "VC State" "needs-merge") + (string :tag "VC State" "needs-update") + (string :tag "VC State" "removed") + (string :tag "VC State" "unlocked-changes") + (string :tag "VC State" "unregistered") + (string :tag "VC State" "up-to-date"))) + :group 'vc + :version "24.2") + ;; Used to store information for the files displayed in the directory buffer. ;; Each item displayed corresponds to one of these defstructs. (cl-defstruct (vc-dir-fileinfo @@ -271,7 +290,7 @@ (define-key map [down-mouse-3] 'vc-dir-menu) (define-key map [mouse-2] 'vc-dir-toggle-mark) (define-key map [follow-link] 'mouse-face) - (define-key map "x" 'vc-dir-hide-up-to-date) + (define-key map "x" 'vc-dir-hide-some-states) (define-key map [?\C-k] 'vc-dir-kill-line) (define-key map "S" 'vc-dir-search) ;; FIXME: Maybe use A like dired? (define-key map "Q" 'vc-dir-query-replace-regexp) @@ -1106,20 +1125,56 @@ (interactive "fShow file: ") (vc-dir-update (list (list (file-relative-name file) (vc-state file))) (current-buffer))) -(defun vc-dir-hide-up-to-date () - "Hide up-to-date items from display." - (interactive) - (let ((crt (ewoc-nth vc-ewoc -1)) - (first (ewoc-nth vc-ewoc 0))) - ;; Go over from the last item to the first and remove the - ;; up-to-date files and directories with no child files. - (while (not (eq crt first)) - (let* ((data (ewoc-data crt)) - (dir (vc-dir-fileinfo->directory data)) - (next (ewoc-next vc-ewoc crt)) - (prev (ewoc-prev vc-ewoc crt)) - ;; ewoc-delete does not work without this... - (inhibit-read-only t)) +(defun vc-dir-hide-some-states (&optional states) + "Hide items that are in STATES from display. +STATES is a list of vc states (see`vc-state') specified as a +string. + +If STATES is null, use `vc-dir-hide-these-states'. + +In interactive mode, if you provide a prefix argument or if +`vc-dir-hide-these-states' is nil, you will be queried for a state +to hide." + (interactive + ;; Interactive use. + (list + (or (and (not current-prefix-arg) vc-dir-hide-these-states) + ;; No prefix arg or `vc-dir-hide-these-states' is nil. Prompt + ;; for a state to hide. + (let ((crt (ewoc-nth vc-ewoc -1)) + (first (ewoc-nth vc-ewoc 0)) + displayed-states) + ;; Collect all the states that are on display. + (while (not (eq crt first)) + (let* ((data (ewoc-data crt)) + (dir (vc-dir-fileinfo->directory data)) + (prev (ewoc-prev vc-ewoc crt))) + (when (not dir) + (let ((s (vc-dir-fileinfo->state data))) + (unless (member s displayed-states) + (push (format "%s" s) displayed-states)))) + (setq crt prev))) + ;; Query the user for a state to hide. + (when displayed-states + (list (completing-read "States to hide: " + displayed-states nil t))))))) + + ;; Non-interactive use. + (unless (called-interactively-p 'any) + (setq states (or states vc-dir-hide-these-states))) + + (when states + (let ((crt (ewoc-nth vc-ewoc -1)) + (first (ewoc-nth vc-ewoc 0))) + ;; Go over from the last item to the first and remove the + ;; up-to-date files and directories with no child files. + (while (not (eq crt first)) + (let* ((data (ewoc-data crt)) + (dir (vc-dir-fileinfo->directory data)) + (next (ewoc-next vc-ewoc crt)) + (prev (ewoc-prev vc-ewoc crt)) + ;; ewoc-delete does not work without this... + (inhibit-read-only t)) (when (or ;; Remove directories with no child files. (and dir @@ -1128,10 +1183,15 @@ (not next) ;; Next item is a directory. (vc-dir-fileinfo->directory (ewoc-data next)))) - ;; Remove files in the up-to-date state. - (eq (vc-dir-fileinfo->state data) 'up-to-date)) + ;; Remove files that are to be hidden. + (member (format "%s" (vc-dir-fileinfo->state data)) states)) (ewoc-delete vc-ewoc crt)) - (setq crt prev))))) + (setq crt prev)))))) + +(defun vc-dir-hide-up-to-date () + "Hide up-to-date items from display." + (interactive) + (vc-dir-hide-some-states '("up-to-date"))) (defun vc-dir-kill-line () "Remove the current line from display." # Begin bundle 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 D6maWl2pdU7V31yBZaeM/4u5IpwoSGUjBUeA