Ask the user before reverting modified buffers. This means that you no longer automatically lose your unsaved changes when you run p4-edit.
Bring the file header up to date:
* Update the list of contributors, adding Peter Osterlund, Fujii Hironori, and Jason Filsinger, using the commit history at <https://github.com/gareth-rees/p4.el/commits/master>
* Bump the version number to 10.8.
* Remove bogus LCD Archive entry.
Remove comments that are redundant with documentation strings.
Other improvements to documentation and formatting.
Ask to revert buffer only if the buffer has been modified in Emacs.
Consistently test for XEmacs using (featurep 'xemacs) instead of trying to parse it out of the `emacs-version' variable.
Reduce the number of ways that functions run p4.
(This is work in progress towards issue #7 -- the idea is that when there are only a couple of ways of running p4, it'll be possible to reliably prompt the user to login.)
In detail:
* New macro p4-with-temp-buffer covers many cases where p4 needs to be run and the output processed.
* New function p4-output-matches return regexp matches in p4 command output.
* Get rid of p4-call-p4-here and p4-depot-output.
* Replace p4-async-command with p4-call-command (which is asynchronous in any case) in the two cases (p4-sync and p4-integ) where it was used.
* Use "p4 set" to simplify p4-current-client and p4-current-server-port (no need to reverse engineer the p4 client logic when we can just call it).
Further reduce the number of ways that functions run p4.
(This is more work in progress towards issue #7.)
In detail:
* Get rid of p4-exec-p4 and p4-read-depot-output.
* Get rid of unused second argument to p4-noinput-buffer-action.
* New function p4-run is now the only remaining function (other than p4-help-text) that uses call-process to run p4.

When you try to submit files with empty diffs, p4-submit now pops up a buffer listing these files. This fixes #11.
When a synchronous Perforce command fails due to a logged out user, prompt user for a password and re-run the failed command.
(Work in progress towards #7.)
Add README for github.
Need :: for code block formatting.
Improve formatting.
Fix typo.
Prompt for login when async command fails due to logged-out user.
(Work in progress towards #7. The commands p4-form-command, p4-form-commit, and p4-do-notify still need fixing.)
In detail:
* Remove p4-start-p4, p4-simple-command, p4-simple-command-and-revert-buffer.
* No need for p4-call-command-process-filter -- just let the output go into the process buffer.
* When starting a process, record the command and arguments in the buffer-local variable p4-process-args.
* In p4-call-command-process-sentinel: detect failure due to logged-out user and if so, prompt user for a password, and re-start the failed command. Run callback only if command finished successfully. Use the logic from p4-simple-command to decide whether to show the output in the minibuffer or to pop to the output buffer.
* In p4-call-command, always choose a name for the output buffer based on the command and arguments (this simplifies callers).
* New function p4-refresh-callback constructs a callback function to refresh buffers after an asynchronous command completes.
* The callback function always runs in the output buffer, so we don't need the buffer argument to p4-regexp-create-links.
Remove unused feature p4-verbose.
Fixes #18.
Improvements to display, fontification, and asynchrony.
In detail:
* Remove p4-noinput-buffer-action and p4-get-config-info.
* p4-pop-window-config defaults to popping a single element.
* Use display-buffer instead of pop-to-buffer to avoid selecting the window.
* Buffer names are truncated in the middle so that you can see the important stuff at the end.
* p4-call-command takes a new argument after-show-callback which gets run after the output buffer is displayed (this is necessary for p4-ediff so that the EDiff control frame stays on top).
* p4-ediff and p4-ediff2 now run asynchronously.
* Make buffer-modification functions more Emacs-like by operating on the current buffer.
* Fix fontification for "p4 print" output: can't switch back to fundamental-mode because that re-fontifies.
* Fix keymap for "p4 print" output.
* p4-rename, p4-buffer-commands, and p4-depot-find-file now all run "p4 print" asynchronously.
Remove the notification feature.
(This was superseded by the Perforce review daemon in 1997.)
Fixes #22.
Form commands now prompt for login when user is logged out.
Fixes #7: all commands now prompt for login if possible.
In detail:
* New function p4-process-show-output contains the logic for showing P4 command output to the user.
* Avoid use of labels (deprecated in Emacs 24.3).
* p4-form-command interface simplified. It no longer takes p4-this-buffer argument: instead, it constructs the buffer name by calling p4-process-buffer-name. It no longer takes p4-out-args argument: this was unused. Improved order of optional arguments allows more callers to use the default values.
* When there's an uncommitted form buffer, re-running the form command now always selects that buffer. (Previously this was done in an ad-hoc way for some form commands.)
* Committing a form no longer kills the buffer. (Its contents might be valuable to the user.) Instead, it is marked as committed (via the p4-form-committed buffer-local variable) and buried.
p4-submit with a prefix argument now prompts "p4 change:"
(Since "p4 change" is the actual command that's going to be run, this is less misleading than prompting "p4 submit:".)
Fixes #24.
Correct check for files opened for edit with an empty diff.
Fixes #31.
Recognize non-alphabetic form field names.
(Such as might be created via "p4 jobspec".)
Fixes #23.