1. 09 Jun, 2019 24 commits
  2. 08 Jun, 2019 10 commits
    • Paul Eggert's avatar
      Fix out-of-source make-dist problems · 1043cd30
      Paul Eggert authored
      Problem with jisx2131-filter reported by Phillip Lord in:
      * admin/charsets/Makefile.in (SED_SCRIPT):
      Put it in $(srcdir), which is not necessarily the working directory.
      ($(SED_SCRIPT)): Rename from jisx2131-filter.  All uses changed.
      (clean): Do not remove SED_SCRIPT.
      (extraclean): Remove it here instead.
      * make-dist (possibly_non_vc_files): Remove src/emacs-module.h.
      Although it is portable and could be distributed in the tarball,
      it's too much hassle to do that, so let each builder make it.
    • Glenn Morris's avatar
      ; Fix recent maintainer header removals · d26b49e5
      Glenn Morris authored
      The convention is that no "Maintainer" means "Author" is the maintainer.
    • Eli Zaretskii's avatar
    • Bernhard Rotter's avatar
      Fix path for current directory in eshell on MS-Windows · 8a75bde4
      Bernhard Rotter authored
      On MS-Windows, PATH implicitly includes the current directory.
      Do it right for Eshell by adding "./" instead of ".", to
      avoid finding .FOO instead of ./FOO.
      * lisp/eshell/esh-util.el (eshell-get-path): New function.
      * lisp/eshell/em-cmpl.el (eshell-complete-commands-list):
      * lisp/eshell/esh-ext.el (eshell-search-path): Use eshell-get-path.
    • Eli Zaretskii's avatar
      Minor fixes for the last commits · 1cc90d21
      Eli Zaretskii authored
      * src/fns.c (Fbase64url_encode_region)
      (Fbase64url_encode_string, Fbase64_decode_region)
      (Fbase64_decode_string): Fix doc strings.
      (base64_decode_1): Minor stylistic code changes.
      * doc/lispref/text.texi (Base 64): Fix typos and improve
      wording of the last committed text.
    • Eli Zaretskii's avatar
    • Pierre Téchoueyres's avatar
      Add support for base64url variant of base-64 encoding/decoding · 7541b068
      Pierre Téchoueyres authored
      Implement the RFC4648 variant of base64 encoding used by URLs.
      * doc/lispref/text.texi (base64url-encode-region,
      base64url-encode-string): Document new functions.
      (base64-decode-region, base64-decode-string): Document new optional
      parameter 'base64url' used to use url variant when decoding data.
      * src/fns.c (base64url-encode-region, base64url-encode-region): New
      functions to manage url variant.
      (base64-decode-region, base64-decode-string): Add optional
      parameter to indicate use of url-variant.
      (base64_encode_region_1, base64_encode_string_1): Internal functions
      with extracted code from 'base64_encode_region' and
      'base64_encode_string' and optional parameters to manage padding and
      url variant.
      (base64-encode-region, base64-encode-string) : Use
      base64_encode_region_1 and base64_encode_string_1.
      (base64-encode-1): Add parameters to manage padding and url variant.
      (base64-decode-1): Add parameter to manage url variant.
      * test/src/fns-tests.el (fns-tests--with-region): New helper macro to
      test region variant of base64 encode / decode functions.
      (fns-tests--string-repeat): Helper function used in base64 tests.
      (fns-tests-base64-encode-region, fns-tests-base64-encode-string):
      Tests for standard base64 function.
      fns-test-base64url-encode-string): Tests for url variant.
      (fns-tests-base64-decode-string): Tests for decoding part.
    • YAMAMOTO Mitsuharu's avatar
      Support X core font driver on cairo (Bug#28236) · faf10bd8
      YAMAMOTO Mitsuharu authored
      * configure.ac (HAVE_X_WINDOWS): Add xfont.o to FONT_OBJ if HAVE_CAIRO.
      * doc/lispref/frames.texi (Font and Color Parameters): Mention X core font
      driver with Cairo drawing.
      * src/font.c (syms_of_font) [HAVE_X_WINDOWS && USE_CAIRO]: Call syms_of_xfont.
      * src/xfns.c (x_create_tip_frame) [USE_CAIRO]: Register xfont_driver.
      * src/xterm.c (x_cr_gc_clip) [USE_CAIRO]: New function extracted from
      (x_begin_cr_clip) [USE_CAIRO]: Use it.
      (xlib_surface_key, saved_drawable_key) [USE_CAIRO]: New variables.
      (x_cr_destroy_xlib_surface, x_try_cr_xlib_drawable)
      (x_end_cr_xlib_drawable) [USE_CAIRO]: New functions.
      (x_draw_glyph_string_foreground) [USE_CAIRO]: Get Xlib surface when drawing
      text with X core fonts into bitmap surfaces.  Add fallback code for drawing
      into outline surfaces.
    • YAMAMOTO Mitsuharu's avatar
      Implement native image rotation and cropping on cairo · 88c49ac3
      YAMAMOTO Mitsuharu authored
      * src/dispextern.h (struct image) [USE_CAIRO]:
      * src/image.c (free_image, image_clear_image_1)
      (image_set_crop, image_set_size, image_set_rotation)
      (image_create_x_image_and_pixmap) [USE_CAIRO]: #ifdef out HAVE_XRENDER part.
      * src/image.c (cr_create_surface_from_pix_containers) [USE_CAIRO]: Rename
      from cr_create_surface_from_pix_containers.  Change arguments to pair of
      Emacs_Pix_Container:s.  Move block_input and unblock_input to caller.
      (cr_put_image_to_cr_data) [USE_CAIRO]: New function.
      (prepare_image_for_display) [USE_CAIRO]: Use it.
      (image_set_transform) [USE_CAIRO]: Create dummy solid color pattern equipped
      with transformation matrix and set it to img->cr_data.
      * src/xterm.c (fringe_bmp) [USE_CAIRO]: Change type to cairo_pattern_t **.
      (x_cr_define_fringe_bitmap, x_cr_destroy_fringe_bitmap) [USE_CAIRO]: Create
      or destroy cairo pattern.
      (x_cr_draw_image) [USE_CAIRO]: Remove arguments image_width and image_height.
      Change type of image to cairo pattern.  All callers changed.
      * src/gtkutil.c (xg_get_image_for_pixmap) [USE_CAIRO]: Get cairo surface
      from img->cr_data, which is of cairo pattern now.
    • Thomas Fitzsimmons's avatar
      Make icalendar-import-buffer not show diary file buffer · 890a0826
      Thomas Fitzsimmons authored
      * lisp/calendar/diary-lib.el (diary-make-entry): Add
      omit-trailing-space parameter.  Add do-not-show parameter to
      allow not showing diary file buffer.
      * lisp/calendar/icalendar.el (icalendar--add-diary-entry): Remove
      workaround to omit trailing space in diary entry.  Have
      diary-make-entry not display the diary file buffer.  (Bug#35645)
  3. 07 Jun, 2019 6 commits
    • Paul Eggert's avatar
      Fix commentary about fixnums and hashes. · 58cde923
      Paul Eggert authored
    • Paul Eggert's avatar
      Fix minor ssize_t / ptrdiff_t confusion · 8553af84
      Paul Eggert authored
      * src/fileio.c (Fcopy_file): This limit is because of ssize_t,
      so use TYPE_MAXIMUM (ssize_t) not PTRDIFF_MAX.
    • Paul Eggert's avatar
      Use machine pointer width for face hashes · de46a6a4
      Paul Eggert authored
      * src/dispextern.h (struct face):
      * src/xfaces.c (hash_string_case_insensitive, lface_hash)
      (cache_face, lookup_face): Use uintptr_t for face hashes
      instead of discarding the upper pointer bits on 64-bit machines.
    • Stefan Monnier's avatar
      * lisp/gnus: Further reduce assumptions about gnus-data format · da1974fa
      Stefan Monnier authored
      * lisp/gnus/gnus-registry.el (gnus-registry-fetch-message-id-fast)
      (gnus-registry-fetch-sender-fast, gnus-registry-fetch-recipients-fast)
      (gnus-registry--set/remove-mark): Don't hardcode assoc for gnus-data-find-in.
      * lisp/gnus/gnus-sum.el (gnus-data-update-list): Don't hardcode `nth 2`
      for gnus-data-pos.
      (gnus-summary-insert-old-articles, gnus-summary-insert-new-articles)
      (gnus-summary-first-article-p): Don't hardcode `car` for `gnus-data-number`.
      (gnus-summary-move-article, gnus-summary-expire-articles)
      (gnus-summary-delete-article): Don't hardcode assoc for gnus-data-find-in.
      * lisp/gnus/spam.el (spam-fetch-article-header): Don't hardcode `nth 3`
      for gnus-data-header.
    • Eli Zaretskii's avatar
    • Eli Zaretskii's avatar
      Support text shaping with HarfBuzz · dec52501
      Eli Zaretskii authored
      The code to support HarfBuzz was written by these individuals:
        Khaled Hosny <dr.khaled.hosny@gmail.com>
        YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
        Eli Zaretskii <eliz@gnu.org>
      * src/xftfont.c (xftfont_list): Call ftfont_list2.
      (xftfont_match): Call ftfont_match2.
      (xftfont_open) [HAVE_HARFBUZZ]: Set the font driver to
      xfthbfont_driver as required.  Reset xftfont_info->hb_font to
      (xftfont_close) [HAVE_HARFBUZZ]: Dispose of the hb_font object.
      (xftfont_shape): Accept an additional argument DIRECTION and
      pass it to ftfont_shape.
      (xfthbfont_list, xfthbfont_match, xfthbfont_begin_hb_font)
      (xfthbfont_end_hb_font) [HAVE_HARFBUZZ]: New functions.
      (syms_of_xftfont): New DEFSYM 'xfthb'.
      (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: Initialize
      * src/xfns.c (Fx_create_frame, x_create_tip_frame)
      [HAVE_HARFBUZZ]: Register the HarfBuzz font driver.
      * src/w32uniscribe.c (bswap_32) [HAVE_HARFBUZZ]: Define to use
      the builtin for GCC 4.3.9 and newer; else use byteswap.h from
      (struct uniscribe_font_info): New member 'scale'.  The member
      'cache' is now used both by Uniscribe and HarfBuzz backends.
      (uniscribe_open): Set the font backend as required by the font
      entity's font_type field.
      (uniscribe_close) [HAVE_HARFBUZZ]: Dispose of the hb_font
      (uniscribe_shape): Accept an additional argument DIRECTION.
      (w32hb_list, w32hb_match, free_cb, w32hb_get_font_table)
      (w32hb_get_font, w32hb_encode_char, w32hb_begin_font)
      (w32hb_get_variation_glyphs, load_harfbuzz_funcs)
      [HAVE_HARFBUZZ]: New functions.
      (syms_of_w32uniscribe_for_pdumper): Initialize
      harfbuzz_font_driver if loading the requisite functions from
      the HarfBuzz DLL succeeded.
      * src/w32font.c (syms_of_w32font): New DEFSYM 'harfbuzz'.
      * src/w32fns.c (Fx_create_frame, w32_create_tip_frame):
      Determine whether we should register the HarfBuzz backend, or
      Uniscribe backend, or both for the new frame.
      * src/w32common.h (hbfont_init_w32_funcs) [HAVE_HARFBUZZ]: Add
      * src/macfont.m (lgstring_direction): New enumeration.
      (mac_font_shape_1, mac_screen_font_shape, macfont_shape):
      Accept an additional argument DIRECTION; all callers changed.
      * src/lisp.h (get_unicode_property): Add prototype.
      * src/hbfont.c: New file.
      * src/ftxfont.c (ftxfont_list): Call ftfont_list2.
      (ftxfont_match): Call ftfont_match2.
      * src/ftfont.h [HAVE_HARFBUZZ]: Include hb.h and hb-ft.h.
      (struct font_info): New member hb_font.
      * src/ftfont.c (ftfont_list2, ftfont_list_family): New functions.
      (ftfont_open) [HAVE_HARFBUZZ]: Reset ftfont_info->hb_font to
      NULL.  Set the font backend to fthbfont_driver when required.
      (ftfont_close) [HAVE_HARFBUZZ]: Dispose of ftfont_info->hb_font.
      (ftfont_glyph_metrics): New function.
      (ftfont_text_extents): Call ftfont_glyph_metrics instead of
      (ftfont_shape): Accept an additional argument DIRECTION.
      (ftfont_variation_glyphs) [!HAVE_OTF_GET_VARIATION_GLYPHS]:
      Support for variation glyphs without FLT.
      (fthbfont_begin_hb_font) [HAVE_HARFBUZZ]: New function.
      (syms_of_ftfont): New DEFSYM freetypehb.
      (syms_of_ftfont_for_pdumper): Initialize fthbfont_driver.
      * src/ftcrfont.c (ftcrfont_list): Call ftfont_list2.
      (ftcrfont_match): Call ftfont_match2.
      (ftcrfont_open) [HAVE_HARFBUZZ]: Set the font backend to
      ftcrhbfont_driver as required.  Reset ftcrfont_info->hb_font
      to NULL.
      (ftcrfont_close) [HAVE_HARFBUZZ]: Discard of
      (ftcrfont_shape): Pass DIRECTION to ftfont_shape.
      (ftcrhbfont_list, ftcrhbfont_match)
      (ftcrhbfont_begin_hb_font, ftcrhbfont_end_hb_font)
      [HAVE_HARFBUZZ]: New functions.
      (syms_of_ftcrfont): New DEFSYM ftcrhb.
      (syms_of_ftcrfont_for_pdumper): Initialize ftcrhbfont_driver.
      * src/font.h [HAVE_HARFBUZZ]: Include hb.h.
      (struct font_driver): Update comments and function signatures
      to reflect the new argument DIRECTION accepted by the 'shape'
      method.  New methods 'begin_hb_font' and 'end_hb_font'.
      (hbfont_shape, hbfont_combining_capability)
      (fthbfont_begin_hb_font) [HAVE_HARFBUZZ]: Add prototypes.
      * src/font.c (Ffont_shape_gstring): Accept an additional
      argument DIRECTION, and pass it to the font driver's 'shape'
      (Ffont_variation_glyphs): Doc fix.
      (syms_of_font): New DEFSYMS L2R and R2L.
      * src/composite.h (composition_reseat_it): Adjust prototype.
      * src/composite.c (autocmp_chars): Accept additional argument
      DIRECTION, and pass it to auto-composition-function.  All
      callers changed.
      (composition_reseat_it): Accept additional argument
      BIDI_LEVEL, and use it to determine the DIRECTION argument to
      be passed to autocmp_chars.  All callers changed.
      (syms_of_composite) <auto-composition-function>: Improve the
      doc string; document the meaning of the new argument
      * src/chartab.c (get_unicode_property): New function,
      refactored from the body of get-unicode-property-internal.
      (Fget_unicode_property_internal): Call get_unicode_property
      after validating the input arguments.
      * src/Makefile.in (HARFBUZZ_CFLAGS, HARFBUZZ_LIBS): New macros.
      (SOME_MACHINE_OBJECTS): Add hbfont.o
      * lisp/language/tv-util.el (tai-viet-composition-function):
      * lisp/language/thai-util.el (thai-composition-function):
      * lisp/language/misc-lang.el (arabic-shape-gstring):
      * lisp/language/lao-util.el (lao-composition-function):
      * lisp/language/japanese.el (compose-gstring-for-variation-glyph):
      * lisp/language/hebrew.el (hebrew-shape-gstring):
      * lisp/language/ethio-util.el (ethio-composition-function):
      * lisp/composite.el (compose-chars-after)
      (compose-gstring-for-terminal, auto-compose-chars): All
      composition functions that call shapers now accept an
      additional argument DIRECTION, either L2R or R2L.
      * etc/NEWS: Document the HarfBuzz support.
      * etc/HELLO: Add diacritics to Hebrew greetings.
      * doc/lispref/frames.texi (Font and Color Parameters):
      * doc/emacs/msdos.texi (Windows Fonts): Describe the
      'harfbuzz' font backend on MS-Windows and how it is preferred
      to 'uniscribe'.
      * configure.ac (--wthout-harfbuzz): New option.
      (HAVE_HARFBUZZ): New tests.
      (FONT_OBJ) [HAVE_HARFBUZZ]: Add hbfont.o
      (emacs_config_features): Add HARFBUZZ.
      * admin/nt/dist-build/build-dep-zips.py: Add HarfBuzz dependency.