Commit graph

59 commits

Author SHA1 Message Date
4c5fc58d6d Enable lexical binding for project files 2021-01-14 23:12:30 -08:00
23bacc0d4b Add login commands
- Add command ‘vc-p4-logged-in-p’ to check if the user is currently logged in.

- Add command ‘vc-p4-login’ to log in if the user isn’t already logged in.

- Add better error reporting for the situation where a user isn’t logged in.
2021-01-14 22:39:21 -08:00
a1141460b8 Update ‘vc-p4-dir-status’ to ‘vc-p4-dir-status-files’
Newer versions of VC have changed the way ‘vc-dir’ calls each back-end.
2020-05-27 18:18:41 -07:00
d32dd5f376 Simplify and fix ‘vc-p4-is-in-client’
Quoting the string with Windows paths in it would double-quote the directory
separators. It also seems easier to use ‘string-prefix-p’ than an anchored
regular expression.

‘alist-get’ is a function that was introduced in Emacs 25 that is easier to use
than ‘assoc’ + ‘cdr’.
2020-05-27 17:57:45 -07:00
35beacc3d6 Fix indentation of comments, reflow 2020-05-13 11:29:35 -07:00
749665a8ae Add support for the vc-delete command 2020-05-13 11:07:38 -07:00
774ab55e9e Add simplistic vc-p4-switch-client command 2020-03-02 21:08:23 -08:00
d53eb68743 Fix indentation 2017-06-07 12:34:06 -07:00
94077d5136 Update vc-p4-diff argument list
Newer versions of vc add in an async flag, this is not currently used
by us.
2017-06-07 12:08:30 -07:00
5596f66072 Fix vc-p4-diff for buffer string argument
BUFF may be a string as well as a buffer. In case it is a string it
should use that string to create the buffer for the diff.
2017-06-07 00:12:36 -07:00
600e9e2f71 Update vc-p4-checkout for modern vc
The argument list for the ‘vc-*-checkout’ function doesn’t include
destfile or editable anymore.
2017-06-07 00:09:07 -07:00
47eb5350df Add required vc function
‘vc-p4-revision-granularity’ is a required function that should be
implemented by all vc backends. Perforce has per-file revisions.
2017-06-07 00:05:59 -07:00
e7a25a4fda Fix whitespace 2017-06-07 00:03:49 -07:00
Ben_Key
3cb296d970 Various modifications to vc-p4 that I have been using for years.
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]
2015-03-10 14:43:47 -08:00
Magnus Henoch
015a4a67dc * vc-p4.el (vc-p4-state): Mark new files as added.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7742]
2010-08-09 09:58:53 -08:00
Magnus Henoch
508d650136 * vc-p4.el (vc-p4-state): Don't compare non-existent files.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7741]
2010-08-09 08:46:04 -08:00
Magnus Henoch
0cfe10cab9 * vc-p4.el (vc-p4-workfile-unchanged-p): Return nil for files marked for deletion.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7740]
2010-08-09 08:35:34 -08:00
Magnus Henoch
1674c9ea2a * vc-p4.el (vc-p4-diff): Handle deleted files.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7739]
2010-08-09 08:28:09 -08:00
Magnus Henoch
a8fbf9a3b1 * vc-p4.el (vc-p4-state): Mark file as `removed' if action is "delete".
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7738]
2010-08-09 07:53:27 -08:00
Magnus Henoch
6c3758972c * vc-p4.el (vc-p4-previous-revision): New function, shamelessly
copied from vc-svn.

[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7546]
2010-01-13 09:01:58 -08:00
Magnus Henoch
a546229293 * vc-p4.el (vc-p4-print-log): Accept optional argument revision,
as required by Emacs 23.1.91.

[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7545]
2010-01-13 08:57:06 -08:00
Magnus Henoch
a0e7fbe5e1 * vc-p4.el (vc-p4-print-log): Accept optional arguments shortlog
and limit, as required by Emacs 23.1.50.

* p4-lowlevel.el (p4-lowlevel-filelog): Accept limit argument.

[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7487]
2009-11-17 16:35:08 -08:00
Magnus Henoch
af857b4d50 * vc-p4.el (vc-p4-revert): Fix revert of unopened files.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7486]
2009-11-17 08:06:39 -08:00
Magnus Henoch
2e8b1f0015 * vc-p4.el (vc-p4-diff): Fix Perforce file headers.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7485]
2009-11-16 14:10:55 -08:00
Magnus Henoch
4667f79c0a * vc-p4.el (vc-p4-diff): Support lists of files. Perform only a
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]
2009-11-16 12:56:58 -08:00
Magnus Henoch
2d9b785e7c * vc-p4.el (vc-p4-state): Avoid error when saving non-Perforce
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]
2009-09-09 06:16:58 -08:00
Magnus Henoch
d4562f9ba7 * vc-p4.el (vc-p4-state): Display files present neither on client
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]
2009-08-27 04:24:27 -08:00
Magnus Henoch
c24b959ed3 * vc-p4.el (vc-p4-state): Change if' mess to cond'.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7361]
2009-08-27 04:18:55 -08:00
Magnus Henoch
7292914d99 * vc-p4.el (vc-p4-dir-status): Don't list up-to-date files.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7360]
2009-08-27 04:14:59 -08:00
Magnus Henoch
876b3ef83c * vc-p4.el: Note that Emacs 23 is required.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7330]
2009-07-20 13:07:17 -08:00
Magnus Henoch
0786aae292 (vc-p4-working-revision): Renamed from
`vc-p4-workfile-version', to avoid deprecation message on commit.

[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7270]
2009-06-05 11:51:36 -08:00
Magnus Henoch
97229d0b82 (vc-p4-checkin): Multiple files commit.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7269]
2009-06-05 11:47:35 -08:00
Magnus Henoch
c68de18b24 (vc-p4-init-revision): Renamed from `vc-p4-init-version'.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7268]
2009-06-05 11:40:15 -08:00
Magnus Henoch
bbc4dd3ee5 Remove obsolete redefinitions.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7239]
2009-05-27 09:58:25 -08:00
Magnus Henoch
4c98e00c6b * vc-p4.el (vc-p4-annotate-command-internal): s/string-to-int/string-to-number/
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7238]
2009-05-27 09:57:06 -08:00
Magnus Henoch
d1bbfc11ce * vc-p4.el (vc-p4-dir-state): Remove unused function.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7237]
2009-05-27 09:54:56 -08:00
Magnus Henoch
eacbba72bc * vc-p4.el (vc-p4-dir-status): Handle subdirectories. Use
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]
2009-05-27 09:54:01 -08:00
Magnus Henoch
1391eebeb5 (vc-p4-dir-status): Initial implementation.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7232]
2009-05-27 05:53:57 -08:00
Magnus Henoch
b52aaa3e2c Update copyright notices. Update URL; include URL of previous version.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7231]
2009-05-27 03:11:58 -08:00
Magnus Henoch
7e94b5b0ff * vc-p4.el (vc-p4-diff): Reorder let* variables. Don't use
`buffer-file-name'.

[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 7217]
2009-05-19 11:22:59 -08:00
Jonathan Kamens
6afc1e6c47 Changes from Dan Nicolaescu:
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]
2007-08-01 18:27:55 -08:00
Jonathan Kamens
0ec70d5f50 Patch from Dan Nicolaescu <dann@ics.uci.edu>: Improve support for
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]
2007-07-27 04:28:08 -08:00
Jonathan Kamens
3f3aa0ac1f Customized vc-mode-line is no longer necessary, since the version that
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]
2007-07-27 04:19:26 -08:00
Jonathan Kamens
12e666d840 The customized version of vc-register is no longer necessary, because
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]
2007-07-27 04:16:38 -08:00
Jonathan Kamens
550739981d Minor bug fixes from Dan Nicolaescu <dann@ics.uci.edu>.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 5986]
2007-07-18 12:14:09 -08:00
Jonathan Kamens
435d183a4c Fix a bug in the logic for determining whether to use smerge-ediff or
backend-specific conflict resolution.

[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 2215]
2002-10-06 09:38:27 -08:00
Jonathan Kamens
ba127bdbfb Changed vc-print-log slightly to conform to current version of vc.el
in Emacs source tree.

[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 2214]
2002-10-06 09:34:02 -08:00
Jonathan Kamens
c3ee00c06d (vc-p4-find-p4config): Convert the directory in which we're searching
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]
2002-01-15 09:31:41 -08:00
Jonathan Kamens
35d746c591 (vc-p4-registered): Don't consider a file registered if its current
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]
2002-01-09 18:15:43 -08:00
Jonathan Kamens
1e65e958c7 Need to set default directory before trying to print the log.
[git-p4: depot-paths = "//guest/Ben_Key/vc-p4/,//guest/jonathan_kamens/vc-p4/,//guest/magnus_henoch/vc-p4/": change = 1264]
2002-01-09 17:29:01 -08:00