Unfortunately I did not document the changes as I made them. I have been able to determine the purpose of most of the changes by code inspection but there are a few changes for which I have not been able to determine a purpose.
* Modifications to support XEmacs.
* Added the p4-lowlevel-locate-p4 function. This function is used to locate the p4 executable on the exec-path. It is used by the vc-p4-registered function to avoid an error on systems on which the Perforce client is not installed. This is useful if the same .emacs file is used on multiple systems, some of which do not have the Perforce client installed.
* Modified the p4-lowlevel-successful-alist-p function so that a command that returns the message "file(s) up-to-date" does not trigger an error. As part of this change I added the p4-lowlevel-ignore-error-list defcustom and the p4-lowlevel-should-ignore-error function.
* Modified the vc-p4-registered function so that it uses the p4-lowlevel-locate-p4 function to verify that the Perforce client is installed.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 12013]
single request to the server in the simplest case (diff edited
file to synced version).
* p4-lowlevel.el (p4-lowlevel-command-into-buffer): Don't reorder
info and text lines.
(p4-lowlevel-diff): Support lists of files as well as a single file.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7484]
file inside Perforce working directory. Still gives incorrect
'up-to-date' status in vc-dir sometimes.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7377]
nor in depot head as `up-to-date'.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7362]
information from vc-p4-state.
(vc-p4-state): New argument: dont-compare-nonopened.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7236]
For vc-p4.el:
- delete a few more vc functions that are identical in emacs
- delete now unused vc-p4-change-times
- make vc-p4-annotate-command default to the internal elisp code
- delete vc-p4-state-heuristic, it's the same as the default
- new function vc-p4-find-version
- make a few functions cope with emacs-23 (not released yet),
that changes the first argument from FILE to FILE_LIST
- add an internal implementation for vc-annotate, simplify the
annotate code
For p4-lowlevel.el:
- fail graciously when offline and trying to access a file that
is under perforce
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 5999]
vc-annotate and log-view and make sure that they are interoperable.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 5991]
ships with GNU Emacs is now fixed.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 5990]
the code for calling the backend init-version function has been
incorporated into GNU Emacs's standard vc-register function.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 5989]
to an absolute path by calling expand-file-name on it, because
file-name-directory doesn't do what we expect for relative paths
((file-name-directory "..") returns nil, when we're expecting it to
eventually return "/").
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 1328]
action or head action is "delete".
(vc-p4-register): If someone tries to register a file which is
currently open for delete, offer them the choice of reverting and
editing the file, possibly preserving its contents.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 1266]
Add a fixed version of vc-register which uses vc-p4-init-version.
Add a fixed version of vc-mode-line which sets vc-mode to nil if a
file isn't under version control, so that the VC information is
removed from the mode line of a reverted file.
Fixv vc-p4-register so that it doesn't complain if the specified
revision is "1" or if the specified comment is an empty string.
Fix vc-p4-revert so that it does the right thing if the file being
reverted was added but not yet submitted (i.e., it isn't yet actually
in the repository).
Fix vc-p4-diff so that it does the right thing with a newly added file
(i.e., diffs the file against /dev/null).
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 1253]
with a prefix argument, then prompt for the starting date for the
annotation. Note that this requires a version of p4pr.perl that
supports the --after option.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 1225]