]> git.eshelyaron.com Git - emacs.git/log
emacs.git
3 years agoEnable automatic co-install of msys feature/internal-msys
Phillip Lord [Mon, 18 Jan 2021 09:37:48 +0000 (09:37 +0000)]
Enable automatic co-install of msys

3 years agoAdd a bit more clarification around standard error processes.
Philipp Stephani [Sun, 17 Jan 2021 10:52:40 +0000 (11:52 +0100)]
Add a bit more clarification around standard error processes.

* doc/lispref/processes.texi (Asynchronous Processes): Document
how to obtain the standard error process that Emacs creates.
(Accepting Output): Add an example how to wait for standard error in
case Emacs has created a standard error process.

3 years ago* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Use pcase
Stefan Monnier [Sat, 16 Jan 2021 15:51:09 +0000 (10:51 -0500)]
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Use pcase

3 years ago* lisp/emacs-lisp/pcase.el: Add support for `not` to `pred`
Stefan Monnier [Sat, 16 Jan 2021 15:15:47 +0000 (10:15 -0500)]
* lisp/emacs-lisp/pcase.el: Add support for `not` to `pred`

(pcase--split-pred, pcase--funcall): Adjust for `not`.
(pcase--get-macroexpander): New function.
(pcase--edebug-match-macro, pcase--make-docstring)
(pcase--macroexpand): Use it.

* lisp/emacs-lisp/radix-tree.el (radix-tree-leaf): Use it!

* doc/lispref/control.texi (The @code{pcase} macro): Document it.

* lisp/emacs-lisp/ert.el (ert--explain-equal-rec): Remove redundant test.

3 years agoDon't crash if no asynchronous process has been created yet.
Philipp Stephani [Sun, 10 Jan 2021 16:59:29 +0000 (17:59 +0100)]
Don't crash if no asynchronous process has been created yet.

* src/process.c (wait_reading_process_output): Allow
child_signal_read_fd < 0.

3 years agoFix deadlock when receiving SIGCHLD during 'pselect'.
Philipp Stephani [Sun, 10 Jan 2021 15:31:12 +0000 (16:31 +0100)]
Fix deadlock when receiving SIGCHLD during 'pselect'.

If we receive and handle a SIGCHLD signal for a process while waiting
for that process, 'pselect' might never return.  Instead, we have to
explicitly 'pselect' that the process status has changed.  We do this
by writing to a pipe in the SIGCHLD handler and having
'wait_reading_process_output' select on it.

* src/process.c (child_signal_init): New helper function to create a
pipe for SIGCHLD notifications.
(child_signal_read, child_signal_notify): New helper functions to
read from/write to the child signal pipe.
(create_process): Initialize the child signal pipe on first use.
(handle_child_signal): Notify waiters that a process status has
changed.
(wait_reading_process_output): Make sure that we also catch
SIGCHLD/process status changes.

* test/src/process-tests.el
(process-tests/fd-setsize-no-crash/make-process): Remove workaround,
which is no longer needed.

3 years agoFix Rmail summary for more than 99,999 messages
Eli Zaretskii [Sat, 16 Jan 2021 18:18:32 +0000 (20:18 +0200)]
Fix Rmail summary for more than 99,999 messages

* lisp/mail/rmailsum.el (rmail-summary-font-lock-keywords): Don't
assume there will be less than 100,000 messages in an mbox file.
(Bug#45912)

3 years agoFix two tests
Eli Zaretskii [Sat, 16 Jan 2021 18:15:17 +0000 (20:15 +0200)]
Fix two tests

* test/lisp/progmodes/elisp-mode-tests.el (xref-elisp-test-run):
Make sure file names can be compared as strings, by running them
through 'file-truename'.  Reported by Vin Shelton
<acs@alumni.princeton.edu>.
* test/lisp/emacs-lisp/bytecomp-tests.el ("warn-obsolete-hook.el")
("warn-obsolete-variable.el"): Use [^z-a] to match a newline as
well.  Reported by Vin Shelton <acs@alumni.princeton.edu>.

3 years agotest/infra/gitlab-ci.yml: run only for tags and some branches
Ted Zlatanov [Sat, 16 Jan 2021 15:45:05 +0000 (15:45 +0000)]
test/infra/gitlab-ci.yml: run only for tags and some branches

3 years agoImprove support for Cham script
Eli Zaretskii [Sat, 16 Jan 2021 14:54:01 +0000 (16:54 +0200)]
Improve support for Cham script

* lisp/language/cham.el ("Cham"): Expand the entry.

* etc/HELLO: Add entry for Cham.

3 years agoEMBA container build improvements for Emacs build testing.
Ted Zlatanov [Sat, 16 Jan 2021 13:03:58 +0000 (13:03 +0000)]
EMBA container build improvements for Emacs build testing.

* test/infra/gitlab-ci.yml: Moved from .gitlab-ci.yml. Use the
EMBA container registry with a different login token storage file
for each commit. Split test stages into prep, build, fast tests,
normal tests, platform tests, and slow (everything) and use
templates where possible.

* .gitlab-ci.yml: Include test/infra/gitlab-ci.yml and move all
content there.

3 years agoFix last change
Eli Zaretskii [Sat, 16 Jan 2021 13:02:48 +0000 (15:02 +0200)]
Fix last change

* src/frame.c (Fset_mouse_position, Fset_mouse_pixel_position):
Don't compile the FRAME_MSDOS_P case on platforms other than
MSDOS, as that will never happen there.

3 years agoMake mouse-related calls be more consistent on all frame types
Jared Finder [Wed, 2 Dec 2020 08:05:59 +0000 (00:05 -0800)]
Make mouse-related calls be more consistent on all frame types

* src/frame.c (Fset_mouse_position, Fset_mouse_pixel_position): Call
Fselect_frame and appropriate mouse_moveto function on all non-GUI
frame types, independent of #ifdef's.
* src/term.c (init_tty): Initialize mouse_face_window for all
non-GUI frame types.
(term_mouse_moveto) [HAVE_GPM]: Make available even if
HAVE_WINDOW_SYSTEM is defined.
* src/xdisp.c (try_window_id): Call gui_clear_window_mouse_face
in all cases.

3 years ago* lisp/frame.el Don't activate `blink-cursor-idle-timer` needlessly.
Stefan Monnier [Sat, 16 Jan 2021 04:18:08 +0000 (23:18 -0500)]
* lisp/frame.el Don't activate `blink-cursor-idle-timer` needlessly.

(blink-cursor-mode): Use `blink-cursor-check` rather than
`blink-cursor--start-idle-timer` so we check for the presence of
a frame where the cursor can be blinked before activating the idle timer.

3 years agoChange default-directory before prompting in project-compile
Kévin Le Gouguec [Sun, 10 Jan 2021 09:43:41 +0000 (10:43 +0100)]
Change default-directory before prompting in project-compile

This causes command completion to work from the project root, letting
users complete top-level folders, make targets, etc (bug#45765).

* lisp/progmodes/project.el (project-compile): Simplify using
call-interactively, as done with project(-async)-shell-command.

3 years ago* src/dispnew.c (sit_for): Return nil when interrupted by process output
Stefan Monnier [Sat, 16 Jan 2021 03:38:52 +0000 (22:38 -0500)]
* src/dispnew.c (sit_for): Return nil when interrupted by process output

Before adbb4eacc2a984c0fc0b65ec761368fd9067d6c5,
`read_and_dispose_of_process_output` called
`record_asynch_buffer_change` which added "artificial" input events
(in the form of BUFFER_SWITCH_EVENTs), causing sit_for to return
Qnil when interrupted by process output.  Without those BUFFER_SWITCH_EVENTs,
sit_for now tends to return Qt when interrupted by process output
making `read_char` believe that we've waited the whole timeout,
As consequence incoming process output tended to cause premature
auto-saving of files (sometimes right after almost every key press).

This patch recovers the previous behavior, which is not ideal
(incoming process output can delay auto-save indefinitely), but has
been good enough for many years.

3 years ago; Remove recent spurious addition in window.el
Basil L. Contovounesios [Fri, 15 Jan 2021 21:30:14 +0000 (21:30 +0000)]
; Remove recent spurious addition in window.el

* lisp/window.el (display-buffer-use-some-window): Remove spurious
message included in 2021-01-11 "Support using auth-source for
NickServ passwords in ERC" (bug#45340#44).

3 years agoRemove support for 32 bit build
Phillip Lord [Thu, 14 Jan 2021 22:51:13 +0000 (22:51 +0000)]
Remove support for 32 bit build

* admin/nt/dist-build/README-scripts: Update
* admin/nt/dist-build/README-windows-binaries: Update
* admin/nt/dist-build/build-zips.sh: Remove 32 bit and fix paths
* admin/nt/dist-build/build-dep-zips.py: Remove 32 bit and update
  paths
* admin/nt/dist-build/emacs.nsi: Remove 32 bit and fix paths

3 years agoUpdate dependency capture
Phillip Lord [Thu, 7 Jan 2021 22:06:53 +0000 (22:06 +0000)]
Update dependency capture

* admin/nt/dist-build/build-dep-zips.py: Use ntldd to directly
  determine DLL dependencies

3 years ago* .gitignore: add src/fingerprint.c
Stephen Leake [Fri, 15 Jan 2021 18:03:06 +0000 (10:03 -0800)]
* .gitignore: add src/fingerprint.c

* lisp/dired-x.el (dired-file-name-at-point): Fix spelling in obsolete
message.

3 years agoFix 'window-text-pixel-size' when there are leading/trailing spaces
Aaron Jensen [Sun, 10 Jan 2021 02:43:32 +0000 (20:43 -0600)]
Fix 'window-text-pixel-size' when there are leading/trailing spaces

First, scan to find the first non-whitespace character and then
backtrack to find the beginning of the line.  The previous
algorithm always started on the non-whitespace character during
the backtrack, causing it to stop immediately and not actually
find the beginning of the line.  The same applies to the end of
line calculation.
* src/xdisp.c: (Fwindow_text_pixel_size): Fix off by one error.
(Bug#45748)

* test/src/xdisp-tests.el (xdisp-tests--window-text-pixel-size)
(xdisp-tests--window-text-pixel-size-leading-space)
(xdisp-tests--window-text-pixel-size-trailing-space): New tests.

3 years agoMake libraries works with xterm-mouse-mode.
Jared Finder [Sat, 2 Jan 2021 22:10:17 +0000 (14:10 -0800)]
Make libraries works with xterm-mouse-mode.

Change calls from 'read-event' to 'read-key' in libraries expecting
mouse events.  Do this only when 'xterm-mouse-mode' is enabled.  That
way those libraries read decoded mouse events instead of the
underlying escape sequence.  Add a parameter to 'read-key' that avoids
running any of the unbound fallbacks in 'read-key-sequence' so the
libraries can read mouse button-down events.

For backward compatibility purposes, the above logic is contained in a
new internal-only function: 'read--potential-mouse-event'.

* doc/lispref/commands.texi (Reading One Event): Document new
parameter to 'read-key'.  Mention that non-character events on
terminals need 'read-key'.
* lisp/subr.el (read-key-full-map): Add new keymap used by 'read-key'.
(read-key): Add new parameter 'fallbacks-disabled' to prevent running
any of the unbound fallbacks normally run by 'read-key-sequence'.
(read--potential-mouse-event): Add new function that calls 'read-key'
or 'read-event' depending on if 'xterm-mouse-mode' is set.
* lisp/foldout.el (foldout-mouse-swallow-events):
* lisp/isearch.el (isearch-pre-command-hook):
* lisp/mouse-drag.el (mouse-drag-throw, mouse-drag-drag):
* lisp/mouse.el (mouse-drag-secondary):
* lisp/ruler-mode.el (ruler-mode-mouse-grab-any-column)
(ruler-mode-mouse-drag-any-column-iteration):
* lisp/strokes.el (strokes-read-stroke, strokes-read-complex-stroke):
* lisp/textmodes/artist.el (artist-mouse-draw-continously)
(artist-mouse-draw-poly, artist-mouse-draw-2points):
* lisp/vc/ediff-wind.el (ediff-get-window-by-clicking):
* lisp/wid-edit.el (widget-button--check-and-call-button)
(widget-button-click): Call 'read--potential-mouse-event' instead of
'read-event'.
* lisp/wid-edit.el (widget-key-sequence-read-event): Call 'read-key'
with 'fallbacks-disabled' set instead of 'read-event'.  Unlike above
changes, this is unconditionally applied so it works for function
keys too.  Apply 'local-function-key-map' instead of
'function-key-map' as that contains the full terminal translations.
* lisp/vc/ediff.el (ediff-windows): Use 'display-mouse-p' to check if
a mouse is available.
* src/lread.c (Fread_event): Recommend 'read-key' in docstring for
'read-event' for non-character events.

3 years agoSome Tramp adaptions, mainly direct async processes
Michael Albinus [Fri, 15 Jan 2021 10:32:12 +0000 (11:32 +0100)]
Some Tramp adaptions, mainly direct async processes

* doc/misc/tramp.texi (Firewalls, Remote processes)
(Frequently Asked Questions): Add @vindex.
(Predefined connection information): Precise precondition or direct
async processes.
(Remote shell setup): Ban ssh RemoteCommand option.
(Frequently Asked Questions): Adapt quoting.

* doc/misc/trampver.texi:
* lisp/net/trampver.el: Change version to "2.5.1-pre".

* lisp/net/tramp-adb.el (tramp-methods) <adb>: Add `tramp-direct-async'
parameter.
(tramp-adb-handle-make-process): Adapt docstring.

* lisp/net/tramp-sh.el (tramp-methods) <scp, scpx, rsync, ssh, sshx>:
Add `tramp-direct-async' parameter.
(tramp-sh-handle-insert-directory): Simplify merkers.
(tramp-sh-handle-make-process): Adapt docstring.

* lisp/net/tramp.el (tramp-methods): Adapt docstring.
(tramp-debug-message): Suppress lockfiles.
(tramp-test-message): New defun.
(tramp-direct-async-process-p): Check also for `tramp-direct-async'.
(tramp-handle-make-process): Do not check for `tramp-direct-async-args'.

* test/lisp/net/tramp-tests.el (all): Replace `string-match' by
`string-match-p'.
(dired-copy-dereference): Declare.
(tramp-test-temporary-file-directory):
Remove `tramp-direct-async-args` for mock method.
(tramp-test15-copy-directory, tramp-test40-special-characters)
(tramp-test40-special-characters-with-stat)
(tramp-test40-special-characters-with-perl)
(tramp-test40-special-characters-with-ls, tramp-test41-utf8)
(tramp-test41-utf8-with-stat, tramp-test41-utf8-with-perl)
(tramp-test41-utf8-with-ls): Skip for tramp-rclone.el.
(tramp--test--deftest-direct-async-process): Do not skip for mock
method.
(tramp-test32-shell-command): Adapt test for direct async processes.
(tramp-test36-vc-registered, tramp--test-hpux-p, tramp--test-ksh-p):
Use `tramp-test-vec'.

3 years ago* lisp/emacs-lisp/seq.el (seq-concatenate): Unautoload (merge fix).
Glenn Morris [Fri, 15 Jan 2021 09:38:20 +0000 (09:38 +0000)]
* lisp/emacs-lisp/seq.el (seq-concatenate): Unautoload (merge fix).

gitmerge-skip-regexp does not handle line breaks.

3 years agoFix 'kill-visual-line'
Eli Zaretskii [Fri, 15 Jan 2021 08:12:09 +0000 (10:12 +0200)]
Fix 'kill-visual-line'

* lisp/simple.el (kill-whole-line): Mention in the doc string that
this option affects 'kill-visual-line' as well.
(kill-visual-line): Improve the doc string.  Delete the character
at which the line was wrapped under 'visual-line-mode'.  Don't
indiscriminately delete whitespace following the wrap point.
(Bug#45837)

3 years ago* lisp/startup.el (command-line): Remove redundant set of no-blinking-cursor
Stefan Monnier [Thu, 14 Jan 2021 22:37:57 +0000 (17:37 -0500)]
* lisp/startup.el (command-line): Remove redundant set of no-blinking-cursor

This is redundant because this was set based on "X" resources under
(memq window-system '(x w32 ns)) but the exact same resources and
values are tested in `x-apply-session-resources` which is also used for
those 3 window systems.

3 years ago* lisp/startup.el (command-line): Remove redundant set of no-blinking-cursor
Stefan Monnier [Thu, 14 Jan 2021 22:21:56 +0000 (17:21 -0500)]
* lisp/startup.el (command-line): Remove redundant set of no-blinking-cursor

This was set when (or noninteractive emacs-basic-display), but
the code that sets `emacs-basic-display` also sets `no-blinking-cursor`
and `blink-cursor-mode`s value already tests `noninteractive`
alongside `no-blinking-cursor`.

3 years agoFix marking "delayed-initialization" vars as dynamically scoped
Stefan Monnier [Thu, 14 Jan 2021 21:45:40 +0000 (16:45 -0500)]
Fix marking "delayed-initialization" vars as dynamically scoped

We used to mark those vars as dynbound in `custom-reevaluate-setting`
which forced us to bind `current-load-list` around it to avoid having
the vars be associated with the wrong file.  Move this marking to
`custom-initialize-delay` so we don't need this workaround.

* lisp/custom.el (custom-initialize-delay): Mark the var as dynamic.
(custom-reevaluate-setting): Don't use `defvar` here.

* lisp/startup.el (command-line): Don't let-bind `current-load-list`
around calls to `custom-reevaluate-setting`.

3 years ago* lisp/info.el (Info-search): Don't deactivate mark when landed in same node
Juri Linkov [Thu, 14 Jan 2021 19:08:46 +0000 (21:08 +0200)]
* lisp/info.el (Info-search): Don't deactivate mark when landed in same node

(bug#45839)

3 years agoMerge from origin/emacs-27
Glenn Morris [Thu, 14 Jan 2021 15:50:28 +0000 (07:50 -0800)]
Merge from origin/emacs-27

488204cdc6 (origin/emacs-27) Remove one of recently added warnings ab...
55bc1560ac Fix assertion failure in window_box_height (Bug#45737)
27743e9e70 Fix cl-concatenate inlining
32a3758c84 Fix infloop in 'pixel-scroll-mode'
74d18957b8 Fix inhibiting the default.el loading in user init file

3 years ago; Merge from origin/emacs-27
Glenn Morris [Thu, 14 Jan 2021 15:50:28 +0000 (07:50 -0800)]
; Merge from origin/emacs-27

The following commit was skipped:

5d76288660 Fix problem with 8bit content-transfer-encoding in nndoc m...

3 years agoMerge from origin/emacs-27
Glenn Morris [Thu, 14 Jan 2021 15:50:25 +0000 (07:50 -0800)]
Merge from origin/emacs-27

149d64bbb2 * doc/misc/tramp.texi (Quick Start Guide): Fix thinko.
97747e6fb9 Tell people how to remove fontconfig customizations
33d0c603c6 ; * doc/lispref/modes.texi (SMIE Indentation Example): Fix...
03080b5545 Remove extraneous closing paren

3 years agoEMBA infrastructure improvements for Emacs build testing.
Ted Zlatanov [Thu, 14 Jan 2021 10:34:09 +0000 (10:34 +0000)]
EMBA infrastructure improvements for Emacs build testing.

* .gitlab-ci.yml: Use job templates and rules. Split tests into
fast/normal/slow. Make Docker images for each tested platform
(inotify, filenotify-gio, gnustep). Increase timeout.
* test/Makefile.in (check-lisp, check-net): Add new testing
targets.
* test/README: Document them.
* test/file-organization.org: Mention test/infra.
* test/infra/Dockerfile.emba: Add special Docker recipes for EMBA
testing.

3 years agoRemove one of recently added warnings abound binding keys in Isearch maps
Juri Linkov [Wed, 13 Jan 2021 18:32:36 +0000 (20:32 +0200)]
Remove one of recently added warnings abound binding keys in Isearch maps

* lisp/isearch.el (minibuffer-local-isearch-map): Remove comments
which warn against wantonly rebinding unbound keys from
irrelevant keymap.
https://lists.gnu.org/archive/html/emacs-devel/2021-01/msg00259.html

3 years ago* lisp/isearch.el: C-s C-u M-y reads a string from the kill-ring minibuffer
Juri Linkov [Wed, 13 Jan 2021 18:19:22 +0000 (20:19 +0200)]
* lisp/isearch.el: C-s C-u M-y reads a string from the kill-ring minibuffer

* lisp/isearch.el (isearch-yank-from-kill-ring): New command
with code moved from isearch-yank-pop.
(isearch-yank-pop): Use isearch-yank-from-kill-ring.
(isearch-yank-pop-only): Add optional arg, and call
isearch-yank-from-kill-ring when the prefix arg is C-u.
https://lists.gnu.org/archive/html/emacs-devel/2021-01/msg00089.html

3 years agoLift {global,local}-key-binding to Lisp
Stefan Kangas [Wed, 13 Jan 2021 17:54:09 +0000 (18:54 +0100)]
Lift {global,local}-key-binding to Lisp

* lisp/subr.el (local-key-binding, global-key-binding): New defuns.
* src/keymap.c (Flocal_key_binding, Fglobal_key_binding): Remove DEFUNs.
(syms_of_keymap): Remove defsubrs for above DEFUNs.
* test/lisp/subr-tests.el (subr-test-local-key-binding)
(subr-test-global-key-binding): New tests.

3 years agoPrefer skip-unless in more tests
Stefan Kangas [Wed, 13 Jan 2021 16:39:53 +0000 (17:39 +0100)]
Prefer skip-unless in more tests

* test/lisp/emacs-lisp/timer-tests.el (timer-tests-debug-timer-check):
* test/src/decompress-tests.el (zlib--decompress):
* test/src/xml-tests.el (libxml-tests): Prefer skip-unless.

3 years agoFix 'visual-line-mode' when 'word-wrap-by-category' is in effect
Eli Zaretskii [Wed, 13 Jan 2021 14:45:31 +0000 (16:45 +0200)]
Fix 'visual-line-mode' when 'word-wrap-by-category' is in effect

* src/xdisp.c (move_it_in_display_line_to): Don't reset
next_may_wrap after saving a potential wrap point.  This fixes the
case where several characters in a row can serve as a wrap point.
(Bug#45837)

3 years agoUse skip-unless instead of if+message in test
Stefan Kangas [Wed, 13 Jan 2021 14:23:31 +0000 (15:23 +0100)]
Use skip-unless instead of if+message in test

* test/lisp/cedet/semantic-utest.el (semantic-utest-Javascript):
Use skip-unless instead of if+message.

3 years agoRemove some XEmacs compat code from tests
Stefan Kangas [Wed, 13 Jan 2021 14:17:44 +0000 (15:17 +0100)]
Remove some XEmacs compat code from tests

* test/lisp/cedet/srecode-utest-getset.el
(srecode-utest-getset-output):
* test/lisp/cedet/srecode-utest-template.el
(srecode-utest-template-output): Remove XEmacs compat code.

3 years ago* lisp/calc/calc.el: Remove some XEmacs compat code.
Stefan Kangas [Wed, 13 Jan 2021 14:12:08 +0000 (15:12 +0100)]
* lisp/calc/calc.el: Remove some XEmacs compat code.

3 years agoStabilise lunar-phase-list test (bug#45818)
Mattias Engdegård [Wed, 13 Jan 2021 13:16:57 +0000 (14:16 +0100)]
Stabilise lunar-phase-list test (bug#45818)

The test reference data was produced with accidental interference from
the system daylight saving in effect at the time.  Prevent that
from occurring again and correct the data.

* test/lisp/calendar/lunar-tests.el (with-lunar-test):
Switch to UTC and make sure daylight saving adjustment is disabled.
Use normal time presentation for maintainability.
* test/lisp/calendar/lunar-tests.el (lunar-test-phase): Adjust to UTC.
(lunar-test-phase-list): Adjust to UTC with correct times.
Enable the test by removing its :unstable mark.

3 years agoFix Indian time zone test when run by Irishmen (bug#45818)
Mattias Engdegård [Tue, 12 Jan 2021 20:38:47 +0000 (21:38 +0100)]
Fix Indian time zone test when run by Irishmen (bug#45818)

* test/lisp/calendar/solar-tests.el (solar-sunrise-sunset):
Inhibit any attempt by confused calendar code to apply daylight saving
correction when Irish time zone settings are in effect.  It's not
entirely clear why this is needed but may be related to the fact that
'IST' stands for both Irish and Indian Standard Time, and that Ireland
uses reversed daylight saving in winter.

3 years ago; Update docstring
Arash Esbati [Tue, 12 Jan 2021 16:18:24 +0000 (17:18 +0100)]
; Update docstring

* lisp/textmodes/reftex-vars.el (reftex-label-regexps): Track the
latest addition of "frame" environment.

3 years agoOnly run IPv6 tests if we have an IPv6 address
Robert Pluim [Tue, 12 Jan 2021 17:50:38 +0000 (18:50 +0100)]
Only run IPv6 tests if we have an IPv6 address

* test/src/process-tests.el (ipv6-is-available): New function for
checking whether we have a globally routable IPv6 prefix assigned.
(lookup-family-specification): Use 'ipv6-is-available' to check for
IPv6.  Use 'localhost' instead of 'google.com' to test
'network-lookup-address-info' API.
(lookup-google): Use 'ipv6-is-available' to check for
IPv6.

* test/lisp/net/nsm-tests.el (nsm-ipv6-is-available): Rename to
'ipv6-is-available', make identical to the one in
test/src/process-tests.el.

3 years agoFix nsm-should-check for "google.com" failure
Robert Pluim [Tue, 12 Jan 2021 17:36:01 +0000 (18:36 +0100)]
Fix nsm-should-check for "google.com" failure

* lisp/net/nsm.el (nsm-should-check): Extract the mask from
'network-interface-list' rather than the broadcast
address (Bug#45798).

3 years agoAdd a new function 'buffer-line-statistics'
Lars Ingebrigtsen [Tue, 12 Jan 2021 17:43:53 +0000 (18:43 +0100)]
Add a new function 'buffer-line-statistics'

* src/fns.c (Fbuffer_line_statistics): New function.

3 years agoAdd a new variable `inhibit-interaction'
Lars Ingebrigtsen [Tue, 12 Jan 2021 14:12:28 +0000 (15:12 +0100)]
Add a new variable `inhibit-interaction'

* doc/lispref/elisp.texi (Top): Add a link.
* doc/lispref/errors.texi (Standard Errors): Mention the new error.

* doc/lispref/minibuf.texi (Minibuffers): Add a link.
(Inhibiting Interaction): New node.

* src/data.c (syms_of_data): Define the `inhibited-interaction' error.

* src/lisp.h: Export the barfing function.

* src/lread.c (Fread_char, Fread_event, Fread_char_exclusive):
Barf if inhibited.

* src/minibuf.c (barf_if_interaction_inhibited): New function.
(Fread_from_minibuffer, Fread_no_blanks_input): Barf if inhibited.
(syms_of_minibuf): Define the `inhibit-interaction' variable.

3 years agoUpdate substitute-command-keys tests, again
Glenn Morris [Tue, 12 Jan 2021 13:41:13 +0000 (05:41 -0800)]
Update substitute-command-keys tests, again

* test/lisp/help-tests.el (help-tests-substitute-command-keys/keymaps)
(help-tests-substitute-command-keys/keymap-change):
Update following recent minibuffer changes.

3 years agocomint-read-input-ring: Simplify last commit
Brian Leung [Tue, 12 Jan 2021 12:29:03 +0000 (13:29 +0100)]
comint-read-input-ring: Simplify last commit

* lisp/comint.el (comint-read-input-ring): It is not necessary to use
  `goto-char' again since we have already moved point to the desired
  location (bug#45797).

3 years ago* lisp/emacs-lisp/eieio-base.el: Silence warnings in last change
Stefan Monnier [Mon, 11 Jan 2021 21:44:39 +0000 (16:44 -0500)]
* lisp/emacs-lisp/eieio-base.el: Silence warnings in last change

(eieio-persistent-make-instance): Quote the `eieio-named` class name.
(eieio-named): Move before `eieio-persistent`.

3 years agocedet/ede/auto.el:
Eric Ludlam [Sun, 10 Jan 2021 15:37:50 +0000 (10:37 -0500)]
cedet/ede/auto.el:

(ede-calc-fromconfig): New method.  Support functions in addition to
string matchers.
(ede-dirmatch-installed, ede-do-dirmatch):
Use `ede-calc-fromconfig' to do conversion.
Author: Eric Ludlam <zappo@gnu.org>

3 years agoeieio-base.el:
Eric Ludlam [Sun, 10 Jan 2021 15:54:49 +0000 (10:54 -0500)]
eieio-base.el:

(eieio-persistent-make-instance): Save the backward compatible 'name'
of objects saved in the file, and if the newly loaded class inherits
from 'eieio-named', restore the name of the object.
Author: Eric Ludlam <zappo@gnu.org>

3 years agoFix possible prepending of "TEXT" to IMAP searches
Eric Abrahamsen [Mon, 11 Jan 2021 17:46:58 +0000 (09:46 -0800)]
Fix possible prepending of "TEXT" to IMAP searches

* lisp/gnus/gnus-search.el (gnus-search-imap-search-keys): Add missing
keys "old", "new", "or" and "not".
(gnus-search-run-search): In addition, don't touch the query if it
starts with a parenthesis. Consider just getting rid of this
convenience altogether.

3 years ago* admin/notes/elpa: Update to match recent Gnu ELPA changes
Stephen Leake [Mon, 11 Jan 2021 17:18:31 +0000 (09:18 -0800)]
* admin/notes/elpa: Update to match recent Gnu ELPA changes

3 years agoMark previous erc-services change as not needing documentation
Lars Ingebrigtsen [Mon, 11 Jan 2021 16:06:11 +0000 (17:06 +0100)]
Mark previous erc-services change as not needing documentation

3 years agoMake comint-read-input-ring skip uninteresting text in .zsh_history
Brian Leung [Mon, 11 Jan 2021 15:42:03 +0000 (16:42 +0100)]
Make comint-read-input-ring skip uninteresting text in .zsh_history

* lisp/comint.el (comint-read-input-ring): Simplify (bug#45606).
* lisp/shell.el (shell-mode): Add "~/.zsh_history".
* lisp/comint.el (comint-read-input-ring): Bind
`comint-input-ring-file-prefix' in anticipation of a buffer switch.
* lisp/comint.el (comint-read-input-ring): Skip the separator.

Because re-search-backward moves point to the beginning of the match,
and since we don't want the separator appearing in the output, we skip
over it.

This is required to properly detect instances of the value that zsh
uses for `comint-input-ring-file-prefix'; if the
`comint-input-ring-file-prefix' is ':potato', the subsequent
invocation `looking-at' sees '\n:potato' for all entries after the one
at the very beginning of the history file.

3 years agoAdd a failing test for bug#44834
Anticrisis [Mon, 11 Jan 2021 15:16:50 +0000 (16:16 +0100)]
Add a failing test for bug#44834

* test/lisp/progmodes/tcl-tests.el (tcl-mode-namespace-indent-2):
New, failing test (bug#44834).
(tcl-mode-function-name-2):
(tcl-mode-function-name-3): Fix names of the tests so that they're
actually run.

Copyright-paperwork-exempt: yes

3 years agoSupport using auth-source for NickServ passwords in ERC
Leon Vack [Mon, 11 Jan 2021 14:51:14 +0000 (15:51 +0100)]
Support using auth-source for NickServ passwords in ERC

* lisp/etc/erc-services.el (erc-nickserv-passwords): Document that
the passwords are only used when erc-prompt-for-nickserv-password
is nil.
* (erc-use-auth-source-for-nickserv-password): New customizable
variable to enable checking auth-source for NickServ passwords.
* (etc-nickserv-get-password): New function to handle the lookup
of the NickServ password from both auth-source and the
erc-nickserv-passwords variable.
* (erc-nickserv-call-identify-function): Use new
erc-nickserv-get-password function to lookup NickServ passwords.
* (erc-nickserv-identify-autodetect, erc-nickserv-identify-on-connect,
erc-nickserv-identify-on-nick-change): Call
erc-nickserv-call-identify-function when
erc-use-auth-source-for-nickserv-password is set.
* etc/NEWS: Document change (bug#45340).

3 years agoFix problem with non-ASCII characters in nnmaildir
Alexandre Duret-Lutz [Mon, 11 Jan 2021 14:27:54 +0000 (15:27 +0100)]
Fix problem with non-ASCII characters in nnmaildir

* lisp/gnus/nnmaildir.el (nnmaildir-request-article): Enable
multipart 8bit-content-transfer-encoded files to be displayed
correctly by reading as `raw-text' instead of having Emacs
(incorrectly) decode the files (bug#44307).

Copyright-paperwork-exempt: yes

3 years agoAdd `flat-button' to custom-face-attributes
Pedro Andres Aranda Gutierrez [Mon, 11 Jan 2021 14:07:01 +0000 (15:07 +0100)]
Add `flat-button' to custom-face-attributes

* lisp/cus-face.el (custom-face-attributes): Add `flat-button'
(bug#45769).

3 years ago* configure.ac: Alphabetize emacs_config_features
Robert Pluim [Mon, 11 Jan 2021 12:16:59 +0000 (13:16 +0100)]
* configure.ac: Alphabetize emacs_config_features

3 years agoEnsure HAVE_GMP is reflected in emacs_config_features
Robert Pluim [Mon, 11 Jan 2021 12:11:51 +0000 (13:11 +0100)]
Ensure HAVE_GMP is reflected in emacs_config_features

* configure.ac: Move HAVE_GMP setting before emacs_config_features
setting (Bug#45771).

3 years agoNew command xref-quit-and-pop-marker-stack
Dmitry Gutov [Sun, 10 Jan 2021 22:44:38 +0000 (00:44 +0200)]
New command xref-quit-and-pop-marker-stack

* lisp/progmodes/xref.el (xref-quit-and-pop-marker-stack):
New command.
(xref--xref-buffer-mode-map): Binding for it.

3 years agoAllow evaluation of tests from local source repository
Phillip Lord [Sun, 10 Jan 2021 21:49:51 +0000 (21:49 +0000)]
Allow evaluation of tests from local source repository

* etc/w32-feature.el (w32-feature-load-tests): Add new command

3 years agoFix build breakage if Lisp_Object is not a primitive type.
Philipp Stephani [Sun, 10 Jan 2021 21:35:02 +0000 (22:35 +0100)]
Fix build breakage if Lisp_Object is not a primitive type.

* src/minibuf.c (choose_minibuf_frame): Don't compare Lisp_Objects
with '!='.  Use 'EQ' instead.

3 years agoAdd functions to open a file without quitting.
Philipp Stephani [Sun, 10 Jan 2021 21:28:31 +0000 (22:28 +0100)]
Add functions to open a file without quitting.

In some situations, e.g. when the Lisp machinery isn't available, we
can't quit.  Don't check the quit flags in such situations, in case
they contain garbage.

* src/sysdep.c (emacs_open_noquit, emacs_openat_noquit): New variants
of 'emacs_open' and 'emacs_openat' that don't check the quit flags.

* src/emacs.c (main, Fdaemon_initialized):
* src/pdumper.c (pdumper_load):
* src/w32term.c (w32_initialize):
* src/buffer.c (mmap_init):
* src/callproc.c (emacs_spawn): Use them where we can't quit.

3 years agoFix incompleteness in the implementation of minibuffer-follows-selected-frame
Alan Mackenzie [Sun, 10 Jan 2021 20:32:40 +0000 (20:32 +0000)]
Fix incompleteness in the implementation of minibuffer-follows-selected-frame

In particular, add a new value to the variable, and fix several bugs apparent
with the implementation up till now.

* doc/emacs/mini.texi (Basic Minibuffer): Add a description of the new
non-nil, non-t value of minibuffer-follows-selected-frame.

* doc/emacs/trouble.texi (Quitting): Add a description of how C-g handles
recursive minibuffers when typed in one which isn't the most nested.

* doc/lispref/minibuf.texi (Intro to Minibuffers): Add an @dfn for "active
minibuffer".
(Minibuffer Commands): Document that exit-minibuffer throws an error when not
invoked from the innermost Minibuffer.
(Recursive Mini): Amend the description of the visibility of outer level
minibuffers.
(Minibuffer Misc): In the description of the minibuffer hooks, replace "the
minibuffer" with "a minibuffer".

* etc/NEWS (Entry announcing minibuffer-follows-selected-frame): Add a
description of the new non-nil, non-t value.

* lisp/cus-start.el (top level): make the customize entry for
minibuffer-follows-selected-frame a choice between three entries.

* lisp/minibuffer.el (exit-minibuffer): throw an error when we're not in the
most nested minibuffer.
(top level): Bind C-g to abort-minibuffers in minibuffer-local-map.

* lisp/window.el (window-deletable-p): return the symbol `frame' when (amongst
other things) minibuffer-follows-selected-frame is t.

* src/eval.c (internal_catch): Add a mechanism to (throw 'exit t) repeatedly
when the throw currently being processed doesn't terminate the current
minibuffer.

* src/lisp.h (this_minibuffer_depth): New extern declaration
(minibuf_level): extern declaration moved here from window.h.

* src/minibuf.c (minibuffer_follows_frame, minibuf_stays_put)
(minibuf_moves_frame_when_opened): New and amended functions to query the
value of minibuffer-follows-selected-frame.
(choose_minibuf_frame): check (minibuf > 1) in place of (minibufer > 0) at a
particular place.  At another place, check that an alleged frame is so and is
live.  Before selecting a non-miniwindow on a different frame, ensure it
really is a different frame.
(move_minibuffer_onto_frame): Stack up all recursive minibuffers on the target
frame.  Check the minibuf_window isn't in the old frame before setting that
frame's miniwindow to an inactive minibuffer.
(Finnermost_minibuffer_p, Fabort_minibuffers): New primitives.
(this_minibuffer_depth): New function.
(read_minibuf): Record the calling frame in a variable, and switch back to it
after the recursive edit has terminated normally, using
select-frame-set-input-focus.  Stack up all the recursive minibuffers on the
miniwindow where a new minibuffer is being opened.  After the recursive edit,
switch the selected window away from the expired minibuffer's window.
(nth_minibuffer): New function.
(minibuffer-follows-selected-frame): Change from a DEFVAR_BOOL to a
DEFVAR_LISP.

* src/window.c (decode_next_window_args): Set *minibuf to w's mini-window's
content when that content is a minibuffer.

* src/window.h (minibuf_level) Declaration moved from here to lisp.h.

3 years agoRespect message-forward-ignored-headers more
Lars Ingebrigtsen [Sun, 10 Jan 2021 15:16:42 +0000 (16:16 +0100)]
Respect message-forward-ignored-headers more

* lisp/gnus/message.el (message-forward-ignored-headers): Clarify
doc string once again.
(message-forward-make-body-mime): Remove headers when not
encrypted (bug#45631).
(message-forward-make-body): Pass in correct values.

3 years agoDefault python-shell-interpreter to python3
Glenn Morris [Sun, 10 Jan 2021 14:48:57 +0000 (15:48 +0100)]
Default python-shell-interpreter to python3

* lisp/progmodes/python.el (python-shell-interpreter): Default to
python3 (bug#45655).

3 years agoFix example in the Gnus manual
David Edmondson [Sun, 10 Jan 2021 14:45:07 +0000 (15:45 +0100)]
Fix example in the Gnus manual

* doc/misc/gnus.texi (Score Variables): In the example showing how to
use a list of functions for gnus-score-find-score-files-find-function,
return a list of strings from the lambda rather than trying to call
the string as a function (bug#45673).

3 years agoSpecify precedence in .authinfo files
Lars Ingebrigtsen [Sun, 10 Jan 2021 14:32:57 +0000 (15:32 +0100)]
Specify precedence in .authinfo files

* doc/misc/auth.texi (Help for users): Mention placing more
specific entries first (bug#45711).

3 years agoImprove fill-region-as-paragraph when there's a fill prefix
Lars Ingebrigtsen [Sun, 10 Jan 2021 14:04:39 +0000 (15:04 +0100)]
Improve fill-region-as-paragraph when there's a fill prefix

* lisp/textmodes/fill.el (fill-region-as-paragraph): Try to
improve how line breaks are set on unbreakable text with a fill
prefix area that has spaces within (bug#45720).

3 years agoMake font locking work in mercury-mode
k3tu0isui [Sun, 10 Jan 2021 13:36:51 +0000 (14:36 +0100)]
Make font locking work in mercury-mode

* lisp/progmodes/prolog.el (prolog-font-lock-keywords): Work in
all modes derived from prolog-mode (bug#45747).
(mercury-mode): Set up variables based on the Prolog system (bug#45747).

Copyright-paperwork-exempt: yes

3 years agoHyperlink symbol names without word syntax in Help
Basil L. Contovounesios [Sun, 27 Dec 2020 14:21:50 +0000 (14:21 +0000)]
Hyperlink symbol names without word syntax in Help

* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2)
(lisp-cl-font-lock-keywords-2): Allow single-character symbol names.
* lisp/help-mode.el (help-xref-symbol-regexp): Also match symbol
names starting with symbol syntax (bug#6601, bug#24309).
* test/lisp/help-mode-tests.el (help-mode-tests-xref-button): Test
hyperlink creation for function names without symbol syntax.

3 years agoAdd support for 'process-attributes' on OpenBSD
Omar Polo [Sun, 10 Jan 2021 13:25:22 +0000 (14:25 +0100)]
Add support for 'process-attributes' on OpenBSD

* src/sysdep.c (make_lisp_timeval):
(system_process_attributes): Implement for OpenBSD (bug#45729).

3 years ago; * lisp/custom.el (defcustom): Fix last change.
Basil L. Contovounesios [Sun, 10 Jan 2021 13:20:51 +0000 (13:20 +0000)]
; * lisp/custom.el (defcustom): Fix last change.

3 years agoAdd support for flat buttons
Pedro Andres Aranda Gutierrez [Sun, 10 Jan 2021 13:10:18 +0000 (14:10 +0100)]
Add support for flat buttons

* src/xfaces.c (Finternal_set_lisp_face_attribute):
(realize_gui_face): Add support for `flat-button' (bug#45735).

Copyright-paperwork-exempt: yes

3 years agoMinor shortdoc link improvements
Daniel Martín [Sun, 10 Jan 2021 12:45:44 +0000 (13:45 +0100)]
Minor shortdoc link improvements

* lisp/emacs-lisp/shortdoc.el (shortdoc--display-function): Use
describe-function as a fallback link when a function is not documented
in any Info manual.  Also make the link respond to mouse-1, like the
rest of *Help* links, and add a proper help-echo property.
* lisp/help-fns.el (help-fns--mention-shortdoc-groups): Same link
improvement as described before, this time for the shortdoc groups
(bug#45750).

3 years agoAdd a link to the manual from the defcustom doc string
Lars Ingebrigtsen [Sun, 10 Jan 2021 12:43:12 +0000 (13:43 +0100)]
Add a link to the manual from the defcustom doc string

* lisp/custom.el (defcustom): Add a link to the manual for the
:type element.

3 years agoRevert recent mm-with-part change
Lars Ingebrigtsen [Sun, 10 Jan 2021 12:30:25 +0000 (13:30 +0100)]
Revert recent mm-with-part change

* lisp/gnus/mm-decode.el (mm-with-part): Revert
23a887e426f81033b0de2f4c93a8525cb31c28da -- this is the wrong
place to handle this peculiarity.

3 years agoMerge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Michael Albinus [Sun, 10 Jan 2021 12:27:10 +0000 (13:27 +0100)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs

3 years agoRework parts of Tramp's insert-directory, bug#45691
Michael Albinus [Sun, 10 Jan 2021 12:26:29 +0000 (13:26 +0100)]
Rework parts of Tramp's insert-directory, bug#45691

* lisp/net/tramp-sh.el (tramp-sh-handle-insert-directory): Fix some
unibyte/multibyte inconsistencies.  (Bug#45691)

* test/lisp/net/tramp-tests.el (tramp-test17-insert-directory-one-file):
New test.

3 years agoAdd more mm-decode tests
Lars Ingebrigtsen [Sun, 10 Jan 2021 12:20:49 +0000 (13:20 +0100)]
Add more mm-decode tests

3 years ago* lisp/subr.el (global-map): Doc fix; add cross-reference.
Stefan Kangas [Sat, 9 Jan 2021 11:03:12 +0000 (12:03 +0100)]
* lisp/subr.el (global-map): Doc fix; add cross-reference.

3 years agoCreate new test file for socks.el
F. Jason Park [Sun, 10 Jan 2021 11:40:53 +0000 (12:40 +0100)]
Create new test file for socks.el

* test/lisp/net/socks-tests.el (socks-tests-auth-filter-url-http): Add
SOCKS5 authentication test and fake server (bug#45162).

3 years agoFix assertion failure in window_box_height (Bug#45737)
Martin Rudalics [Sun, 10 Jan 2021 10:20:56 +0000 (11:20 +0100)]
Fix assertion failure in window_box_height (Bug#45737)

* lisp/window.el (window-sizable): Don't try to grow a mini window
when the root window's minimum height is already larger than its
actual height (Bug#45737).

3 years agoIncrease probability that a process test succeeds.
Philipp Stephani [Sun, 10 Jan 2021 09:14:27 +0000 (10:14 +0100)]
Increase probability that a process test succeeds.

* test/src/process-tests.el
(process-tests/fd-setsize-no-crash/make-process): Work around
potential Emacs bug.

3 years agoRemove a pointless check for WCOREDUMPED.
Philipp Stephani [Sun, 10 Jan 2021 08:50:15 +0000 (09:50 +0100)]
Remove a pointless check for WCOREDUMPED.

WCOREDUMPED can only be used if the process was killed.

* src/process.c (status_convert): Don't check WCOREDUMPED if
WIFEXITED.

3 years agoSupport keyval style beamer frame labels
Tassilo Horn [Sun, 10 Jan 2021 08:40:07 +0000 (09:40 +0100)]
Support keyval style beamer frame labels

* lisp/textmodes/reftex-vars.el (reftex-label-regexps): Support keyval
style beamer frame labels.

3 years agoRemove reference to gnus-bug-create-help-buffer
Eric Abrahamsen [Sat, 9 Jan 2021 17:45:49 +0000 (09:45 -0800)]
Remove reference to gnus-bug-create-help-buffer

* lisp/gnus/gnus-win.el (gnus-buffer-configuration): Variable no
longer exists.

3 years agoDon't unblock SIGCHLD too early.
Philipp Stephani [Sat, 9 Jan 2021 20:17:42 +0000 (21:17 +0100)]
Don't unblock SIGCHLD too early.

We first need to register the received process ID so that
'handle_child_signal' checks it.  Otherwise we might never call
'waitpid' for these processes, risking deadlock.

* src/callproc.c (call_process):
* src/process.c (create_process): Don't unblock SIGCHLD before
registering the process ID to wait for.

* src/callproc.c (emacs_spawn): Accept a signal set from the caller.

3 years agoCount Flymake diagnostics in modeline by severity, not type
João Távora [Sat, 9 Jan 2021 18:49:49 +0000 (18:49 +0000)]
Count Flymake diagnostics in modeline by severity, not type

Originally reported in https://github.com/joaotavora/eglot/issues/588
by Pankaj Jangid.

* lisp/progmodes/flymake.el (flymake--mode-line-counter): Count
diagnostics by severity level, not by type.
(Version): Bump to 1.1.1

3 years ago* lisp/emacs-lisp/cl-macs.el (cl--self-tco): Fix build of gnus-agent.el
Stefan Monnier [Sat, 9 Jan 2021 16:35:53 +0000 (11:35 -0500)]
* lisp/emacs-lisp/cl-macs.el (cl--self-tco): Fix build of gnus-agent.el

Don't burp on "naked" variable let bindings.

3 years agoFix cl-concatenate use in macros
Eli Zaretskii [Sat, 9 Jan 2021 12:12:14 +0000 (14:12 +0200)]
Fix cl-concatenate use in macros

* lisp/emacs-lisp/cl-macs.el (inline): Remove cl-concatenate.
(Bug#45610)

3 years agoFix cl-concatenate inlining
Eli Zaretskii [Sat, 9 Jan 2021 12:07:13 +0000 (14:07 +0200)]
Fix cl-concatenate inlining

* lisp/emacs-lisp/seq.el (seq-concatenate): Auto-load it.  Do not
merge to master.  (Bug#45610)

3 years agoFix infloop in 'pixel-scroll-mode'
Tak Kunihiro [Sat, 9 Jan 2021 09:21:04 +0000 (11:21 +0200)]
Fix infloop in 'pixel-scroll-mode'

* lisp/pixel-scroll.el (pixel-scroll-up, pixel-scroll-down): Avoid
inflooping when 'vertical-motion' doesn't move.  (Bug#45628)

3 years ago* lisp/emacs-lisp/cl-macs.el: Optimize self-calls in tail position
Stefan Monnier [Sat, 9 Jan 2021 00:59:16 +0000 (19:59 -0500)]
* lisp/emacs-lisp/cl-macs.el: Optimize self-calls in tail position

Implement a limited form of tail-call optimization for the special
case of recursive functions defined with `cl-labels`.  Only self-recursion
is optimized, no attempt is made to handle more complex cases such a mutual
recursion.

The main benefit is to reduce the use of the stack, tho in my limited
tests, this can also improve performance (about half of the way to
a hand-written `while` loop).

(cl--self-tco): New function.
(cl-labels): Use it.

* lisp/subr.el (letrec): Optimize single-binding corner case.

* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs--labels): Add tests
to check that TCO is working.

3 years agoMake sure default-directory relates to the originating buffer
Dmitry Gutov [Sat, 9 Jan 2021 00:08:59 +0000 (02:08 +0200)]
Make sure default-directory relates to the originating buffer

* lisp/progmodes/xref.el (xref--show-xref-buffer):
Pick up default-directory value from the caller
(https://lists.gnu.org/archive/html/emacs-devel/2021-01/msg00551.html).
(xref-show-definitions-buffer-at-bottom): Same.

3 years ago* lisp/subr.el (letrec): Optimize some non-recursive bindings
Stefan Monnier [Fri, 8 Jan 2021 23:44:13 +0000 (18:44 -0500)]
* lisp/subr.el (letrec): Optimize some non-recursive bindings

* lisp/emacs-lisp/macroexp.el (macroexp--fgrep): Look inside bytecode
objects as well.

* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs--labels):
* test/lisp/subr-tests.el (subr--tests-letrec): New tests.