I use the ‘org-indent-mode’ now to view org-mode files, which means that
formatting looks even better without having to maintain much along the lines of
indentation.
When I wrote this feature I didn’t realize that this functionality is already
built into Perforce itself. By using the ‘P4CONFIG’ variable you can specify the
name of a file that ‘p4’ will look for that can specify the client (among
others) for that directory and all subdirectories.
It seems that nothing uses ‘vc-p4-find-version’, or ‘vc-find-version’, and it’s
not mentioned as a function to implement in vc.el. There is a ‘find-revision’
mentioned with the same signature though.
VC Expects the backend to report that the status is ‘needs-update’, not
‘needs-patch’. I don’t know if this has changed over the years, but this is what
it needs now.
- The arguments ‘comment’ and ‘rev’ have been switched. I don’t know if this
used to be different from how it is now, but ‘rev’ comes last now and is
optional.
- The ‘vc-p4-client’ needs to be collected from the first file in the list of
files to check in because ‘vc-p4-checkin’ is called from a different buffer
that isn’t in the same directory.
- ‘vc-p4-client’ also needs to be stored under a different name so that when it
changes to the ‘*p4-lowlevel-changes*’ buffer it doesn’t clear the value.
- Instead of inserting the specified comment directly, send it through
‘log-edit-extract-headers’ which removes the "Summary: " header that
‘vc-log-edit’ adds.
- Indent rigidly to ‘tab-width’ instead of 8. Indenting to 8 added too many tabs
to the description and caused all lines to be prefixed by a tab.
- 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.
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’.