summaryrefslogtreecommitdiff
path: root/src/xfaces.c
Commit message (Collapse)AuthorAge
* Avoid crashes in batch mode due to lack of frame face cacheEli Zaretskii2023-02-24
| | | | | * src/xfaces.c (Finternal_merge_in_global_face): Handle frames with no face cache.
* Avoid spurious pause in kill-ring-save (Bug#60841)Kévin Le Gouguec2023-02-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 'indicate-copied-region' checks whether the region is "highlighted" and if not, briefly moves point to mark to give a visual cue of the extent of text that was saved to the kill ring. The region is considered "highlighted" if (a) it is active and (b) its face specifies a :background. That latter condition does not account for the multiple ways in which the face can make the region "visually distinct" from the default face, so switch to the more extensive predicate face-differs-from-default-p. The patch also fixes a couple of issues with the predicate's implementation, and introduces a new user option in case anyone happened to enjoy unconditional blinking. * lisp/faces.el (face-differs-from-default-p): Filter out :extend; add rationale for the attributes we ignore. * lisp/simple.el (copy-region-blink-predicate): Add option to let users explicitly opt into or out of blinking point and mark. (region-indistinguishable-p): New function to detect "if there is currently no active region highlighting", leveraging face-differs-from-default-p. (indicate-copied-region): Use it. * src/xfaces.c (merge_face_ref): Allow :stipple to be nil, since it is a documented valid value for that attribute. * etc/NEWS: Announce user option.
* Pacify --without-x unused function warningBasil L. Contovounesios2023-01-25
| | | | | | * src/xfaces.c (font_maybe_unset_attribute): Move definition... [HAVE_WINDOW_SYSTEM] (font_maybe_unset_attribute): ...to here, since the function is used only when we HAVE_WINDOW_SYSTEM (bug#61049).
* ; Add 2023 to copyright years.Eli Zaretskii2023-01-01
|
* ; Fix typosStefan Kangas2022-12-26
| | | | (cherry picked from commit a5d39e11443fa30c8e8bc58254a1a59550dcd99e)
* ; Fix typosStefan Kangas2022-12-13
|
* Improve resetting face attributes when looking for suitable fontsEli Zaretskii2022-12-13
| | | | | | | | | * src/xfaces.c (syms_of_xfaces)<face-font-lax-matched-attributes>: Change the default value to t. Update doc string. (realize_gui_face): When 'Vface_font_lax_matched_attributes' is t, reset the 3 default font attributes efficiently. Call 'font_maybe_unset_attribute' only if the value is neither nil nor t. (Bug#59347)
* Revert "Revert "Improve last change to xfaces.c" (05ece1eb8b)"Po Lu2022-12-12
| | | | | | | This reverts commit b8d2ec920f37f5d77d32440eefc97dd5e8c2c7dc. Not only does it make debugging Emacs harder for users, that change is unsafe for the Haiku port.
* Revert "Improve last change to xfaces.c" (05ece1eb8b)Gregory Heytings2022-12-12
| | | | | | * src/xfaces.c: Revert 05ece1eb8b. See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#331.
* ; Minor cleanup of last change in xfaces.c.Eli Zaretskii2022-12-11
|
* ; Improve docs of relaxing face-font attribute match (bug#59347)Eli Zaretskii2022-12-11
| | | | | * src/xfaces.c (realize_gui_face): Fix typo and coding style. (syms_of_xfaces) <face-font-lax-matched-attributes>: A better name.
* Improve last change to xfaces.cPo Lu2022-12-11
| | | | | | | | | * src/xfaces.c (font_unset_attribute): New function. (realize_gui_face): Improve commentary and use list instead of bitmask. (syms_of_xfaces): Get rid of bitmask. Replace it by a list, there is no reason any user should have to think about bitmasks in Emacs lisp.
* Unset the weight/slant/width in the spec when realizing a fontGregory Heytings2022-12-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | Between commits bf0d3f76dc (2014) and 6b1ed2f2c9 (2022), realize_gui_face called font_load_for_lface with an empty or partly emptied font spec, i.e. it ignored a part of its attrs argument. The rationale given in bug#17973, which led to bf0d3f76dc, is not clear. However, 6b1ed2f2c9, which passes the full font spec to font_load_for_lface and font_find_for_lface, leads to suboptimal font choices, for example when the font chosen for the default face has a weight, slant or width that is not supported by other available fonts on the system, such as 'medium' or 'heavy'. If these attributes are not unset here, the call to font_list_entities in font_find_for_lface arbitrarily limits the candidate font list to those that are perfect matches for these attributes, which means that the scoring mechanism is bypassed. Note that the size attribute in spec is also unset, in font_find_for_lface. Also allow unsetting the other attributes, for debugging purposes. * src/xfaces.c (realize_gui_face): Unset the weight, slant and width of the font spec. Fixes bug#57555 and bug#59347. (syms_of_xfaces): New variable 'realize-gui-face-ignored-spec-attributes'.
* Fix automatic DPI adjustment and add workarounds for some systemsPo Lu2022-11-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/faces.el (x-create-frame-with-faces): New field `delayed-font'. Set the `font-parameter' property to `font' in the given parameter list after face-set-after-frame-default is called. * src/fontset.c (Fset_fontset_font): Avoid changing `font-parameter' with the call to Fmodify_frame_parameters. * src/frame.c (gui_set_frame_parameters_1): New function. Factor out gui_set_frame_parameters here, and add an argument DEFAULT_PARAMETER. If the `font' parameter is set, and `default_parameter' is not, then set the `font-parameter' frame parameter to the `font' parameter as well, to keep track of which user-specified `font' frame parameter set the default face's font on the frame. (gui_set_frame_parameters): Call gui_set_frame_parameters_1 with new arg set to false. (gui_set_font): Remove broken implementation of `font-parameter'. (gui_default_parameter): If the default value was used, then call gui_set_frame_parameters_1 with the new argument set to false. This is because no font was specified as a frame parameter by the user, so Freconsider_frame_fonts is free to do anything it wants. (Freconsider_frame_fonts): If `font-parameter' is set, then use it. (syms_of_frame): New defsym Qfont_parameter. * src/frame.h: Update prototypes. * src/haikuterm.c (haiku_default_font_parameter): * src/pgtkfns.c (pgtk_default_font_parameter): * src/w32fns.c (w32_default_font_parameter): Stop setting `font-parameter' here. This code resulted in decades of automatic font rescaling not working correctly. * src/xfaces.c (set_font_frame_param): Clear the `font-parameter' frame parameter. (Finternal_merge_in_global_face): * src/xfns.c (x_default_font_parameter): Avoid changing `font-parameter' in response to changes to face attributes. * src/xsettings.c (apply_xft_settings): Add workaround for Cairo. (bug#59371, bug#59347, bug#59283, bug#59271, bug#59285, bug#59306.)
* Merge 'master' into noverlayStefan Monnier2022-09-25
|\
| * Display a warning for some uses of nil in face attributes.Gregory Heytings2022-09-02
| | | | | | | | | | | | | | * src/xfaces.c (HANDLE_INVALID_NIL_VALUE): New macro, which displays a warning for invalid uses of nil as a face attribute value. (Finternal_set_lisp_face_attribute): Use the macro for the attributes :foreground, :distant-foreground and :background.
| * Fix antialias face attribute when text is scaledEli Zaretskii2022-08-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This restores the code we had in realize_gui_face before commit bf0d3f7. The problem described in bug#17973, which led to that commit, only happens if one uses a specific (misc-fixed) font family, not for the usual default fonts used by Emacs, and I'm not sure what's described there is a bug at all. At least for the purposes of text-scale-adjust, it makes no sense to ignore the foundry/family/adstyle of the original font, because we _want_ the same (or very similar) font, just of a different size. And likely in other use cases: if the :font attribute of a face specifies some font properties, we want to keep them all, not arbitrarily to ignore some of them. And definitely catering to an obscure use case such as the one cited in bug#17973 is NOT a good reason to make such radical changes in face-realization behavior. So I think backing out that part of commit bf0d3f7 is TRT, and if we decide that this causes bug#17973 in too many situations we care about, I'd rather find a kludge for that specific case than do that for every face realization. * src/xfaces.c (realize_gui_face): Preserve face attributes when text is scaled. This reverts part of the changes installed in commit bf0d3f7. (Bug#37473)
| * Merge from origin/emacs-28Stefan Kangas2022-07-14
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5e47ec9511 ; * lisp/url/url-http.el (url-http-parse-headers): Fix typo. ba0871bef1 ; Fix typos: prefer American spelling e3e7f31faa Adapt Tramp doc # Conflicts: # etc/NEWS # etc/themes/modus-themes.el # lisp/emacs-lisp/byte-opt.el # test/lisp/so-long-tests/spelling-tests.el
| | * ; Fix typos: prefer American spellingStefan Kangas2022-07-13
| | |
| * | Fix implementation of 'reset' face valuesEli Zaretskii2022-07-03
| | | | | | | | | | | | | | | | | | | | | * src/xfaces.c (Finternal_merge_in_global_face) (gui_supports_face_attributes_p): Only modify local copy of face attributes when replacing 'reset' pseudo-values with real values. (Bug#38771)
| * | ; * src/xfaces.c (Finternal_set_lisp_face_attribute): Fix last change.Eli Zaretskii2022-07-03
| | |
| * | Implement pseudo-value 'reset' of face attrributesEli Zaretskii2022-07-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/display.texi (Face Attributes): * etc/NEWS: Document the new pseudo-value 'reset'. * src/xfaces.c (realize_named_face, lookup_derived_face) (gui_supports_face_attributes_p, lookup_named_face) (Finternal_merge_in_global_face, merge_named_face, merge_faces): Handle the 'reset' pseudo-value of a face's attribute. (syms_of_xfaces): New symbol 'reset'. (RESET_P): New macro. (check_lface_attrs, Finternal_set_lisp_face_attribute): Allow 'reset' as a value of any attribute except ':inherit'. (Bug#38771)
| * | Fix earlier change in xfaces.c for antialiasing in the mode linePo Lu2022-06-20
| | | | | | | | | | | | | | | * src/xfaces.c (realize_gui_face): Don't put QCantialias in empty spec if it doesn't exist in the original.
| * | More conservative fix for bug#37473Po Lu2022-06-19
| | | | | | | | | | | | | | | | | | * src/xfaces.c (realize_gui_face): Add more conservative fix, since the last change makes C-x C-+ lead to weight weirdness on my machine.
| * | Don't lose antialiasing info when hitting `C-x C-+'Lars Ingebrigtsen2022-06-19
| | | | | | | | | | | | | | | * src/xfaces.c (realize_gui_face): Don't lose antialiasing info when hitting `C-x C-+' (bug#37473).
| * | Use BASE_EQ instead of EQ where obviously safeMattias Engdegård2022-06-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/alloc.c (deadp): * src/buffer.c (reset_buffer_local_variables, candidate_buffer) (Fkill_buffer, Fbuffer_swap_text, Fmake_overlay, Fmove_overlay): * src/callint.c (Fcall_interactively): * src/coding.c (decode_coding_object, encode_coding_object) (code_convert_region, Ffind_operation_coding_system): * src/comp.c (Fcomp_el_to_eln_rel_filename): * src/conf_post.h (RE_TRANSLATE_P): * src/data.c (Fkill_local_variable, Fash, expt_integer): * src/dired.c (file_name_completion): * src/dispnew.c (set_window_cursor_after_update, update_frame_1) (Fframe_or_buffer_changed_p): * src/doc.c (Fdocumentation, Fdocumentation_property) (default_to_grave_quoting_style): * src/editfns.c (Fconstrain_to_field, save_excursion_save) (save_excursion_restore, Fngettext): * src/eval.c (Fautoload, un_autoload, specbind): * src/fileio.c (Fmake_temp_file_internal): * src/fns.c (string_char_to_byte, string_byte_to_char) (Fnthcdr, Fnreverse): * src/indent.c (vmotion): * src/inotify.c (add_watch): * src/keyboard.c (command_loop_1, read_char) (read_char_minibuf_menu_prompt): * src/lread.c (oblookup): * src/macfont.m (macfont_descriptor_entity, macfont_open): * src/minibuf.c (Finnermost_minibuffer_p, Ftry_completion) (Ftest_completion): * src/nsfns.m (ns_set_icon_name): * src/pdumper.c (dump_queue_dequeue): * src/pgtkfns.c (pgtk_set_icon_type, pgtk_set_icon_name): * src/process.c (Faccept_process_output): * src/textprop.c (set_text_properties): * src/w32fns.c (w32_set_icon_type, w32_set_icon_name): * src/w32select.c (validate_coding_system): * src/window.c (decode_next_window_args, window_loop) (save_window_save): * src/xdisp.c (wset_redisplay): * src/xfaces.c (Fx_family_fonts, resolve_face_name) (gui_supports_face_attributes_p): * src/xfns.c (x_set_icon_type, x_set_icon_name): * src/xselect.c (clean_local_selection_data): Use BASE_EQ instead of EQ where it is obvious that neither argument can be a symbol with properties or at least one argument is a non-symbol.
| * | Fix merging of anonymous faces with an `:extend' property on unexecPo Lu2022-05-12
| | | | | | | | | | | | | | | | | | | | | | | | * src/emacs.c (main): Unconditionally call `init_xfaces'. * src/lisp.h: Enable `init_xfaces' on unexec builds too. * src/xfaces.c (init_xfaces): Move fix for bug#34226 into pdumper-specific section leaving the initialization of `face_attr_sym' intact.
| * | Make sure rectangles are drawn correctly on XPo Lu2022-05-03
| | | | | | | | | | | | | | | | | | | | | * src/xfaces.c (prepare_face_for_display): Always use line-width of 1. * src/xfns.c (x_make_gc): Likewise. * src/xterm.c (x_scroll_bar_expose): Comment out obsolete code.
| * | Merge from origin/emacs-28Eli Zaretskii2022-04-28
| |\| | | | | | | | | | | | | # Conflicts: # lisp/progmodes/xref.el
| | * Improve documentation of font- and face-related attribute functionsEli Zaretskii2022-04-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/faces.el (face-attribute): * src/xfaces.c (Fx_family_fonts): * src/font.c (Ffont_get, Ffont_put): Improve and clarify the doc strings. * doc/lispref/display.texi (Low-Level Font): Document the :type attribute of a font. Improve documentation of 'font-get' and 'font-put'. (Attribute Functions): Add cross-reference to the description of face attributes.
| * | Fix handling of proportional fonts on MS-WindowsEli Zaretskii2022-04-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | * src/xfaces.c (Fx_family_fonts): Consider fonts whose :spacing value is numeric, but still indicates that they are proportional, to be proportional. * lisp/textmodes/artist.el (artist-mode): Fix test for monospaced fonts.
| * | Fix more uses of opaque Visual structurePo Lu2022-03-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/image.c (x_kill_gs_process): * src/xfaces.c (x_free_colors): (x_free_dpy_colors): * src/xfns.c (Fxw_display_color_p): (Fx_display_grayscale_p): (Fx_display_visual_class): * src/xterm.c (x_copy_color): * src/xterm.h (x_mutable_colormap): Stop using private fields of Visual.
| * | Don't accept whitespace or hex floats in rgbi: colour specsMattias Engdegård2022-03-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `color-values-from-color-spec` (new in Emacs 28) erroneously accepted leading whitespace and hex floats in rgbi: components. Reported by Philip Kaludercic. * src/xfaces.c (parse_float_color_comp): Disallow leading whitespace and hex floats. * test/src/xfaces-tests.el (xfaces-internal-color-values-from-color-spec): Add test cases.
| * | Fix :color specification in flat-button boxesLars Ingebrigtsen2022-02-28
| | | | | | | | | | | | | | | * src/xfaces.c (realize_gui_face): Allow reliably specifying :color in flat-button boxes (bug#54196).
| * | Clean up mode-line-* faces handlingEli Zaretskii2022-02-12
| | | | | | | | | | | | | | | * src/xfaces.c (realize_basic_faces): * src/dispextern.h (enum face_id): Remove MODE_LINE_ID.
| * | Merge from origin/emacs-28Stefan Kangas2022-02-01
| |\| | | | | | | | | | | | | 31ef751f94 Clarify documentation of a "face's font" 29bdedf12f Bind Qdebugger to Qdebug in signal_or_quit.
| | * Clarify documentation of a "face's font"Eli Zaretskii2022-01-31
| | | | | | | | | | | | | | | | | | | | | * doc/lispref/display.texi (Attribute Functions) (Face Attributes): Clarify that the :font attribute of a face and the font returned by 'face-font' are by default for ASCII characters. (Bug#53664)
| * | Make `nil' values of the `:position' underline property work correctlyPo Lu2022-01-20
| | | | | | | | | | | | | | | * src/xfaces.c (Finternal_set_lisp_face_attribute): Handle cases where the underline property `:position' is nil.
| * | Merge from origin/emacs-28Stefan Kangas2022-01-15
| |\| | | | | | | | | | | | | | | | 5990148860 * lisp/simple.el (undo-no-redo): Fix customization group ac2cdb8a46 * lisp/progmodes/xref.el (xref-file-name-display): Fix doc... c05864dd25 Avoid another segfault in 'face_at_buffer_position'
| | * Avoid another segfault in 'face_at_buffer_position'Eli Zaretskii2022-01-14
| | | | | | | | | | | | | | | * src/xfaces.c (face_at_buffer_position): Make really sure the default face is usable. (Bug#53254)
| * | Allow controlling the underline position of facesPo Lu2022-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/display.texi (Face Attributes): Document new `:position' property of the `:underline' attribute. * etc/NEWS: Announce new property. * lisp/cus-face.el (custom-face-attributes): Implement customization for new face attribute. * src/dispextern.h (struct face): New fields `underline_pixels_above_descent_line' and `underline_at_descent_line_p'. * src/haikuterm.c (haiku_draw_text_decoration): * src/nsterm.m (ns_draw_text_decoration): * src/w32term.c (w32_draw_glyph_string): * src/xterm.c (x_draw_glyph_string): Respect new face fields. * src/xfaces.c (realize_gui_face): Handle new `:position' keyword. (syms_of_xfaces): New symbol `:position'.
| * | Merge from origin/emacs-28Eli Zaretskii2022-01-01
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 836be7a112 ; * etc/refcards/ru-refcard.tex: Update Copyright year. 86cbc6ee4a * lisp/net/tramp-sh.el: Adapt copyright year ebe8772f65 ; Minor fixes related to copyright years 23c1ee6989 ; * test/manual/etags/ETAGS.good_N: Adjust to copyright ye... 8d3fc7ec89 * src/xfaces.c (face_for_font): Make 'hash' be uintptr_t. 19dcb237b5 ; Add 2022 to copyright years. # Conflicts: # etc/NEWS # etc/refcards/ru-refcard.tex # lib/cdefs.h # lisp/erc/erc-dcc.el # lisp/erc/erc-imenu.el # lisp/erc/erc-replace.el # lisp/image-dired.el # lisp/progmodes/xref.el # m4/alloca.m4 # m4/byteswap.m4 # m4/errno_h.m4 # m4/getopt.m4 # m4/gnulib-common.m4 # m4/inttypes.m4 # m4/stddef_h.m4 # m4/stdint.m4 # m4/sys_socket_h.m4
| | * * src/xfaces.c (face_for_font): Make 'hash' be uintptr_t.Zhehao Lin2022-01-01
| | | | | | | | | | | | Copyright-paperwork-exempt: yes
| | * ; Add 2022 to copyright years.Eli Zaretskii2022-01-01
| | |
| * | Merge remote-tracking branch 'origin/master' into feature/pgtkPo Lu2021-11-30
| |\ \
| | * | Add an intermediary face for mode lines: `mode-line-active'Lars Ingebrigtsen2021-11-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/emacs/display.texi (Standard Faces): Document the new face. * lisp/faces.el (mode-line-active): New face. (mode-line): Don't inherit from vaiable-pitch. * src/xfaces.c (lookup_basic_face, realize_basic_faces) (syms_of_xfaces): * src/xdisp.c (window_box_height, window_text_pixel_size) (display_mode_lines, Fformat_mode_line): * src/dispextern.h (CURRENT_MODE_LINE_ACTIVE_FACE_ID_3) (CURRENT_MODE_LINE_ACTIVE_FACE_ID, enum face_id): Rename from *MODE_LINE_FACE_ID to *MODE_LINE_ACTIVE_FACE_ID.
| | * | Improve the fix for bug#51864Eli Zaretskii2021-11-21
| | | | | | | | | | | | | | | | | | | | | | | | * src/xfaces.c (face_at_buffer_position): Call FACE_FROM_ID_OR_NULL just once. (face_at_string_position): Make sure we have a usable base face.
| | * | Add support for the Haiku operating system and its window systemPo Lu2021-11-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * .gitignore: Add binaries specific to Haiku. * Makefie.in (HAVE_BE_APP): New variable. (install-arch-dep): Install Emacs and Emacs.pdmp when using Haiku. * configure.ac: Detect and configure for Haiku and various related configurations. (be-app, be-freetype, be-cairo): New options. (HAVE_BE_APP, HAIKU_OBJ, HAIKU_CXX_OBJ) (HAIKU_LIBS, HAIKU_CFLAGS): New variables. (HAIKU, HAVE_TINY_SPEED_T): New define. (emacs_config_features): Add BE_APP. * doc/emacs/Makefile.in (EMACSSOURCES): Add Haiku appendix. * doc/emacs/emacs.texi: Add Haiku appendix to menus and include it. * doc/emacs/haiku.texi: New Haiku appendix. * doc/lispref/display.texi (Defining Faces, Window Systems): Explain meaning of `haiku' as a window system identifier. (haiku-use-system-tooltips): Explain meaning of system tooltips on Haiku. * doc/lispref/frames.texi (Multiple Terminals): Explain meaning of haiku as a display type. (Frame Layout): Clarify section for Haiku frames. (Size Parameters): Explain limitations of fullwidth and fullheight on Haiku. (Management Parameters): Explain limitations of inhibiting double buffering on builds with Cairo, and the inability of frames with no-accept-focus to receive keyboard input on Haiku. (Font and Color Parameters): Explain the different font backends available on Haiku. (Raising and Lowering): Explain that lowering and restacking frames doesn't work on Haiku. (Child Frames): Explain oddities of child frame visibility on Haiku. * doc/lispref/os.texi (System Environment): Explain meaning of haiku. * etc/MACHINES: Add appropriate notices for Haiku. * etc/NEWS: Document changes. * etc/PROBLEMS: Document font spacing bug on Haiku. * lib-src/Makefile.in: Build be-resources binary on Haiku. (CXX, CXXFLAGS, NON_CXX_FLAGS, ALL_CXXFLAGS) (HAVE_BE_APP, HAIKU_LIBS, HAIKU_CFLAGS): New variables. (DONT_INSTALL): Add be-resources binary if on Haiku. (be-resources): New target. * lib-src/be_resources: Add helper binary for setting resources on the Emacs application. * lib-src/emacsclient.c (decode_options): Set alt_display to "be" on Haiku. * lisp/cus-edit.el (custom-button, custom-button-mouse) (custom-button-unraised, custom-button-pressed): Update face definitions for Haiku. * lisp/cus-start.el: Add haiku-debug-on-fatal-error and haiku-use-system-tooltips. * lisp/faces.el (face-valid-attribute-values): Clarify attribute comment for Haiku. (tool-bar): Add appropriate toolbar color for Haiku. * lisp/frame.el (haiku-frame-geometry) (haiku-mouse-absolute-pixel-position) (haiku-set-mouse-absolute-pixel-position) (haiku-frame-edges) (haiku-frame-list-z-order): New function declarations. (frame-geometry, frame-edges) (mouse-absolute-pixel-position) (set-mouse-absolute-pixel-position) (frame-list-z-order): Call appropriate window system functions on Haiku. (display-mouse-p, display-graphic-p) (display-images-p, display-pixel-height) (display-pixel-width, display-mm-height) (display-mm-width, display-backing-store) (display-save-under, display-planes) (display-color-cells, display-visual-class): Update type tests for Haiku. * lisp/international/mule-cmds.el (set-coding-system-map): Also prevent set-terminal-coding-system from appearing in the menu bar on Haiku. * lisp/loadup.el: Load Haiku-specific files when built with Haiku, and don't rename newly built Emacs on Haiku as BFS doesn't support hard links. * lisp/menu-bar.el (menu-bar-open): Add for Haiku. * lisp/mwheel.el (mouse-wheel-down-event): Expect wheel-up on Haiku. (mouse-wheel-up-event): Expect wheel-down on Haiku. (mouse-wheel-left-event): Expect wheel-left on Haiku. (mouse-wheel-right-event): Expect wheel-right on Haiku. * lisp/net/browse-url.el (browse-url--browser-defcustom-type): Add option for WebPositive. (browse-url-webpositive-program): New variable. (browse-url-default-program): Search for WebPositive. (browse-url-webpositive): New function. * lisp/net/eww.el (eww-form-submit, eww-form-file) (eww-form-checkbox, eww-form-select): Define faces appropriately for Haiku. * lisp/term/haiku-win.el: New file. * lisp/tooltip.el (menu-or-popup-active-p): New function declaration. (tooltip-show-help): Don't use tooltips on Haiku when a menu is active. * lisp/version.el (haiku-get-version-string): New function declaration. (emacs-version): Add Haiku version string if appropriate. * src/Makefile.in: Also produce binary named "Emacs" with Haiku resources set. (CXX, HAIKU_OBJ, HAIKU_CXX_OBJ, HAIKU_LIBS) (HAIKU_CFLAGS, HAVE_BE_APP, NON_CXX_FLAGS) (ALL_CXX_FLAGS): New variables. (.SUFFIXES): Add .cc. (.cc.o): New target. (base_obj): Add Haiku C objects. (doc_obj, obj): Split objects that should scanned for documentation into doc_obj. (SOME_MACHINE_OBJECTS): Add appropriate Haiku C objects. (all): Depend on Emacs and Emacs.pdmp on Haiku. (LIBES): Add Haiku libraries. (gl-stamp) ($(etc)/DOC): Scan doc_obj instead of obj (temacs$(EXEEXT): Use C++ linker on Haiku. (ctagsfiles3): New variable. (TAGS): Scan C++ files. * src/alloc.c (garbage_collect): Mark Haiku display. * src/dispextern.h (HAVE_NATIVE_TRANSFORMS): Also enable on Haiku. (struct image): Add fields for Haiku transforms. (RGB_PIXEL_COLOR): Define to unsigned long on Haiku as well. (sit_for): Also check USABLE_SIGPOLL. (init_display_interactive): Set initial window system to Haiku on Haiku builds. * src/emacs.c (main): Define Haiku syms and init haiku clipboard. (shut_down_emacs): Quit BApplication on Haiku and trigger debug on aborts if haiku_debug_on_fatal_error. (Vsystem_type): Update docstring. * src/fileio.c (next-read-file-uses-dialog-p): Enable on Haiku. * src/filelock.c (WTMP_FILE): Only define if BOOT_TIME is also defined. * src/floatfns.c (double_integer_scale): Work around Haiku libroot brain damage. * src/font.c (syms_of_font): Define appropriate font driver symbols for Haiku builds with various options. * src/font.h: Also enable ftcrfont on Haiku builds with Cairo. (font_data_structures_may_be_ill_formed): Also enable on Haiku builds that have Cairo. * src/frame.c (Fframep): Update doc-string for Haiku builds and return haiku if appropriate. (syms_of_frame): New symbol `haiku'. * src/frame.h (struct frame): Add output data for Haiku. (FRAME_HAIKU_P): New macro. (FRAME_WINDOW_P): Test for Haiku frames as well. * src/ftcrfont.c (RED_FROM_ULONG, GREEN_FROM_ULONG) (BLUE_FROM_ULONG): New macros. (ftcrfont_draw): Add haiku specific code for Haiku builds with Cairo. * src/ftfont.c (ftfont_open): Set face. (ftfont_has_char, ftfont_text_extents): Work around crash. (syms_of_ftfont): New symbol `mono'. * src/ftfont.h (struct font_info): Enable Cairo-specific fields for Cairo builds on Haiku. * src/haiku_draw_support.cc: * src/haiku_font_support.cc: * src/haiku_io.c: * src/haiku_select.cc: * src/haiku_support.cc: * src/haiku_support.h: * src/haikufns.c: * src/haikufont.c: * src/haikugui.h: * src/haikuimage.c: * src/haikumenu.c: * src/haikuselect.c: * src/haikuselect.h: * src/haikuterm.c: * src/haikuterm.h: Add new files for Haiku windowing support. * src/haiku.c: Add new files for Haiku operating system support. * src/image.c: Implement image transforms and native XPM support on Haiku. (GET_PIXEL, PUT_PIXEL, NO_PIXMAP) (PIX_MASK_RETAIN, PIX_MASK_DRAW) (RGB_TO_ULONG, RED_FROM_ULONG, GREEN_FROM_ULONG) (BLUE_FROM_ULONG, RED16_FROM_ULONG, GREEN16_FROM_ULONG) (BLUE16_FROM_ULONG): Define to appropriate values on Haiku. (image_create_bitmap_from_data): Add Haiku support. (image_create_bitmap_from_file): Add TODO on Haiku. (free_bitmap_record): Free bitmap on Haiku. (image_size_in_bytes): Implement for Haiku bitmaps. (image_set_transform): Implement on Haiku. (image_create_x_image_and_pixmap_1): Implement on Haiku, 24-bit or 1-bit only. (image_destroy_x_image, image_get_x_image): Use correct img and pixmap values on Haiku. (lookup_rgb_color): Use correct macro on Haiku. (image_to_emacs_colors): Implement on Haiku. (image_disable_image): Disable on Haiku. (image_can_use_native_api): Test for translator presence on Haiku. (native_image_load): Use translator on Haiku. (imagemagick_load_image): Add Haiku-specific quirks. (Fimage_transforms_p): Allow rotate90 on Haiku. (image_types): Enable native XPM support on Haiku. (syms_of_image): Enable XPM images on Haiku. * src/keyboard.c (kbd_buffer_get_event) (handle_async_input, handle_input_available_signal) (handle_user_signal, Fset_input_interrupt_mode) (init_keyboard): Check for USABLE_SIGPOLL along with USABLE_SIGIO. * src/lisp.h (pD): Work around broken Haiku headers. (HAVE_EXT_MENU_BAR): Define on Haiku. (handle_input_available_signal): Enable if we just have SIGPOLL as well. * src/menu.c (have_boxes): Return true on Haiku. (single_menu_item): Enable toolkit menus on Haiku. (find_and_call_menu_selection): Also enable on Haiku. * src/process.c (keyboard_bit_set): Enable with only usable SIGPOLL. (wait_reading_process_output): Test for SIGPOLL as well as SIGIO availability. * src/sound.c (sound_perror, vox_open) (vox_configure, vox_close): Enable for usable SIGPOLL as well. * src/sysdep.c (sys_subshell): Enable for usable SIGPOLL. (reset_sigio): Make conditional on F_SETOWN. (request_sigio, unrequest_sigio) (emacs_sigaction_init): Also handle SIGPOLLs. (init_sys_modes): Disable TCXONC usage on Haiku, as it doesn't have any ttys other than pseudo ttys, which don't support C-s/C-q flow control, and causes compiler warnings. (speeds): Disable high speeds if HAVE_TINY_SPEED_T. * src/termhooks.h (enum output_method): Add output_haiku. (struct terminal): Add Haiku display info. (TERMINAL_FONT_CACHE): Enable for Haiku. * src/terminal.c (Fterminal_live_p): Return `haiku' if appropriate. * src/verbose.mk.in (AM_V_CXX, AM_V_CXXLD): New logging variables. * src/xdisp.c (redisplay_internal) (note_mouse_highlight): Return on Haiku if a popup is activated. (display_menu_bar): Return on Haiku if frame is a Haiku frame. * src/xfaces.c (GCGraphicsExposures): Enable correctly on Haiku. (x_create_gc): Enable dummy GC code on Haiku. * src/xfns.c (x-server-version, x-file-dialog): Add Haiku specifics to doc strings. * src/xterm.c (syms_of_xterm): Add Haiku information to doc string.
| | * | Merge from origin/emacs-28Stefan Kangas2021-11-16
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e852822f3d Fix removal of fringe marks of deleted bookmarks b418aad85a * lisp/repeat.el (repeat-echo-message): Bind message-log-m... fe2ac7cb7c * lisp/repeat.el (describe-repeat-maps): Use help-fns--ana... c840bfe7e1 * lisp/repeat.el: Detect changes in the minibuffer state (... 5044151486 Avoid segfaults due to freed face cache 199e2468d3 Doc fix; change recommended file name of custom-file
| | | * Avoid segfaults due to freed face cacheEli Zaretskii2021-11-15
| | | | | | | | | | | | | | | | | | | | * src/xfaces.c (face_at_buffer_position): Make sure DEFAULT_FACE is usable. (Bug#51864)