1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-01 11:20:41 -08:00
Commit graph

43952 commits

Author SHA1 Message Date
Eli Zaretskii
10753bc688 Fix right-margin display on TTY frames
* src/dispnew.c (prepare_desired_row, adjust_glyph_matrix): Adjust
the glyph pointer of the right-margin area for all windows but the
rightmost ones on TTY frames, to account for the border glyph.
(Bug#48257)
2021-07-06 20:11:51 +03:00
Martin Rudalics
f7dcad9275 Show hand cursor when dragging frame (Bug#49247)
* src/xdisp.c (note_mode_line_or_margin_highlight): Show hand
cursor when dragging frame with mode, tab or header line.
(syms_of_xdisp): Define Qdrag_with_mode_line,
Qdrag_with_header_line and Qdrag_with_tab_line.
2021-07-05 10:53:39 +02:00
Jim Porter
2f2afa0b31 Ensure 'call-process' interprets INFILE as a local path
* src/callproc.c (get_current_directory): Rename from
'encode_current_directory' and add boolean ENCODE flag.
(Fcall_process): Interpret INFILE relative to the working directory
from which PROGRAM is run, not 'default-directory'.
(call_process): Use 'get_current_directory'.
* src/process.c (Fmake_process): Use 'get_current_directory'.
* src/process.h (get_current_directory): Rename decl from
'encode_current_directory'.
* src/sysdep.c (sys_subshell): Use 'get_current_directory' (bug#49283).
2021-07-04 15:32:03 +02:00
Alan Third
28fcdb5219 Fix crash in GNUstep font coverage check
* src/nsfont.m (ns_charset_covers): Check coverage more accurately and
don't automatically assume the buffer is 8192 bytes long.
2021-07-04 11:36:32 +01:00
Alan Third
0382aa1148 Remove unused variables
* src/nsterm.m ([EmacsView keyDown:]): Remove ns_fake_keydown as
there's no code that ever sets it to YES.
2021-07-04 11:36:24 +01:00
Alan Third
604133ee62 Fix thread memory management under NS
* src/thread.c (run_thread): Allocate an autorelease pool so that any
autoreleased Objective C objects are correctly released.
2021-07-04 11:36:17 +01:00
Alan Third
1b88404acc Fix NS self contained eln location (bug#49271)
* Makefile.in:
* configure.ac: Change eln file install location to
Contents/Frameworks.
* src/comp.c (hash_native_abi): Replace dots with underscores in the
eln install location as the macOS code-signing tool won't sign the
files if the parent directories have dots.
2021-07-01 20:41:58 +01:00
Alan Third
1dba0ca278 Fix NS port built with gcc
* src/nsterm.m (ns_relocate): The NSArray shorthand notation doesn't
work in GCC.
2021-06-29 22:18:33 +01:00
Martin Rudalics
6b4043833c In read_minibuf_unwind don't try to select dead window (Bug#49248)
* src/minibuf.c (read_minibuf_unwind): Don't try to select dead
window (Bug#49248).
2021-06-29 09:21:22 +02:00
Eli Zaretskii
a0f0609394 ; * src/lread.c (load_path_default): Remove unused variable. 2021-06-26 12:46:39 +03:00
Alan Third
5dd2d50f3d Fix NS native compilation builds
* Makefile.in (ns_applibexecdir):
(ns_applibdir):
(ns_appdir): New variables.
(.PHONY): Include new rule.
(epaths-force-ns-self-contained): Remove the app bundle directory from
all paths.
* configure.ac (NS_SELF_CONTAINED): Set the default site-lisp
directory instead of hard-coding it in the ObjC code, and use the new
epaths generating make rule.
* src/callproc.c (init_callproc_1):
(init_callproc): Remove all the NS specific code as the special cases
are now handled by decode_env_path.
* src/emacs.c (load_pdump):
(decode_env_path): Use ns_relocate to find the correct directory after
relocation.
* src/lread.c (load_path_default): Remove all the NS specific code as
the special cases are now handled by decode_env_path.
* src/nsterm.h: Update function definitions.
* src/nsterm.m (ns_etc_directory):
(ns_exec_path):
(ns_load_path): Remove functions that are no longer needed.
(ns_relocate): New function to calculate paths within the NS app
bundle.
* nextstep/Makefile.in (ns_applibexecdir): New variable, and update
anything relying on the libexec location.
2021-06-26 10:34:59 +01:00
Eli Zaretskii
6e0bff0296 Fix race conditions between Lisp threads in GTK builds
* src/xgselect.c (release_select_lock, acquire_select_lock)
[GCC >= 4.7.0]: Use '__atomic' builtins to prevent races between
threads in accessing 'threads_holding_glib_lock'.  Reported by
<dick.r.chiang@gmail.com>.  (Bug#36609)
2021-06-25 16:52:48 +03:00
Alan Third
434c059d83 Fix GNUstep menu update crashes
* src/nsmenu.m (ns_update_menubar): close the submenus before modifying them.
([EmacsMenu close]): Make sure to close all submenus.
2021-06-20 16:53:37 +01:00
Alan Third
0bd9e78256 Fix GNUstep build warnings
* src/nsterm.h ([EmacsWindow orderedIndex]):
* src/nsterm.m ([EmacsWindow orderedIndex]): Implement orderedIndex
for use under GNUstep.
* src/nsmenu.m (free_frame_menubar):
(ns_update_menubar):
([EmacsMenu addSubmenuWithTitle:]):
([EmacsMenu addItemWithWidgetValue:attributes:]): Cast return values
to correct types.
([EmacsMenu fillWithWidgetValue:]): Move variable definition inside
relevant #ifdef block.
([EmacsMenu menuWillOpen:]):
([EmacsMenu menuDidClose:]):
([EmacsMenu confinementRectForMenu:onScreen:]):
([EmacsMenu menu:willHighlightItem:]): New functions to silence build
warnings.
* src/nsfont.m (nsfont_open): Remove pointless fabs call.
2021-06-20 16:53:37 +01:00
dickmao
234bf1b636 De-obfuscate gnutls_handshake loop
* src/gnutls.c (gnutls_try_handshake): Rewrite the handshake loop
for greater clarity (bug#49055).
2021-06-19 15:19:04 +02:00
Mattias Engdegård
b9f339e8f8 ; * src/comp.c (ADD_IMPORTED): Fix broken macro. 2021-06-18 15:02:58 +02:00
Mattias Engdegård
7c22aa36cd Eliminate some GCC warnings
* src/doprnt.c (exprintf, evxprintf):
* src/lisp.h (exprintf, evxprintf): Don't use a pointer-to-const type
for the `nonheapbuf` argument: although it is never dereferenced, GCC
will warn when passing a pointer to uninitialised memory otherwise.
* src/fns.c (sort_vector_copy, realize_face, realize_gui_face)
(realize_tty_face): Use the same signatures in the prototypes as in
the actual function definitions.
2021-06-16 18:05:41 +02:00
Mattias Engdegård
706e186581 * src/xdisp.c (gui_draw_bottom_divider): Fix misleading indentation. 2021-06-16 11:37:00 +02:00
Pip Cet
d9698faa34 Prepare pdumper dump file in memory, write it in one go (Bug#46881)
* src/pdumper.c (struct dump_context): Add buf, buf_size, max_offset fields.
(dump_grow_buffer): New function.
(dump_write): Use memcpy, not an actual emacs_write.
(dump_seek): Keep track of maximum seen offset. Don't actually seek.
(Fdump_emacs_portable): Write out the file contents when done.
2021-06-16 09:44:32 +02:00
Lars Ingebrigtsen
81fd5603ce Add a new function syntax-class-to-char
* doc/lispref/syntax.texi (Syntax Table Internals): Document it.
* src/syntax.c (Fsyntax_class_to_char): New function (bug#37452).
2021-06-15 17:01:57 +02:00
Eli Zaretskii
bad87a162c ; * src/fileio.c (Fsubstitute_in_file_name): Doc fix. 2021-06-13 15:52:17 +03:00
Lars Ingebrigtsen
c4fcf2fc6f Fsubstitute_in_file_name doc string clarification
* src/fileio.c (Fsubstitute_in_file_name): Mention that undefined
variables aren't replaced (as opposed to what happens in a shell
substitution) (bug#40949).
2021-06-13 14:14:32 +02:00
Matt Beshara
57950515ec Add ability to bring only the selected frame to the front (bug#48865)
Causes ‘ns-hide-emacs’ to layer the selected frame in front of every other
application’s windows, and give that frame keyboard focus, when called with
'activate-front.

* src/nsfns.m (Fns_hide_emacs): Allow activating only selected frame.
2021-06-12 10:10:51 +01:00
Martin Rudalics
b3dd0ce75b Provide new option `delete-window-set-selected' (Bug#47300)
When `delete-window' deletes its frame's selected window, this new
option allows to choose another window as replacement.

* lisp/window.el (get-lru-window, get-mru-window)
(get-largest-window): New optional argument NO-OTHER.
(window-at-pos): New function.
(delete-window-set-selected): New option.
(delete-window): Handle `delete-window-set-selected'.
* src/window.c (Fdelete_window_internal): Set the selected
window of WINDOW's frame to the first window on that frame and
let `delete-window' choose a more suitable window instead.
* doc/lispref/windows.texi (Deleting Windows): Describe new
option `delete-window-set-selected'.
(Cyclic Window Ordering): Describe new NO-OTHER argument for
`get-lru-window', `get-mru-window' and `get-largest-window'.
* etc/NEWS: Mention `delete-window-set-selected' and the NO-OTHER
argument.
2021-06-10 09:14:21 +02:00
Alan Third
ff65ea932c Remove pause on fullscreening in NS (bug#48406)
* src/nsterm.m (ns_make_frame_visible):
(ns_set_parent_frame):
([EmacsView windowWillEnterFullScreen:]):
([EmacsView windowDidEnterFullScreen:]):
([EmacsView windowWillExitFullScreen:]):
([EmacsView initFrameFromEmacs:]): Remove references to
in_fullscreen_transition.
([EmacsView toggleFullScreen:]): Remove calls to removed methods.
([EmacsView inFullScreenTransition]):
([EmacsView waitFullScreenTransition]): Remove Methods.
* src/nsterm.h (EmacsView): Remove defintions of removed methods, and
the in_fullscreen_transition variable.
2021-06-09 19:22:03 +01:00
Alan Third
fb62846b68 Fix image filename encoding issues (bug#48902)
* src/image.c (image_find_image_fd): Don't return an encoded filename
string.
* src/nsfns.m: ([NSString stringWithLispString:]): Clarify usage
comment.
* src/nsimage.m ([EmacsImage allocInitFromFile:]): No need to encode
the filename when converting to NSString.
2021-06-09 12:54:58 +01:00
Glenn Morris
bef3070ab8 Merge from origin/emacs-27
37f4457994 (origin/emacs-27) ; Fix typo in dynamic module functions d...
f7d4bbceee ; * src/composite.h: Improve comments for LGSTRING and LGL...
2021-06-08 07:50:36 -07:00
Alan Third
f7d98dbba0 Revert "src/nsterm.m: fix window tabbing on macOS"
This reverts commit 2207f9adcc.
2021-06-07 23:16:15 +01:00
Eli Zaretskii
69a65212a2 * src/xdisp.c (Fwindow_text_pixel_size): Plug memory leak. (Bug#48884) 2021-06-07 15:03:06 +03:00
Paul W. Rankin
2207f9adcc src/nsterm.m: fix window tabbing on macOS
* src/nsterm.m: remove NSWindowTabbingModeDisallowed to respect
  system-wide preferences
* etc/NEWS: add mention of native tab support in macOS and where
  to specify system-wide setting
2021-06-06 10:08:54 +01:00
Stefan Monnier
c9424189fc * src/keyboard.c (read_decoded_event_from_main_queue): Fix paren typo 2021-06-05 11:57:57 -04:00
Max Mikhanosha
515eb69895 Support terminal emulators that encode the Meta modifier as 8th bit
See discussion starting at

 https://lists.gnu.org/archive/html/emacs-devel/2021-06/msg00034.html

for the details.
* src/keyboard.c (read_decoded_event_from_main_queue): For
raw-text encoed input, if Meta bit is encoded, apply the Meta
modifier to single-byte characters that have the 0x80 bit set.
For input encoded otherwise, if the Meta bit is encoded, remove
the 0x80 bit after decoding the characters.
(tty_read_avail_input): Reset the 0x80 bit only if Meta bit is not
encoded.
(Fset_input_meta_mode): Support 'encoded' as the value of META.
(Fset_input_mode): Document 'encoded' for META.
(Fcurrent_input_mode): Support and document 'encoded' as the value
of META.
(syms_of_keyboard): DEFSYM 'encoded'.
2021-06-05 16:57:43 +03:00
Eli Zaretskii
f93f3b80dd Fix slow operation of 'string-width'
* src/composite.c (find_automatic_composition): Accept one
additional argument BACKLIM; don't look back in buffer or string
farther than that.  Add an assertion for BACKLIM.
(composition_adjust_point, Ffind_composition_internal): Callers
adjusted.
* src/composite.h (find_automatic_composition): Adjust prototype.
* src/character.c (lisp_string_width): Call
'find_automatic_composition' with the value of BACKLIM equal to POS,
to avoid costly and unnecessary search back in the string, since
those previous characters were already checked for automatic
compositions.  (Bug#48734)  (Bug#48839)
2021-06-05 14:16:06 +03:00
Eli Zaretskii
c3b44858dc Fix fill-column-indicator on TTY frames
* src/xdisp.c (extend_face_to_end_of_line): Fix calculation of
fill-column-indicator on TTY frames.  Suggested by Jimmy Aguilar
Mena <spacibba@aol.com>.
2021-06-03 17:45:12 +03:00
Lars Ingebrigtsen
d08067d362 Cross-reference the message/error control variables
* src/keyboard.c (syms_of_keyboard): Mention set-message-function
in the command-error-function doc string...

* src/xdisp.c (syms_of_xdisp): ... and vice versa (bug#13752).
2021-06-03 09:29:55 +02:00
Eli Zaretskii
f7d4bbceee ; * src/composite.h: Improve comments for LGSTRING and LGLYPH. 2021-06-02 17:50:57 +03:00
Eli Zaretskii
09081ca119 Fix a typo in 'produce_glyphless_glyph'
* src/xdisp.c (produce_glyphless_glyph): Initialize lower_xoff.
Remove workaround for lack of its initialization.  (Bug#8215)
2021-06-02 16:14:14 +03:00
Alan Third
246e107d73 Improve performance of NS port's display on macOS
* src/nsterm.h: Update EmacsSurface definition.
* src/nsterm.m ([EmacsView focusOnDrawingBuffer]): Don't change the
CGContext's settings directly.
([EmacsView unfocusDrawingBuffer]): Don't release the context here.
(CACHE_MAX_SIZE): Add maximum cache size.
([EmacsView updateLayer]): Send a request for getContext, which will
copy the buffer and create the context if it doesn't already exist, to
the NS run loop.
([EmacsSurface initWithSize:ColorSpace:Scale:]): Add the scale factor
and if there's already a CGContext available, reuse it.
([EmacsSurface dealloc]): No longer need to release lastSurface
separately.
([EmacsSurface getContext]): Don't create more surfaces than we have
spaces for in the cache.
([EmacsSurface releaseContext]): If there's no context don't try to
release it and put currentSurface back on the cache instead of
lastSurface.
([EmacsSurface copyContentsTo:]): Don't try to copy if the source and
destination are actually the same surface.
2021-06-01 19:51:21 +01:00
Alan Mackenzie
2ee5ce208f Make frames record when their selected window was the mini-window
When a frame in this state is selected again by Fselect_frame (but not by
Fselect_window), the mini-window rather than the frame's currently selected
window, is chosen for selection, should there still be an active minibuffer in
it.

This fixes bug #48674.

* src/frame.h (struct frame): Add new boolean field select_mini_window_flag.

* src/frame.c (make_frame): Initialize select_mini_window_flag to false.
(do_switch_frame): Set the new flag appropriately for the old frame, and
process the new frame's setting of this flag, before setting it to false.

* src/window.c (select_window): Set f->select_mini_window_flag to false.
(Fset_frame_selected_window, Fdelete_other_windows_internal)
(Fdelete_window_internal): Add comments clarifying that there is no clearing
of f->select_mini_window_flag in these functions.
2021-05-31 16:24:11 +00:00
Glenn Morris
63e9a4b1e1 * src/keyboard.c (make_lispy_event): Fix previous. 2021-05-31 08:40:26 -07:00
Alan Mackenzie
6e2d3bce08 Correct mouse handling when window origin changes between down and up events
Do this by using frame relative positions rather than window relative ones,
which gave rise to spurious drag events when the origin of the window changed
between the mouse down and up events.  This fixes bug #48409.

* keyboard.c (frame_relative_event_pos): New static variable.
(make_lispy_event): Record frame relative position of down event.  When the up
event is in the same position, "move" this event into the window of the down
event when this window (typically a mini-window) is no longer under the mouse.
Call make_lispy_position a second time to generate this changed event.
(syms_of_keyboard): Declare Qwindow_edges.  static_pro
frame_relative_event_pos.
2021-05-31 10:33:10 +00:00
Lars Ingebrigtsen
77f67d12f6 Add new convenience function `buffer-local-boundp'
* doc/lispref/variables.texi (Creating Buffer-Local): Document it.
* lisp/subr.el (buffer-local-boundp): New function.

* src/data.c (Flocal_variable_p): Mention it.
2021-05-31 07:21:09 +02:00
Eli Zaretskii
23ad0f0c5a Don't account for character compositions in 'format' and friends
'lisp_string_width' is called from 'format' and 'format-message',
which can be called both very early into Emacs initialization and in
other contexts where using the font backend is impossible or
undesirable.  So this commit changes 'lisp_string_width' to try
accounting for automatic compositions only when explicitly requested,
and only 'string-width' does that; 'format' and 'format-message'
don't.
* src/character.c (lisp_string_width): Accept an additional
argument AUTO_COMP; attempt accounting for auto-compositions only
if that argument is non-zero.  (Bug#48732)
* src/editfns.c (styled_format):
* src/character.c (Fstring_width): Callers of 'lisp_string_width'
adjusted.
2021-05-30 11:16:59 +03:00
Lars Ingebrigtsen
fdfb3df92a `minibuffer-exit-hook' doc string clarification
* src/minibuf.c (syms_of_minibuf): `minibuffer-exit-hook' is run
in the minubuffer usually, so don't claim that it's run after
(bug#16524).
2021-05-30 07:06:48 +02:00
Gregory Heytings
bd5c740419 Fix key recording bug when an input method is activated
* lisp/international/quail.el (quail-add-unread-command-events):
New function.
(quail-start-translation, quail-start-conversion)
(quail-update-translation, quail-next-translation)
(quail-prev-translation, quail-next-translation-block)
(quail-prev-translation-block, quail-minibuffer-message): Use
'quail-add-unread-command-events' (and partly revert commit
03e3440dbb).  (Bug#48042)

* lisp/subr.el (inhibit--record-char): Now obsolete.

* lisp/term/xterm.el (xterm--init): New function, with most of the
code of former 'terminal-init-xterm'.
(terminal-init-xterm): Clear the lossage after terminal
initialization (see Bug#44908).
(xterm--read-event-for-query): Do not use 'inhibit--record-char'
anymore (revert commit 3e6525d69f).

* src/keyboard.c (syms_of_keyboard): Remove 'inhibit--record-char'
(partly revert 03e3440dbb).
(record_char, syms_of_keyboard_for_pdumper): Do not use
'inhibit_record_char anymore'.
2021-05-29 11:05:33 +03:00
Lars Ingebrigtsen
cee502ea18 Improve the file-accessible-directory-p doc strin
* src/fileio.c (Ffile_accessible_directory_p): Don't use the
phrase "directory name spec", which isn't defined (bug#18201).
2021-05-29 06:02:13 +02:00
Philipp Stephani
a52f572e62 ; * src/Makefile.in: Fix typo. 2021-05-28 16:56:17 +02:00
Eli Zaretskii
6d916bfb37 Another stability fix in 'lisp_string_width'
* src/character.c (lisp_string_width): Compute C pointer to data
of STRING immediately before using it, since STRING could be
relocated by GC triggered by processing compositions.  (Bug#48711)
2021-05-28 14:03:16 +03:00
Eli Zaretskii
3fe2f482bd Attempt to fix segfaults caused by changes in 'lisp_string_width'
* src/character.c (lisp_string_width): Validate the value of TO
argument before passing it to 'composition_gstring_width'.
(Bug#48711)
2021-05-28 10:25:26 +03:00
Eli Zaretskii
f1c3b82d40 ; * src/character.c (lisp_string_width): Another defensive fix. 2021-05-27 17:15:53 +03:00