(pcase--dontcare-upats): New var.
(pcase-let, pcase-let*): Generate better code.
Accept the same bodies as `let'.
(pcase-dolist): New macro.
(pcase--trivial-upat-p): New helper function.
(pcase--expand): Strip leading "(let nil" if any.
Use smie-indent-virtual when indenting relative to an opener.
(smie-rule-separator): Use smie-rule-parent.
(smie-indent-keyword): Consult rules, even for openers at bol.
(smie-indent-comment-close): Try to align closer's content.
(checkdoc-interactive-loop, checkdoc-recursive-edit): Avoid princ-list.
(checkdoc-syntax-table): Initialize in the declaration.
(emacs-lisp-mode-hook): Use just checkdoc-minor-mode now that it turns
the mode on unconditionally.
(smie-precs->prec2): Rename from smie-precs-precedence-table.
(smie-bnf->prec2): Rename from smie-bnf-precedence-table.
(smie-prec2->grammar): Rename from smie-prec2-levels.
(smie-grammar): Rename from smie-op-levels.
(smie-indent--hanging-p): Rename from smie-hanging-p.
(smie-rule-hanging-p): New alias.
(smie-indent--bolp): Rename from smie-bolp.
(smie-indent--hanging-p): New alias.
(smie--token): New dynamically bound variable.
(smie-indent--parent): New function.
(smie-rule-parent-p): Use it; rename from smie-parent-p.
(smie-rule-next-p): Rename from smie-next-p.
(smie-rule-prev-p): Rename from smie-prev-p.
(smie-rule-sibling-p, smie-rule-parent)
(smie-indent--separator-outdent, smie-rule-separator): New functions.
(smie-rule-separator-outdent): New var.
(smie-indent--rule): Merge with smie-indent--column.
(smie-indent-forward-token, smie-indent-backward-token):
Also recognize close parens.
(smie-indent-keyword): Don't use smie-indent--column any more.
(smie-indent-after-keyword): Ignore closers by default.
(smie-indent-line): Use with-demoted-errors.
* lisp/progmodes/octave-mod.el (octave-smie-grammar):
Rename from octave-smie-op-levels.
(octave-smie-rules): Adjust to new behavior.
* lisp/progmodes/prolog.el (prolog-smie-grammar):
Rename from prolog-smie-op-levels.
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
Use end-of-line N.
(checkdoc-this-string-valid-engine, checkdoc-file-comments-engine):
Use line-end-position.
* lisp/emacs-lisp/eieio-comp.el (byte-compile-file-form-defmethod):
Use boundp tests to silence compiler. Update for changed name of
bytecomp-filename variable.
* lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Give local
variables bytes, ptr, op a prefix.
(disassemble-offset): Update for above change.
(package--builtins, package--dir): Doc fix.
(package-activate-1, package-activate, package-install)
(package-compute-transaction): Fix error message.
(package-delete): Use delete-directory. Omit system packages.
(package-initialize): Set package-alist to nil first.
(package-menu-mark-delete, package-menu-mark-install): Don't add
symbols that are inconsistent with the package state.
(package-menu-execute): Perform deletions and installations as
single batch operations.
* emacs-lisp/package.el: Don't put built-in packages in
package-alist, to avoid loading inefficiencies.
(package-built-in-p): Make VERSION optional, and treat it as a
minimum acceptable version.
(package-activate): Search separately for built-in packages. Emit
a warning if a dependency fails.
(define-package): Handle most common case, where there is no
obsolete package, first.
(package-compute-transaction): Print required version in error.
(package--initialized): New variable.
(list-packages): Use it.
(package-initialize): Optional arg NO-ACTIVATE. Don't put
built-in packages in packages-alist; keep it separate. Set
package--initialized.
(describe-package): Avoid activating packages as a side-effect.
Search separately for built-in packages.
(describe-package-1): Handle the case where an elpa package is
simultaneously built-in and available/installed.
(package-installed-p, package--generate-package-list): Search
separately for built-in packages.
(package-load-descriptor): Doc fix.
* emacs-lisp/package.el (package-initialize): Ensure that
obsoleted built-in packages are not in package-activated-list
during activation.
(describe-package-1): Make the "installed" status override
"built-in".
* startup.el (command-line): Search for package directories, and
don't load package.el if none are found.
* emacs-lisp/package.el (describe-package, list-packages): Call
package-initialize if it has not been called yet.
* lisp/emacs-lisp/smie.el (smie-precs-precedence-table)
(smie-merge-prec2s, smie-bnf-precedence-table, smie-prec2-levels):
Mark them pure so the tables gets built at compile time.
(smie-bnf-precedence-table): Store the closer-alist in the table.
(smie-prec2-levels): Preserve the closer-alist.
(smie-blink-matching-open): Be more forgiving in case of indentation.
(smie-hanging-p): Rename from smie-indent--hanging-p.
(smie-bolp): Rename from smie-indent--bolp.
(smie--parent, smie--after): New dynamic vars.
(smie-parent-p, smie-next-p, smie-prev-p): New funs.
(smie-indent-rules): Remove.
(smie-indent--offset-rule): Remove fun.
(smie-rules-function): New var.
(smie-indent--rule): New fun.
(smie-indent--offset, smie-indent-keyword, smie-indent-after-keyword)
(smie-indent-exps): Use it.
(smie-setup): Setup paren blinking; add keyword args for token
functions; extract closer-alist from op-levels.
(smie-indent-debug-log): Remove var.
(smie-indent-debug): Remove fun.
* lisp/progmodes/prolog.el (prolog-smie-indent-rules): Remove.
(prolog-smie-rules): New fun to replace it.
(prolog-mode-variables): Simplify.
* lisp/progmodes/octave-mod.el (octave-smie-closer-alist): Remove, now that
it's setup automatically.
(octave-smie-indent-rules): Remove.
(octave-smie-rules): New fun to replace it.
(octave-mode): Simplify.
(pcase-if): Add one minor optimization.
(pcase-split-equal): Rename from pcase-split-eq.
(pcase-split-member): Rename from pcase-split-memq.
(pcase-u1): Add strings to the member optimization.
Add `guard' variant of predicates.
(pcase-q1): Add string patterns.