]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow composition of pure-ASCII strings in the mode line
authorEli Zaretskii <eliz@gnu.org>
Sat, 8 Feb 2020 13:41:36 +0000 (15:41 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 8 Feb 2020 13:41:36 +0000 (15:41 +0200)
* src/composite.c (Fcomposition_get_gstring): Allow unibyte
strings if they are pure ASCII, by copying text into a
multibyte string.

src/composite.c

index 53e6930b5f2886a799d46c72d8b6bf582a5db115..05365cfb65ec32d6fd9911b78be8e0447b08cbd1 100644 (file)
@@ -1746,7 +1746,18 @@ should be ignored.  */)
       CHECK_STRING (string);
       validate_subarray (string, from, to, SCHARS (string), &frompos, &topos);
       if (! STRING_MULTIBYTE (string))
-       error ("Attempt to shape unibyte text");
+       {
+         ptrdiff_t i;
+
+         for (i = SBYTES (string) - 1; i >= 0; i--)
+           if (!ASCII_CHAR_P (SREF (string, i)))
+             error ("Attempt to shape unibyte text");
+         /* STRING is a pure-ASCII string, so we can convert it (or,
+            rather, its copy) to multibyte and use that thereafter.  */
+         Lisp_Object string_copy = Fconcat (1, &string);
+         STRING_SET_MULTIBYTE (string_copy);
+         string = string_copy;
+       }
       frombyte = string_char_to_byte (string, frompos);
     }