* lisp/net/dictionary-connection.el (dictionary-connection-status,
dictionary-connection-close): Instead of returning nil in the else case
of the if just use when.
Was suggested by Stefan Kangas.
Use defsubst instead of defmacro here. It was suggested by Stefan
Kangas to replace the defmacro here and, looking at the lispref,
defsubst seems to be a suitable replacement providing the same
benefit of inlining functionality as the defmacro.
* lisp/net/dictionary.el (dictionary-popup-matching-words): Show error
if neither the parameter nor the word at point are defined
This avoids an error later on when the nil value is used as string
within dictionary-encode-charset.
* lisp/net/dictionary.el (dictionary-popup-matching-words): No need to
check for popup-menu, the code is part of Emacs now and the function
should always be there
* lisp/tab-bar.el (tab-bar-history-buttons-show): If true,
show back and forward buttons when tab-bar-history-mode
is enabled. (Bug#45227)
Copyright-paperwork-exempt: yes
* lisp/tab-bar.el (tab-switcher): Simplify by let-binding
tab-bar-new-tab-choice to t before calling tab-bar-new-tab
that handles the case when it's called in the active minibuffer.
The point of un-inhibiting it was to make ElDoc backends interruptible
with any input (as in while-no-input), since that should in principle
invalidate the need of the current ElDoc processing. But that
strategy is dangerous for backends that perform complex
synchronization with external processes. Better let each backend
decide for itself it needs this eager interruptive behavior, like is
presumably the case with the Octave backend.
This reverts a part of
commit 12e922156c
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Date: Tue Dec 4 18:15:44 2018 -0500
* lisp/emacs-lisp/eldoc.el (eldoc-print-current-symbol-info):
* lisp/progmodes/octave.el (octave-eldoc-function-signatures): Use
while-no-input.
Based on an older patch by Philip K (https://debbugs.gnu.org/41890#127).
* lisp/progmodes/project.el: (project-switch-commands): Change to
'defcustom', alter the value format, add :type.
(project-switch-use-entire-map): New option.
(project--keymap-prompt, project-switch-project):
Update accordingly, while keeping compatibility with user-defined
values in the previous format (for some transition period).
Co-authored-by: Philip K. <philipk@posteo.net>
See Bug#44631. While testing for a readonly output directory has
slightly different semantics, in practice they should cover cases
where Emacs is sandboxed and can only write to the destination file,
not its directory.
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Handle the case
where the output directory is not writable.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--not-writable-directory)
(bytecomp-tests--dest-mountpoint): New unit tests.
* lisp/cus-edit.el (custom-variable-value-create): Obey the specified
tag format when creating the variable tag, but stop dropping the tag
format for the variable's type widget, since the tag can be used to
give useful information to the user about the variable. (Bug#35133)
(byte-compile--default-dest-file): New function, extracted from
byte-compile-dest-file.
(byte-compile-dest-file): Use it.
(byte-compile-dest-file-function): Give it a non-nil default value.
(byte-recompile-file, byte-compile-file): Handle a nil return value
from `byte-compile-dest-file`.
* lisp/progmodes/elisp-mode.el (elisp-flymake--batch-compile-for-flymake):
Tell the compiler not to write the result, instead of writing it to
a dummy temp file.
This commit remove the limitaiton we had not being able to add
constraints derived from conditional branches to basic blocks with
multiple predecessors. When this condition is verified we add a new
dedicated basic block to hold the constraints.
* lisp/emacs-lisp/comp.el (comp-block, comp-edge): Better slot
type specifiers.
(comp-block-cstr): New struct specializing `comp-block'.
(make-comp-edge): New function.
(comp-func): Better test function + doc for `blocks' slot.
(comp-limple-lock-keywords): Update possible basic block names.
(comp-emit-assume): Recive directly the block instead of its name.
(comp-add-new-block-beetween): New function.
(comp-cond-cstr-target-block): Logic update and use
`comp-add-new-block-beetween'.
(comp-cond-cstr-func): Make use of the latter.
(comp-compute-edges): Make use of `make-comp-edge'.
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-ctxt): Add new slot
`intersection-mem'.
(comp-cstr-intersection-homogeneous): Fix non local exit target.
(comp-cstr-intersection-no-mem): Rename from
`comp-cstr-intersection'.
(comp-cstr-intersection): New function.
* doc/misc/efaq.texi (Escape sequences in shell output): Remove
reference to versions before Emacs 21.
(Basic editing, Latest version of Emacs)
(Turning on abbrevs by default, Going to a line by number)
(Security risks with Emacs): Remove references to versions before
Emacs 22.
When creating multibyte or unibyte strings, we should guarantee the
following invariants:
- When creating empty strings, a NULL data pointer should be allowed.
This often arises in practice if the string length isn't known in
advance, and we don't want to unnecessarily trigger undefined
behavior. Since functions like memcpy might not accept NULL
pointers, use the canonical empty string objects in this case.
- Nonzero strings should be guaranteed to be unique and mutable.
These are the same guarantees expected from Lisp functions such as
'make-string' or 'unibyte-string'. On the other hand, empty strings
might not be unique.
* src/emacs-module.c (module_make_string)
(module_make_unibyte_string): Correctly handle empty strings.
* test/src/emacs-module-resources/mod-test.c (Fmod_test_make_string):
New test function.
(emacs_module_init): Expose it.
* test/src/emacs-module-tests.el (mod-test-make-string/empty)
(mod-test-make-string/nonempty): New unit tests.
* doc/lispref/internals.texi (Module Values): Document properties and
corner cases for strings.
* lisp/progmodes/make-mode.el (makefile-bsdmake-statements): Fix
the BSD conditional syntax (bug#24000).
(makefile-make-font-lock-keywords): Allow calling without keywords.
(makefile-bsdmake-font-lock-keywords): Add the conditional syntax.
Makefile inclusion, conditional structures and for loops reminiscent of
the C programming language are provided in make. All such structures are
identified by a line beginning with a single dot (`.') character.
Whitespace characters may follow this dot, e.g.,
.include <file>
and
. include <file>
are identical constructs
* doc/emacs/rmail.texi (Rmail Display): Mention the key
binding (bug#25411).
* lisp/mail/rmail.el (rmail-mode-map): Bind C-c C-d to
rmail-epa-decrypt.
(rmail-mode): Mention it.
(rmail-epa-decrypt): Don't mark a mail as decrypted unless we're
replacing it.
* lisp/mail/rmailsum.el (rmail-summary-mode-map): Bind C-c C-d.
(rmail-summary-epa-decrypt): New command.
* lisp/gnus/gnus-registry.el (gnus-registry-register-all): If nil,
the registry won't automatically create new entries for all seen
messages. Defaults to t to preserve previous behavior.
(gnus-registry-handle-action): Don't automatically create entries; if
one doesn't exist, don't handle anything.
(gnus-registry-register-message-ids): Only register if this option is
t.
(gnus-registry-get-or-make-entry): Add optional no-create argument.
(gnus-registry-get-id-key): This "get" operation should only create an
entry if this option is t.
* doc/misc/gnus.texi: Documentation and news.
(log-edit-font-lock-keywords): Disable line-number display on
the thin separator line.
(log-edit-mode): Adjust `font-lock-extra-managed-props` accordingly.
(log-edit-changelog-entries): Don't use a nil buffer-local
`change-log-default-name`.
* src/keyboard.c (prev_kbd_event): Now defined only if HAVE_X11.
* lisp/subr.el (while-no-input-ignore-events): Remove
'buffer-switch': no longer used or defined. (Bug#5803)