emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Option for updating modeline VC state.


From: Óscar Fuentes
Subject: [PATCH] Option for updating modeline VC state.
Date: Sat, 26 Sep 2009 05:10:27 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

This comes from
http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=4515

In short, the VC state modeline is changed to signal `edited' the first
time the file is saved. Even if subsequent editions revert the file to
its pristine state, the VC state modeline will keep showing the `edited'
flag. As Dan is concerned about performance issues if VC asks the
backend for the state of the file, this is implemented as an option
disabled by default.


2009-09-24  Oscar Fuentes  <address@hidden>

        * lisp/vc-hooks.el (vc-always-update-modeline-after-save):
        new defcustom.
        (vc-after-save): Use it and when non-nil check the vc file state
        so the modeline reflects its actual state.


diff -cp "c:/apps/emacs/lisp/vc-hooks.el" "d:/vc-hooks.el"
*** c:/apps/emacs/lisp/vc-hooks.el      2009-09-24 07:25:53.000000000 +0200
--- d:/vc-hooks.el      2009-09-24 08:10:01.062500000 +0200
*************** If nil (the default), files covered by v
*** 96,101 ****
--- 96,110 ----
    :group 'vc
    :group 'backup)
  
+ (defcustom vc-always-update-modeline-after-save nil
+   "If non-nil, always update the state shown in the modeline
+ after saving the file. This may be time-consuming for some
+ backends. If nil, the modeline changes to `edited' when the file
+ is saved for the first time and it is not updated on subsequent
+ saves."
+   :type 'boolean
+   :group 'vc)
+ 
  (defcustom vc-follow-symlinks 'ask
    "What to do if visiting a symbolic link to a file under version control.
  Editing such a file through the link bypasses the version control system,
*************** Before doing that, check if there are an
*** 743,751 ****
                  ;; to avoid confusion.
                  (vc-file-setprop file 'vc-checkout-time nil))
             t)
-          (vc-up-to-date-p file)
           (eq (vc-checkout-model backend (list file)) 'implicit)
!          (vc-file-setprop file 'vc-state 'edited)
         (vc-mode-line file backend)
         ;; Try to avoid unnecessary work, a *vc-dir* buffer is
         ;; present if and only if this is true.
--- 752,766 ----
                  ;; to avoid confusion.
                  (vc-file-setprop file 'vc-checkout-time nil))
             t)
           (eq (vc-checkout-model backend (list file)) 'implicit)
!        (if vc-always-update-modeline-after-save
!            (progn
!              ;; Avoid using cached value on `vc-state':
!              (vc-file-setprop file 'vc-state 'nil)
!              (vc-file-setprop file 'vc-state (vc-state file backend)))
!          (and
!           (vc-up-to-date-p file)
!           (vc-file-setprop file 'vc-state 'edited)))
         (vc-mode-line file backend)
         ;; Try to avoid unnecessary work, a *vc-dir* buffer is
         ;; present if and only if this is true.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]