Teach vc-hg how to read some Mercurial internal data structures,
allowing us to avoid the need to run hg status -A, which is very slow
for large repositories. Fall back to running hg if anything looks
funny. vc-hg now puts the _working directory_ revision in the
modeline instead of the file revision, which greatly improves
performance and which allows us to again skip running hg in the case
that we have an active bookmark.
* lisp/vc/vc-hg.el (vc-hg-state): Try calling `vc-hg-statefast'
(vc-hg-symbolic-revision-styles)
(vc-hg-use-file-version-for-mode-line-version)
(vc-hg-parse-hg-data-structures): New user preferences
(vc-hg--active-bookmark-internal, vc-hg--run-log)
(vc-hg--symbolic-revision, vc-hg-mode-line-string)
(vc-hg--read-u8, vc-hg--read-u32-be)
(vc-hg--raw-dirstate-search, vc-hg--cached-dirstate-search)
(vc-hg--parts-to-string, vc-hg--pcre-to-elisp-re)
(vc-hg--glob-to-pcre, vc-hg--hgignore-add-pcre)
(vc-hg--hgignore-add-glob, vc-hg--hgignore-add-path)
(vc-hg--slurp-hgignore-1, vc-hg--slurp-hgignore)
(vc-hg--ignore-patterns-valid-p)
(vc-hg--ignore-patterns-ignored-p, vc-hg--time-to-fixnum)
(vc-hg--file-ignored-p, vc-hg--read-repo-requirements)
(vc-hg--requirements-understood-p, vc-hg--dirstate-scan-cache)
(vc-hg-state-fast): New functions.
(vc-hg--hgignore-patterns, vc-hg--hgignore-filenames)
(vc-hg--cached-ignore-patterns, vc-hg--dirstate-scan-cache)
(vc-hg--dirstate-scan-cache): New internal variables.
* lisp/vc/vc-hooks.el (vc-refresh-state): Invoke vc find-file-hook
before updating modeline.
Problem reported by Artur Malabarba in:
http://lists.gnu.org/archive/html/emacs-devel/2015-11/msg01513.html
Most of these fixes are to documentation; many involve fixing
longstanding quoting glitches that are independent of the
recent substitute-command-keys changes. The changes to code are:
* lisp/cedet/mode-local.el (mode-local-augment-function-help)
(describe-mode-local-overload):
Substitute docstrings before displaying them.
* lisp/emacs-lisp/cl-macs.el (cl--transform-lambda):
Quote the generated docstring for later substitution.
Mostly these fixes prevent the transliteration of apostrophes
that should stay apostrophes. Also, prefer curved quotes in
Bahá’í proper names, as that’s the preferred Bahá’í style and
these names are chock-full of non-ASCII characters anyway.
* lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload)
(eieio-defclass-internal):
* lisp/emacs-lisp/eieio.el (defclass):
* lisp/hi-lock.el (hi-lock-mode):
Don’t transliterate Lisp apostrophes when generating a
doc string or diagnostic.
* lisp/international/mule-diag.el (list-coding-systems-1):
* lisp/international/ogonek.el (ogonek-jak, ogonek-how):
* lisp/mail/sendmail.el (sendmail-query-user-about-smtp):
* lisp/vc/ediff-mult.el (ediff-redraw-registry-buffer):
* lisp/vc/ediff-ptch.el (ediff-fixup-patch-map):
Substitute quotes before putting them in the help buffer.
(vc-refresh-state): Rename from vc-find-file-hook and make interactive.
(vc-find-file-hook): Redefine as obsolete alias.
Copyright-paperwork-exempt: yes
* vc/vc-hooks.el (vc-state, vc-working-revision):
Use `vc-responsible-backend' in order to support unregistered files.
* vc/vc-rcs.el (vc-rcs-fetch-master-state):
* vc/vc-sccs.el (vc-sccs-working-revision): Handle undefined
master name.
* vc/vc-rcs.el (vc-rcs-unregister): Support unregistered files.
* vc/vc-src.el (vc-src-working-revision): Do not return an empty string.
* vc/vc.el, vc/vc-hg.el, vc/vc-git.el, vc/vc-hooks.el,
vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el, vc/vc-src.el: rrollback
method removed, to be replaced in the future by uncommit.
* vc/vc.el, vc-hooks.el, and all backends: API simplification;
vc-state-heuristic is no longer a public method, having been removed
where it is redundant, unnecessary, or known buggy. This eliminated
all backends except CVS. Eliminates bug#7850.
* vc/vc-cvs.el, vc/vc-hooks.el, vc/vc-rcs.el, vc/vc-sccs.el: Eliminate
vc-mistrust-permissions. It was only relevant to the RCS and SCCS
back ends and defaulted to t. Code now always mistrusts permissions -
by actual measurement the effect on performance is negligible. As a
side effect bug#11490 is now irrelevant.
* vc/vc.el, vc-hooks.el, and all backends: API simplification;
vc-workfile-unchanged-p is no longer a public method (but the RCS and
SCCS back ends retain it as a private method used in state
computation). This method was redundant with vc-state and usually
implemented as a trivial call to same. Fixes the failure mode
described in bug#694.
* vc-filewise.el: New file to isolate code used only by the
file-oriented back ends (SCCS/RCS/CVS/SRC) which should not live in
vc.el and certainly not in vc-hooks.el.
* vc-hooks.el, vc-rcs.el, vc-sccs.el: vc-name -> vc-master-name. This
is preaparatory to isolating all the 'master' functions used only by
the file-oriented back ends. With this done first, the substantive
diffs will be easier to read.