1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-15 19:31:29 -07:00
Commit graph

149293 commits

Author SHA1 Message Date
Basil L. Contovounesios
6290850dac Consistently stylize eldoc as ElDoc in prose
* doc/emacs/custom.texi (Specifying File Variables):
* doc/emacs/modes.texi (Major Modes):
* doc/emacs/programs.texi (Lisp Doc):
* etc/NEWS.22:
* etc/NEWS.23:
* lisp/progmodes/python.el:
(python-eldoc-function):
* test/lisp/progmodes/python-tests.el: Consistently capitalize eldoc
as ElDoc rather than Eldoc.
2020-07-10 15:22:27 +01:00
Michael Albinus
7caf570662 Tramp code cleanup
* lisp/net/tramp.el (tramp-shell-prompt-pattern)
(tramp-wrong-passwd-regexp, tramp-method-regexp-alist)
(tramp-domain-regexp, tramp-host-regexp, tramp-ipv6-regexp)
(tramp-port-regexp, tramp-debug-outline-regexp)
(tramp-drop-volume-letter, tramp-parse-shostkeys)
(tramp-handle-file-name-case-insensitive-p):
* lisp/net/tramp-adb.el (tramp-adb-send-command-and-check):
* lisp/net/tramp-ftp.el (tramp-ftp-enable-ange-ftp):
* lisp/net/tramp-gvfs.el (tramp-gvfs-monitor-process-filter):
* lisp/net/tramp-sh.el (tramp-display-escape-sequence-regexp)
(tramp-device-escape-sequence-regexp):
* lisp/net/tramp-smb.el (tramp-smb-do-file-attributes-with-stat)
(tramp-smb-handle-set-file-acl, tramp-smb-read-file-entry):
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-file-selinux-context):
Use character classes in regexp.

* lisp/net/tramp-adb.el (tramp-adb-ls-date-year-regexp)
(tramp-adb-ls-date-time-regexp): New defconst.
(tramp-adb-ls-date-regexp, tramp-adb-ls-toolbox-regexp)
(tramp-adb-sh-fix-ls-output): Use them.
(tramp-adb-handle-set-file-times, tramp-adb-maybe-open-connection):
Apply `eval-when-compile' on constant concat data.
(tramp-do-parse-file-attributes-with-ls):
Suppress `signal-hook-function'.
(tramp-adb--gnu-switches-to-ash): Remove unused function.
(tramp-adb-handle-set-file-modes): Qhote argument.
(tramp-adb-maybe-open-connection): Set file property rather than flush.

* lisp/net/tramp-cmds.el (tramp-rename-these-files):
Apply `eval-when-compile' on constant concat data.

* lisp/net/tramp-gvfs.el (tramp-gvfs-file-attributes)
(tramp-gvfs-file-attributes-with-gvfs-ls-regexp): Embed them in
`eval-and-compile'.
(tramp-gvfs-get-directory-attributes): Apply `eval-when-compile'
on constant concat data.
2020-07-10 10:45:14 +02:00
João Távora
62725e87f2 Fix byte compilation warning in Eldoc
* lisp/emacs-lisp/eldoc.el (eldoc-documentation-function): Pass nil as
second argument.
2020-07-10 08:13:15 +01:00
João Távora
9ade7ea7b7 Fix Eldoc problem when loading on Emacs 26.3
When defining the obsolete variable alias for old
eldoc-documentation-function (which now points to the newer
eldoc-documentation-strategy), one gets the error "don't know how to
make a localized vareiable an alias".  I'm not sure, but I suspect
this is because Eldoc is preloaded in Emacs 26.3 and the
eldoc-documentation-function variable is already set locally by some
Elisp buffer.

Uninterning the symbol shortly before defining the alias seems to fix
it.

* lisp/emacs-lisp/eldoc.el (eldoc-documentation-function):
Unintern on load.
(Version): Bump to 1.3.0
2020-07-10 01:47:33 +01:00
Paul Eggert
c86f3fe0d0 Fix out-of-source ‘make check’ emacs-module-tests
Problem reported by Koki Fukuda in:
https://lists.gnu.org/r/emacs-devel/2020-07/msg00169.html
* test/Makefile.in (MODULE_CFLAGS):
Include from the same directories included from in ../src.
* test/src/emacs-module-tests.el (module/describe-function-1):
Strip path to source directory.
2020-07-09 16:38:45 -07:00
Paul Eggert
c8b6006d82 Use Gnulib libgmp module
Instead of doing GMP by hand, use the Gnulib libgmp module.
* .gitignore: Add lib/gmp.h.
* admin/merge-gnulib (GNULIB_MODULES): Add libgmp.
* configure.ac (GMP_LIB, GMP_OBJ): Remove.  Gnulib uses the name
LIB_GMP, so all uses changed.  All uses of GMP_OBJ removed.
(HAVE_GMP): Set this from Gnulib’s variables.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* lib/mini-gmp-gnulib.c, lib/mini-gmp.c, lib/mini-gmp.h, m4/libgmp.m4:
New files, copied from Gnulib.
* src/bignum.h, test/data/emacs-module/mod-test.c:
Include gmp.h unconditionally.
* src/mini-gmp-emacs.c, src/mini-gmp.c, src/mini-gmp.h:
Remove.  This moves these files from src to lib, and
updates them to the current GMP version.
* test/Makefile.in (GMP_H): New macro.
($(test_module)): Use it to decide whether to compile
mini-gmp-gnulib.c too.
2020-07-09 16:38:45 -07:00
Paul Eggert
501306557c Speed up GCC 10.1 compilation in default Git builds
* configure.ac (nw): GCC 10.1 introduced warnings enabled by -fanalyzer
that slow down compilation considerably.  Generate these warnings only
if --enable-gcc-warnings is explicitly given.  Also, do not bother to
eliminate warnings that Gnulib’s revised manywarnings module no longer
generates.
2020-07-09 16:38:44 -07:00
Paul Eggert
0fc8671d10 Update from Gnulib
This incorporates:
2020-07-07 dup2: remove support for some very old platforms
2020-07-07 memchr: remove support for some very old platforms
2020-07-04 getumask: new module
2020-07-03 getrandom: fix compilation error on native Windows
2020-07-03 lchmod: simplify after 2020-02-22 change
2020-07-01 manywarnings: improve port to GCC 10.1
2020-06-28 getrandom: fix compilation errors on older versions of mingw
2020-06-29 alloca-opt: fix warning on mingw
* lib/alloca.in.h, lib/dup2.c, lib/getrandom.c, lib/string.in.h:
* lib/sys_stat.in.h, lib/unistd.in.h, m4/dup2.m4, m4/getrandom.m4:
* m4/lchmod.m4, m4/manywarnings.m4, m4/string_h.m4, m4/sys_stat_h.m4:
* m4/unistd_h.m4: Copy from Gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
2020-07-09 16:38:44 -07:00
Alexander Adolf
814e3b0b17 EUDC: Add macOS Contacts backend
* lisp/net/eudcb-macos-contacts.el: New file.
* doc/misc/eudc.texi (macOS Contacts): New section.
(macOS Contacts Configuration): Likewise.
* etc/NEWS: Mention new macOS Contacts backend.
2020-07-09 15:32:14 -04:00
Eli Zaretskii
2d7c3e49b0 Improve display of compositions by "C-u C-x ="
* lisp/descr-text.el (describe-char): On TTY frames, display the
Unicode names of the composed characters as well.  (Bug#42256)
2020-07-09 20:42:04 +03:00
Eli Zaretskii
136e931189 Improve documentation of "C-u C-x ="
* doc/emacs/mule.texi (International Chars): Mention the
composition information displayed by "C-u C-x =".  (Bug#42256)
2020-07-09 20:38:38 +03:00
João Távora
59f563680d Unbreak M-x eldoc
The command should always invoke Eldoc when called interactively,
instead of going through the usual checks, which are performed to
avoid interference with other commands.

* lisp/emacs-lisp/eldoc.el (eldoc-print-current-symbol-info): Rework.
(Version): Bump to 1.2.0
2020-07-09 18:07:22 +01:00
João Távora
ffb99d8490 Prevent infloop in Eldoc message truncation algorithm
The truncation algorithm still has a long way to go for very narrow
frame sizes.  It should become a generic mechanism that would allows
one to truncate a string so that fits in N possibly truncated screen
lines of a full-width window.

* lisp/emacs-lisp/eldoc.el (eldoc-handle-docs): Tweak
2020-07-09 18:07:22 +01:00
Andrea Corallo
5f13016ced Merge remote-tracking branch 'savannah/master' into wip2 2020-07-09 16:42:16 +01:00
Paul Eggert
1f52771fd3 Mention floating rounding issues
* doc/lispref/numbers.texi (Float Basics): Mention floating-point
rounding issues uncovered by the discussion in Bug#42417.
2020-07-09 08:40:58 -07:00
Andrea Corallo
02bf2e08e2 * Disable ipa-pure in comp-tests-tco
* test/src/comp-tests.el (comp-tests-tco): Disable ipa-pure to
	check effectively for tail recursion elimination.
2020-07-09 16:23:34 +01:00
Andrea Corallo
9aaca828fc * Add `comp-disabled-passes'
* lisp/emacs-lisp/comp.el (comp-disabled-passes): New special
	variable.
	(native-compile): Make use of `comp-disabled-passes'.
2020-07-09 16:23:34 +01:00
Andrea Corallo
92e744d787 ;* test/src/comp-test-funcs-dyn.el: Fix comment header. 2020-07-09 16:23:34 +01:00
Andrea Corallo
a53b446cb0 Add some tests for pure function optimization
* test/src/comp-tests.el (comp-tests-fw-prop): Fix docstring.
	(comp-tests-pure-checker-1, comp-tests-pure-checker-2): New
	functions.
	(comp-tests-pure): New test testing for pure function
	optimization.
2020-07-09 16:23:31 +01:00
Andrea Corallo
b4de6baa7b * Optimize pure functions defined by the compilation environment
* lisp/emacs-lisp/comp.el (comp-apply-in-env): New macro.
	(comp-function-call-maybe-remove): Update to make use of
	`comp-apply-in-env'.
2020-07-09 16:22:48 +01:00
Andrea Corallo
7622740e29 * Introduce a new pass ipa-pure
Add a simple pass to infer pure functions not explicitly declared as
such.  Use this information only during compilation (speed 3) to
optimize out function calls whe possible.
2020-07-09 16:22:48 +01:00
Andrea Corallo
5688739c5b * Add `comp-call-op-p'
* lisp/emacs-lisp/comp.el (comp-call-op-p): New predicate.
	(comp-limple-insn-call-p): Make use of.
2020-07-09 16:22:48 +01:00
Andrea Corallo
4348969536 * test/src/comp-test-funcs.el (comp-tests-aref-aset-f) : Fix UB. 2020-07-09 16:22:48 +01:00
Andrea Corallo
3db6ace804 * Define `comp-symbol-func-to-fun'
* lisp/emacs-lisp/comp.el (comp-symbol-func-to-fun): New function.
	(comp-func-in-unit): Make use of the `comp-symbol-func-to-fun'.
2020-07-09 16:22:48 +01:00
Andrea Corallo
e6ab4e3dfe * Add a test targeting forward propagation
* test/src/comp-tests.el (comp-tests-fw-prop-checker-1): New
	function.
	(comp-tests-fw-prop): New test.
2020-07-09 16:22:37 +01:00
João Távora
19cf8e5be7 Bump Flymake version
* lisp/progmodes/flymake.el (Version): Bump to 1.0.9.
2020-07-09 11:14:34 +01:00
Mattias Engdegård
c892ae65b4 Repair global-auto-revert-ignore-modes (bug#42271)
Reported by Gustavo Tavares Cabral.

* lisp/autorevert.el (auto-revert--global-add-current-buffer): Fix typo.
2020-07-09 09:29:14 +02:00
Glenn Morris
ef8bd7d856 Update tests for recent changes
* test/lisp/descr-text-tests.el (descr-text-test-desc):
Update for recent change to describe-char-eldoc.
* test/lisp/progmodes/elisp-mode-tests.el
(elisp--highlight-function-argument-indexed)
(elisp--highlight-function-argument-keyed-1)
(elisp--highlight-function-argument-keyed-2):
Update for recent change to elisp--highlight-function-argument.
2020-07-08 17:35:54 -07:00
Glenn Morris
fcc04678b9 * lisp/progmodes/cc-engine.el (c-at-expression-start-p): Fix message. 2020-07-08 17:23:36 -07:00
João Távora
9a7aab2d9e ; * etc/NEWS (Eldoc): adjust NEWS entry. 2020-07-08 20:23:12 +01:00
João Távora
6063b542f7 Shoosh warnings about obsolete eldoc-documentation-function
* lisp/progmodes/cfengine.el (cfengine3-mode): Remove mention to
obsolete eldoc-documentation-function.

* lisp/progmodes/python.el (python-mode): Use with-no-warnings.
2020-07-08 20:20:19 +01:00
Eli Zaretskii
a85026c3af ; * etc/NEWS: Fix last change. 2020-07-08 19:54:17 +03:00
Eli Zaretskii
8cdfccfc9b ; * etc/NEWS: Minor copyedits of the recent additions. 2020-07-08 19:49:45 +03:00
Eli Zaretskii
3a446a02fb ; * src/xdisp.c (decode_mode_spec): Fix commentary. 2020-07-08 19:45:30 +03:00
Andrea Corallo
b31b0ebefe * Rework some test logic for generality
* test/src/comp-tests.el (comp-tests-make-insn-checker): New
	function splitting logic from `comp-tests-tco-checker' to have it
	more general.
	(comp-tests-tco-checker): Make use of
	`comp-tests-make-insn-checker'.
2020-07-08 17:29:24 +01:00
Andrea Corallo
0b81044e7e * Clean-up some const folding logic and add `comp-function-pure-p'
* lisp/emacs-lisp/comp.el (comp-function-pure-p): New predicate.
	(comp-function-call-maybe-remove): Update to use the
	`comp-function-pure-p'.
2020-07-08 17:26:51 +01:00
Mattias Engdegård
b7058f95f5 Special-case symbol and fixnum keys in member, assoc and rassoc
* src/fns.c (Fmember, Fassoc, Frassoc): Delegate to the cheaper Fmemq,
Fassq and Frassq for arguments of the appropriate types.
(eq_comparable_value): New function.
2020-07-08 18:13:47 +02:00
Eli Zaretskii
79f381b4a6 One more improvement of left/right-fringe display spec docs
* doc/lispref/display.texi (Fringe Bitmaps): Yet another
clarification of how to use FACE in left/right-fringe display
spec.
2020-07-08 17:39:13 +03:00
João Távora
384fa10958 Improve Eldoc docstrings
* lisp/emacs-lisp/eldoc.el (eldoc-documentation-strategy): Improve
docstring.
(eldoc--make-callback): Improve docstring.
(eldoc--invoke-strategy): New helper function.
(eldoc-print-current-symbol-info): Call eldoc--invoke-strategy.
(eldoc-documentation-functions): Improve docstring.
2020-07-08 11:25:33 +01:00
João Távora
fbc0bc6bef Change version scheme of two Eldoc obsolete specs
* lisp/emacs-lisp/eldoc.el (eldoc-documentation-function)
(eldoc-message): Obsolete spec uses eldoc-1.1.0.
2020-07-08 11:25:33 +01:00
João Távora
b3efd5c228 Adjust describe-char-eldoc to new eldoc-documentation-functions protocol
* lisp/descr-text.el (describe-char-eldoc): Adjust to new
eldoc-documentation-functions protocol.
2020-07-08 11:25:33 +01:00
João Távora
bba3bea247 Adjust Eldoc documentation after Eli's review
* etc/NEWS (Eldoc): Adjust paragraphs.

* lisp/emacs-lisp/eldoc.el (eldoc-prefer-doc-buffer): Adjust
docstring.
(eldoc--enthusiasm-curbing-timer, eldoc-documentation-strategy)
(eldoc-documentation-functions): Adjust docstring.
(eldoc--handle-docs): Adjust comments.
(eldoc--documentation-compose-1): New helper.
(eldoc-documentation-compose)
(eldoc-documentation-compose-eagerly): Use it.
(eldoc-print-current-symbol-info): Adjust comments.
2020-07-08 11:25:33 +01:00
João Távora
1203626f47 Make more parts of Emacs use new Eldoc capabilities
Elisp-mode was doing a lot of work that can now be delegated to Eldoc.
Flymake uses the new Eldoc functionality, too, installing a global
documentation function that may report on diagnostics under point.

CEDET's grammar.el was left as the only user of an Eldoc-internal
function.  That function was moved to grammar.el.  That file is still,
somewhat reprehensibly, using an internal function of elisp-mode.el,
but this was left unchanged.

In other situations, eldoc-documentation-functions is used or
recommended.

The only other places where the obsolete eldoc-documentation-function
is still used is in libraries which are presumably meant to remain
compatible with previous Emacs versions.

* lisp/progmodes/elisp-mode.el (elisp-eldoc-funcall)
(elisp-eldoc-var-docstring): New functions.
(emacs-lisp-mode): Put two elements in
eldoc-documentation-functions.

* lisp/emacs-lisp/eldoc.el (eldoc--eval-expression-setup): Setup
new Elisp eldoc-documentation-functions.

* lisp/progmodes/flymake.el (flymake-mode): Use
flymake-eldoc-function.
(flymake-eldoc-function): New function.
(Package-Requires): Require eldoc 1.1.0

* lisp/descr-text.el (describe-char-eldoc): Recommend
eldoc-documentation-functions.

* lisp/progmodes/cfengine.el (cfengine3-documentation-function):
Recommend eldoc-documentation-functions

* lisp/progmodes/octave.el (inferior-octave-mode): Use
eldoc-documentation-functions.

* lisp/cedet/semantic/grammar.el (semantic--docstring-format-sym-doc):
New function.
(semantic-grammar-eldoc-get-macro-docstring): Adjust.
2020-07-08 11:25:33 +01:00
João Távora
a9bd506004 * lisp/emacs-lisp/eldoc.el (Version): Bump to 1.1.0 2020-07-08 11:25:33 +01:00
João Távora
22cae4f509 New M-x eldoc for on-demand and interactive documentation requests
The function eldoc is just an alias for
eldoc-print-current-symbol-info, which is made interactive.

* lisp/emacs-lisp/eldoc.el (eldoc-print-current-symbol-info): Now an
interactive function.
(eldoc): Alias to eldoc-print-current-symbol-info.
2020-07-08 11:25:33 +01:00
João Távora
a7a53f0d79 Better handle asynchronous Eldoc sources
This is a backward compatible redesign of significant parts of the
eldoc.el library.

Previously, Eldoc clients (major/minor modes setting its documentation
gathering variables) needed to directly call eldoc-message, an
internal function, to display the docstring to the user.  When more
asynchronous sources are involved, this is hard to do or even breaks
down.

Now, an Eldoc backend may return any non-nil, non-string value and
call a callback afterwards.  This restores power to Eldoc over how
(and crucially also when) to display the docstrings to the user.

Among other things, this fixes so called "doc blinking", or the very
short-lived display of a lower priority Eldoc message.  This would
happen if a particular producer of documentation finishes shortly
before a higher priority one, like in the LSP engine Eglot as reported
by Andrii Kolomoiets <andreyk.mad@gmail.com> and Dmitry Gutov
<dgutov@yandex.ru>.

Gathering docstrings is now delegated to the variable
eldoc-documentation-strategy, which is the new name for the
now-obsolete eldoc-documentation-function, and still accepts the
so-called "old protocol".  Examples of the new strategies enabled are
codified in functions such as eldoc-documentation-enthusiast,
eldoc-documentation-compose-eagerly, along with the existing
eldoc-documentation-compose and eldoc-documentation-default.

The work of displaying and formatting docstrings is shifted almost
fully to Eldoc itself and is delegated to the internal function
eldoc--handle-docs.  Among other improvements, it handles most of
eldoc-echo-area-use-multiline-p and outputs documentation to a
temporary *eldoc* buffer.

The manual and NEWS are updated to mention the new Eldoc features.

* lisp/emacs-lisp/eldoc.el (eldoc-documentation-functions):
Overhaul docstring.
(eldoc-documentation-compose, eldoc-documentation-default): Handle
non-nil, non-string values of elements of
eldoc-documentation-functions.  Use eldoc--handle-multiline.
(eldoc-print-current-symbol-info): Honour non-nil, non-string
values returned by eldoc-documentation-callback.
(eldoc--make-callback): Now also a function.
(eldoc-documentation-default, eldoc-documentation-compose): Tweak docstring.
(eldoc-documentation-enthusiast, eldoc-documentation-compose-eagerly):
New functions.
(eldoc-echo-area-use-multiline-p): Add new semantics.
(eldoc--handle-docs): Handle some of eldoc-echo-area-use-multiline-p.
(eldoc-doc-buffer): New command.
(eldoc-prefer-doc-buffer): New defcustom.
(eldoc--enthusiasm-curbing-timer): New variable.
(eldoc-documentation-strategy): Rename from eldoc-documentation-function.
(eldoc--supported-p): Use eldoc-documentation-strategy
(eldoc-highlight-function-argument)
(eldoc-argument-case, global-eldoc-mode)
(turn-on-eldoc-mode): Mention eldoc-documentation-strategy.
(eldoc-message-function): Mention eldoc--message.
(eldoc-message): Made obsolete.
(eldoc--message): New helper.

* lisp/hexl.el (hexl-print-current-point-info): Adjust to new
eldoc-documentation-functions protocol.

* lisp/progmodes/cfengine.el (cfengine3-documentation-function):
Adjust to new eldoc-documentation-functions protocol.

* lisp/progmodes/elisp-mode.el
(elisp-eldoc-documentation-function): Adjust to new
eldoc-documentation-functions protocol.

* lisp/progmodes/octave.el (octave-eldoc-function): Adjust to new
eldoc-documentation-functions protocol.

* lisp/progmodes/python.el (python-eldoc-function): Adjust to new
eldoc-documentation-functions protocol.

(eldoc-print-current-symbol-info): Rework with cl-labels.

* doc/emacs/programs.texi (Lisp Doc): Mention
eldoc-documentation-strategy.

* doc/lispref/modes.texi (Major Mode Conventions): Mention
eldoc-documentation-functions.

* etc/NEWS: Mention eldoc-documentation-strategy.
2020-07-08 11:25:33 +01:00
Andrea Corallo
3d43d45755 Merge remote-tracking branch 'savannah/master' into HEAD 2020-07-07 20:44:39 +01:00
Mattias Engdegård
df3ece9d2e Optimise assoc and rassoc with symbol key to assq and rassq
This is the same transformation made for member to memq.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-assoc): New function.
(assoc, rassoc): Set the byte-optimizer property.
2020-07-07 17:55:20 +02:00
Eli Zaretskii
1279bdb072 Another clarification of left/right-fringe display spec
* doc/lispref/display.texi (Fringe Bitmaps): More accurate
description of what FACE means in the left/right-fringe display
spec.
2020-07-07 17:55:24 +03:00
Glenn Morris
1a850f4b20 Merge from origin/emacs-27
71fc003860 (origin/emacs-27) Avoid infloop in 'format-mode-line'
247dcb4b1b Clarify the documentation of 'left/right-fringe' display spec
d453cee177 Minor improvement in ELisp manual
3c778c443c * doc/misc/tramp.texi (Customizing Methods): Fix typo.
2020-07-07 07:50:40 -07:00