Use lexical-binding.
(which-func-modes, which-func-non-auto-modes, which-func-maxout)
(which-func, which-func-format): Remove redundant :group arg.
(which-func-try-to-enable): New function.
(which-func-ff-hook, which-function-mode): Use it.
(mode-line-misc-info): Add ourselves here instead of in bindings.el.
* lisp/bindings.el (mode-line-misc-info): Remove which-func-mode entry.
(c-save-buffer-state): Use with-silent-modifications when available.
(c--macroexpand-all): Check macroexpand-all directly rather than
c--mapcan-status.
(verilog-save-buffer-state): Use with-silent-modifications when available.
(verilog-save-font-no-change-functions): Don't bind
before/after-change-functions if it's not needed.
* verilog-mode.el (verilog-auto, verilog-delete-auto)
(verilog-modi-cache-results, verilog-save-buffer-state)
(verilog-save-font-no-change-functions): When internally suppressing change
functions, use `inhibit-modification-hooks' and call
`after-change-funtions' to more nicely work with user hooks. Reported by
Stefan Monnier.
(verilog-auto, verilog-delete-auto, verilog-delete-auto-buffer):
Create `verilog-delete-auto-buffer' to avoid double-calling
fontification hooks.
(verilog-restore-buffer-modified-p, verilog-auto)
(verilog-save-buffer-state): Prefer restore-buffer-modified-p over
set-buffer-modified-p. Reported by Stefan Monnier.
(verilog-diff-auto, verilog-diff-buffers-p)
(verilog-diff-ignore-regexp): Add `verilog-diff-ignore-regexp'.
(verilog-auto-inst-port, verilog-read-sub-decls-expr): Fix
AUTOINST with unpacked dimensional parameters, bug981. Reported by
by Amol Nagapurkar.
(verilog-read-decls, verilog-read-sub-decls-line): Avoid unneeded
properties inside internal structures. No functional change
intended.
* lisp/progmodes/xref.el (xref-location-marker): Interpret the
column value in characters.
(xref--collect-matches): Rename from `xref--collect-match'.
Search for all matches in the hit line. Add `highlight' face to
the matched region in the summary. Update both callers.
Relying on xref-location-marker to point to the beginning of the match
* lisp/progmodes/xref.el (xref-match-bounds): Remove.
(xref-match-length): Add.
(xref-make-match): Change the arguments.
(xref--match-buffer-bounds): Remove.
(xref-match-item): Store length, instead of end-column.
(xref-pulse-momentarily)
(xref--collect-match)
(xref--query-replace-1): Update accordingly.
(xref-query-replace): Ditto. And check that the search results
are up-to-date.
lisp/progmodes/cc-engine.el (c-backward-single-comment, c-backward-comments)
(c-invalidate-state-cache-1, c-parse-state-1, c-guess-basic-syntax):
remove bindings of open-paren-in-column-0-is-defun-start to nil.
(c-get-fallback-scan-pos): "New" function (existed several years ago).
(c-parse-state-get-strategy): Reintroduce the 'BOD strategy, using
c-get-fallback-scan-pos.
(c-parse-state-1): Handle 'BOD strategy.
lisp/progmodes/cc-mode.el (c-before-change, c-after-change)
c-font-lock-fontify-region): remove bindings of
open-paren-in-column-0-is-defun-start to nil.
cc-mode.texi (Performance Issues, Limitations and Known Bugs): Fix mix up
between @chapter and @appendix.
* lisp/progmodes/project.el (project-find-functions): Remove
`project-ask-user'.
(project-ask-user): Remove function and the corresponding
`project-roots' implementation.
(project-current): Add a new argument, MAYBE-PROMPT. Prompt the
user in case there's no project in the current directory. Update
all callers.
* lisp/progmodes/project.el (project-find-regexp)
(project--read-regexp)
(project--find-regexp-in): New functions.
* lisp/progmodes/xref.el (xref--find-xrefs): Extract from
xref--show-xrefs. Use in existing callers in place of that
function.
(xref--show-xrefs): Only do the "show" part.
(xref-find-regexp): Rename, more or less, to
project-or-libraries-find-regexp.
* lisp/progmodes/xref.el (xref--temporary-buffers)
(xref--current)
(xref--inhibit-mark-current)
(xref--mark-selected): Remove. Remove all references.
(xref--show-xrefs): Do not construct the
list of the temporary buffers, nor pass it along.
* lisp/emacs-lisp/cl-seq.el (cl-set-difference): Retain the order
of the elements from CL-LIST1.
* test/automated/cl-lib-tests.el (cl-lib-test-set-functions):
Update WRT to the above change.
* lisp/progmodes/project.el (project-search-path-function): Rename
to project-library-roots-function, update the documentation and
references.
(project-search-path): Likewise, to project-library-roots.
(project-roots): Clarify documentation.
(project-vc-search-path): Likewise, to project-vc-library-roots.
(project-library-roots): In addition to the renames, thread the
results through file-name-as-directory.
(project-prune-directories): Accept a variable number of
arguments. Rename to project-combine-directories.
(project-subtract-directories): New function.
* lisp/progmodes/elisp-mode.el (elisp--xref-find-references):
Append project-roots and project-library-roots together.
* lisp/progmodes/etags.el (etags--xref-find-references): Ditto.
* lisp/progmodes/python.el (python-syntax-closing-paren-p): Check with
`eql' instead of `=' to accommodate the case that (syntax-after (point))
returns nil.
* test/automated/python-tests.el (python-indent-inside-paren-7):
New test.
* lisp/progmodes/gdb-mi.el (gdb-mi-decode-strings): New defcustom.
(gdb-mi-decode): New function.
(gud-gdbmi-marker-filter): If gdb-mi-decode-strings is non-nil,
decode octal escapes in GDB output. (Bug#21572)
These optimizations were previously disabled by the
windows_or_buffers_changed flag, which now is not set
when only some frames need to be redrawn.
* src/xdisp.c (redisplay_internal): Redisplay any frame whose
'redisplay' flag is set.
(try_window_reusing_current_matrix, try_window_id)
(try_cursor_movement): Disable these optimizations when the
frame's 'redisplay' flag is set.
* lisp/progmodes/prog-mode.el (prettify-symbols--compose-symbol):
(prettify-symbols--post-command-hook, prettify-symbols-mode): Don't
modify buffer when setting/removing custom prettify-symbols-start/end
text properties. Add them to font-lock-extra-managed-props, too.
* lisp/progmodes/prog-mode.el: Implement feature for unprettifying the
symbol at point.
(prettify-symbols--current-symbol-bounds): New variable.
(prettify-symbols--post-command-hook): New function.
(prettify-symbols-unprettify-at-point): New defcustom.
(prettify-symbols-mode): Use it.
(prettify-symbols--compose-symbol): Use them.
* lisp/progmodes/grep.el (rgrep-default-command): Remove nil from
the list produced according to grep-find-ignored-directories,
before passing it to Find/Grep invocation. (Bug#21548)
(prolog-operator-chars): New const (add \\).
(prolog-smie-forward-token, prolog-smie-backward-token): Use it.
(prolog-smie-rules): Add rules according to bug#21526.
(sh-indent-after-continuation): Add new value `always' (bug#17620)
(sh-smie-sh-rules): Remove old handling of continued lines.
(sh-smie--indent-continuation): New function.
(sh-set-shell): Use it.
Remove redundant :group keyword args.
(octave-begin-keywords, octave-else-keywords, octave-end-keywords):
Remove variables.
(octave-operator-table, octave-smie-bnf-table): Use let-when-compile to
turn them into compile-time variables.
Auto-generate the "foo ... end" rules from the "foo ... endfoo" rules.
Add rules for break, continue, return, global, and persistent.
Refine the rule for "until".
(octave-smie--funcall-p, octave-smie--end-index-p)
(octave-smie--in-parens-p): New functions.
(octave-smie-backward-token, octave-smie-forward-token): Use them to
distinguish the "enumeration" function and the "end" index from
their corresponding keywords.
(octave--block-offset-keywords): New constant.
(octave-smie-rules): Use it. Adjust rules for new global/persistent parsing.
(octave-reserved-words): Redefine using octave-smie-grammar.
(octave-font-lock-keywords): Use octave-smie--funcall-p and
octave-smie--end-index-p.