# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: address@hidden # target_branch: bzr://bzr.savannah.gnu.org/emacs/trunk/ # testament_sha1: 0a43bb0d585f74c15f549d63dc6a08fa44154d2d # timestamp: 2012-08-08 20:17:20 +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 14:44:28 +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-vc-states'. + (vc-dir-mode-map): Map "x" to `vc-dir-hide-vc-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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