summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add new file completion tables, change project.el to allow using themscratch/project-uniquify-filesStephen Leake2019-04-2526-44/+971
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/file-complete-root-relative.el: New file. * lisp/uniquify-files.el: New file. * test/lisp/progmodes/uniquify-files-resources/: New directory containing files for testing uniquify-files. * test/lisp/progmodes/uniquify-files-test.el: New file; test uniquify-files. * lisp/files.el (path-files): New function; useful with new completion tables. * lisp/progmodes/project.el (project-file-completion-table): Use file-complete-root-relative completion table. (project-find-file): Add optional FILENAME parameter. (project--completing-read-strict): Rewrite to just use the given completion table; extracting the common directory is now done by file-complete-root-relative. This also allows using the new uniquify-files completion table. * lisp/minibuffer.el (completion-category-defaults): Add uniquify-file. (completing-read-default): Add final step to call completion table with 'alist action if supported.
* Fix Bug#33618; define search path variables for grep, byte-compileStephen Leake2019-04-253-2/+29
| | | | | | | | * etc/NEWS: Mention new variables. * lisp/emacs-lisp/bytecomp.el (emacs-lisp-compilation-search-path): New. * lisp/progmodes/grep.el (grep-search-path): New.
* Minor tweaks to recent UBSan-related fixPaul Eggert2019-04-251-14/+6
| | | | | | | | | | * src/alloc.c: No need to include stdalign.h; it’s pervasive. (GC_STRING_OVERRUN_COOKIE_SIZE): Align to sdata’s alignment, so that the code works even if alignof (sdata) exceeds 8. Don’t require the cookie size to be 8, as this overly fattens 32-bit platforms and one DEADBEEF should be enough. (GC_STRING_EXTRA): Omit now-unnecessary ‘verify’. (allocate_string_data): Omit unnecessary cast.
* Port to Oracle Developer Studio 12.6Paul Eggert2019-04-258-48/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This compiler is a bit pickier about checking conformance to the C standard, ranging from syntax trivia (no extra ";" at the top level) to portability trivia (warnings re conversion between function and data pointers) to more-important stuff like lack of support for some __attribute__ usages. * src/dynlib.c (dynlib_addr): First argument is a function pointer, not a data pointer. All callers changed. * src/emacs-module.c (module_function_address): Return module_funcptr, not void *. All uses changed. * src/lisp.h (module_funcptr) [HAVE_MODULES]: New type. * src/lread.c (union ieee754_double): Don’t assume the usual semantics for converting signed to unsigned int when initializing a bitfield, as the Oracle compiler complains and the C standard is unclear. * src/pdumper.c (ALLOW_IMPLICIT_CONVERSION): Make it clearer that -Wsign-conversion is disabled everywhere in this file. (dump_trace, dump_tailq_prepend, dump_tailq_append): Don’t assume __attribute__. (dump_object_self_representing_p): Don’t disable conversion warnings; it’s not needed here. (DEFINE_FROMLISP_FUNC): Avoid possible signal in integer conversion from unsigned to signed. (DEFINE_FROMLISP_FUNC, finish_dump_pvec): Avoid warning about unreachable statements on platforms not supporting the __attribute__. (intmax_t_from_lisp, intmax_t_to_lisp, dump_off_from_lisp) (dump_off_to_lisp, dump_emacs_reloc_immediate_lv) (dump_emacs_reloc_immediate_ptrdiff_t) (dump_emacs_reloc_immediate_intmax_t) (dump_emacs_reloc_immediate_int, dump_emacs_reloc_immediate_bool): Omit stray semicolon that violates C standard. (dump_metadata_for_pdumper): Add cast to pacify compiler complaining about conversion from function pointer to data pointer. (Fdump_emacs_portable): Do not use CALLN to call a function with zero arguments, as C99 prohibits empty initializers. * src/xdisp.c (syms_of_xdisp): Do not nest calls to pure_list, to work around a bug in Oracle Developer Studio 12.6.
* * lisp/simple.el (eval-expression): Fix paren typo.Stefan Monnier2019-04-251-1/+1
|
* Make sure that ‘sdata’ objects in ‘sblock’ objects are aligned.Philipp Stephani2019-04-251-2/+10
| | | | | | | | | Issue found by Clang’s UBSan. * src/alloc.c (GC_STRING_OVERRUN_COOKIE_SIZE): Increase to 8. (string_overrun_cookie): Extend accordingly. (GC_STRING_EXTRA): Ensure that it’s properly aligned for ‘sdata’. (allocate_string_data): Verify that ‘sdata’ blocks remain aligned.
* Use lexical-binding by default for M-:, --eval, and *scratch*Stefan Monnier2019-04-255-11/+26
| | | | | | | | | | | | * lisp/startup.el (command-line): Default to lexical-binding in *scratch*. (normal-no-mouse-startup-screen, command-line-1): Use startup--get-buffer-create-scratch. (command-line-1): * lisp/simple.el (eval-expression): * lisp/server.el (server-eval-and-print): Use lexical-binding to evaluate the expression. (server-execute): Use startup--get-buffer-create-scratch. * lisp/ielm.el (inferior-emacs-lisp-mode): Default to lexical-binding.
* Restore fontification of delimiters of multiline CC Mode strings.Alan Mackenzie2019-04-254-22/+56
| | | | | | | | | | | | | | | | | | | | | | | | E.g., on typing the closing delimiter of a string continued onto a second line, the opening delimiter retained its font-lock-warning-face. * lisp/progmodes/cc-defs.el (c-c++-raw-string-opener-re) (c-c++-raw-string-opener-1-re): New constants. (c-sub-at-c++-raw-string-opener, c-at-c++-raw-string-opener): New macros. * lisp/progmodes/cc-engine.el (c-raw-string-pos) (c-depropertize-raw-strings-in-region, c-after-change-unmark-raw-strings): Replace uses of open-coded raw string regexps by the new constants and macros in cc-defs.el. * lisp/progmodes/cc-fonts.el (c-font-lock-raw-strings): Ditto * lisp/progmodes/cc-mode.el (c-before-change-check-unbalanced-strings): Set c-new-BEG to the beginning of the string when we encounter its closing ". When not in a raw string, but in a string, clear syntax-table properties from its delimiters and set c-new-BEG/END to its limits. (c-after-change-mark-abnormal-strings): When applying syntax-table properties to string delimiters, also set c-new-BEG/END to ensure subsequent fontification.
* Make wdired-mode ignore ls file indicatorsStephen Berman2019-04-252-8/+62
| | | | | | | | * lisp/wdired.el (wdired--restore-dired-filename-prop): When dired-listing-switches includes "F" or "classify", don't treat appended indicator characters as part of the file name (bug#34915). * test/lisp/wdired-tests.el (wdired-test-bug34915): New test.
* Port emacsclient euidaccess to Solaris 10Paul Eggert2019-04-251-2/+4
| | | | | | | Without this fix, linking emacsclient fails with ‘Undefined symbol eaccess’ on Solaris 10 sparc. * lib-src/Makefile.in (LIB_EACCESS): New macro. (emacsclient${EXEEXT}, emacsclientw${EXEEXT}): Use it.
* Fix some corner cases in the recognition of C++ raw strings.Alan Mackenzie2019-04-251-40/+42
| | | | | | | | | | | | | | | | These are where changing the identifier in a raw string delimiter causes different delimiters to match eachother. * lisp/progmodes/cc-engine.el (c-raw-string-end-delim-disrupted): New variable. (c-before-change-check-raw-strings): Use new variable. (c-after-change-unmark-raw-strings): When typing into an opening delimiter or altering its close delimiter causes the opening delimiter to match a later closing delimiter, clear all syntax-table char properties from the opening delimiter onwards, and set c-new-END to point max. Also, when changing a closing delimiter, check whether its new value matches a previously open opening delimiter earlier in the buffer, and amend the syntax-table text properties appropriately.
* * lisp/progmodes/sql.elMichael R. Mauger2019-04-242-47/+166
| | | | | | | | | | | | | | | | | (sql-is-sqli-buffer-p): New function. (sql-generate-unique-sqli-buffer-name): Refactor and use it. (sql-product-interactive): Simplify name logic. * test/lisp/progmodes/sql-tests.el (sql-tests-placeholder-filter-harness): New macro. (sql-tests-placeholder-filter-simple) (sql-tests-placeholder-filter-ampersand) (sql-tests-placeholder-filter-period): Refactored tests and use macro. (sql-tests-buffer-naming-harness): New macro. (sql-tests-buffer-naming-default) (sql-tests-buffer-naming-multiple) (sql-tests-buffer-naming-explicit) (sql-tests-buffer-naming-universal-argument) (sql-tests-buffer-naming-existing): New tests.
* Improve port to platforms lacking euidaccess (Bug#35406)Paul Eggert2019-04-244-12/+35
| | | | | | | * lib-src/emacsclient.c (set_local_socket): Use faccessat with AT_EACCESS instead of using euidaccess. * admin/merge-gnulib, lib/gnulib.mk.in, m4/gnulib-comp.m4: Revert previous change.
* Port to platforms lacking euidaccess (Bug#35406)Paul Eggert2019-04-243-34/+11
| | | | | * admin/merge-gnulib (GNULIB_MODULES): Add euidaccess. * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* Merge from gnulibPaul Eggert2019-04-243-3/+5
|
* Fix some strings in wordstar modeMark Oteiza2019-04-241-12/+11
| | | | | | | * lisp/obsolete/ws-mode.el (ws-search-direction, ws-error, ws-end-block): (ws-mark-word, ws-undo, ws-goto-last-cursorposition, ws-last-error): (ws-kill-bol): Remove full stops from message string endings. Minor formatting tweaks.
* Change WordStar emulation into a minor mode (Bug#35148)Mark Oteiza2019-04-241-11/+28
| | | | | | | | | * lisp/obsolete/ws-mode.el: Turn on lexical-binding. Update commentary. (wordstar): New custom group. (wordstar-mode-lighter): New custom variable. (wordstar-mode): Declare with define-minor-mode. (turn-on-wordstar-mode): New function. (global-wordstar-mode): New function. Use previous new function.
* Fix project-find-regexp search for '--'Dmitry Gutov2019-04-251-1/+1
| | | | | | * lisp/progmodes/project.el (project--find-regexp-in-files): Add an explicit '-e' before the pattern. Fixing the ability to search for '--'. Reported by Juri Linkov <juri@linkov.net>.
* * lisp/windmove.el (windmove-display-in-direction): Support consecutive callsJuri Linkov2019-04-251-15/+16
| | | | Remember action and delete it from display-buffer-overriding-action afterwards
* Unbreak build when building without GMP support.Philipp Stephani2019-04-244-6/+15
| | | | | | | | | | | | | | | | | | | | | Add support for a new preprocessor macro EMACS_MODULE_HAVE_MPZ_T to emacs-module.h. If this macro is defined, assume that mpz_t is already defined and don’t include gmp.h. Don’t document the new macro for now, as it’s unclear whether we want to support this in modules outside the Emacs tree. * src/emacs-module.h.in: Allow user to prevent inclusion of gmp.h. * src/emacs-module.c: Use mini-gmp if GMP is unavailable. Don’t include gmp.h. * src/lisp.h: Don’t require gmp.h. It’s not needed for lisp.h. * test/Makefile.in (GMP_LIB, GMP_OBJ): New variables. ($(test_module)): Use them. * test/data/emacs-module/mod-test.c: Use mini-gmp if GMP is unavailable.
* Add missing GMP library to test module.Philipp Stephani2019-04-241-1/+2
| | | | | * test/Makefile.in (GMP_LIB): Define variable. ($(test_module)): Use it.
* Move definition of Lisp_Module_Function to emacs-module.c.Philipp Stephani2019-04-244-29/+45
| | | | | | | | | | | | | * src/lisp.h: Remove include of emacs-module.h. Remove definition of Lisp_Module_Function structure. * src/emacs-module.c (module_function_documentation) (module_function_address): New accessor functions for module function fields. (emacs_subr, struct Lisp_Module_Function): Move from lisp.h. * src/print.c (print_vectorlike): * src/doc.c (Fdocumentation): Use the new accessor functions.
* Simplify thread initialization and GCPaul Eggert2019-04-245-74/+34
| | | | | | | | | | | | | * src/lisp.h (PVECHEADERSIZE): New macro. (XSETPVECTYPESIZE): Use it. * src/search.c (syms_of_search): No need to initialize or staticpro last_thing_searched or saved_last_thing_searched, as the thread code arranges for initialization and GC. * src/thread.c (main_thread): Initialize statically. (Fmake_mutex, Fmake_condition_variable, Fmake_thread): Use ALLOCATE_ZEROED_PSEUDOVECTOR rather than zeroing by hand. (mark_one_thread): No need to mark Lisp_Object members. (init_main_thread, init_threads_once): Remove. All uses removed.
* Regenerate src/emacs-module.h when emacs-module.h.in changesEli Zaretskii2019-04-241-1/+1
| | | | | * Makefile.in (CONFIG_STATUS_FILES_IN): Add src/emacs-module.h.in.
* Fix rescheduling timers after suspensionEli Zaretskii2019-04-241-1/+1
| | | | | * lisp/emacs-lisp/timer.el (timer-event-handler): Fix the comparison between next invocation time and current time.
* Fix posn-at-point with line-number display and display propertiesEli Zaretskii2019-04-241-0/+6
| | | | | | * src/xdisp.c (pos_visible_p): Account for line-number display width when CHARPOS is covered by display property that begins at the 2nd display element of a screen line. (Bug#35404)
* Fix a typo in a recent commitEli Zaretskii2019-04-241-1/+1
| | | | | * src/timefns.c (timespec_to_lisp): Fix a typo in function definition.
* * doc/lispref/internals.texi (Module Values): Add a GMP examplePhilipp Stephani2019-04-241-0/+25
|
* Clarify rounding mode when converting to struct timespec.Philipp Stephani2019-04-243-6/+42
| | | | | | | | | | | * doc/lispref/internals.texi (Module Values): Clarify that the truncation is towards negative infinity. * test/data/emacs-module/mod-test.c (Fmod_test_nanoseconds): Add test function. (emacs_module_init): Define it. * test/src/emacs-module-tests.el (mod-test-nanoseconds): New unit test.
* Fix return type of make_time.Philipp Stephani2019-04-244-4/+16
| | | | | | | | | | | | | | make_time is documented to return a (TICKS . HZ) pair, so we can’t use make_lisp_time. Introduce a new conversion function instead. * src/emacs-module.c (module_make_time): Use timespec_to_lisp to correct return type. * src/timefns.c (timespec_to_lisp): New function. (make_lisp_time): Use it. * test/src/emacs-module-tests.el (mod-test-add-nanosecond/valid): Check return type.
* Add module functions to convert from and to big integers.Philipp Stephani2019-04-248-0/+111
| | | | | | | | | | | | | | | | | | | * src/module-env-27.h: Add new module functions to convert big integers. * src/emacs-module.h.in (emacs_mpz): Define if GMP is available. * src/emacs-module.c (module_extract_big_integer) (module_make_big_integer): New functions. (initialize_environment): Use them. * test/data/emacs-module/mod-test.c (Fmod_test_double): New test function. (emacs_module_init): Define it. * test/src/emacs-module-tests.el (mod-test-double): New unit test. * doc/lispref/internals.texi (Module Values): Document new functions.
* Add conversions to and from struct timespec to module interface.Philipp Stephani2019-04-247-0/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Time values are a fundamental data type, and such conversions are hard to implement within modules because of the various forms of time values in Emacs Lisp. Adding dedicated conversion functions can significantly simplify module code dealing with times. This approach uses nanosecond precision. While Emacs in theory has support for higher-precision time values, in practice most languages and standards, such as POSIX, C, Java, and Go, have settled on nanosecond-precision integers to represent time. * src/emacs-module.h.in: Add header for struct timespec. * src/module-env-27.h: Add module functions for time conversion. * src/emacs-module.c (module_extract_time, module_make_time): New functions. (initialize_environment): Use them. * test/data/emacs-module/mod-test.c (Fmod_test_add_nanosecond): New test function. (emacs_module_init): Define it. * test/src/emacs-module-tests.el (mod-test-add-nanosecond/valid) (mod-test-add-nanosecond/nil, mod-test-add-nanosecond/invalid): New unit tests. * doc/lispref/internals.texi (Module Values): Document time conversion functions.
* Revert "Remove font.c code commented out for a decade"Eli Zaretskii2019-04-241-0/+465
| | | | | | | | | | | | This reverts commit 64d0cd9810af6bd0c378fc6bc666c76ddfa97e40. Rationale: any font-related code and comments, even if unused for decades, serves as important source of useful information in an area of Emacs code that is notoriously under-documented. Please do NOT remove this stuff until we have an active expert in this are on board, who will then decide whether this can be retired.
* Don't link libXft when using cairoYAMAMOTO Mitsuharu2019-04-2412-81/+307
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.ac: Check cairo early. Don't try Xft if cairo is used. * lwlib/lwlib-utils.h [USE_CAIRO]: Include cairo.h and fontconfig.h. (XftFont, XftDraw, XftColor, XGlyphInfo) [USE_CAIRO]: New typedefs. (XftFontOpenName, XftFontClose, XftDrawCreate, XftDrawDestroy) (XftDrawRect, XftDrawStringUtf8, XftTextExtentsUtf8) [USE_CAIRO]: New macros. (crxft_font_open_name, crxft_font_close, crxft_draw_create) (crxft_draw_rect, crxft_draw_string, crxft_text_extents) [USE_CAIRO]: New externs. * lwlib/lwlib-utils.c [USE_CAIRO]: Include math.h, cairo-ft.h, and cairo-xlib.h. (crxft_font_open_name, crxft_font_close, crxft_draw_create) (crxft_set_source_color, crxft_draw_rect, crxft_draw_string) (crxft_text_extents) [USE_CAIRO]: New Xft compatibility functions. * lwlib/xlwmenuP.h [USE_CAIRO]: Include lwlib-utils.h. * lwlib/xlwmenu.c (display_menu_item) [USE_CAIRO]: Call cairo_surface_mark_dirty and cairo_surface_flush. * lwlib/lwlib-Xaw.c [USE_CAIRO]: Include stdlib.h and lwlib-utils.h. (draw_text) [USE_CAIRO]: Call cairo_surface_flush. * src/xsettings.c [USE_CAIRO]: Include fontconfig.h (apply_xft_settings) [!HAVE_XFT]: Don't call XftDefaultSubstitute or XftDefaultSet. * lwlib/lwlib-Xaw.c: * lwlib/lwlib-int.h: * lwlib/xlwmenu.c: * lwlib/xlwmenuP.h: * src/xrdb.c: * src/xsettings.c: * src/xterm.c: Replace all #ifdef HAVE_XFT with #if defined USE_CAIRO || defined HAVE_XFT. * src/xfns.c (x_default_font_parameter): Replace #ifdef HAVE_XFT with #if defined USE_CAIRO || defined HAVE_XFT.
* * lisp/emacs-lisp/timer-list.el: Fix header-line alignmentStefan Monnier2019-04-231-3/+7
| | | | | | Enable lexical-binding. (cl-print-compiled, cl-print-compiled-button): Declare. (timer-list-mode): Add spacing to align the header.
* * src/emacs-module.c: Add an additional requirement for API changes.Philipp Stephani2019-04-231-0/+3
|
* Remove some unnecessary #ifdef directivesPaul Eggert2019-04-233-11/+0
| | | | | | | | These directives are in files that are compiled only if the symbols are defined. * src/gfilenotify.c: Remove unnecessary ‘#ifdef HAVE_GFILENOTIFY’. * src/inotify.c: Remove unnecessary ‘#ifdef HAVE_INOTIFY’. * src/kqueue.c: Remove unnecessary ‘#ifdef HAVE_KQUEUE’.
* * etc/package-keyring.gpg: Add the 2019 keyStefan Monnier2019-04-231-0/+0
|
* Remove font.c code commented out for a decadePaul Eggert2019-04-231-465/+0
| | | | | | | | | | | * src/font.c (LSTRING_HEADER_SIZE, LSTRING_GLYPH_SIZE, check_gstring) (check_otf_features, otf_list, otf_tag_symbol, otf_open) (font_otf_capability, generate_otf_features) (font_otf_DeviceTable, font_otf_ValueRecord) (font_otf_Anchor, Ffont_drive_otf, Ffont_otf_alternates) (Fdraw_string, syms_of_font): Remove "experimental and not tested much" code that has been "#if 0"-ed out for more than a decade and which was getting in the way of maintenance.
* Use three-argument form for out-of-range errors.Philipp Stephani2019-04-231-1/+4
| | | | | | | This provides more debugging hints for callers. * src/emacs-module.c (module_copy_string_contents): Use three-argument form of args-out-of-range.
* Use high-level integer conversion macro in a few cases.Philipp Stephani2019-04-231-2/+2
| | | | | | | | | INT_TO_INTEGER is more obviously correct and means we don’t have to worry about data type sizes and signedness. * src/json.c (json_parse_error): Use INT_TO_INTEGER. The tiny performance gain of make_fixed_natnum isn’t worth the trouble then signaling an error.
* Rename auto-revert-notify-watch-descriptor-hash-listMattias Engdegård2019-04-231-10/+10
| | | | | | | | * lisp/autorevert.el (auto-revert-notify-watch-descriptor-hash-list): Rename to auto-revert--buffers-by-watch-descriptor. Improved doc string. (auto-revert-notify-rm-watch, auto-revert-notify-add-watch, auto-revert-notify-handler): Use new name.
* Remote processes cannot use a pipe process for stderrMichael Albinus2019-04-231-1/+8
| | | | | | * doc/lispref/processes.texi (Asynchronous Processes): (Accepting Output): Remote processes cannot use a pipe process for stderr.
* * src/json.c (json_make_string): Add missing cast.Philipp Stephani2019-04-231-1/+1
|
* Speed up JSON parsingEli Zaretskii2019-04-231-3/+17
| | | | | | | | Thanks to Dmitry Gutov <dgutov@yandex.ru> for running many benchmarks and for useful discussions. * src/json.c (json_make_string): Speed up parsing of JSON strings by optimizing the normal case of a valid UTF-8 string being returned from libjansson. (Bug#31138)
* Small fix for a JSON unit test.Philipp Stephani2019-04-231-1/+1
| | | | | | | * test/src/json-tests.el (json-parse-string/null): Make JSON object syntactically valid. This test is supposed to check whether an escaped null character causes an error, but without quoting the string it would be syntactically invalid in any case.
* Optimize for typing characters into long C++ raw strings.Alan Mackenzie2019-04-232-478/+492
| | | | | | | | | | | | | | | * lisp/progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare) (c-font-lock-objc-methods) (c-font-lock-declarations, c-font-lock-enum-tail) (c-font-lock-cut-off-declarators, c-font-lock-enclosing-decls): If the chunk been fontified consists entirely of comments and strings, don't attempt to perform the function's action. * lisp/progmodes/cc-mode.el (c-before-change-check-unbalanced-strings): Don't expand (c-new-BEG c-new-END) unnecessarily to the entire raw string being fontified. (c-fl-decl-start, c-fl-decl-end): When in a (raw or otherwise) string, don't return a position outside of the string (which used to cause unneeded fontification).
* Release xft_data in widget destroy callback to avoid visual distractionYAMAMOTO Mitsuharu2019-04-232-29/+24
| | | | | | | | | * lwlib/lwlib-int.h (struct _widget_instance) [HAVE_XFT]: Remove nr_xft_data. * lwlib/lwlib-Xaw.c (find_xft_data, xaw_update_one_widget) [HAVE_XFT]: Loop while widget member is not NULL instead of using nr_xft_data. (xaw_destroy_instance) [HAVE_XFT]: Move xft_data release code from here ... (destroy_xft_data) [HAVE_XFT]: ... to here. (make_dialog) [HAVE_XFT]: Add destroy_xft_data as destroy callback for dialog.
* Let plain ‘make’ work even not GNU MakePaul Eggert2019-04-222-2/+10
| | | | | | * Makefile.in (top_distclean): Clean makefile as well as Makefile. * configure.ac: If not using plain ‘make’, create a makefile so that plain ‘make’ simply calls $(MAKE).
* Revert Vinternal_interpreter_environment tweakPaul Eggert2019-04-221-2/+2
| | | | | | | | Stefan Monnier pointed out examples like (funcall `(closure ,(let ((cycle (list nil))) (setcdr cycle cycle)) () a)), where the user can set Vinternal_interpreter_environment indirectly. * src/eval.c (Fsetq): Revert recent change, going back to Fassq.