# HG changeset patch # User Dan Nicolaescu # Date 1206028305 0 # Node ID 695900050c0b3821f6d697e1181a8d44653a4b31 # Parent 3bf6293f304123528ece8dba8b8824a6047344e4 (vc-status-mark-buffer-changed): New function to implement updating of the *vc-status* buffer when a buffer is saved. (vc-status-mode): Use it for after-change-hook. (vc-add-to-vc-status-buffer): Rename to ... (vc-status-add-entry): ... this. (Todo): Add new entry. diff -r 3bf6293f3041 -r 695900050c0b lisp/ChangeLog --- a/lisp/ChangeLog Thu Mar 20 15:49:10 2008 +0000 +++ b/lisp/ChangeLog Thu Mar 20 15:51:45 2008 +0000 @@ -1,3 +1,12 @@ +2008-03-20 Dan Nicolaescu + + * vc.el (vc-status-mark-buffer-changed): New function to implement + updating of the *vc-status* buffer when a buffer is saved. + (vc-status-mode): Use it for after-change-hook. + (vc-add-to-vc-status-buffer): Rename to ... + (vc-status-add-entry): ... this. + (Todo): Add new entry. + 2008-03-20 Stefan Monnier * sort.el (sort-reorder-buffer): Preserve the buffer's multibyteness. @@ -9552,7 +9561,7 @@ * progmodes/python.el (top-level): Don't require cl when compiling. -2007-12-02 Agust,Am(Bn Mart,Am(Bn +2007-12-02 Agust$(Q)c(Bn Mart$(Q)c(Bn * textmodes/flyspell.el (flyspell-large-region): Explicitly set encoding for aspell process and for communication with it. @@ -10296,7 +10305,7 @@ (x-send-client-message): * emulation/cua-base.el (x-clipboard-yank): Declare as functions. -2007-11-22 Jan Dj,Ad(Brv +2007-11-22 Jan Dj$(Q)Z(Brv * term/x-win.el (x-gtk-map-stock): Check if FILE is a string. @@ -11215,7 +11224,7 @@ * emulation/tpu-mapper.el (tpu-map-key): Remove un-needed cond branch. -2007-11-07 Johan Bockg,Ae(Brd +2007-11-07 Johan Bockg$(Q)[(Brd * eshell/esh-mode.el (eshell-output-filter): * eshell/esh-proc.el (eshell-insertion-filter, eshell-sentinel): @@ -12913,7 +12922,7 @@ * help-fns.el (describe-function-1): Don't use the advice origname if it has no function definition. -2007-10-18 Johan Bockg,Ae(Brd +2007-10-18 Johan Bockg$(Q)[(Brd * net/tramp.el (tramp-rfn-eshadow-update-overlay): Save excursion. Use `save-restriction' rather than `widen'. @@ -13627,7 +13636,7 @@ (bs--get-mode-name, bs-mode): Fix typos in docstrings. (bs--format-aux): Doc fix. -2007-10-08 Micha,Ak(Bl Cadilhac +2007-10-08 Micha$(Q)a(Bl Cadilhac * progmodes/gud.el (gud-gud-gdb-command-name): Fix typo in docstring. @@ -13673,11 +13682,11 @@ * progmodes/gud.el (gud-display-line): Find source buffer even when GUD buffer has its own frame. -2007-10-08 Jan Dj,Ad(Brv +2007-10-08 Jan Dj$(Q)Z(Brv * term/x-win.el (icon-map-list): Set to nil for 22.1 compatibility. -2007-10-08 Jan Dj,Ad(Brv +2007-10-08 Jan Dj$(Q)Z(Brv * term/x-win.el (x-gtk-stock-map): Version is 22.2. @@ -14055,7 +14064,7 @@ * emacs-lisp/copyright.el (copyright-update): Don't update if the file already uses a more recent copyright version than the "current" one. -2007-10-03 Micha,Ak(Bl Cadilhac +2007-10-03 Micha$(Q)a(Bl Cadilhac * doc-view.el (doc-view-dvi->pdf-sentinel, doc-view-reset-slice) (doc-view-insert-image): Minor aesthetical docstring changes. @@ -14160,7 +14169,7 @@ * play/zone.el (zone-hiding-modeline): Use mode-line-format. -2007-09-29 Jan Dj,Ad(Brv +2007-09-29 Jan Dj$(Q)Z(Brv * term/x-win.el (x-gtk-stock-map): Version is 22.2. @@ -14430,7 +14439,7 @@ * indent.el (indent-for-tab-command): First check if the region is active. -2007-09-24 Micha,Ak(Bl Cadilhac +2007-09-24 Micha$(Q)a(Bl Cadilhac * whitespace.el (whitespace-tickle-timer): Don't install the timer if whitespace-rescan-timer-time is 0. @@ -14550,7 +14559,7 @@ * indent.el (indent-for-tab-command): Indent the region if transient-mark-mode and the region is active. -2007-09-21 Francesco Potort,Al(B +2007-09-21 Francesco Potort$(Q)b(B * progmodes/octave-inf.el (inferior-octave-mode): Use add-hook to add inferior-octave-directory-tracker to the buffer-local value @@ -14714,7 +14723,7 @@ (browse-url-elinks-sentinel): Use browse-url-elinks-new-window. Improve error message. -2007-09-19 Micha,Ak(Bl Cadilhac +2007-09-19 Micha$(Q)a(Bl Cadilhac * net/browse-url.el (browse-url-url-encode-chars): Use the right parameter name in the function body. @@ -14750,7 +14759,7 @@ * newcomment.el (comment-add): New arg EXTRA. (comment-region-default): Pass EXTRA if not indenting lines. -2007-09-17 Micha,Ak(Bl Cadilhac +2007-09-17 Micha$(Q)a(Bl Cadilhac * net/browse-url.el (browse-url-url-encode-chars): New function. URL-encode some chars in a string. @@ -14799,7 +14808,7 @@ (move-beginning-of-line): Remove unused var `start'. (blink-matching-open): Restructure in a more functional style. -2007-09-16 Micha,Ak(Bl Cadilhac +2007-09-16 Micha$(Q)a(Bl Cadilhac * calendar/holidays.el (list-holidays): Remove the cyclic alias. @@ -14957,7 +14966,7 @@ * term/rxvt.el (rxvt-function-map): Initialize in the declaration. -2007-09-12 Micha,Ak(Bl Cadilhac +2007-09-12 Micha$(Q)a(Bl Cadilhac * net/browse-url.el (browse-url-encode-url): Fix an infinite loop. New argument `filename-p' to use one set of confusing chars or another. @@ -15000,7 +15009,7 @@ 2007-09-10 Thien-Thi Nguyen * net/browse-url.el (browse-url-encode-url): Use copy-sequence. - Reported by Jan Dj,Ad(Brv . + Reported by Jan Dj$(Q)Z(Brv . 2007-09-10 Dave Love @@ -15008,7 +15017,7 @@ Move font-lock-builtin-face down from 4 to 7 to better keep the progression of color brightness, and to better match Org-mode's faces. -2007-09-10 Micha,Ak(Bl Cadilhac +2007-09-10 Micha$(Q)a(Bl Cadilhac * progmodes/meta-mode.el (meta-font-lock-keywords) (font-lock-match-meta-declaration-item-and-skip-to-next) @@ -15176,7 +15185,7 @@ * vc-arch.el (vc-arch-checkin): Fix typo. -2007-09-07 Johan Bockg,Ae(Brd +2007-09-07 Johan Bockg$(Q)[(Brd * cus-face.el (custom-theme-set-faces): Set face attributes locally for each frame. @@ -15245,7 +15254,7 @@ * complete.el (PC-do-completion): Don't try to treat empty string as an abbreviation. -2007-09-06 Johan Bockg,Ae(Brd +2007-09-06 Johan Bockg$(Q)[(Brd * help-fns.el (describe-variable): Keep doc's text properties. @@ -15272,7 +15281,7 @@ (normal-no-mouse-startup-screen): New fn, broken out. (normal-about-screen): New function, contents all new. -2007-09-05 Micha,Ak(Bl Cadilhac +2007-09-05 Micha$(Q)a(Bl Cadilhac * emacs-lisp/rx.el (rx): Fix typo in docstring. @@ -15281,7 +15290,7 @@ * cus-edit.el (custom-buffer-create-internal): Check tool-bar-mode is bound. -2007-09-05 Johan Bockg,Ae(Brd +2007-09-05 Johan Bockg$(Q)[(Brd * emacs-lisp/advice.el (ad-make-advised-docstring): Highlight note in doc string. @@ -15353,7 +15362,7 @@ (terminal-init-xterm): Use it. Deal with delete-frame hook. Add the selected frame to xterm-modify-other-keys-terminal-list. -2007-09-02 Jan Dj,Ad(Brv +2007-09-02 Jan Dj$(Q)Z(Brv * term/x-win.el (x-gtk-stock-map): Map diropen to system-file-manager. (icon-map-list): New variable. @@ -15399,7 +15408,7 @@ * vc-svn.el (vc-svn-diff-tree): Pass a list to vc-svn-diff. -2007-08-31 Micha,Ak(Bl Cadilhac +2007-08-31 Micha$(Q)a(Bl Cadilhac * textmodes/flyspell.el (flyspell-mark-duplications-exceptions): New variable. List of exceptions for the duplicated word rule. @@ -15409,7 +15418,7 @@ * files.el (create-file-buffer): If the filename sans directory starts with spaces, remove them. -2007-08-31 Jan Dj,Ad(Brv +2007-08-31 Jan Dj$(Q)Z(Brv * term/x-win.el (x-gtk-stock-map): Add etc/images to keys. (x-gtk-map-stock): Use two directory elements when matching @@ -15516,7 +15525,7 @@ * version.el (emacs-version): Increase to 23.0.50. -2007-08-29 Jan Dj,Ad(Brv +2007-08-29 Jan Dj$(Q)Z(Brv * term/x-win.el (x-gtk-stock-map): :version changed to 23.1. @@ -15572,7 +15581,7 @@ * env.el (getenv): Pass frame to getenv-internal. -2007-08-29 K,Aa(Broly L$,1 q(Brentey +2007-08-29 K$(Q)W(Broly L$(Q*S(Brentey * version.el (emacs-version): Show if multi-tty is present. @@ -15873,7 +15882,7 @@ (display-time-world-timer-second, display-time-world-mode-map): New variables. -2007-08-28 Jan Dj,Ad(Brv +2007-08-28 Jan Dj$(Q)Z(Brv * term/x-win.el (x-gtk-stock-map): New variable. (x-gtk-map-stock): New function. @@ -15881,7 +15890,7 @@ * info.el (info-tool-bar-map): Add :rtl keyword to right/left-arrow and prev/next-node. -2007-08-28 Johan Bockg,Ae(Brd (tiny change) +2007-08-28 Johan Bockg$(Q)[(Brd (tiny change) * play/gamegrid.el (gamegrid-init): Set line-spacing to 0. @@ -15981,7 +15990,7 @@ * vc.el (vc-annotate-warp-version): Don't use previous-line. -2007-08-27 Johan Bockg,Ae(Brd +2007-08-27 Johan Bockg$(Q)[(Brd * net/browse-url.el (browse-url-emacs): New function. @@ -15989,7 +15998,7 @@ * emacs-lisp/avl-tree.el: New file. -2007-08-26 Micha,Ak(Bl Cadilhac +2007-08-26 Micha$(Q)a(Bl Cadilhac * hi-lock.el (hi-lock-unface-buffer): Show a x-menu only if the mouse was used. @@ -16437,7 +16446,7 @@ undo-list when setting syntax-table properties. (ada-after-change-function): Use ada-set-syntax-table-properties. -2007-08-18 Micha,Ak(Bl Cadilhac +2007-08-18 Micha$(Q)a(Bl Cadilhac * progmodes/meta-mode.el (meta-indent-calculate-last): Remove. (meta-indent-current-nesting): Use a computation of the nesting @@ -16490,7 +16499,7 @@ (cperl-find-pods-heres): Fix an error when typing expressions like `s{a}{b}'. -2007-08-17 Micha,Ak(Bl Cadilhac +2007-08-17 Micha$(Q)a(Bl Cadilhac * mail/emacsbug.el (report-emacs-bug): Remove the last number of `emacs-version', use the topic prefix ``version; ''. Make MS-DOS @@ -16581,7 +16590,7 @@ sloppier, for the sake of GNU Mailman. (rmail-digest-rfc1153): Initialize `result' correctly. -2007-08-15 Micha,Ak(Bl Cadilhac +2007-08-15 Micha$(Q)a(Bl Cadilhac * mail/emacsbug.el (report-emacs-bug): Put `Bug: emacs-version; ' in the mail title. Suggested by Reiner Steib. @@ -17733,7 +17742,7 @@ * net/trampver.el: Update release number. -2007-07-22 Jan Dj,Ad(Brv +2007-07-22 Jan Dj$(Q)Z(Brv * startup.el (command-line-x-option-alist): Use x-handle-no-bitmap-icon. @@ -18378,7 +18387,7 @@ * isearch.el (isearch-edit-string): Call to isearch-push-state after the search. -2007-07-09 Jan Dj,Ad(Brv +2007-07-09 Jan Dj$(Q)Z(Brv * window.el (fit-window-to-buffer): Remove setting of window-min-height to 1 as enlarge-window uses the value to resize/shrink windows other @@ -18761,7 +18770,7 @@ * font-lock.el (lisp-font-lock-keywords-2): Recognize the new \(?1:..\) syntax as well. Reported by Juri Linkov . -2007-06-28 Jan Dj,Ad(Brv +2007-06-28 Jan Dj$(Q)Z(Brv * dnd.el (dnd-get-local-file-name): Set fixcase to t in call to replace-regexp-in-string. @@ -19374,7 +19383,7 @@ * diff-mode.el (diff-font-lock-keywords): Fix M. Kifer's last change. -2007-06-13 Johan Bockg,Ae(Brd (tiny change) +2007-06-13 Johan Bockg$(Q)[(Brd (tiny change) * term/xterm.el (terminal-init-xterm): Escape parens in character constants. @@ -19553,7 +19562,7 @@ * emacs-lisp/bytecomp.el (byte-compile-find-cl-functions): Match against file-name-nondirectory. Fix text on user customization variables. - Reported by Johan Bockg,Ae(Brd . + Reported by Johan Bockg$(Q)[(Brd . 2007-06-09 Alfred M. Szmidt (tiny change) @@ -19961,7 +19970,7 @@ * files.el (set-auto-mode): Doc fix. -2007-05-22 Jan Dj,Ad(Brv +2007-05-22 Jan Dj$(Q)Z(Brv * help-fns.el (find-source-lisp-file): New function. (describe-function-1): Use find-source-lisp-file to find source @@ -20195,7 +20204,7 @@ * dabbrev.el (dabbrev-eliminate-newlines): Renamed from dabbrev--eliminate-newlines. All uses changed. -2007-05-10 Micha,Ak(Bl Cadilhac +2007-05-10 Micha$(Q)a(Bl Cadilhac * man.el (Man-next-section): Don't consider the last line of the page as being part of any section. @@ -20378,7 +20387,7 @@ * image-dired.el (image-dired-display-image): Derive image-type from filename rather than assuming jpeg, in case no resizing was needed. -2007-04-25 Johan Bockg,Ae(Brd +2007-04-25 Johan Bockg$(Q)[(Brd * custom.el (defface): Doc fix. diff -r 3bf6293f3041 -r 695900050c0b lisp/vc.el --- a/lisp/vc.el Thu Mar 20 15:49:10 2008 +0000 +++ b/lisp/vc.el Thu Mar 20 15:51:45 2008 +0000 @@ -553,6 +553,8 @@ ;;; Todo: +;; - vc-state needs a new state for `added'. +;; ;; - vc-update/vc-merge should deal with VC systems that don't ;; update/merge on a file basis, but on a whole repository basis. ;; @@ -2869,6 +2871,7 @@ (set (make-local-variable 'vc-status) (ewoc-create #'vc-status-printer (vc-status-headers backend default-directory))) + (add-hook 'after-save-hook 'vc-status-mark-buffer-changed) (vc-status-refresh))) (put 'vc-status-mode 'mode-class 'special) @@ -2892,7 +2895,7 @@ ;; We are done, turn of the in progress message in the mode-line. (setq mode-line-process nil))) -(defun vc-add-to-vc-status-buffer (entry buffer) +(defun vc-status-add-entry (entry buffer) ;; Add one ENTRY to the vc-status buffer BUFFER. ;; This will be used to automatically add files with the "modified" ;; state when saving them. @@ -3115,6 +3118,36 @@ vc-status (lambda (crt) (vc-status-fileinfo->marked crt))))) +(defun vc-status-mark-buffer-changed () + (let* ((file (expand-file-name buffer-file-name)) + (version (and (vc-backend file) (vc-working-revision file))) + (found-vc-status-buf nil)) + (save-excursion + (dolist (status-buf (buffer-list)) + (set-buffer status-buf) + ;; look for a vc-status buffer that might show this file. + (when (eq major-mode 'vc-status-mode) + (setq found-vc-status-buf t) + (let ((def-dir (expand-file-name default-directory))) + ;; This test is cvs-string-prefix-p + (when (eq t (compare-strings file nil (length def-dir) def-dir nil nil)) + (let* ((file-short + (substring file (length def-dir))) + (entry + (cons + file-short + (if version + ;; This it not the correct test to check if + ;; the files is "added" for all backends. + ;; It does not work for git for example. + ;; vc-state needs a new state: `added'. + (if (string= "0" version) 'added 'modified) + 'unregistered)))) + (vc-status-add-entry entry status-buf)))))) + ;; We didn't find any vc-status buffers, remove the hook, it is + ;; not needed. + (unless found-vc-status-buf (remove-hook 'after-save-hook 'vc-status-mark-buffer-changed))))) + ;;; End experimental code. ;; Named-configuration entry points