[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Introducing 'unrecognized and 'ignored
From: |
Tom Tromey |
Subject: |
Re: Introducing 'unrecognized and 'ignored |
Date: |
Sun, 20 Jan 2008 12:45:37 -0700 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.990 (gnu/linux) |
>> I hook into vc-do-command... I'm not sure if that is really a good idea.
>> I guess that's why we have patch review :-)
Stefan> I general it doesn't sound like a bad idea, but I'll reserve
Stefan> my judgment until I see the code.
Here's the patch I've got.
Note there is a bug fix to vc-update-vc-status-buffer in here... this
should go in even if the rest of the patch does not. You can see this
bug by running vc-status in a directory with no modifications and no
unrecognized files.
Stefan> PCL-CVS used to clear the ewoc, so I obviously believe it's
Stefan> worth the effort to not clear it, so as to preserve mark and
Stefan> such.
Yeah. In general I think vc-status should follow PCL-CVS unless there
is a really good reason to be different.
Tom
2008-01-20 Tom Tromey <address@hidden>
* vc.el (vc-status-report-buffer): New variable.
(vc-do-command): Display command in vc-status buffer.
(vc-status-headers): Add 'command' argument.
(vc-status-footers): New function.
(vc-status-mode): Create footer.
(vc-status-refresh): Bind vc-status-report-buffer.
(vc-status-start-command): New function.
(vc-status-command-finished): Likewise.
(vc-update-vc-status-buffer): Avoid error if no nodes in ewoc.
Index: vc.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/vc.el,v
retrieving revision 1.516
diff -u -c -r1.516 vc.el
cvs diff: conflicting specifications of output style
*** vc.el 18 Jan 2008 23:32:57 -0000 1.516
--- vc.el 20 Jan 2008 20:11:34 -0000
***************
*** 1020,1025 ****
--- 1020,1028 ----
;; FIXME what about file names with spaces?
(if (not filelist) "." (mapconcat 'identity filelist " ")))
+ ;; This is let-bound when vc-do-command should report the command.
+ (defvar vc-status-report-buffer nil)
+
;;;###autoload
(defun vc-do-command (buffer okstatus command file-or-list &rest flags)
"Execute a VC command, notifying user and checking for errors.
***************
*** 1050,1055 ****
--- 1053,1064 ----
" "
(vc-delistify (mapcar (lambda (s) (if (> (length s) 20)
(concat (substring s 0 2) "...") s)) flags))
" " (vc-delistify files))))
+ ;; Update the vc-status buffer, if requested. Only do this for
+ ;; async commands; for synchronous commands the normal message is
+ ;; enough.
+ (if (and vc-status-report-buffer (eq okstatus 'async))
+ (with-current-buffer vc-status-report-buffer
+ (vc-status-start-command full-command)))
(save-current-buffer
(unless (or (eq buffer t)
(and (stringp buffer)
***************
*** 1091,1097 ****
(set-process-filter proc 'vc-process-filter)
(vc-exec-after
`(if vc-command-messages
! (message "Running %s in background... done"
',full-command))))
;; Run synchrously
(if vc-command-messages
(message "Running %s in foreground..." full-command))
--- 1100,1110 ----
(set-process-filter proc 'vc-process-filter)
(vc-exec-after
`(if vc-command-messages
! (message "Running %s in background... done"
',full-command)))
! (if vc-status-report-buffer
! (vc-exec-after
! `(with-current-buffer ,vc-status-report-buffer
! (vc-status-command-finished)))))
;; Run synchrously
(if vc-command-messages
(message "Running %s in foreground..." full-command))
***************
*** 2543,2553 ****
(defvar vc-status nil)
! (defun vc-status-headers (backend dir)
(concat
(format "VC backend : %s\n" backend)
"Repository : The repository goes here\n"
! (format "Working dir: %s\n" dir)))
(defun vc-status-printer (fileentry)
"Pretty print FILEENTRY."
--- 2558,2579 ----
(defvar vc-status nil)
! (defun vc-status-headers (backend dir command)
(concat
(format "VC backend : %s\n" backend)
"Repository : The repository goes here\n"
! (format "Working dir: %s\n" dir)
! "\n"
! (if command (concat "-- Running: " command " ...")
! "")
! "\n"))
!
! (defun vc-status-footers (command)
! (concat
! "\n--------------------- End ---------------------\n"
! (if command (concat "-- Last command: " command " --")
! "")
! "\n"))
(defun vc-status-printer (fileentry)
"Pretty print FILEENTRY."
***************
*** 2615,2621 ****
(erase-buffer)
(set (make-local-variable 'vc-status)
(ewoc-create #'vc-status-printer
! (vc-status-headers backend default-directory)))
(vc-status-refresh)))
(put 'vc-status-mode 'mode-class 'special)
--- 2641,2648 ----
(erase-buffer)
(set (make-local-variable 'vc-status)
(ewoc-create #'vc-status-printer
! (vc-status-headers backend default-directory nil)
! (vc-status-footers nil)))
(vc-status-refresh)))
(put 'vc-status-mode 'mode-class 'special)
***************
*** 2625,2638 ****
(dolist (entry entries)
(ewoc-enter-last vc-status
(vc-status-create-fileinfo (cdr entry) (car entry))))
! (ewoc-goto-node vc-status (ewoc-nth vc-status 0))))
(defun vc-status-refresh ()
"Refresh the contents of the VC status buffer."
(interactive)
;; This is not very efficient; ewoc could use a new function here.
(ewoc-filter vc-status (lambda (node) nil))
! (let ((backend (vc-responsible-backend default-directory)))
;; Call the dir-status backend function. dir-status is supposed to
;; be asynchronous. It should compute the results and call the
;; function passed as a an arg to update the vc-status buffer with
--- 2652,2668 ----
(dolist (entry entries)
(ewoc-enter-last vc-status
(vc-status-create-fileinfo (cdr entry) (car entry))))
! (let ((node (ewoc-nth vc-status 0)))
! (if node
! (ewoc-goto-node vc-status node)))))
(defun vc-status-refresh ()
"Refresh the contents of the VC status buffer."
(interactive)
;; This is not very efficient; ewoc could use a new function here.
(ewoc-filter vc-status (lambda (node) nil))
! (let ((backend (vc-responsible-backend default-directory))
! (vc-status-report-buffer (current-buffer)))
;; Call the dir-status backend function. dir-status is supposed to
;; be asynchronous. It should compute the results and call the
;; function passed as a an arg to update the vc-status buffer with
***************
*** 2641,2646 ****
--- 2671,2691 ----
backend 'dir-status default-directory
#'vc-update-vc-status-buffer (current-buffer))))
+ (defun vc-status-start-command (command)
+ "Update the vc-status header with the current back-end command."
+ (let ((backend (vc-responsible-backend default-directory)))
+ (set (make-local-variable 'vc-running-command) command)
+ (ewoc-set-hf vc-status
+ (vc-status-headers backend default-directory command)
+ (vc-status-footers nil))))
+
+ (defun vc-status-command-finished ()
+ "Update the vc-status footer with previous command, and clear the header."
+ (let ((backend (vc-responsible-backend default-directory)))
+ (ewoc-set-hf vc-status
+ (vc-status-headers backend default-directory nil)
+ (vc-status-footers vc-running-command))))
+
(defun vc-status-next-line (arg)
"Go to the next line.
If a prefix argument is given, move by that many lines."
- Re: Introducing 'unrecognized and 'ignored, (continued)
- Re: Introducing 'unrecognized and 'ignored, Dan Nicolaescu, 2008/01/18
- Re: Introducing 'unrecognized and 'ignored, Tom Tromey, 2008/01/19
- Re: Introducing 'unrecognized and 'ignored, Dan Nicolaescu, 2008/01/19
- Re: Introducing 'unrecognized and 'ignored, Stefan Monnier, 2008/01/19
- Re: Introducing 'unrecognized and 'ignored, Thien-Thi Nguyen, 2008/01/19
- Re: Introducing 'unrecognized and 'ignored, Dan Nicolaescu, 2008/01/20
- Re: Introducing 'unrecognized and 'ignored, Thien-Thi Nguyen, 2008/01/21
- Re: Introducing 'unrecognized and 'ignored, Dan Nicolaescu, 2008/01/20
- Re: Introducing 'unrecognized and 'ignored, Tom Tromey, 2008/01/20
- Re: Introducing 'unrecognized and 'ignored, Stefan Monnier, 2008/01/20
- Re: Introducing 'unrecognized and 'ignored,
Tom Tromey <=
- Re: Introducing 'unrecognized and 'ignored, Dan Nicolaescu, 2008/01/21
- Re: Introducing 'unrecognized and 'ignored, Thien-Thi Nguyen, 2008/01/19
- Re: Introducing 'unrecognized and 'ignored, Stefan Monnier, 2008/01/20
- Re: Introducing 'unrecognized and 'ignored, Thien-Thi Nguyen, 2008/01/21
- Re: Introducing 'unrecognized and 'ignored, Stefan Monnier, 2008/01/21
- Re: Introducing 'unrecognized and 'ignored, Dan Nicolaescu, 2008/01/21
- Re: Introducing 'unrecognized and 'ignored, Stefan Monnier, 2008/01/21
- Re: Introducing 'unrecognized and 'ignored, Thien-Thi Nguyen, 2008/01/21
- Re: Introducing 'unrecognized and 'ignored, Richard Stallman, 2008/01/06
- Re: Introducing 'unrecognized and 'ignored, Eric S. Raymond, 2008/01/02