unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] vc-dir-hide-some-states: New command
@ 2012-08-08 14:56 Jambunathan K
  2012-08-08 15:15 ` Jambunathan K
  0 siblings, 1 reply; 2+ messages in thread
From: Jambunathan K @ 2012-08-08 14:56 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 68 bytes --]


I am attaching a bzr bundle.  Can someone review and commit this?


[-- Attachment #2: vc-dir-hide-some-states.txt --]
[-- Type: text/plain, Size: 9890 bytes --]

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: kjambunathan@gmail.com-20120808144428-8msbw7xveglogy9b
# 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: michael.albinus@gmx.de-20120808134045-\
#   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  <kjambunathan@gmail.com>
+
+	* 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  <michael.albinus@gmx.de>
 
 	* 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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

[-- Attachment #3: Type: text/plain, Size: 5 bytes --]


-- 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] vc-dir-hide-some-states: New command
  2012-08-08 14:56 [PATCH] vc-dir-hide-some-states: New command Jambunathan K
@ 2012-08-08 15:15 ` Jambunathan K
  0 siblings, 0 replies; 2+ messages in thread
From: Jambunathan K @ 2012-08-08 15:15 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 442 bytes --]

Jambunathan K <kjambunathan@gmail.com> writes:

> I am attaching a bzr bundle.  Can someone review and commit this?

There were some typos in the changelog.  I am attaching the revised
bundle.  It has 4 revisions.

In git world, I would have preferred to do this:

  git reset --soft origin/master # squash all the commits
  git format-patch

so as to show only my good face to the world.

Looks like bzr is working against my intentions.
  

[-- Attachment #2: vc-dir-hide-some-states.txt --]
[-- Type: text/plain, Size: 10251 bytes --]

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: kjambunathan@gmail.com-20120808150232-cvekujrpotm9qlwa
# 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: michael.albinus@gmx.de-20120808134045-\
#   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  <kjambunathan@gmail.com>
+
+	* 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  <michael.albinus@gmx.de>
 
 	* 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

[-- Attachment #3: Type: text/plain, Size: 4 bytes --]

-- 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-08-08 15:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-08 14:56 [PATCH] vc-dir-hide-some-states: New command Jambunathan K
2012-08-08 15:15 ` Jambunathan K

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).