Change font_put_extra value for property removal from Qnil to Qunbound
* font.c (font_put_extra): If VAL is Qunbound, delete the slot for PROP from
the list of extra properties. Previous value Qnil is valid as boolean.
(font_clear_prop): Changed argument of font_put_extra for property removal.
Juri Linkov [Wed, 19 Jun 2019 21:55:07 +0000 (00:55 +0300)]
Add file sorting options to find-dired and grep-find (bug#36110)
* lisp/find-dired.el (find-ls-option-default-ls)
(find-ls-option-default-exec, find-ls-option-default-xargs):
New variables for values used for options of 'find-ls-option'.
(find-ls-option): Use these variables for default values and options.
(find-dired-refine-function): Refine :type.
* lisp/progmodes/grep.el (grep-find-use-xargs): Use defcustom
instead of defvar. Add new value 'gnu-sort'.
(grep-compute-defaults): Handle new 'gnu-sort' option of
'grep-find-use-xargs'.
* lisp/emacs-lisp/eieio.el (object-print):
* lisp/emacs-lisp/eieio-base.el (eieio-object-set-name-string):
Move the defgeneric before the defmethod, because that makes more
sense.
Fix previous change to erc (where commands like /me wouldn't be sent)
* lisp/erc/erc-ring.el (erc-add-to-input-ring):
* lisp/erc/erc-goodies.el (erc-send-distinguish-noncommands): Pass
in a erc-input structure instead of a simple string.
* lisp/erc/erc.el (erc-pre-send-functions): Document the new
argument to the filter functions.
(erc-send-input): Use the new structure to allow the filter
functions to alter all three things: The string, whether to insert
the string, and whether to send the string.
Stefan Monnier [Wed, 19 Jun 2019 14:47:55 +0000 (10:47 -0400)]
(with-suppressed-warnings): Make it apply to macro-expansion as well
* lisp/emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
Change with-suppressed-warnings so it also affects the macro-expansion of
the body.
Rename function in completion.el to use completion- prefixes
* lisp/completion.el (locate-completion-entry)
(completion-locate-entry, locate-completion-entry-retry)
(completion-locate-entry-retry, locate-completion-db-error):
Rename to use a completion- prefix and make the old names obsolete
aliases.
(add-completion-to-head, delete-completion): Use the new function
names.
Stefan Monnier [Wed, 19 Jun 2019 13:53:06 +0000 (09:53 -0400)]
* lisp/textmodes/page-ext.el: Further cleanup
(pages--ctl-x-ctl-p-map): Rename from ctl-x-ctl-p-map.
Move initialization into declaration.
(pages-ctl-x-ctl-p-prefix): Rename from ctl-x-ctl-p-prefix.
(sort-subr): Remove redundant autoload.
(pages-set-delimiter): Use explicit `interactively` arg instead of
`called-interactively`. Use `setq-local`.
(pages-directory-for-addresses): Use `setq-local`.
* lisp/pcmpl-gnu.el (pcomplete/tar): Remove binding of
pcomplete-suffix-list, because it's not consulted in any of the
functions called here, and has had no effect since 2011. If we
want to support not inserting a space after the = sign, we have to
implement that, but it's not currently done.
* lisp/textmodes/page-ext.el (previous-page)
(search-pages)
(sort-pages-in-region)
(sort-pages-buffer)
(pages-sort-buffer)
(pages-set-delimiter): Rename to have pages- prefixes and make the
previous name into aliases for the new names.
(ctl-x-ctl-p-map): Use the new command names.
* lisp/international/ja-dic-cnv.el (skkdic-convert-okuri-ari)
(skkdic-convert-postfix, skkdic-convert-prefix)
(skkdic-collect-okuri-nasi): Use INFO progress reporting.
(skkdic-set-okuri-nasi): Use the progress reporter instead of a
per-1000 output.
* lisp/cedet/semantic/grammar.el
(semantic-grammar-expected-conflicts): New function.
(semantic-grammar-insert-defconst-with-eval): New function.
(semantic-grammar-create-package): Output the number of expected
shift/reduce conflicts.
* lisp/cedet/semantic/wisent/comp.el (wisent-total-conflicts):
Don't output the warning if the number of shift/reduce conflicts
is expected.
(wisent-expected-conflicts): Made obsolete.
Compile any subsequence of `cond' clauses to switch (bug#36139)
A single `cond' form can how be compiled to any number of switch ops,
optionally interspersed with non-switch conditions.
Previously, switch ops would only be used for whole `cond' forms
containing no other tests.
* lisp/emacs-lisp/bytecomp.el (byte-compile--cond-vars):
Rename from `byte-compile-cond-vars'.
(byte-compile--default-val): Remove.
(byte-compile--cond-switch-prefix):
Replace `byte-compile-cond-jump-table-info'; now also returns
trailing non-switch clauses.
(byte-compile-cond-jump-table): New arguments; no longer compiles
the default case.
(byte-compile-cond): Look for and compile switches at any place in the
list of clauses.
* test/lisp/emacs-lisp/bytecomp-tests.el (byte-opt-testsuite-arith-data):
Add test expression.
Compile cond with heterogeneous tests into switch (bug#36139)
Allow any mixture of `eq', `eql' and `equal', `memq', `memql' and
`member' in a switch-like `cond' to be compiled into a single switch.
* lisp/emacs-lisp/bytecomp.el (byte-compile--common-test): New.
(byte-compile-cond-jump-table-info): Use most specific common test.
* test/lisp/emacs-lisp/bytecomp-tests.el (byte-opt-testsuite-arith-data):
Add test cases for multi-value clause cond forms.
Tighter pcase or-pattern member function selection (bug#36139)
* lisp/emacs-lisp/pcase.el (pcase--u1):
Use the most specific of `memq', `memql' and `member' in or-patterns
with constant cases. This improves performance and may help the byte-code
compiler generate a switch.
* test/lisp/emacs-lisp/pcase-tests.el (pcase-tests-member):
Add mixed-type or-pattern test cases.
Compile list member functions in cond to switch (bug#36139)
* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-jump-table-info):
Expand `memq', `memql' and `member' to their corresponding
equality tests.
(byte-compile-cond-jump-table): Cases now have multiple values.
* lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1)
(byte-optimize-lapcode): Don't assume switch hash tables to be injective.
Paul Eggert [Wed, 19 Jun 2019 07:06:39 +0000 (00:06 -0700)]
--with-cairo is no longer experimental
Suggested by YAMAMOTO Mitsuharu in:
https://lists.gnu.org/r/emacs-devel/2019-06/msg00686.html
* configure.ac: Do not say --with-cairo is experimental.
* etc/NEWS: Say that --with-cairo is no longer experimental.
Glenn Morris [Tue, 18 Jun 2019 22:47:49 +0000 (15:47 -0700)]
Disable lexical-binding in ediff
Since it breaks the thing (bug#36157, bug#36281).
* lisp/vc/ediff-diff.el, lisp/vc/ediff-help.el, lisp/vc/ediff-hook.el:
* lisp/vc/ediff-init.el, lisp/vc/ediff-merg.el, lisp/vc/ediff-mult.el:
* lisp/vc/ediff-ptch.el, lisp/vc/ediff-vers.el, lisp/vc/ediff-wind.el:
* lisp/vc/ediff.el: Set lexical-binding to nil.
Eli Zaretskii [Tue, 18 Jun 2019 17:21:40 +0000 (20:21 +0300)]
Fix the handling of font backend supersedence on MS-Windows
* src/w32font.c (syms_of_w32font): Don't make the Uniscribe
font backend "superceded" here, ...
* src/w32uniscribe.c (syms_of_w32uniscribe_for_pdumper):
... make it "superceded" here, only if the HarfBuzz DLL was
successfully loaded. This is because Emacs compiled with
HarfBuzz support might run on a system without the DLL.
* src/w32fns.c (Fx_create_frame, w32_create_tip_frame):
Register the HarfBuzz font backend only if it is available.
Add a mechanism to specify expected shift/reduce .wy conflicts
* admin/grammars/python.wy: Set the expected number of
shift/reduce conflicts to four.
* lisp/cedet/semantic/grammar.el
(semantic-grammar-expected-conflicts): New function.
* lisp/cedet/semantic/wisent/comp.el (wisent-total-conflicts): Use
it to suppress warnings about the expected number of shift/reduce
conflicts.
Rename symbols in ind-util.el to have indian- prefixes
* lisp/language/ind-util.el (indian-ucs-to-is13194-regexp)
(indian-ucs-to-iscii-region, indian-iscii-to-ucs-region): Rename
unprefixed function to indian-*.
* lisp/finder.el (finder-compile-keywords): Instead of outputting
the directories being scanned, output progress reports on the
number of files being scanned. This makes the output more similar
to the autoload scraping.
Touch up the byte-compilation messaging in skkdic-set-okuri-nasi
* lisp/international/ja-dic-cnv.el (skkdic-set-okuri-nasi): Use
the "INFO" format for these informational messages, and be more
explicit in saying what they're doing.
* admin/grammars/js.wy: Add types to the FALSE, TRUE and QUERY tokens.
Without the types, you'd get the warning
*Warning* default value of <<no-type>> tokens changed to QUERY, was NULL_TOKEN
*Warning* default value of <<no-type>> tokens changed to TRUE, was QUERY
*Warning* default value of <<no-type>> tokens changed to FALSE, was TRUE
I think this should be harmless, and it doesn't seem to break handling
.js files.
Roland Winkler [Tue, 18 Jun 2019 05:59:11 +0000 (00:59 -0500)]
* bookmark.el: Watch bookmark file. Use lexical binding.
(bookmark-watch-bookmark-file): New user variable.
(bookmark-alist): Fix docstring.
(bookmark-bookmarks-timestamp): Renamed from bookmarks-already-loaded.
(bookmark-maybe-load-default-file, bookmark-save, bookmark-load):
Use bookmark-bookmarks-timestamp.
(bookmark-bmenu-mode-map): Define menu bar menu.
(bookmark-show-annotation, bookmark-show-all-annotations):
Make bookmarks buffer read-only.
(bookmark-bmenu-save): Use call-interactively.
* src/font.c (font_update_drivers): If argument NEW_DRIVERS is t, then don't
use superseded drivers.
(syms_of_font) <Qfont_driver_superseded_by>: New DEFSYM.
Output progress messages when scraping autoloads during bootstrap
* lisp/emacs-lisp/byte-run.el (byte-compile-info-message): New
function to outout informational messages during byte compilation.
* lisp/emacs-lisp/autoload.el (update-directory-autoloads): Use it
to report progress when scraping autoloads during bootstrap (which
may take half a minute).
Compilation work-around for obsolete eieio-object-set-name-string
* lisp/emacs-lisp/eieio-base.el (eieio-object-set-name-string):
Move the generic definition of this method to here from eieio.el
and place it after the cl-method definition. This avoids a
warning about it being obsolete when doing macro expansion.
Work around warning from macroexpanding obsolete method
* lisp/emacs-lisp/eieio.el (object-print): Move method definition
to before generic definition because the generic definition
obsoletes the method, which will then output a warning from when
macroexpanding.
Alex Branham [Fri, 14 Jun 2019 18:15:36 +0000 (13:15 -0500)]
Avoid a flyspell error if point is at beginning of buffer
* lisp/textmodes/flyspell.el (flyspell-generic-progmode-verify): Check
if point is at the beginning of the buffer. This prevents an error
when e.g. 'flyspell-auto-correct-word' gets called with point at the
beginning of the buffer.
Fix use of obsolete constructor in semantic/complete.el
* lisp/cedet/semantic/complete.el (make-instance): Use
make-instance instead of the obsolete constructor method... which
didn't work, anyway. The following would bug out
Fix compilation warning by having ede-target inherit from eieio-named
* lisp/cedet/ede/base.el (ede-target): Inherit from eieio-named so
that if you're customizing objects via eieio-object-value-get, you
can set the name.
* lisp/emacs-lisp/eieio-custom.el (eieio-object-value-get): Don't
use obsolete function `eieio-object-set-name-string'.
Suppress warning in isearchb about iswitchb being obsolete
* lisp/isearchb.el (obsolete): Suppress warning about package
being obsolete. Instead, this has been reported to the bug
tracker, because it requires a rewrite of isearchb.
Make do-after-load-evaluation check whether warnings are enabled.
* lisp/subr.el (do-after-load-evaluation): Heed
`byte-compile-warning-enabled-p', if defined. This allows
suppressing the warning about packages being obsolete.
* lisp/emacs-lisp/eieio.el (cl-print-object): Suppress the warning
about object-print being obsolete, since there are no in-tree
methods like that any more.
Make with-suppressed-warnings work in cl-defmethod
* lisp/emacs-lisp/cl-generic.el (cl-defmethod): Pass the symbol
name on to `byte-compile-warning-enabled-p' to make
with-suppressed-warnings work in cl-defmethods, too.
* lisp/cedet/semantic/db.el (object-print): Remove; unused.
* lisp/cedet/semantic/db.el (semanticdb-debug-info): New method.
(object-print): Rewritten to be cl-print-object.
* lisp/emacs-lisp/eieio.el (eieio-object-name): Allow the EXTRA
argument to be a list of strings.
Eric Abrahamsen [Mon, 17 Jun 2019 02:14:25 +0000 (19:14 -0700)]
Prevent the Gnus registry from being loaded twice at startup
* lisp/gnus/gnus-registry.el (gnus-registry-load): Check if the
registry is already loaded, and don't load again unless new optional
FORCE argument is non-nil.
(gnus-registry-clear): New function to clear the registry, added as
a Gnus shutdown. Now that loading doesn't unilaterally reset the
registry, we need to make sure it is reloaded when Gnus is.
Fix up the --no-print-directory changes in src/Makefile.in
* src/Makefile.in (AM_V_NO_PD): New macro written by Andreas
Schwab that can be either --no-print-directory or "".
(%.elc): Use it instead if the if statement.
Alan Mackenzie [Sun, 16 Jun 2019 15:46:12 +0000 (15:46 +0000)]
CC Mode: Remedy recent loss in performance
* lisp/progmodes/cc-engine.el (c-back-over-member-initializers): call
c-parse-state outside of the narrowing operation.
* lisp/progmodes/cc-fonts.el (c-get-fontification-context)
(c-font-lock-cut-off-declarators): Replace calls to c-determine-limit with
crude position calculations for speed.