aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | Fix line-prefix display when there's a 'display' string at BOLEli Zaretskii2025-08-231-19/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (push_it): Reset the 'string_from_prefix_prop_p' flag. (try_window_id): Disable this optimization if the last unchanged at-beg row begins with a display or overlay string and there;s a line/wrap-prefix property on the row. (push_prefix_prop): Accept an additional argument FROM_BUFFER to indicate that the prefix property was found on buffer text underlying a display or overlay property, and set up the position to pop to accordingly. Reset the 'string_from_display_prop_p' flag of the iterator after pushing IT to set up for iterating the prefix string. (get_it_property): Use it->string, not it->object, as indication that prefix property is on a string. (get_line_prefix_it_property): Accept an additional argument: pointer to a flag indicating that the prefix property was found on buffer text underlying a display or overlay property. Callers adjusted. (handle_line_prefix): Use the FROM_BUFFER flag to correctly handle prefix properties on buffer text at the same position as a display string. (Bug#79275)
* | Speed up JSON parsing by not maintaining line and column (bug#79192)Mattias Engdegård2025-08-211-88/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We use the current parsing position instead. The line and column in the error weren't used (nor very accurate to begin with) and the user can easily compute them when needed. The line number calculation is kept just in case but deprecated, for removal in Emacs 32. * src/json.c (struct json_parser, json_parser_init): Update parser state. (json_signal_error): New position computation. (json_skip_whitespace_internal): Remove. (is_json_whitespace): New. (json_skip_whitespace, json_skip_whitespace_if_possible) (json_parse_unicode, json_parse_string, json_parse_number) (json_parse_value): Simplify and rewrite for efficiency. (count_chars, count_newlines) (string_byte_to_pos, string_byte_to_line) (buffer_byte_to_pos, buffer_byte_to_line): New. (Fjson_parse_string, Fjson_parse_buffer): Adapt to new parser state. * test/src/json-tests.el (json-tests--parse-string-error-pos) (json-tests--parse-buffer-error-pos, json-parse-error-position): New. * etc/NEWS: Note deprecation of line and column.
* | ; * src/lread.c (from_buffer_p): New abstraction.Mattias Engdegård2025-08-211-2/+8
| |
* | Signal end-of-file with more correct dataSpencer Baugh2025-08-191-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | end_of_file_error previously always signaled end-of-file with load-true-file-name if that was non-nil (and a string). However, this might be the wrong thing to do; for example, if a file being loaded calls read on a buffer. * src/lread.c (end_of_file_error): <source>: New argument; check it to determine what data to signal with. (bug#68546) (read_char_escape, read_char_literal, read_string_literal) (skip_space_and_comments, read0): Pass source to end_of_file_error.
* | Reject invalid error symbols (Bug#76447)Stefan Monnier2025-08-171-0/+2
| | | | | | | | | | * src/eval.c (signal_or_quit): Signal an error if 'signal' gets called with an invalid error symbol.
* | ; * src/process.c (set_proc_thread): Fix assertion.Eli Zaretskii2025-08-161-1/+2
| |
* | Make sure 'make-process' locks the process to the current threadEli Zaretskii2025-08-161-6/+15
| | | | | | | | | | * src/process.c (set_proc_thread): New function. (Fset_process_thread, create_process): Use it.
* | Zero fd_callback_info when deleting an fdSpencer Baugh2025-08-161-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | .waiting_thread and .thread could be left set to non-NULL values in a deleted fd_callback_info entry. These would never be cleared by e.g. clear_waiting_thread_info since that only clears fd_callback_info entries up to max_desc. Clear fd_callback_info entirely when deleting an entry. * src/process.c (clear_fd_callback_data): Add. (delete_write_fd, delete_keyboard_wait_descriptor): Call clear_fd_callback_data. (bug#79201) (delete_read_fd): Remove duplicated clearing code. (deactivate_process): Remove duplicate recompute_max_desc.
* | New user option 'treesit-enabled-modes' (bug#79180)Juri Linkov2025-08-141-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/treesit.el (treesit-enabled-modes): New user option. * src/treesit.c (treesit-major-mode-remap-alist): New variable. * lisp/progmodes/c-ts-mode.el: * lisp/progmodes/csharp-mode.el: * lisp/progmodes/java-ts-mode.el: * lisp/progmodes/js.el: * lisp/progmodes/json-ts-mode.el: * lisp/progmodes/ruby-ts-mode.el: * lisp/progmodes/sh-script.el: * lisp/textmodes/css-mode.el: * lisp/textmodes/mhtml-ts-mode.el: * lisp/textmodes/toml-ts-mode.el: Add ts-mode mapping to 'treesit-major-mode-remap-alist' for ts-modes that already have the corresponding non-ts mode association in 'auto-mode-alist'. * lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode-maybe): * lisp/progmodes/dockerfile-ts-mode.el (dockerfile-ts-mode-maybe): * lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode-maybe): * lisp/progmodes/go-ts-mode.el (go-ts-mode-maybe) (go-mod-ts-mode-maybe, go-work-ts-mode-maybe): * lisp/progmodes/heex-ts-mode.el (heex-ts-mode-maybe): * lisp/progmodes/lua-ts-mode.el (lua-ts-mode-maybe): * lisp/progmodes/php-ts-mode.el (php-ts-mode-maybe): * lisp/progmodes/rust-ts-mode.el (rust-ts-mode-maybe): * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode-maybe) (tsx-ts-mode-maybe): * lisp/textmodes/markdown-ts-mode.el (markdown-ts-mode-maybe): * lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode-maybe): Add a wrapper function to 'auto-mode-alist' for ts-modes that have no corresponding non-ts mode. Also add a mapping to 'treesit-major-mode-remap-alist' for the case when a non-ts mode is installed from an external source to be able to customize it with 'treesit-enabled-modes'.
* | Fix file notification problem on Windows.Michael Albinus2025-08-122-5/+5
| | | | | | | | | | | | | | * src/inotify.c (inotify_callback): Set event.frame_or_window to Qnil. * src/keyboard.c (make_lispy_event): Make a better check for the HAVE_W32NOTIFY case when creating a Qfile_notify event.
* | Fix NS frame position update after resize/moveDr.Sc.KAWAMOTO,Takuji2025-08-111-26/+37
| | | | | | | | | | | | | | | | | | | | | | Fixes bug#74074, bug#79164. * src/nsterm.m ([EmacsView windowDidEndLiveResize:]): ([EmacsView updateFramePosition]): New functions. ([EmacsView windowDidMove:]): Move contents of this function into updateFramePosition and call it. Copyright-paperwork-exempt: yes
* | ; Coding style fixDmitry Gutov2025-08-111-2/+2
| |
* | Allow thread's buffer to be killed, by defaultDmitry Gutov2025-08-094-9/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/thread.c (Fmake_thread): Add new argument (bug#76969). (thread_set_error): New function, extracted from thread-signal. (Fthread_buffer_disposition): Add getter. (Fthread_set_buffer_disposition): And setter. (thread_check_current_buffer): Check the values of threads' buffer_disposition. (thread_all_before_buffer_killed): New function. (init_threads): Set buffer_disposition to nil for the main thread. (syms_of_threads): Add new symbols and define the error. * src/thread.h (thread_state): New field buffer_disposition. (thread_all_before_buffer_killed): Declare. * src/buffer.c (Fkill_buffer): Call thread_check_current_buffer one more time after all hooks and after that call thread_all_before_buffer_killed. * src/comp.c (ABI_VERSION): Increase the value. * test/src/thread-tests.el (thread-buffer-disposition-t) (thread-buffer-disposition-nil) (thread-buffer-disposition-silently) (thread-set-buffer-disposition) (thread-set-buffer-disposition-main-thread): New tests. * doc/lispref/threads.texi (Basic Thread Functions): Document buffer-disposition in make-thread and its getter and setter. * etc/NEWS: Add entry.
* | ; Fix last changeEli Zaretskii2025-08-091-0/+2
| | | | | | | | | | * src/print.c (print_create_variable_mapping): Add back the wrong spelling as compatibility measure (bug#75784).
* | Improve Vprint_variable_mappingZach Shaftel2025-08-091-1/+2
| | | | | | | | | | | | * src/print.c (print_create_variable_mapping): Fix a typo, `unreadeable-function' to `unreadable-function'. Add `symbols-bare' as an override for `print-symbols-bare'. (Bug#79161)
* | Variable to control overshoot and backup for TTY cursor motionManuel Giraud2025-08-092-19/+35
| | | | | | | | | | | | | | | | * src/term.c (syms_of_term): New variable. * src/cm.c (calccost): Control overshooting with new variable. * etc/NEWS: Document new variable. * lisp/term/rxvt.el (terminal-init-rxvt): Force no TAB+BS for rxvt. (Bug#78474)
* | ; * src/android.c (android_url_encode): Typo in comment.Po Lu2025-08-091-3/+3
| |
* | ; Fix last changeEli Zaretskii2025-08-071-6/+6
| | | | | | | | | | | | | | * src/eval.c (Fdebugger_trap): Minor wording changes in doc string. * etc/DEBUG: Some copyedits of a recently-added text.
* | New debugger-trap function to break to GDBJeremy Bryant2025-08-072-0/+21
| | | | | | | | | | | | | | | | | | | | * src/eval.c: new primitive debugger-trap * src/.gdbinit: set breakpoint to Fdebugger_trap * etc/DEBUG: document it. Remove suggestion to use Fredraw_display. This do-nothing primitive gives control to GDB, and for debugging convenience a breakpoint is set by default in .gdbinit.
* | Handle inhibiting implied resizing for frames without initial tool barMartin Rudalics2025-08-052-2/+21
| | | | | | | | | | | | | | | | | | * src/xfns.c (x_set_tool_bar_lines, x_change_tool_bar_height) * src/pgtkfns.c (x_change_tool_bar_height) (pgtk_set_tool_bar_lines): Set f->tool_bar_resized to true so inhibiting implied resizing works for frames without initial tool bar too. See the thread https://lists.gnu.org/archive/html/emacs-devel/2025-08/msg00034.html.
* | Port better to Linux with 1 MiB pagesPaul Eggert2025-08-025-22/+12
| | | | | | | | | | | | * src/lisp.h: Include <sys-limits.h>. (MAX_RW_COUNT): Remove, as it is the same thing as sys-limits.h’s SYS_BUFSIZE_MAX. All uses replaced by SYS_BUFSIZE_MAX.
* | NS: Correct the accessibility role of Emacs windows (bug#77062)Rudolf Adamkovič2025-07-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make the accessibility role of Emacs windows to be "standard window" (AXWindow) instead of "text field" (AXTextField). This matches other applications on NS, as can be verified with any accessibility inspector. All widely used NS ports, such as Emacs Plus, have this patch already applied. As for practical impact, this change makes Emacs, for example, work with tiling window managers, such as Yabai, where many users report problems with Emacs specifically, and are instructed to simply avoid the official NS port of GNU Emacs due to this problem. * src/nsterm.m: ([EmacsWindow accessibilityAttributeValue:]): Make the accessibility role of Emacs windows to be "standard window" (AXWindow) instead of "text field" (AXTextField).
* | Refactor reader to use readbuf_t in more placesMattias Engdegård2025-07-301-98/+68
| | | | | | | | | | | | | | | | | | | | Simplify the code by using the already existing dynamic string buffer type. This is a refactoring; performance isn't measurably affected. * src/lread.c (grow_read_buffer): Dissolve into... (readbuf_grow): ...here, simplifying the code. (add_char_to_buffer): Check for growth before adding char, not after. (read_integer, read_string_literal): Use readbuf_t.
* | Move keyboard input functions from lread.c to keyboard.cMattias Engdegård2025-07-302-270/+270
| | | | | | | | | | | | | | | | | | | | | | | | These have nothing to do with the Lisp reader at all. Suggested by Lynn Winebarger (bug#79035). * src/lread.c (read_filtered_event, Fread_char, Fread_event) (Fread_char_exclusive, Qascii_character): Move... * src/keyboard.c: ...here. * test/src/lread-tests.el (test-inhibit-interaction): Move... * test/src/keyboard-tests.el (keyboard-inhibit-interaction): ...here.
* | ; * src/bytecode.c: remove unneeded includesMattias Engdegård2025-07-301-4/+0
| |
* | Disable Gnulib’s non-Gregorian calendarsPaul Eggert2025-07-291-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prepare for the next Gnulib merge by disabling the optional support for non-Gregorian calendars recently added to Gnulib’s nstrftime module. This would be tricky to integrate with Emacs, as Emacs has its own (much fancier) calendar system, one that at least for the Persian calendar sometimes disagrees with Gnulib’s, and it’s likely not worth the trouble of reconciling the conflicts. * src/conf_post.h (SUPPORT_NON_GREG_CALENDARS_IN_STRFTIME): New macro, defined to false. * admin/merge-gnulib (GNULIB_MODULES): nstrftime → nstrftime-limited. (AVOIDED_MODULES): Add localcharset. Near the end, also remove the files lib/calendar-ethiopian.h, lib/calendar-persian.h, lib/calendar-thai.h, lib/calendars.h.
* | ; * src/pdumper.c (dump_buffer): Update HASH_buffer.Eli Zaretskii2025-07-281-1/+1
| |
* | ; * src/emacs.c (default_PATH) [DOS_NT]: Add commentary.Eli Zaretskii2025-07-271-0/+3
| |
* | Better default PATH on MS-WindowsPaul Eggert2025-07-271-0/+3
| | | | | | | | | | | | * src/emacs.c (default_PATH): Use a more-reasonable default for MS-Windows and DOS. Problem reported by Eli Zaretskii in: https://lists.gnu.org/r/emacs-devel/2025-07/msg00384.html
* | Update Android frame param handlersPo Lu2025-07-271-1/+1
| | | | | | | | | | * src/androidfns.c (android_frame_parm_handlers): Add gui_set_borders_respect_alpha_background for consistency with X.
* | Add readlink, realpath startup commentsPaul Eggert2025-07-261-13/+26
| | | | | | | | | | | | | | This does not change behavior. * src/emacs.c (follow_if_symlink): New static function, as a vehicle for commentary explaining the deal with readlink and realpath. (find_emacs_executable): Use it.
* | ; * src/w32fns.c (Fx_create_frame): Fix copy/paste errors in last change.Eli Zaretskii2025-07-261-4/+4
| |
* | Add frame parameter which allows border transparencyGarklein2025-07-2610-18/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new 'borders-respect-alpha-background' frame parameter, when set to 't', will make window dividers and internal borders respect the 'alpha-background' frame parameter. This allows transparent gaps between windows. * doc/lispref/frames.texi (Font and Color Parameters): Document the change. * src/frame.c (frame_parm_table, syms_of_frame) (gui_set_borders_respect_alpha_background): * src/frame.h (struct frame): Add frame parameter. * src/androidfns.c (x_create_frame, android_create_tip_frame) (android_frame_parm_handlers): * src/haikufns.c (haiku_create_frame, haiku_create_tip_frame) (haiku_frame_parm_handlers): * src/nsfns.m (ns_frame_parm_handlers, x_create_frame): * src/w32fns.c (x_create_frame, w32_create_tip_frame) (w32_frame_parm_handlers): Add dummy parameters for backends that don't support opacity. * src/pgtkfns.c (pgtk_frame_parm_handlers, x_create_frame) (pgtk_create_tip_frame): * src/pgtkterm.c (pgtk_draw_window_divider): * src/xfns.c (x_create_frame, x_create_tip_frame) (x_frame_parm_handlers) * src/xterm.c (x_draw_window_divider) (x_clear_under_internal_border): Implement parameter on backends that support opacity.
* | ; * src/nsterm.m (ns_define_fringe_bitmap): Stylistic corrections.Po Lu2025-07-261-14/+14
| |
* | Fix last commitAlan Third2025-07-261-3/+3
| | | | | | | | | | * src/nsterm.m (ns_draw_fringe_bitmap): Rename clearRect to bmpRect where missed previously.
* | Fix incorrectly nested ns_focus/ns_unfocus callsAlan Third2025-07-261-19/+16
| | | | | | | | | | | | * src/nsterm.m (ns_draw_fringe_bitmap): Move the call to ns_focus out of the if for overlay_p and rename the rect from clearRect to bmpRect to make it's purpose clearer.
* | Simplify NS fringe vectors (bug#73563)Alan Third2025-07-261-7/+92
| | | | | | | | | | | | * src/nsterm.m (ns_define_fringe_bitmap): Replace the fringe bitmap "tracing" method to a true tracing method. This should make the resulting vector simpler and therefore faster to draw.
* | Enabled macOS dictation post NSTextInputClient migration in v30Alvaro Ramirez2025-07-261-1/+18
| | | | | | | | | | | | * src/nsterm.m (selectedRange): Implement to fix dictation. * etc/NEWS: Announce regression fix. * etc/PROBLEMS: Help users recover from rejected permission.
* | Check for end-of-file when reading character escapes (bug#79097)Mattias Engdegård2025-07-251-0/+2
| | | | | | | | | | * src/lread.c (read_char_escape): Add check. * test/src/lread-tests.el (lread-char-escape-eof): New test.
* | Streamline init_callproc a bitPaul Eggert2025-07-241-10/+8
| | | | | | | | | | | | | | * src/callproc.c (init_callproc): Don’t bother testing for the existence of ../src/ and NEWS if installation-directory is non-nil, because in that case we will test for ../etc/NEWS anyway. Simplify by using AUTO_STR.
* | Refactor to allow nameless auto stringsPaul Eggert2025-07-241-3/+15
| | | | | | | | | | | | | | * src/lisp.h (AUTO_STR, AUTO_STR_WITH_LEN): New macros. Long ago this sort of thing would have been a no-no because we needed to GCPRO the strings. However, GCPRO went away a decade ago.
* | PATH defaults now act more like GNU and POSIXPaul Eggert2025-07-242-13/+52
| | | | | | | | | | | | | | | | | | | | | | | | When PATH is unset or empty, use the system default, to be consistent with GNU/Linux and with POSIX. If there is no system default do not default to "." as that can be dangerous. * src/callproc.c (init_callproc_1, init_callproc): Default PATH to the null pointer, not the empty string. * src/emacs.c (default_PATH): New function. (find_emacs_executable, decode_env_path): Be consistent with POSIX and with glibc about what to do when PATH is unset or empty.
* | Treat ‘.../emacs’ like ‘emacs’ in realpath startupPaul Eggert2025-07-241-9/+5
| | | | | | | | | | | | * src/emacs.c (find_emacs_executable): If the executable name contains a slash, use the same optimization for symlink resolution that we already use when the executable name has no slash.
* | Prefer readlink to lstat in find_emacs_executablePaul Eggert2025-07-241-1/+2
| | | | | | | | | | | | * src/emacs.c (find_emacs_executable): Prefer readlink to lstat when testing whether a file is a symlink. This avoids EOVERFLOW issues.
* | Fix minor memory leak in find_emacs_executablePaul Eggert2025-07-241-0/+1
| | | | | | | | * src/emacs.c (find_emacs_executable): Free candidate if unused.
* | Don’t read before BEG in insert-file-contentsPaul Eggert2025-07-231-4/+12
| | | | | | | | | | * src/fileio.c (Finsert_file_contents): Don’t sample bytes before BEG. Give up optimizing if the file size shrinks to less than BEG.
* | Simplify file end finding in insert-file-contentsPaul Eggert2025-07-231-19/+18
| | | | | | | | | | | | | | * src/fileio.c (Finsert_file_contents): Don’t give up finding the file’s end merely because SEEK_END fails. Try a small test read anyway. This might work in non-POSIX file systems where SEEK_END is not allowed, and trying is easy and simplifies the code.
* | NS: Fix build with NSTRACE_ENABLEDGerd Möllmann2025-07-232-2/+2
| | | | | | | | | | | | | | * src/nsterm.h (NSTRACE_MSG_NO_DASHES): Use nstrace_enabled_global. * src/nsterm.m: ([EmacsView performDragOperation:]): Don't use an NSString.
* | NS: Use different window collection behavior for tooltips (bug#73037)Gerd Möllmann2025-07-231-2/+3
| | | | | | | | | | | | * src/nsterm.m ([EmacsView updateCollectionBehavior]): Use NSWindowCollectionBehaviorFullScreenAuxiliary for non-native tooltips which are not child frames.
* | insert-file-contents respect END betterPaul Eggert2025-07-211-40/+72
| | | | | | | | | | | | | | | | | | This fixes some longstanding bugs, along with bugs recently introduced as part of fixes for Bug#77315. * src/fileio.c (Finsert_file_contents): Arrange for END_OFFSET to never be less than BEG_OFFSET, to simplify the code. Do not go past END_OFFSET when sampling or optimizing reading. Avoid a few unnecessary lseeks.