list. Handle multiple backends correctly.
(vc-find-new-backend): Function removed.
(vc-register): Use vc-responsible-backend, as before.
(vc-next-action-on-file): Do use vc-registered, not vc-backend.
Use vc-backend rather than vc-registered.
(vc-next-action-on-file): Use intern-soft.
Deal with read-only *vc-diff* buffer.
(vc-switch-backend): Short circuit if nothing is to be done.
Handle the case where (not (memq backend backends)).
Don't use vc-resynch-buffer which could lose unsaved editing.
(vc-transfer-file): Docstring fix.
(edit-vc-file, vc-next-action-on-file): Don't use find-file.
(vc-find-new-backend): New function split from vc-responsible-backend.
(vc-register): Use it.
(vc-responsible-backend): Remove REGISTER arg and add BACKENDS arg.
(vc-unregister): Drop BACKEND arg (it doesn't work anyway).
(vc-default-unregister, vc-revert-buffer): Docstring fix.
(vc-clear-headers): Don't use find-file.
(vc-revert-buffer): Use `and' again (must have been a braino).
(vc-switch-backend): Only prompt if requested.
(vc-default-receive-file): Update call to vc-unregister.
* vc-rcs.el (vc-rcs-unregister): Keep a backup of the master file.
(vc-rcs-receive-file): Avoid with-vc-properties.
Update call to vc-unregister.
Use constant `RCS' rather than (dynamically bound) var `backend'.
(vc-start-entry): New argument initial-contents. Don't visit the file
if it isn't already visited. Brought documentation up-to-date.
(vc-next-action, vc-register): Updated calls to vc-start-entry.
(vc-checkin): New optional arg initial-contents, which is passed to
vc-start-entry.
(vc-finish-logentry): Make sure to bury log buffer only if there
really is one. Call `vc-resynch-buffer' on log-file, not
buffer-file-name.
(vc-default-comment-history, vc-default-wash-log): New functions.
(vc-index-of): Removed.
(vc-transfer-file): Make do without the above.
(vc-default-receive-file): Call comment-history unconditionally. Pass
the resulting string to vc-checkin, instead of inserting it into the
comment ring.
* vc.el: (toplevel): Don't require `dired' at run-time.
(vc-dired-resynch-file): Remove autoload cookie.
2000-09-05 Andre Spiegel <spiegel@gnu.org>
* vc.el: Made several backend functions optional.
(vc-default-responsible-p): New function.
(vc-merge): Use RET for first version to trigger merge-news, not
prefix arg.
(vc-annotate): Handle backends that do not support annotation.
(vc-default-merge-news): Removed. The existence of a merge-news
implementation is now checked on caller sites.
* vc-hooks.el (vc-default-mode-line-string): Removed CVS special
case.
* vc-cvs.el (vc-cvs-mode-line-string): New function, handles the
special case that has been removed from the default in vc-hooks.el.
2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
* vc.el (vc-log-edit): Properly handle the case where FILE is nil.
2000-09-05 Andre Spiegel <spiegel@gnu.org>
* vc-hooks.el: Require vc during compilation.
(vc-file-setprop): Use `vc-touched-properties' if bound by the new
macro `with-vc-properties' in vc.el.
(vc-file-getprop): Doc fix.
(vc-after-save): Call `vc-dired-resynch-file' only if vc is loaded.
* vc.el: Require dired-aux during compilation.
(vc-name-assoc-file): Moved to vc-sccs.el.
(with-vc-properties): New macro.
(vc-checkin, vc-checkout, vc-revert, vc-cancel-version,
vc-finish-steal): Use it.
(vc-cancel-version): Moved RCS-specific code to vc-rcs.el. The call
to the backend-specific function is now supposed to do the checkout,
too.
(vc-log-edit): Handle FILE being nil and added a FIXME for log-edit.
* vc-cvs.el (vc-cvs-checkin, vc-cvs-checkout): Don't bother to
set file properties; that gets done in the generic code now.
* vc-rcs.el (vc-rcs-uncheck): Renamed to `vc-rcs-cancel-version'.
Changed parameter list, added code from vc.el that does the
checkout, possibly with a double-take.
* vc-sccs.el (vc-sccs-name-assoc-file): Moved here from vc.el.
(vc-sccs-add-triple, vc-sccs-rename-file, vc-sccs-lookup-triple): Use
the above under the new name.
(vc-sccs-uncheck): Renamed to `vc-sccs-cancel-version'. Changed
parameter list, added checkout command.
(vc-sccs-checkin, vc-sccs-checkout): Don't bother to set file
properties; that gets done in the generic code now.
2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
* vc.el: Docstring fixes (courtesy of checkdoc).
2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
* vc.el (vc-checkout-writable-buffer-hook)
(vc-checkout-writable-buffer): Remove.
(vc-start-entry): Always call vc-log-edit, never vc-log-mode.
(vc-log-mode): Make it into a clean derived major mode.
(vc-log-edit): Mark buffer unmodified (as vc-log-mode did) and use
vc-log-mode if log-edit is not available.
(vc-dired-mode-map): Don't set-keymap-parent yet.
(vc-dired-mode): Do set-keymap-parent here.
(vc-dired-buffers-for-dir): Nop if dired is not loaded.
not necessary. If verbose in state `needs-patch', do the same as
under `up-to-date'. When NOT verbose and `needs-patch', check out
latest version instead of `merge-news'.
(vc-next-action-dired): Don't mess with default-directory here; it
breaks other parts of dired. It is the job of the
backend-specific functions to adjust it temporarily if they need
it.
(vc-next-action): Remove a special CVS case.
(vc-clear-headers): New optional arg FILE.
(vc-checkin, vc-checkout): Set properties vc-state and
vc-checkout-time properly.
(vc-finish-steal): Call steal-lock, not steal, which doesn't
exist.
(vc-print-log): Use new backend function `show-log-entry'.
(vc-cancel-version): Do the checks in a different order. Added a
FIXME concerning RCS-only code.
(vc-responsible-backend): New optional arg `register'.
(vc-default-could-register): New function.
(vc-dired-buffers-for-dir, vc-dired-resynch-file): New functions.
(vc-resynch-buffer): Call vc-dired-resynch-file.
(vc-start-entry, vc-finish-logentry, vc-revert-buffer): Use
vc-resynch-buffer instead of vc-resynch-window.
(vc-next-action-dired): Don't redisplay here, that gets done as a
result of the individual file operations.
(vc-retrieve-snapshot): Corrected prompt order.
(vc-version-diff): Use `require' to check for existence of
diff-mode.
(vc-do-command): Doc fix.
(vc-finish-logentry): When checking in from vc-dired, choose the
right backend for logentry check.
(vc-dired-mode-map): Inherit from dired-mode-map.
(vc-dired-mode): Local value of dired-move-to-filename-regexp
simplified.
(vc-dired-state-info): Removed, updated caller.
(vc-default-dired-state-info): Use parentheses instead of hyphens.
(vc-dired-hook): Use vc-BACKEND-dir-state, if available.
(vc-dired-listing-switches): New variable.
(vc-directory): Use it, instead of dired-listing-switches.
(vc-revert-buffer): Hide the frame for dedicated windows
(vc-update-changelog): Split into generic part and default
implementation. Doc string adapted.
(vc-default-update-changelog): New function. Call the `rcs2log'
script in exec-directory, to fix a long-standing nuisance.
(vc-next-action-on-file): Doc fix.
(vc-maybe-resolve-conflicts): Don't just toggle smerge-mode.
(vc-print-log): Eval `file' before constructing the continuation.
(vc-next-action-on-file): Corrected several messages.
(vc-merge): Add prefix arg `merge-news'; handle it.
(vc-finish-logentry): Thinko in the "same comment"
detection.
(vc-parent-buffer, vc-parent-buffer-name): Protect them
against kill-all-local-variables.
(vc-log-edit): Don't save vc-parent-buffer any more.
(vc-last-comment-match): Initialize to an empty string.
(vc-post-command-functions): New hook.
(vc-do-command): Run it.
(vc-next-action-on-file): Remove unnecessary pop-to-buffer.
(vc-finish-logentry): Only add the comment to the ring if it's
different from the last comment entered.
(vc-new-comment-index): New function.
(vc-previous-comment): Use it. Make the minibuffer message
slightly less terse.
(vc-comment-search-reverse): Make it work forward as well. Don't
set vc-comment-ring-index if no match is found. Use
vc-new-comment-index.
(vc-comment-search-forward): Use vc-comment-search-reverse.
(vc-dired-mode-map): Don't inherit from dired-mode-map since
define-derived-mode will do it for us. Bind `v' to a keymap that
inherits from vc-prefix-map so that we can bind `vt' without
binding C-x v t.
(vc-retrieve-snapshot): Parenthesis typo.
(vc-create-snapshot, vc-default-create-snapshot): Swap DIR
and NAME.
(vc-retrieve-snapshot): Split into two parts.
(vc-default-retrieve-snapshot): New function.
(vc-do-command): Remove unused commands.
(vc-version-diff): Make sure default-directory ends with a slash.
Move the window commands into a vc-exec-after.
(vc-print-log): Move more of the code into the `vc-exec-after'.
(vc-exec-after): Fix disassembly of previous sentinel.
(vc-print-log): Search current revision from beginning of buffer.
(vc-revert-buffer): Clear echo area after the diff is finished.
(vc-prefix-map): Removed definition of "t" for terse display in vc
dired.
(vc-dired-mode-map): Inherit from dired-mode-map. Added
definition of "vt" for terse display.
(vc-dired-mode): Fix dired-move-to-filename-regexp.
(vc-exec-after): Avoid caddr.
(vc-exec-after): New function.
(vc-do-command): Use it to add a termination message for async
procs.
(vc-checkout): Try to handle a missing-backend situation.
(vc-version-diff): Use vc-exec-after to fix the behavior for diffs
of a directory with a backend using async diffs.
(vc-print-log): Use vc-exec-after and use log-view-goto-rev if
present.
(vc-next-action-on-file): Use vc-revert-buffer to revert
when there are no changes.
(vc-prefix-map): Move the autoload to vc-hooks.el and move
the `fset' outside of the defvar so that it works even if
vc-prefix-map was already defined.
(vc-setup-buffer): New function, split out of vc-do-command.
(vc-do-command): Allow BUFFER to be t to mean `just use the
current buffer without any fuss'.
(vc-version-diff): Change the `diff' backend operation to just put
the diff in the current buffer without erasing it. Always use
(vc-workfile-unchanged-p): If checkout-time comparison is
not possible, use vc-BACKEND-workfile-unchanged-p.
(vc-default-workfile-unchanged-p): New function. Delegates to a
full vc-BACKEND-diff.
(vc-editable-p): Renamed from vc-writable-p.
(with-vc-file, vc-merge): Use vc-editable-p.
(vc-do-command): Remove unused var vc-file and fix the
doubly-defined `status' var. Add a user message when starting an
async command.
(vc-restore-buffer-context, vc-resynch-buffer, vc-start-entry)
(vc-finish-steal, vc-checkin, vc-finish-logentry, vc-rename-file):
Use with-current-buffer.
(vc-buffer-sync): Use unless.
(vc-next-action-on-file): If the file is 'edited by read-only,
make it read-write instead of trying to commit.
(vc-version-diff, vc-update-change-log): Use `setq
default-directory' rather than `cd'.
(vc-log-edit): Don't forget to set default-directory in the
buffer.
(vc-checkout): Don't do anything special for ange-ftp
files since ange-ftp already has vc-registered return nil.
(vc-do-command): Use file-relative-name.
(vc-responsible-backend): Use vc-backend if possible.
(vc-create-snapshot): Improve the `interactive' spec. Add support
for branches and dispatch to backend-specific `create-snapshot'.
(vc-default-create-snapshot): New function, containing the bulk of
the old vc-create-snapshot.
(vc-retrieve-snapshot): Improve the interactive spec.
(vc-do-command): Get rid of the `last' argument.
(vc-header-alist): Remove, replaced by vc-X-header.
(vc-insert-headers): Use vc-X-header instead of vc-header-alist.
(vc-dired-hook): Use expand-file-name instead of concat.
(vc-directory): Use file-name-as-directory.
(vc-snapshot-precondition, vc-create-snapshot)
(vc-retrieve-snapshot): Allow the command to operate on any
directory.
Update Copyright and add a crude list of backend funs.
(vc-writable-p): New function.
(with-vc-file): Use vc-writable-p.
(vc-next-action-on-file): Update call to vc-steal-lock and
cleanup.
(vc-register): Avoid vc-name.
(vc-locking-user): Remove.
(vc-steal-lock): Make the `owner' arg non-optional.
(vc-merge): Use vc-writable-p instead of vc-locking-user and
vc-checkout-model.
(vc-default-dired-state-info): Use vc-state instead of
vc-locking-user and return special strings for special states.
(vc-dired-hook): Use vc-up-to-date-p instead of vc-locking-user
and get rid of one of the special CVS cases.
(vc-cancel-version): prettify error message with \\[...].
(vc-rename-master): New function.
(vc-rename-file): Use vc-BACKEND-rename-file (which might in turn
use vc-rename-master) instead of vc-BACKEND-record-rename. Make
the CVS special case generic.
(vc-default-record-rename): Remove.
(vc-file-tree-walk-internal): Only call FUNC for files that are
under control of some VC backend and replace `concat' with
expand-file-name.
(vc-file-tree-walk): Update docstring.
(vc-version-diff, vc-snapshot-precondition, vc-create-snapshot)
(vc-retrieve-snapshot): Update call to vc-file-tree-walk.
(vc-version-diff): Expand file name read from the
minibuffer. Handle the case when a previous version number can't
be guessed. Give suitable messages when there were no differences
found.
(vc-clear-headers): Call backend-specific implementation, if one
exists.
(vc-cancel-version): Made error checks generic. When done, clear
headers generically, too.
(vc-locking-user): Moved from vc-hooks.el.
(vc-version-diff): Left out a vc- in call to
vc-call-backend.
(vc-default-dired-state-info, vc-default-record-rename)
(vc-default-merge-news): Update for the new backend argument.
(vc-merge): Use vc-find-backend-function.
(vc-register): Put a FIXME note for a newly found bug.
Call vc-call-backend without the leading vc-.
(vc-responsible-backend, vc-finish-logentry, vc-annotate)
(vc-check-headers): Call vc-call-backend without the leading vc-.
(vc-annotate-time-span): Replace confusing use of `cond' with
`or'.
(vc-annotate-display): Replace confusing use of `cond' with `or'.
Call vc-call-backend without the leading vc-.
(vc-process-filter): New function.
(vc-do-command): Setup `vc-process-filter' for the async process.
(vc-maybe-resolve-conflicts): New function to reduce
code-duplication. Additionally, it puts the buffer in
`smerge-mode' if applicable.
(vc-next-action-on-file): Use `vc-maybe-resolve-conflicts' after
calling `merge-news'.
(vc-merge): Use `vc-maybe-resolve-conflicts' after calling
`merge'.
(vc-log-edit): New function. Replacement for `vc-log-mode' by
interfacing to log-edit.el.
(vc-start-entry): Call `vc-log-edit' instead of `vc-log-mode' if
log-edit is available.
(vc-resolve-conflicts): Delegate to `smerge-ediff' if available.
(vc-register): Remove `vc-buffer-backend' setup.
(vc-log-mode-map): New name for vc-log-entry-mode and merge the
defvar and the initialization.
(vc-log-mode): Minor docstring fix and use vc-log-mode-map.
(vc-file-clear-masterprops): Removed.
(vc-checkin, vc-revert-buffer): Removed calls to the above.
(vc-version-diff): Use buffer-size without argument.
(vc-register): Heed vc-initial-comment.
(vc-workfile-unchanged-p): Remove unused argument
`want-differences-if-changed' and simplify.
(vc-next-action-on-file) [needs-merge]: Resynch the buffer.
(vc-revert-buffer): Use `unchanged-p' rather than vc-diff's status
output (which is invalid for async vc-diff) to decide whether to
do the revert silently or not.
(with-vc-file, vc-next-action, vc-version-diff)
(vc-dired-mark-locked): Replaced usage of vc-locking-user with
vc-state or vc-up-to-date-p.
(vc-merge): Use vc-backend-defines to check whether merging is
possible. Set state to 'edited after successful merge.
(vc-recompute-state, vc-next-action-on-file): Update to
new `vc-state' semantics.
(vc-finish-steal): Set 'vc-state to 'edited rather than setting
'vc-locking-user to the current user.
(vc-merge): Inline vc-backend-merge. Comment out code that I
don't understand and hence can't adapt to the new `vc-state' and
`vc-locking-user' semantics.
(vc-backend-merge): Remove.
(vc-do-command): kill-all-local-variables, to reset any
major-mode in which the buffer might have been put earlier. Use
`remove' and `when'. Allow `okstatus' to be `async' and use
`start-process' in this case.
(vc-version-diff): Handle the case where the diff looks empty
because of the use of an async process.
(vc-next-action-on-file): Removed optional parameter
`simple'. Recompute state unconditionally.
(vc-default-toggle-read-only): Removed.
(vc-backend-dispatch, vc-annotate-mode-syntax-table):
Remove.
(vc-prefix-map): Move from vc-hooks.el and make autoloaded.
(vc-release-greater-or-equal-p): Move to vc-rcs.el.
(vc-file-clear-masterprops): Braindead "fix". It was a nop and
still is. So maybe it should be removed.
(vc-head-version, vc-find-binary): Remove.
(vc-recompute-state): Move from vc-hooks.el.
(vc-next-action-on-file): Add a `simple' argument to allow
avoiding the `recompute' step (use for vc-cvs-simple-toggle).
(vc-default-toggle-read-only, vc-default-record-rename): New
functions.
(vc-next-action, vc-dired-hook): Use vc-state instead of
vc-cvs-status.
(vc-dired-mode-map): Properly defvar it.
(vc-print-log): Call log-view-mode if available.
(small-temporary-file-directory): defvar instead of use boundp.
(vc-merge-news): Moved to vc-cvs.el.
(vc-default-merge-news): New function.
(function' quotes.
(vc-annotate-mode-map, vc-annotate-mode-syntax-table): Initialize
directly in the defvar.
(vc-do-command): Bind inhibit-read-only so as to properly handle
the case where the destination buffer has been made read-only.
(vc-diff): Delegate to vc-version-diff in all cases.
(vc-version-diff): Setup the *vc-diff* buffer as was done in
vc-diff.
(vc-annotate-mode-variables): Removed (code moved partly to
defvars and partly to vc-annotate-add-menu).
(vc-annotate-mode): Turned into a derived-mode.
(vc-annotate-add-menu): Moved in code in
vc-annotate-mode-variables.
(vc-update-change-log): Use make-temp-file if available.
(vc-next-action-on-file): Added handling of state
`unlocked-changes'.
(vc-checkout-carefully): Is now practically obsolete, unless the
above is too slow to be enabled unconditionally.
(vc-update-change-log): Fixed typo.
(vc-responsible-backend): New function.
(vc-register): Largely rewritten.
(vc-admin): Removed (implementation moved into vc-register).
(vc-checkin): Redocumented.
(vc-finish-logentry): If no backend defined yet (because we are in
the process of registering), use the responsible backend.
Updated callers of `vc-checkout-required' to use
`vc-checkout-model'.
(vc-backend-release, vc-backend-release-p): Functions
moved into vc-rcs.el
(vc-backend-revert): Function moved into `vc-revert';
`vc-next-action' must be updated to accomodate this change.
(vc-backend-steal): Function moved into `vc-finish-steal'.
(vc-backend-logentry-check): Function moved into
`vc-finish-logentry'.
(vc-backend-printlog): Function moved into `vc-print-log'.
(vc-backend-uncheck): Function moved into `vc-cancel-version'.
(vc-backend-assign-name): Function moved into
`vc-create-snapshot'.
(vc-workfile-unchanged-p,vc-diff,vc-version-diff): Updated
to use the vc-BACKEND-diff functions instead; `vc-diff' is now
working.
Typo fixed. This checkin is made with our new VC code
base for the very first time. A simple `(vc-checkin
(buffer-file-name))' was used to perform it.
(vc-checkin): Merged with `vc-backend-checkin' and updated
to match the split into various backends.
(vc-backend-checkin): Removed. Merged with `vc-checkin'.
(vc-retrieve-snapshot): Bug fix.
(vc-next-action-on-file): Bug found and fixed.
(vc-checkout, vc-version-other-window, vc-retrieve-snapshot)
(vc-cancel-version): Handle of vc-BACKEND-checkout updated.
(vc-next-action-on-file): Rewritten for the new state model.
(vc-backend-merge-news): Renamed to `vc-merge-news'. (Specific parts
still need to be split, and implemented for RCS).
(vc-admin): Updated to handle selection of appropriate
backend. Current implementation is crufty and need re-thinking.
(vc-annotate-get-backend, vc-annotate-display-default)
(vc-annotate-add-menu, vc-annotate, vc-annotate-display): Annotate
functionality updated quite a lot to support multiple backends.
Variables `vc-annotate-mode', `vc-annotate-buffers',
`vc-annotate-backend' added.
Renamed
`vc-uses-locking' to `vc-checkout-required'. Renamed the `locked'
state to `reserved'.
(vc-update-change-log): Use small-temporary-file-directory,
if defined. (Merged from main line, slightly adapted.)
Split the annotate feature into a BACKEND specific part
and moved it from the vc-cvs.el file to this one.
(vc-resynch-window): Added TODO comment: check for
interaction with view mode according to recent RCS change.
(vc-backend-merge-news): Merged "CMUP" patch from mainline.
Converted the remaining function comments to
documentation strings.
(vc-backend-release, vc-release-greater-or-equal)
(vc-backend-release-p, vc-trunk-p, vc-branch-p, vc-branch-part)
(vc-minor-part, vc-previous-version): Functions that operate and
compare revision numbers got proper documentation. Comments added
about their possible removal.
(vc-latest-on-branch-p): Function removed and replaced in
the vc-backend.el files.
(vc-backend-diff): Function removed and placed in the
backend files.
(vc-backend-checkout): Function removed and replaced in
the vc-backend.el files.
(vc-backend-admin): Removed and replaced in the
vc-backend.el files.
(Martin): Removed all the annotate functionality since it
is CVS backend specific.
[Merged from mainline.]
(vc-dired-mode): Make the dired-move-to-filename-regexp
regexp match the date, to avoid treating date as file size.
Add YYYY S option to WESTERN/
Require `compile' when compiling.
(vc-logentry-check-hook): New option.
(vc-steal-lock): Use compose-mail.
(vc-dired-mode-map): Defvar when compiling.
(vc-add-triple, vc-record-rename, vc-lookup-triple): Moved to
vc-sccs.el and renamed. Callers changed.
(vc-backend-checkout, vc-backend-logentry-check)
(vc-backend-merge-news): Doc fix.
(vc-default-logentry-check): New function.
(vc-backend-checkin, vc-backend-revert, vc-backend-steal)
(vc-backend-uncheck, vc-backend-print-log, vc-backend-assign-name)
(vc-backend-merge): Doc fix. Use backend functions.
(vc-check-headers): Use backend functions.
(vc-backend-release): Call vc-system-release.
(vc-rcs-release, vc-cvs-release, vc-sccs-release): Moved to
backend files.
(vc-backend-release): Dispatch to backend functions.
(vc-backend-release-p): Don't mention CVS, RCS. [The SCCS case
probably needs attention.]
(vc-dired-mode, vc-dired-reformat-line, vc-dired-purge):
Doc fix.
(vc-fetch-cvs-status): Moved to vc-cvs.el and renamed.
(vc-default-dired-state-info): New function.
(vc-dired-state-info): Dispatch to backends.
(vc-dired-hook): Doc fix. Simplify, pending removal of CVS specifics.
(vc-file-clear-masterprops, vc-latest-on-branch-p)
(vc-version-other-window, vc-backend-assign-name): Removed
references to vc-latest-version; sometimes changed into
vc-workfile-version.
(with-vc-file, vc-next-action-on-file, vc-merge)
(vc-backend-checkout): Changed calls to `vc-checkout-model' to
`vc-uses-locking'.
(vc-fetch-cvs-status): Use renamed vc-cvs-parse-status.
Some doc fixes for autoloaded and interactive functions.
Fix compilation warnings from ediff stuff.
(vc-rcs-release, vc-cvs-release, vc-sccs-release): Custom fix.
This is 1999-03-13T05:04:24Z!kwzh@gnu.org from the emacs sources
(vc-next-action-dired): Cleanup. Let vc-dired-terse-mode be nil here,
so that checked-in files don't vanish.
(vc-dired-toggle-terse-mode): New function.
(vc-dired-hook): Handle terse mode.
(vc-dired-purge): New function.
(vc-directory): Handle vc-dired-recurse.
(vc-dired-hook): Don't show "." and "..".
window configuration correctly.
(vc-next-action): Save window configuration for vc-next-action-dired.
(vc-finish-logentry): Only kill log buffer if it does exist.
(vc-dired-mode): Rewritten so that it works entirely through
dired-after-readin-hook. Subdirectories are handled just as in
ordinary dired.
(vc-dired-hook): New function.
(vc-state-info, vc-dired-reformat-line): Adapted.
(vc-dired-update, vc-dired-update-line): Removed.
(vc-directory): Rewritten.
(vc-directory-18): Removed.
(vc-dired-mark-locked): New function, bound to "*l" in vc-dired-mode.
(vc-do-command): Only compute vc-name if it is really needed.
(vc-fetch-cvs-status): New function.
(vc-dired-hook): Use it.
(vc-next-action-on-file): Use it.
(vc-backend-revert): For CVS, revert to the version the buffer was
based on, not the latest on the current branch (same behavior as
for RCS). For SCCS, forget vc-workfile-version so that it gets
recomputed.
(vc-revert-buffer): Rewrote doc string to explain the above.
(vc-finish-logentry): Don't add extra newline.
check-in, but file on disk has changed.
(vc-do-command): Consider LAST argument only if FILE is non-nil.
(vc-add-triple, vc-record-rename, vc-lookup-file): Find
vc-name-assoc-file based on vc-name of FILE.
(vc-backend-admin, vc-rename-file): Handle the SCCS PROJECTDIR feature.
(vc-do-command): Rewrote doc string.
(vc-restore-buffer-context): Restore point and mark only if they don't
match the context.
(vc-revert-buffer1, vc-clear-headers): Use save-excursion to relocate
point and mark, and vc-restore-buffer-context as a backup.
(vc-resynch-buffer): When operating on the current buffer, don't use
save-excursion, because that would undo the effects of the above
functions.
(vc-resynch-window): Deleted code that removed vc-find-file-hook
temporarily. This was unnecessary, because find-file-hooks are not
called when the buffer is reverted.
(vc-register): Added comment for prev change.
(vc-annotate-car-last-cons, vc-annotate-time-span):
Rename arg assoc-list to a-list.
(vc-annotate-display): All support for XEmacs extents removed.
Functions `set-face-*' are called only when a face is created.
(vc-backend-checkout): Use "cvs edit" for files with manual checkout.
(vc-minor-part, vc-previous-version): New functions.
(vc-diff): Don't ask or guess version numbers.
(vc-version-diff): Suggest default versions based on the file state.
number to compare with.
(vc-retrieve-snapshot): If no NAME is specified, check out
latest versions of all unlocked files.
(vc-next-action-on-file): For CVS files with implicit checkout: if
unmodified, don't do anything.
(vc-clear-headers): Regexp more restricted, so as not to destroy file
contents by mistake.
(vc-backend-merge-news): Better analysis of status reported by CVS.
Set file properties accordingly.
and put it into vc-annotate-mode-map.
(vc-annotate-add-menu): Don't init vc-annotate-mode-menu,
just add the bindings to it. Display progress messages.
(vc-annotate-mode-menu): New defvar.
(vc-annotate-ratio): Move defvar, add initial value.
(vc-annotate-display-default): Display progress messages.
(vc-annotate-display): Use vc-annotate-color-map.
vc-backend-checkout, vc-backend-steal): Use `vc-user-login-name'
instead of `user-login-name'.
(vc-update-change-log): If `user-full-name' is nil, try
`user-login-name'. Failing that, use uid as a string.
(vc-make-buffer-writable-hook): Removed (was unused).
(vc-backend-checkout): SCCS case: handle empty revision number.
(vc-diff): Don't pop to the *vc-diff* buffer if file is unchanged.
Better doc strings for a few variables.
(vc-directory): Take DIRNAME as an argument. Ask for it in
the minibuffer.
Don't kill pre-existing vc-dired buffers (dired now re-uses the
right one).
(vc-file-tree-walk): New argument DIRNAME. Updated all callers.
(vc-dired-update): New function. `g' in vc-dired-mode calls it.
(vc-dired-reformat-line): Handle different ls -l formats.
(vc-next-action-dired): Adjust default-directory before calling
vc-next-action-on-file.
(vc-next-action-on-file): Handle CVS merge in vc-dired-mode correctly.
(vc-next-action): Ask for a check-in comment if there are "added" CVS files.
Don't special-case single files in vc-dired-mode.
(vc-file-clear-masterprops): Typo fix.
(vc-latest-on-branch-p): Always true for CVS.
(vc-directory): Header change. Do display the buffer, even if no
locked/registered files were found.
Provide a better header. Corrected the check whether any files were
found at all (don't display a listing in this case). Under CVS,
display cvs-status rather than vc-locking-user.
(vc-next-action-on-file): When doing a check-in in vc-dired-mode, find
the file in another window.
(vc-next-action-dired): Update dired listing while processing the
files.
(vc-next-action): Check whether a check-in comment is really needed
for this mass operation.
(vc-checkout): Resynch the buffer, even if it's not current.
(vc-dired-state-info, vc-dired-update-line): New functions.
(vc-dired-prefix-map): Added local definition for `g' and `='.
(vc-dired-reformat-line): Simplified. Erase the hardlink count from
the listing, because it doesn't relate to version control.
(vc-rcs-release, vc-cvs-release, vc-sccs-release): New variables, may
be set by the user.
(vc-backend-release, vc-release-greater-or-equal, vc-backend-release-p):
New Functions.
(vc-do-command): Allow FILE to be nil.
(vc-backend-checkin): When creating a branch, don't bother to unlock
the old version if this is RCS 5.6.2 or higher.
(vc-next-action-on-file): Allow lock-stealing only if RCS 5.6.2 or
higher.
(vc-backend-admin, vc-backend-checkin): If available, use ci -i and -j.
Updated Developer's Notes.
added, but not yet committed.
(vc-backend-checkout): RCS case: In non-strict locking mode, force to
overwrite the writable workfile. CVS case: Do the right thing in
CVSREAD-mode.
(vc-backend-checkin): Clear master properties before doing the
check-in. In the CVS case, catch error and display an appropriate
message in the echo area.
(vc-backend-revert): Clear master properties, because some might get
outdated by the operation.
(vc-backend-merge-news): Scan the output of "cvs update" and find out
whether conflicts have occurred.
(vc-finish-logentry): Delete the *VC-log* buffer *before* doing the
actual check-in. That leads to a better display in case the check-in
fails.
(vc-latest-on-branch-p): Defined it for CVS in the obvious way.
(vc-next-action-on-file): Removed special CVS cases. At this level,
CVS is now mostly handled like the other backends.
(vc-backend-checkout): CVS case: Clear sticky tag as default when
doing a verbose checkout. (This used to be done in
vc-next-action-on-file.)
and vc-restore-buffer-context, so we can use it also in other
circumstances.
(vc-buffer-context, vc-restore-buffer-context): New functions.
(vc-clear-headers): New function, uses the above.
(vc-cancel-version): When `norevert', locks the most recent remaining
version. Also, refuse to work on anything but the latest version of
a branch. Removed the check whether the version is the user's,
because that is difficult to decide, now that multiple branches are
possible.
(vc-latest-on-branch-p): New function.
(vc-head-version): New access function to the already existing
property.
(vc-trunk-p, vc-branch-part): Functions moved before first use.
(vc-locked-example): Renamed to vc-snapshot-precondition. It now also
checks whether any of the files are visited.
(vc-retrieve-snapshot): If any files are visited, ask whether to
revert their buffers. Use vc-backend-checkout and vc-resynch-buffer
to do that, instead of vc-checkout.
(vc-backend-checkout): Adjust default-directory so that the
checked-out file goes to the right place.
if nil, is *vc*). Updated all callers.
(vc-next-action-on-file, vc-diff, vc-version-diff, vc-backend-diff):
Use buffer *vc-diff* for diff output instead of *vc*.
(vc-add-triple, vc-lookup-triple, vc-record-rename):
Use absolute file names to access the SCCS named configuration files
("VC-names").
(vc-retrieve-snapshot): Use vc-checkout instead of
vc-backend-checkout, as the former also updates the current buffer.
(vc-file-tree-walk, vc-file-tree-walk-internal): Use
expand-file-name, so that FUNC gets called with an unabbreviated name.
'none-value of vc-locking-user, and the consistent caching
of all properties. Especially, make the properties survive
check-ins and check-outs. Various minor bug fixes.
(vc-file-clear-masterprops): New function.
(vc-backend-checkin, vc-backend-revert): Set vc-locking-user
to 'none if the file is unlocked.
(vc-backend-checkin, vc-backend-revert, vc-backend-checkout):
Use vc-file-clear-masterprops, and adjust those properties
that are not cleared.
(vc-resynch-window): Temporarily remove vc-find-file-hook, so
that we don't lose the file properties during check-in/out.
(vc-resynch-window): Do not try to delete the current window if
`vc-keep-workfiles' is nil (doesn't make sense; killing the
buffer is enough.)
(vc-backend-checkin): Rewrote the code that adjusts the default
branch and removes any locks that might remain after check-in.
(vc-cancel-version): Abort with error message in the CVS case.
(The error used to be signalled in vc-backend-uncheck, which is
a little too late.)
(vc-minor-revision): Function removed.
(vc-default-backend, vc-keep-workfiles, vc-consult-headers):
(vc-mistrust-permissions, vc-path): Vars moved to vc-hooks.el.
(vc-match-substring, vc-lock-file, vc-parse-buffer, vc-master-info):
(vc-log-info, vc-consult-rcs-headers, vc-fetch-properties):
(vc-backend-subdirectory-name, vc-locking-user, vc-true-locking-user):
(vc-latest-version, vc-your-latest-version, vc-branch-version):
(vc-workfile-version): Functions moved to vc-hooks.el.
(vc-trunk-p, vc-minor-revision, vc-branch-part): Functions moved
here from vc-hooks.el.
properly to vc-do-command.
(vc-update-change-log): Use vc-buffer-backend in menu-enable.
(vc-file-clearprops, vc-workfile-version): Functions moved to vc-hooks.el.
Add branch support for RCS; treat CVS more like RCS and SCCS.
(vc-next-action-on-file): changed CVS handling, such that C-x C-q
works as with RCS and SCCS.
(vc-consult-rcs-headers): New function.
(vc-branch-version): New per-file property, refers
to the RCS version selected by `rcs -b'.
(vc-workfile-version): New function. Also new per-file property
(vc-consult-headers): New parameter variable.
(vc-mistrust-permissions): Default set to `nil'.
(vc-locking-user): Property is now cached. The other functions
update it as necessary. Attempts to use RCS headers if enabled.
(vc-log-info, vc-parse-buffer): Various bug fixes. Added support
for property `vc-branch-version'.
(vc-backend-checkout): RCS case: if no explicit version
is specified, check out `vc-workfile-version'. After check-out,
set `vc-workfile-version' according to the version number
reported by "co".
(vc-backend-checkin): RCS case: remove any remaining locks
if a new branch was created. After every check-in, adjust
the current branch using `rcs -b' (this cannot be avoided).
CVS case: allow for explicit checkin, but only on the trunk.
(vc-next-action-on-file, vc-backend-checkout, vc-backend-checkin,
vc-backend-revert, vc-backend-diff): Explicitly use
vc-workfile-version as the default version to operate on.
in *vc* to be re-set each time this function uses it.
Discard current dir from front of FILE later on,
and only if last = `WORKFILE'.
Undo Dec 10 change:
(vc-directory, vc-dired-reformat-line): Changed back.
(vc-directory-18): Old function restored.
(vc-dir-all-files): Function deleted.
(vc-next-action-on-file): If file is not registered,
check file out after registering it.
(vc-next-action-dired): Restore the window configuration after
doing vc-next-action on each file in a VC-dired buffer.
(file-regular-p-18): New function.
(file-regular-p): Define, if not already defined.
away relative-pathname information. This function no longer sets the
default directory. Also, mark the *vc* output buffer unmodified.
(vc-revert-buffer1): Handle font-lock mode correctly.
(vc-diff, vc-print-log): vc-do-command no longer sets the default
directory, but doing so is advantageous for these cases.
(file-executable-p-18): Better portability to Emacs 18.
(vc-directory-exclusion-list, vc-file-tree-walk-internal):
Implement the new variable vc-directory-exclusion-list to prune
tree walks. Initial value tells it to ignore SCCS and RCS subdirectories.
immediately checked out again, so set vc-checkout-time.
(vc-fetch-properties): CVS 1.4A1 says "Repository revision".
(vc-locking-user): Do something sensible when the backend
is CVS. May return a numerical UID or a string when CVS is used.
(vc-dired-reformat-line): Handle numerical arguments.
(vc-backend-checkout): Don't extract CVS files twice.
(vc-next-action-on-file): Handle return value from
vc-backend-merge-news correctly.
(vc-rename-file): Fixed call to vc-backend-dispatch.
(vc-make-buffer-writable-hook): New hook, for CVS only.
(vc-header-alist): Added header for CVS.
(vc-next-action-on-file): Added support for CVS.
(vc-next-action, vc-checkin, vc-revert-buffer): Doc fixes.
(vc-rename-file): Disable if the backend is CVS.
(vc-log-info): New arguments: LAST and FLAGS, passed on to
vc-do-command. All callers updated.
(vc-fetch-properties): Implement support for CVS files.
(vc-backend-checkin): Args REV and COMMENT no longer optional.
Implement support for CVS.
(vc-backend-revert): Implement support for CVS.
(vc-backend-diff): Treat files which are added, but not yet committed,
specially (diff them against /dev/null).
(vc-backend-merge-news): New function.
(vc-log-mode): Talk a little about CVS in the comment.
(vc-log-info): Simplify code.
(vc-do-command): New argument LAST. All callers updated.
Legal values for LAST are 'MASTER and 'BASE.
(vc-backend-dispatch): New argument C, used by CVS. All callers
updated, but many just passes an (error "NYI") form.
(vc-backend-admin): Issue a "cvs add" (but not a "cvs commit").
(vc-backend-checkout, vc-backend-logentry-check, vc-backend-print-log,
vc-backend-assign-name, vc-backend-diff, vc-check-headers): Handle CVS.
(vc-backend-steal, vc-backend-uncheck): Give error if using CVS.
(vc-backend-diff): Fixed typo in SCCS code.
to discard the extra arg some shells make.
(vc-rename-file): Add autoload cookie.
(vc-steal-lock): (1) Function should be non-interactive, because it
doesn't work when called directly by the user. (2) Don't display
revision "nil" when stealing lock if revision is unknown. (3) Put
"Stolen lock on <file>" instead of just the file name in the Subject
of the notification message.
Set vc-log-operation-hook locally.
(vc-next-action-on-file): Not here.
(vc-admin): Pass new arg.
(vc-checkin): Pass new arg instead of setting vc-log-operation-hook.
specifying whether we want to compute the differences if the
file is changed. Otherwise, use cmp instead of diff.
(vc-next-action-on-file): Use new vc-workfile-unchanged-p option;
this avoids recomputing the differences in some cases.
(vc-backend-diff): OLDVERS is now optional; all callers changed.
New optional argument CMP says to use `cmp' rather than `diff'.
allows vc-next-action on all marked files in a dired buffer to work.
(vc-finish-logentry) There isn't necessarily a *VC-log-entry* buffer
to remove if this function was called from within a dired buffer. Fix
its handling of this case.