]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve customization of arabic-shaper-ZWNJ-handling.
authorK. Handa <handa@gnu.org>
Sun, 15 Oct 2017 14:15:47 +0000 (23:15 +0900)
committerK. Handa <handa@gnu.org>
Sun, 15 Oct 2017 14:15:47 +0000 (23:15 +0900)
Make the effect of customizing arabic-shaper-ZWNJ-handling appear
immediately.
* lisp/language/misc-lang.el (arabic-shaper-ZWNJ-handling): Add :set
value.
* src/composite.c (Fclear_composition_cache): New function.
(syms_of_composite): Defsubr it.

lisp/language/misc-lang.el
src/composite.c

index a63c3a21091ac1301c589bd0c7b85867510db822..cbb581fd19f38b943d09de3268f41ac72f5192d0 100644 (file)
@@ -95,7 +95,10 @@ Customizing the value takes effect when you start Emacs next time."
   :type '(choice
           (const :tag "default" nil)
           (const :tag "as space" as-space)
-          (const :tag "absorb" absorb)))
+          (const :tag "absorb" absorb))
+  :set (lambda (sym val)
+         (set-default sym val)
+         (clear-composition-cache)))
 
 ;; Record error in arabic-change-gstring.
 (defvar arabic-shape-log nil)
index c01e2e3b95c5a877babca8cf99814e6ca36a685c..1a348ddf2340581c87bd1f9171f038d35ae80de8 100644 (file)
@@ -686,6 +686,20 @@ composition_gstring_from_id (ptrdiff_t id)
   return HASH_VALUE (h, id);
 }
 
+DEFUN ("clear-composition-cache", Fclear_composition_cache,
+       Sclear_composition_cache, 0, 0, 0,
+       doc: /* Internal use only.
+Clear composition cache.  */)
+  (void)
+{
+  Lisp_Object args[] = {QCtest, Qequal, QCsize, make_number (311)};
+  gstring_hash_table = CALLMANY (Fmake_hash_table, args);
+  /* Fixme: We call Fclear_face_cache to force complete re-building of
+     display glyphs.  But, it may be better to call this function from
+     Fclear_face_cache instead.  */
+  Fclear_face_cache (Qt);
+}
+
 bool
 composition_gstring_p (Lisp_Object gstring)
 {
@@ -1982,4 +1996,5 @@ See also the documentation of `auto-composition-mode'.  */);
   defsubr (&Scompose_string_internal);
   defsubr (&Sfind_composition_internal);
   defsubr (&Scomposition_get_gstring);
+  defsubr (&Sclear_composition_cache);
 }